Monday, November 17, 2008

"4+1" View Model of Software Architecture

Hi,

This is my first blog. I am just trying to put my all thoughts and my day to day study materials.

Today I started studying about "4+1" view model of software architecture. This seems to be more theoretical and will require lots of understanding to implement this architecture. I just gone thru the blueprint written by Philippe Kruchten.

Here is my high level understanding...

This model describes a software architecture in 5 views. These views allow to address separately the concerns of the various 'stakeholders' of the architecture: end-user, developers, system engineers, project managers etc.
  1. Logical View
  2. Process View
  3. Physical view
  4. Development View
  5. Scenarios
I wanted to put the diagram over here.. but this a pretty straight forward and simple diagram, may be i will put that in my next posts if find useful.

Logical View
The logical view primarily describes about functional requirements - what the system should provide in terms of services to its end users. The system is decomposed into set of key abstractions, taken from problem domain, in form of objects or object classes. The logical architecture is represented by class diagrams and class templates*.

Process View
The process view primarily describes about non-functional requirements, such performance, scalability, availability etc. It addresses issues of concurrency and distribution, of system's integrity, of fault-tolerance, and how the main abstractions from the logical view fit within the process architecture.

As I understand this more describes about running system, processes, tasks, thread etc.

Development View
The development view focus on the actual software module organization on the software development environment. This basically describes the development architecture of the system composing sub-systems, modules, layers and relationship between them. the development view serves as the basis for requirement allocation, for allocation of work to team, for cost evaluation and planning, for monitoring the progress of project, for reasoning about software reuse, portability and security.

Physical View - (Mapping the software to the hardware)
The software executes on a network of computers or processing nodes. The various elements identified - networks, processes, tasks, and objects - need to be mapped onto the various nodes/computers.

Scenarios - (Putting it all together)
The elements in the four views are shown to work together seamlessly by the use of a small set of important scenarios - instances of more general uses cases - for which we describe the corresponding scripts. The scenarios are in some sense an abstraction of most of important requirements. Their design is expressed using object interaction diagrams,
This view is redundant with other once(hence the "+1"), but serves two main purposes.
- as a driver to discover the architectural elements during the architecture design
- as a validation and illustrationrole after this architecture design is complete.

For today, thats all study. Tomorrow I will go thru how the various elements of one view are connected to elements in other views.

* Representing logical view by class diagram is little confusing to me, may it will get more clear as I move ahead.