Overview
November 2025
The Design Process
The high level structure of a system is heavily influenced by early design decisions.
Lower level stuff is often determined by later stages.
Designing is difficult but it can be made easier through a variety of techniques:
- Reference models contain generalised ways to decompose a system
- Cloning can be used to borrow existing code and designs with minor changes
Generic solutions for software architectures are known as architectural styles
Design patterns, principles and convention/idiom can be used to evaluate a chosen design.
flowchart LR
modelling --> analysis
analysis --> documentation
documentation --> review
review --> sad["softwware architecture document"]
analysis --> modelling
review --> modelling
Agile Architectures
The agile process is useful when there is a lot of uncertainty about requirements
Agile architectures are of course, based on principles from the agile manifesto
Agile has challenges when it comes to changes and refactoring, however
Modelling Architectures
There are many ways to use architectural models
- Understand the system
- Determine what can be reused from other systems and how this system is reusable
- Provide a blueprint for the development of a system
- Analyse system dependencies
- Evaluate risks