The (new) Software Architecture Foundation Curriculum
Want to learn Software Architecture? Look no further – the recently released iSAQB Foundation Curriculum covers all your needs!
A group of international software architecture experts has been working on optimizing and streamlining this systematic education path, resulting in the most systematic and practical curriculum ever.
The 2021 update is the result of nearly 12 months of work by more than a dozen experienced practitioners and researchers, who collected, curated and incorporated more than 190 change requests and proposals. You can find some more details on the update and release process in the appendix.
This article provides an overview of the curriculum. Its sources are maintained and published via GitHub.
The iSAQB Foundation Level Curriculum aims to be the authoritative and leading source for all accredited software architecture education. If you are attending a training course and aim for the CPSA‑F certification, knowledge of this curriculum is essential (CPSA‑F: Certified Professional for Software Architecture, Foundation Level). More than 20,000 professional software developers have already been certified.
iSAQB software architecture education will provide you with the necessary knowledge to design and communicate a software architecture. Based upon your individual practical experience and existing skills, you will learn to derive architecture decisions from system goals and requirements.
CPSA‑F trainings teach methods and principles for creating, designing, communicating, analyzing and evaluating software architectures.
Prior to a training course, an overview of the curriculum will give you a good idea of what to expect of such a training.
The curriculum consists of five strongly interrelated parts – based upon solid and proven terminology. A (free!) glossary, published at Leanpub, provides definitions of key terms and concepts for your convenience and reference.
About 40 different learning objectives structure the required skills and knowledge of software architecture in a practical and pragmatic way.
Part 1 – The Fundamentals
This part of the curriculum facilitates a common understanding of our subject by defining and explaining basic concepts – the what and why of software architecture. You will learn agreed-upon definitions of software architecture, its goals and benefits. My personal take on this fundamental part: There is no silver bullet or one single approach that solves all kinds of problems — as decisions will always depend on various influencing factors.
Furthermore, this part explains the role of architects and architecture within the complete lifecycle of software systems. It focuses on the major tasks and responsibilities of software architects, in cooperation and collaboration with other stakeholders, such as management, business, development teams and others.
When discussing the role, you need to consider the size and complexity of the system, organizational factors, team composition, and other constraints. Knowing the pros and cons of these options will help you find an appropriate setup for your teams and projects.
Personally, I like the focus on communication and feedback that the curriculum proposes for the architecture role: explicit communication and feedback are essential ingredients of successful system development. Communication helps to identify risks and agree trade-offs with the stakeholders involved.
Part 2 – Architecture Design Approaches
Architecture work should always start with an appropriately clear understanding of both functional and quality requirements – and the curriculum addresses these alongside with constraints and other influencing factors.
Designing systems is a highly creative (and sometimes difficult) endeavour – supported by several architectural approaches, methods, patterns, and principles. In this part of your architecture education, you will learn about several of these approaches, such as view-based, incremental development, bottom-up and top-down approaches, domain-driven design and evolutionary architecture. Most of the approaches require intensive feedback and therefore are a perfect fit for modern and iterative development and management approaches.
Architecture patterns should be part of your personal toolbox when deciding on system structures, so the most important and established patterns will be covered in foundation courses: from layers and tiers to pipes-and-filters, microservices and self-contained systems, the clean-architecture patterns (also called hexagonal- or onion architecture) to interfacing and integration patterns.
Architects must pay particular attention to system qualities, such as performance, flexibility, maintainability, and security. The curriculum addresses these qualities from different angles (see also Part‑4 below). Proven architectural tactics will help you to achieve the desired or required qualities – related to both externally visible and internal properties of systems.
To assess the consequences of your design decisions, you need to be aware of the timeless underlying principles of software design – such as abstraction, modularization, black-/white-box, coupling, cohesion, conceptual integrity, and a few others. Even the architectural relevance of the SOLID principles will be covered. Learning to apply them in practice will definitely improve your decisions.
Special attention will be paid to dependencies between architectural building blocks: You will analyze the challenges of relationships and dependencies between elements of your architecture, and systematically design and define interfaces that are easy to learn, use and extend.
Part 3 – Architecture Communication
Since you need to interact with a variety of different stakeholders (see figure below for some examples), it is therefore crucial to learn how to communicate your architecture, its structures, concepts, and decisions effectively and efficiently.
You will learn how to use architectural views (like context- or building-block view) to verbally communicate structural decisions and justify them Additionally, you will learn how to apply these skills to (written) documentation too – balancing accuracy, attention to detail and the time required to keep documentation up to date.
A small part of the curriculum is devoted to architecture modelling notations, like UML. Expect an iSAQB foundation training course to include a highly condensed summary of practically useful modeling constructs – and pragmatic advice on how to create useful architecture diagrams.
Although I am one of the core committers of the arc42 template, I personally favor a lean and relaxed style of documentation. In case your systems require strict and detailed documentation, the curriculum has you covered too!
Part 4 – Architecture and Quality
Achieving quality characteristics and quality attributes belongs to the core tasks of software architects. This part of the curriculum dives deeper into the intricacies of the term quality and explains its characteristics. You will learn about quality models, such as the well-known ISO 25010 standard, from a practical viewpoint.
Specifically, clarifying quality requirements is addressed, e. g. by using quality scenarios. In addition, the analysis of quality is covered – together with its methodical brethren, the quantitative approaches to analyzing and evaluating software architectures.
Part 5 – Practical Examples
Examples are the best learning tool: Only through examples does architectural knowledge become tangible and visible. Experienced iSAQB trainers are able to complement the conceptual background from the learning objectives with real life situations and experiences.
Using examples, you will be able to understand the relationship between requirements and the technical and architectural solution. In addition, you will be able to understand the rationale behind specific architectural decisions (aka design rationale).
Please note – every trainer is free to select their own examples that fit a particular training situation. Think about what kind of examples you want to see and experience prior to attending a training!
Education needs Practice
iSAQB training courses always include intensive practice sessions, where you will tackle specific architectural challenges in small and focused groups. Such exercises help impart knowledge and skills.
Similar to the practical architecture examples from part‑5 of the curriculum, the contents of these exercises are up to your trainers. Hands-on exercises are mandatory for parts 1 to 4 of the curriculum and ensure that the key learning objectives are covered.
Due to the complex nature of software architecture, it is recommended that you attend accredited training classes in case you aim for the iSAQB CPSA-Foundation certification. Such courses have a minimum duration of 3 days, which makes them efficient educational events. In case you want to supplement your training, there are two (free) publications that complement the curriculum:
A comprehensive glossary of terms plus an annotated collection of software architecture books and references.
The perfect companion to prepare for the CPSA‑F certification is the exam preparation guide (see references below). Disclaimer: I am co-author of this book.
A big „thank you“ to both „m“ and Joachim Praetorius for many and thoughtful improvements to a prior version of this article.
The iSAQB Glossary of Software Architecture Terminology. A free ebook, defining the terms used in iSAQB curricula. It’s available both as eBook from Leanpub and as an online reference.
The public repository of the CPSA-Foundation curriculum on Github.
The public CPSA download site, where many iSAQB documents are available.
Gernot Starke + Alexander Lorz: Software Architecture Foundation – Exam preparation guide. VanHaren International, 2021. This book explains all 40 learning goals in details, helping you to prepare for the CPSA‑F certification.
An annotated collection of software architecture books, articles and additional reading. Compiled by iSAQB contributors, freely available on Leanpub.
Appendix: More than just „commit and push“
Since the iSAQB works internationally and publishes the curriculum in a variety of languages, updating and releasing this fundamental document is a rather complex process. The following diagram gives a brief impression.
In addition to incorporating feedback from the architecture community and the iSAQB members themselves, the FLWG (Foundation Level Working Group) received valuable input and suggestions from the dozens of international trainers and educators who work with the curriculum in their workshops and training courses.
The FLWG accepted and merged close to 500 (!) commits on the public Github repository into the main branch of the curriculum. Eleven active contributors shared the work of reviewing, discussing and incorporating these changes. Only a fraction of change requests were contributed via GitHub, many others were discussed in person, via email or in countless video- or phone conferences with many contributors.
Since 2018, the iSAQB has moved more and more documents to public GitHub repositories, to release bug fixes and improvements in a timely manner. A defined naming and numbering schema facilitates releases – which are created upon tagging commits.