How do you represent a software architecture?
You can use a set of viewpoints including a conceptual architecture view, module view, execution view, and code view. This set of architectural viewpoints was originally proposed by Hofmeister, Nord, and Soni in their book Applied Software Architecture.
In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about the conceptual architecture view, the module view, the execution view, and the code view.
Key Takeaways
Here are key takeaways:
- The conceptual architecture view is a high-level map of how the system does what it’s supposed to do.
- The module view shows how the key elements of the software are mapped to modules and subsystems.
- The execution view shows are modules are mapped to machines and networks.
- The code view shows how source code and configuration are organized into packages and dependencies.
Conceptual Architecture View
The conceptual architecture view is a high-level map of how the system does what it’s supposed to do.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“The conceptual architecture view is similar to the logical view in the 4+1 view model. However, the conceptual architecture view is more conceptual and broader in scope. It takes into account existing software and hardware integration issues.
This view is closely tied to the application domain. The functionality of the system is mapped to architectural elements called conceptual components.
These conceptual components are not mapped differently to hardware, but they are mapped to a function that the system performs. This view provides an overview of the software architecture.
It is the first place that people will go to find out how the system does what it is supposed to do.”
Module View
The module view shows how the key elements of the software are mapped to modules and subsystems.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“The module view of software architecture shows how the elements of the software are mapped into modules and subsystems.
The module architecture view shows how the system will be partitioned into separate run-time components.”
Execution View
The execution view shows are modules are mapped to machines and networks.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“The execution view of software architecture shows how modules are mapped onto the hardware of the system. This view shows the run-time entities and their attributes and how these entities are assigned to machines and networks.
It shows the memory usage, processor usage, and network usage expectations. This view shows the flow of control between hardware systems that execute the software of the system.”
Code View
The code view shows how source code and configuration are organized into packages and dependencies.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“The code view shows how the source code and configuration are organized into packages, including package dependencies.
It also shows how the executable portions of the system are built from the source code and configuration.”
Questions Addressed by Each View
McGovern, Ambler, Stevens, Linn, Sharan, and Jo identify the key questions addressed by each architectural viewpoint:
Conceptual Architecture View
- How does the system fulfill the requirements?
- How are the commercial off-the-shelf (COTS) components to be integrated, and how do they interact (at a functional level) with the rest of the system?
- How are domain-specific hardware and/or software incorporated into the system?
- How is functionality partitioned into product releases?
- How does the system incorporate portions of prior generations of the product and how will it support future generations?
- How are product lines supported?
- How can the impact of changes in the requirements domain be minimized?
Module View
- How is the product mapped to the software platform?
- What system support/services does it use and where?
- How can testing be supported?
- How can dependencies between modules be minimized?
- How can reuse of modules and subsystems be maximized?
- What techniques can be used to insulate the product from changes in third-party software, changes in the software platform or changes to standards?
Execution View
- How does the system meet its performance, recovery, and reconfiguration requirements?
- How is resource usage balanced?
- How are concurrency, replication, and distribution handled in the system?
- How can the impact of changes in the run-time platform be minimized?
Code View
- How are the builds done? how long do they take?
- How are versions and release managed?
- What tools are needed to support the development and configuration management environments?
- How are integration and testing supported?
You Might Also Like
4+1 View Model of Software Architecture
5 Ways to Manage Complexity in Software Architecture
Agile Architecture Method
Architecture Styles
Data Architecture Practices
What is Application Architecture?
What is Systems Architecture?
You Can’t Evaluate Architecture in a Vacuum
mrkzrtqyrtcwuxtnwell, hi admin adn people nice forum indeed. how’s life? hope it’s introduce branch 😉
Hello. And Se ya later)).