Software architecture and, subsequently, software architects inherently deal with uncertainties. It is the software architect's job to decide the size of architectural components, which can significantly influence a system's outcomes, both positively and negatively. Neal Ford and Mark Richards propose an iterative approach to address the challenge of identifying and right-sizing components. This method emphasizes continuous refinement as teams develop a more nuanced understanding of system behavior and requirements. 3
The approach typically involves a cycle with several stages: 4
This cycle serves as a general framework and can be adapted to different domains.
The following architectural anti-patterns can arise when architects make decisions. These anti-patterns often follow a progressive sequence, where resolving one may lead to the emergence of another. 5
"Software Architecture". Software Engineering Institute. Carnegie Mellon University. Retrieved 29 June 2022. https://www.sei.cmu.edu/our-work/software-architecture/ ↩
Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media. 2020. ISBN 978-1492043454. 978-1492043454 ↩