Chapter 9 - Architectural Design
Chapter 9 - Architectural Design
Overview
Importance of Architecture
Architectural Descriptions
Architectural Genres
• Artificial intelligence
• Commercial and non-profit
• Communications
• Content authoring
• Devices
• Entertainment and sports
• Financial
• Games
• Government
• Industrial
• Legal
• Medical
• Military
• Operating systems
• Platforms
• Scientific
• Tools
• Transportation
• Utilities
• Set of components
• Set of connections that enable communication, coordination, and cooperation
among components
• Constraints defining how components can be integrated to form the system
• Semantic models that enable designers to understand the overall system
properties by analyzing properties of its constituent parts
Comparing Architectural Styles and Patterns
Architectural Styles
• Data centered - data store (e.g. file or database) lies at the center of this
architecture and is accessed frequently by other components (clients) that
modify data
• Data flow - input data is transformed by a series of computational or
manipulative components into output data
• Call and return - program structure decomposes function into control
hierarchy with main program invokes several subprograms (remote
subprograms may be distributed across networks)
• Object-oriented - components of system encapsulate data and operations,
communication between components is by message passing
• Layered - several layers are defined, each accomplishing operations that
progressively become closer to the machine instruction set
Architectural Patterns
• Control questions
o How is control managed within the architecture?
o Does a distinct control hierarchy exist?
o How do components transfer control within the system?
o How is control shared among components?
o What is the control topology?
o Is control synchronized or asynchronous?
• Data questions
o How are data communicated between components?
o Is the flow of data continuous or sporadic?
o What is the mode of data transfer?
o Do data components exist? If so what is their role?
o How do functional components interact with data components?
o Are data components active or passive?
o How do data and control interact within the system?
Architectural Design
• Software to be developed must be put into context (i.e. model external entities
and define interfaces)
• Identify architectural archetypes (collection of abstractions that must be
modeled if the system is to be constructed)
• Specify structure of the system by defining and refining the software
components needed to implement each archetype
• Continue the process iteratively until a complete architectural structure has
been derived
• Use the architectural context diagram to model the manner in which the
system interacts with external entities
• Systems that interoperate with the target system are represented as
o Superordinate systems – using the target system as part of some
higher level processing scheme
o Subordinate systems – used by the target system to provide data or
processing needed to complete the target system
o Peer level systems – producing or consuming information need by
peers of the target system
o Actors – people or devices that interact with the system to produce or
consume information needed for requisite processing
• Interfaces must be defined
• All the data that flow into or out of the target system must be identified
Defining Archetypes
• Process begins with an examination of the analysis classes for entities from
the business domain that must be addressed in the software architecture
• Infrastructure components needed to support the business functions but have
no business connection to the application domain
• The interfaces depicted in the architecture context diagram may imply
specialized components needed to process data that crosses the interfaces
• Look for archetypes that are reoccur in several components and create new
components that service each repeating design pattern
• UML component diagrams are used to represent the overall architectural
structure
• Refines the high-level architectural design once the overall system structure
is apparent and the major software components have been identified
• Architecture is applied to a specific problem with intent of demonstrating that
the structure and components are appropriate
1. Collect scenarios
2. Elicit requirements, constraints, and environmental description
3. Describe architectural styles/patterns chosen to address scenarios and
requirements (module view, process view, data flow view)
4. Evaluate quality attributes independently (e.g. reliability, performance,
security, maintainability, flexibility, testability, portability, reusability,
interoperability)
5. Identify sensitivity points for architecture (any attributes significantly affected
by variation in the architecture)
6. Critique candidate architectures (from step 3) using the sensitivity analysis
(conducted in step 5)
Architectural Complexity
Transform Mapping
Transaction Mapping
• Remember that an optimal design that does not work has questionable merit
• Designers should be concerned with developing a software architectural
representation that meets the functional and performance requirements as
measured by design measures and heuristics
• Software architectural design refinement should occur in the early design
phases
• Design refinement should strive for the smallest number of components
consistent with effective modularity and the least complex data structure