Architectural Views

Software architecture is a complex artifact. To understand it, we should look at it in various ways.

Like in case of building construction, we have civil work, electrical, plumbing perspective, we need multiple views of software to address need of each stakeholder.

  • Software engineering gurus and organisations have formulated architectural views, prominent being: 4+1 View by Philip Krutchen (IEEE, 1995)
  • 3 Views by Software Engineering Institute (SEI)

Philip Krutchen's 4+1 View Model
1. Logical / Functional View: Architecturally significant elements - application structure, class diagrams

2. Process/Thread/Concurrency View: Concurrency and Communication elements - multithreading, replication, synchronisation, asynchronous communication

3. Physical/Deployment View: Mapping of processes/ components on to application's hardware

4. Development/Structural View: Internal organisation of software components - Packages, Class Hierarchies, Software Configuration Management (SCM), Development Environment

5. User/ Feedback View: View for perspective of each stakeholder and their concerns. Views are tied together by architecturally significant use cases. Use cases capture requirements and are also called scenarios. Views are defined using UML (which is for system and not for software alone)

SEI's 3 Views
1. Module View: Structural View - code modules, decomposition, inheritance, aggregation, association

2. Components and Connectors: Components - Objects, Threads, Processes and Connectors - Shared memory, sockets, middleware

3. Allocation: Process mapping to hardware, communication using network/database, source code view in SCM, dev responsibilities

Views are defined using Architectural Description Language (ADL) e.g. CMU - Wright, xADL; Imperial College London - Darwin; University of Malaga - DAOP -ADL
Common elements of ADL are components, connectors, configuration