Context
Software Architecture: To bridge the gap between requirements and solutions.
- High level of system design
- System-level abstractions & quality attributes
SA Definitions
The set of structures needed to reason about system. The structures includes software elements, relations among them, and properties of those elements and relations.
We should look at the system in different views - different aspects of software system.
SA describes how a system is structured into
- components and connectors. (SA structure)
- and how these components interact (SA behavior)
SA Structure and Behavior
Component and Connector
A component is a building block that is
- a unit of computation or data store, with an interface specifying the services it provides and requires.
- a unit of deployment
- a unit of reuse
A connector is a building block that enables interaction among components
- service invocation
- procedure calls
- asynchronous message queues
A component should be independent of the context in which it is used to provide services or to connect components
UML Component Diagram
A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.
A components is modeled as
- a rectangle with the component's name, icon, and/or stereotype text
Provided interface
Required interface
SA Behavior
SA behavior is expressed in terms of component interactions via connectors
Why SA is Important
Architecture can either inhibit or enable a system's driving quality attributes.
- Performance?
- Modifibilitiy?
- ...
Analysis of architecture enables early prediction of the system's quality.
It can provide the basis for incremental development.
......
Quality Attributes
Functional requirements: business capabilities the system must provide
Quality attribute (non-functional) requirements: quality attributes the system must meet in delivering functional requirements.
There are many kinds of quality attributes: availability, performance, integrability, energy efficiency, useability...
Architectural Patterns/Style
An architectural pattern describes a particular recurring design problem that arises in specific design contexts and presents a well-proven architectural solution for the problem.
An architectural style is a collection of architectural design decision that
- are applicable in a given development context
- constrain architectural design decision that are specific to a particular system within that context
- elicit beneficial qualities in each resulting system
Catalogue of SA
Layered architecture: e.g. ISO/OSI architecture model in computer network
Publish-subscribe pattern
- Message sender: publishers provide massage
- Message recipients: subscribers decide which message to receive
- publisher and subscribers are decoupled.
Client-server style
Microservices
Reference Architecture
A Software Reference Architecture (RA) is a general architecture that is used as a foundation for the design of concrete architectures within a given context of application domain.