Software Architecture Flashcards
What is Software Architecture?
Fundamental organization of a system embodied by its components, their relationships to each other & the environment, & the principles guiding its design & evolution
How do Bass, Clements, and Kazman define Software Architecture?
The set of structures needed to reason about the system, which comprise software elements, relations among them & properties of both
True or False: Every system has an architecture, but an architecture is not a system
True, an architecture & a system are not the same thing
True or False: An architecture & an architecture description are not the same thing
True, an architecture exists whether it’s described (recorded) or not
True or False: Architecture Standards, architecture descriptions & development processes are separate concerns
True, What an architecture is is independent of how or whether it’s described & how it’s developed or implemented
Why is software architecture important?
- Projects are requirements driven and architecture centric
- Software Architecture is a blueprint
- Software Architecture defines work assignments
- Software Architecture is the “primary carrier of system qualities”
- Helps identify & mitigate risks
What is an Architectural View?
A collection of models that represent one aspect of the entire system.
Expresses the architecture from the perspective of one or more stakeholders to address specific concerns
What is an Architectural Viewpoint?
A set of conventions for constructing, interpreting, using & analyzing a type of architecture view.
Generalized frameworks that establish languages, notations, methodologies & technique used to create an architecture view
What is an Architecture Description (AD)?
Expresses one possible architecture for a given system & typically consists of a combination of models and documents
What is an Architecture Model?
Represents a concrete model used to represent a particular stakeholder perspective in an architecture view
What is an Architecture Decision?
The result of architectural design activities that results in the definition of refinement of an architectural description element
What is an Architecture Rationale?
records the explanation, justification or reasoning about architecture decisions that have resulted in architecture solutions & any discarded alternatives
What is an Architecture Framework?
Establishes a common practice for creating, interpreting, analyzing and using architecture descriptions within a particular domain
(e.g. Krutchen 4+1 View Model)
What is maintained as part of the ISO/IEC/IEEE 42010:2011 Standard?
A comprehensive survey of Architecture Frameworks
What are the 5 Viewpoints?
Requirements Design Interaction Deployment Validation
List the characteristics of a Design Viewpoint
- Defines the logical representation of a system
- Logical structures of the software system
- Described in Design Models
List the characteristics of a Physical Viewpoint
- Defines the physical structures of the system
- Physical elements that “manifest”, bring to life, logical elements
- Described in deployment models
What is the definition of a Module?
A unit of the system that is assigned specific computational responsibilities (concerns) & are the basis of work assignments
What is the definition of a Component?
A modular, autonomous unit with well-defined interfaces that is replaceable within its environment
What is the definition of a Subsystem?
A unit of hierarchical decomposition for large systems that is a type of component commonly instantiated indirectly
What is the definition of an Artifact?
A concrete element in the physical world that is used or produced by a software development process or the system itself
What are the 3 types of Architectural Structures?
Static Structures
Dynamic Structures
Allocation Structures
What are Static/Module Architectural Structures?
Define how the system is to be structured into implementation units that have to be constructed
What are the benefits of a Static/Module Architectural Structure?
- Each module has to represent a well-defined, non-overlapping concern
- Have clear and specific functional responsibilities
What are some examples of Static/Module Architectural Structures?
Layers subsystems components Classes Tables Data Entities
What is a Decomposition Structure?
A structure that identifies the hierarchical composition of modules related to each other with contains/is-a-submodule of relationships
What are the benefits of a Decomposition Structure?
- Each layer is decomposed into subsystems
- Each Subsystem is decomposed into publically accessible elements (interfaces) & private, encapsulated elements (classes)
- Informs resource allocation, project structuring, project planning, and configuration control
- Enforces the encapsulation/information hiding principle
What is a Layered Architecture?
An architecture where each part of the software system is decomposed into layers, subsystems, classes and interfaces
This is also a type of Decomposition Structure
What is a Dependency Structure?
Defines how modules are dependent on each other using dependency (USES) relationships
What are the benefits of a Dependency Structure?
- Allow for functionality to be provided by supplier module to consumer modules
- Change travels through dependencies in reverse
- Controlling dependencies allows the architect to minimize the impact of changes to the system
- enforces the separation of concerns principle
What is a Generalization Structure?
Defines how modules are related through Generalization (Inheritance) relationships
What are the benefits of a Generalization Structure?
- Capture the commonalities between modules
- One of the mechanisms used to eliminate duplication
- Allow the incremental addition of functionality in a controlled fashion that minimizes impact
- Enables abstraction & polymorphism
- Enforces the reuse principle through inheritance & polymorphism
What is a Data Model Structure?
Describes the static information structure in terms of data entities and their relationship:
- One-to-One
- One-to-Many
- Many-to-Many
Essential for Information Systems
What are the benefits of a Data Model Structure?
- In certain architecture patterns, this structure drives the design of the system
- Captures the database design through Entity Relationship Diagrams (ERDs)