Skip to content

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

  1. are applicable in a given development context
  2. constrain architectural design decision that are specific to a particular system within that context
  3. 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.