Quality Attributes
November 2025
To achieve a high-quality design a number of factors must be met
Modifiability
- The design must be trivially adaptible and changeable
- Units that are directly affected may need to change
- Units that are not directly affected do not change but their implementation may need to
- Changes can be made less impactful and easier to implement through a variety of methods:
- Anticipation of change
- Generality of modules (inner platforming lol)
- Atomic units
- Indirectly affected units can be made more resilient to changes through generalised interfaces and reducing couplings to other units.
Performance
- Latency/Response time - how fast is a response
- Throughput - how many requests can be processed in a fixed time-frame (ie: requests per second)
- Load - how many concurrent requests can be processed/how many users can utilise the software before latency and throughput have issues
Security
- Immunity - Being immune to an attempted attack
- Resilience - Recovering from a succesful attack easily
Reliability
- Software should have as few faults as possible
- Passive and active fault detection methods can be used
- Exception handling and fault recovery is important to put the system into an acceptable state
- Fault recovery (to limit fault damage) tactics
- Transaction rollback
- Backups
- Fault reporting
- N-version programming allows two teams to implement functionally equivalent systems so that the likelihood that they share faults is reduced
Robustness
- A system is robust if it can recover from problems in the environment or other units
- Mutual suspicion means that units should be resilient to other units having faults
- Recovert tactics for robustness are similar to fault recovery
Usability
Usability reflects how well a user can operate the system
- The UI should be its own unit
- User commands may require architectural support
Business Goals
- Business goals are important because money
- Buy vs Build a system
- Initial development costs and maintenance costs
- Use new tech or stay with known-working tech