Designing architecture from scratch may require some tools and approaches to put all the things together.
High-Level structure of software can be illustrated/represented variously, and one of the approaches is to make an Architectural Blueprint with 5 different views to the system [by Philippe Kruchten].
- Logical View – an object model of the design.
- Process View – concurrency and synchronization aspects.
- Physical View – mapping of the software to the hardware.
- Development View – static organization of the software.
- Use Cases – various usage scenarios.
The Logical Architecture
Serves the functional requirements and decomposes the system into a form of objects and object classes. Class diagrams and class templates are usually used to illustrate this abstraction. Common mechanisms or services are defined in class utilities. Keeping a single, coherent object model across the whole system is a general advice when building a logical view.
The Process Architecture
It takes into account non-functional requirements, performance and availability, concurrency and distribution, system integrity and fault-tolerance. it can be represented as a high level view to a set of independently executing logical networks of communication programs that are distributed across a set of hardware. A process is a group of tasks that form an executable unit and which can be (a) tactically controlled, (b) replicated, (c) partitioned into a set of independent tasks: major and minor (cyclic activities, buffering, time-outs).
The Development Architecture
It represents software module organization on the software development environment. It consists of libraries and subsystems representation. The subsystems are organized into the hierarchy of layers with well-defined interface. Overall, this view is represented by module and subsystem diagram, showing the export/import relationships. Also it takes into account internal requirements. Layered style is recommended for this view.
The Physical Architecture
It represents non-functional requirements such as availability, reliability, scalability and performance. It shows how networks, processes, tasks and objects are mapped onto the various nodes.
This fifth view is redundancy but it has two main purposes:
- driver to discover the architectural elements during the architecture design
- validation and illustration role after the architecture design is complete, also it can be used as a starting point for the tests of an architectural prototype.
It uses the components of the logical view with connector’s elements from the Process view for the interaction between the objects.