What is Software Architecture?
Software architecture of a program or computing system is the structure or structures of the system, which comprise:
- software components
- the externally visible properties of those components,
- the relationships between them.
For example: a typical Java client-server oracle database application may have such a component architect as show in the Figure:
Why Architectural Modeling?
Software architecture is the high-level structure of a software system. Its importance derives from the role it plays in system development:
- It is the translation of business strategy into technical strategy, and is thus the foundation for competitive advantage
- it helps address system complexity, making the system more understandable and more manageable
The term also refers to documentation of a system’s software architecture. Documenting software architecture facilitates:
- communication between stakeholders
- documents early decisions about high-level design
- allows reuse of design components
- patterns between projects
Software architecture is commonly organized in view which are analogous to the different types of blueprints made in building architecture. Within the ontology established by ANSI/IEEE 1471-2000, views are instances of viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns.
Some possible views (actually, viewpoints in the 1471 ontology) are:
- Functional/logic view
- Code/module view
- Development/structural view
- Concurrency/process/thread view
- Physical/deployment view
- User action/feedback view
- Data view
Modeling the Architecture of a System
When you model a system’s architecture, you capture decisions about the system’s requirements of the system elements that shape these views:
- logical elements
- physical elements
- behavioral aspects of the systems
- and patterns
Finally, you’ll want to focus on:
- the seams between subsystems
- the tracing from requirements to deployment.
To model the architecture of a system
- Identify the views that you’ll use to represent your architecture. Most often, you’ll want to include a use case view, a design view, an interaction view, a implementation view, and a deployment view, as shown in the Figure
What is 4+1 View and How It is Related to UML
4+1 is a view model designed by Philippe Kruchten for describing the architecture of software-intensive systems, based on the use of multiple, concurrent views. The views are used to describe the system in the viewpoint of different stakeholders, such as end-users, developers and project managers. The four views of the model are logical, development, process and physical view. In addition selected use cases or scenarios are utilized to illustrate the architecture serving as the ‘plus one’ view. Hence the model contains 4+1 views:
Logical view : The logical view is concerned with the functionality that the system provides to end-users. UML Diagrams to represent logical view include Class Diagram, Communication diagram, Sequence diagram .
Development view : The development view illustrates a system from a programmers perspective and is concerned with software management. This view is also known as the implementation view. It uses the UML Component diagram to describe system components. UML Diagrams to represent development view include the Package diagram, Component diagram.
Process view : The process model deals with the dynamic aspect of the system, explains the system processes and how they communicate, and focuses on the runtime behavior of the system. The process view addresses concurrency, distribution, integrators, performance, and scalability, etc. UML Diagrams to represent process view include the Activity diagram.
Physical view : The physical view depicts the system from a system engineer’s point-of-view. It is concerned with the topology of software components on the physical layer, as well as communication between these components. This view is also known as the deployment view. UML Diagrams to represent physical view include the Deployment diagram.
Use case view : The description of an architecture is illustrated using a small set of use cases, or scenarios which become a fifth view. The scenarios describe sequences of interactions between objects, and between processes. They are used to identify architectural elements and to illustrate and validate the architecture design. They also serve as a starting point for tests of an architecture prototype. UML Diagram(s) used to represent scenario view include the Use case diagram.