Software Architecture Flashcards
Software Architecture:
Two Parts
Architectural Design Process
The design process for identifying the sub-systems and the framework for sub-system control and communication
Software Architecture
The output of the Architectural Design Process
Architectural Design Process:
Basic Description
- An early stage of the system design process
- Represents the link between specification and the design processes
- Often carried out in parallel with some specification activities
- Involves identifying major system components and their communications/interactions
Architectural Design:
Important Concepts
Architectural Representations
Architectural Reuse
Architectural Patterns
Architectural Design:
Architectural Representations
Simple, informal block diagrams showing major entities/components and relationships
- Basic, “Box and Line” diagrams
- Very abstract, but useful for communication with stakeholders and for project planning
Architectural Design:
Architectural Reuse
A principle of design. Do not reinvent the wheel.
- Systems in the same domain often have very similar architectures which reflect domain concepts
- The architecture of a system may be designed around one or more Architectural Patterns or Styles
Architectural Design:
Architectural Patterns:
Overview
- “Patterns” are a means of representing, sharing and reusing knowledge
- An Architectural Pattern is a description of good design practice, which has been tried and tested in different environments
- Patterns should include information about when they are and are not useful
- Patterns may be represented using tabular and graphical descriptions
Architectural Patterns:
Some Major Architectural Patterns (6)
- Client-Server Architecture
- Model-View-Controller
- Model-View-View Model
- Layered Architecture
- Repository Architecture
- Pipe and Filter Architecture
Note: this is far from comprehensive
Architectural Patterns:
Client-Server Architecture
- A distributed system model
- Shows how data and processing are distributed across a range of components
- Set of stand-alone servers which provide specific services
- Set of Clients which call on these Servers
- Network which allows Clients to access Servers
Architectural Patterns:
Model-View-Controller
- Separates the Presentation and Interaction from System Data
- System is split into three major layers:
-
Model (Data Layer):
- Encapsulates Application State
- Notifies View of state changes
-
View (Presentation Layer)
- Renders the Model
- Requests Model updates
- Sends User Events to the Controller
-
Controller (Interaction Layer)
- Maps User Events to model updates
- Selects View
-
Model (Data Layer):
Architectural Patterns:
Layered Architecture
- Used to model the interfacing of multiple subsystems
- Organizes the system into a set of layers, each of which provide a set of services
- Supports incremental development of subsystem in different layers
- Upper layers depend on lower layers
Architectural Patterns:
Repository Architecture
Represents a data repository that is shared by many subsystems
- Subsystems must exchange data in one of two ways:
- Shared data is held in a central database or repository
- Each subsystem maintains its own database and passes data explicitly to other subsystems
- When large amounts of data need to be shared, repository model is most commonly used
Architectural Patterns:
Pipe and Filter Architecture
- Functional transformations:
- Process Inputs
- Produce Outputs
- Models a “Pipeline”
- Not really suitable for interactive systems
- Good when there is a well known “work flow”
- Early Components/Stages take in inputs and provide inputs into later Components/Stages
- Final Components/Stages produce outputs