Software Architecture: Definitions for a system is the structure which consist of elements, their externally visible properties, and the relationships among them. The fundamental organization of a system [as] embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. (IEEE 1471-2000).
Architecture: Benefits? Contributes to elicitation of requirements. First design: can already assess / determine satisfaction of requirements. Work allocation / distribution (schedule). Instructional: useful to learn about system. Initial development & maintenance. Reuse of the architectural style / framework. Also
Conceptual Integrity is central to achieving product quality. Also called Architectural Integrity. Coherent conceptual (design) model makes product easier to understand, hence easier to Develop (e.g. Design, test), Learn to use: customer, I&C, sales & marketing Maintain. How to achieve conceptual integrity?
System Architect Custodian of product ensures Design coherence. Also, to some extent, Interface coherence (esp. UI).
System Architect Full-time job! Separation of architecture from implementation. Project size hierarchy of architects. Single mind Having a system architect is an effective means of achieving conceptual integrity.
Interrelationships Static: Interface dependencies: e.g. uses/import. Containment, inheritance, subtype, Data dependencies (database applications). Dynamic: Thread of control. Dataflow.
Documentation: Putting it all together How best to capture all of these different kinds of components and their interrelationships? Consider
View Based Documentation of Architectures Architecture Document = View A + View B + View C + View X + Beyond Views
4+1 View Model of Architecture By Philippe Kruchten [Kruchten95] (URL to paper given on web site.) Rational Unified Process.
4+1 View Model Deployment/ Implementation/
References Kruchten95, becoming a bit dated. RUP documentation Available in lab. Also includes samples. To access RUP from lab machines Launch the Rational Unified Process. From the Overview page Select Analysis and Design At the top of this page select Artifacts Select Software Architecture Documents You will see links to the examples . Note that I do not consider the examples complete.
4+1 VM (Alternate names)
5+1 View Model = 4 + 1 + data view. Other combinations of views are possible.
4+1: Let us look at each view Deployment/ Implementation/
Main goal: present architecturally significant use cases either: Duplicated from req. doc. Named and reference given to req. doc. These use cases are to help highlight main Architectural decisions / choices Use Case View
Logical View: Main Goals Convey Overall structure and Interfaces to the environment, in a manner that is conceptually as simple as possible Challenge: find right level of detail.
Logical View & Requirements Main focus: functional. It should be possible to assess (up to a certain level of detail) whether requirements will be satisfied by the proposed architectural design.
Logical View: How Presented? Mainly UML class diagrams, including Package diagrams. Component structure (UML2) Explanatory text, including design rational
Logical View, Example You have seen many examples of class and package diagrams. UML 2 component diagrams you have seen as well
Logical View (e.g. Kruchten)
Process View Components: processes, tasks, group of tasks : single exec. unit. Control: start, shutdown, recover, restore Primary / secondary (redundancy) Interrelationships: Communication Allocation of Logical view components to processes/tasks. Synchronization mechanisms
Process View e.g. (Kruchten)
Process View ex. Logical View Components
Implementation (Development)View Actual S/W organization. Components: Libraries, subsystems, exec., object files, Most common top-level arch. style: layers Connectors: containment, dependencies, Allocate logical components to impl. comp. Reuse: Off-the-shelf. To-the-shelf: sharing with other projects.
Implementation View illustration
Deployment (Physical) View Components: processors, processing nodes, Network topology. Usually several topos are supported. S/W should be relatively independent of topo. Allocation of process view elements to H/W (processing nodes). Examples: Network elt: Process mapping into application cards. Network Mgmt: one or more NOCs.
Deployment View - illustration
Siemens Four View Model Reference: Applied Software Architecture by C. Hofmeister, R. Nord and D. Soni.
Siemens Four View Model: Overview S/W Architecture
Comparing the View Models 4+1 Logical Implementation (Development) Process Deployment (Physical) (Use Case) S4VM Conceptual Module Execution Code
S4VM Overview S4VM: in more detail. Notice activity groups in each view are the same
S4VM Activities Groups in each view For each view perform Global analysis (Mostly the same for each view.) Central design tasks. (Specific to each view.) Final design tasks. (Specific to each view.)
Global Analysis: Purpose To identify issues (early) so that strategies can be proposed to resolve them. (Architectural) Factors can be seen merely as a means of organizing (group) issues.
Global Analysis Activities: 1.Analyze Factors. 2.Identify Issues. 3.Develop Strategies.
1. Analyze Factors - purpose Identify and describe factors that can influence the system architecture. Document the factors.
1. Analyze Factors Use given factor categorization / list to kickoff. For each factor consider: How it relates to the project. Flexibility and changeability. Impact.
Organizational Factors Top-level grouping of factors: O1: Management O2: Staff skills, interests, strengths, weaknesses. O3: Process and development environment. O4: Development schedule. O5: Development budget.
O1: Management, further refined Build vs. buy. Schedule vs. functionality. Environment. Business goals.
Ex. Project Factor Analysis Output O1: Management O1.1: Build vs. buy There is a mild preference to build. Flexibility & changeability: organization will consider buy if justified. Impact: moderate impact on meeting schedule. O1.2: Schedule vs. functionality Preference for meeting schedule over some features Flex.&chng: negotiable for some features