İsaqb
İsaqb
Introduction
iSAQB certification program
Certified Professional for Software Architecture
Foundation Level (CPSA-F)
Co-authors
‣ Bernd Hauck, Dehla Sokenou
Reviewers
‣ Peter Götz, Peter Hruschka, Ulrich Becker, Roger Rhoades
Slide contributions by
‣ ITech Progress GmbH
‣ iSAQB Working Group Universities
Jörg Hettel, Michael Sperber,
Benjamin Wolf, Holger Tiemeyer
We appreciate your feedback and suggestions for
Design and Support improvement. Please contact us by e-mail:
‣ Änne Fitzner, Ricarda Pilz, Mirko Hillert [email protected]
Examination Procedure
Responsabitlies:
-Crafting strategic solutions that empowers our Fund accounting products
-Designing and leading the most critical project, full of risk and uncertainties
-Setting the technological roadmap for the next 2, 5 and 10 years
-Mentoring and training…
Philosophy:
A result-driven approach with purpose and rationale-driven decision-making.
Interest
Chess, Piano, cooking, Brain games, Personal development staff…
Certification?
“Real” architecture
‣ Planning, designing & constructing
buildings
‣ Greek: arkhi-chief + tekton builder
‣ Provide rules and structure
iSAQB CPSA-F – 0. Introduction Fig. C0.2: Winchester Mystery House (modified from image by HarshLight,
9 flickr)
What Is “Good” Architecture?
Fig. C0.3: by TREEAID, flickr Fig. C0.5: piqsels Fig. C0.6: piqsels
iSAQB CPSA-F – 0. Introduction 10
iSAQB e.V.
Quality control:
Contact [email protected] to provide anonymous and
confidential feedback independent of trainer and training provider.
Foundation Level
‣ Discusses fundamental concepts
EXPERT
further information:
www.isaqb.org/certifications/ FOUNDATION
Table of Figures
‣ C0.1: Jon Callas. (2008). Colossus. www.flickr.com/photos/19745294@N06/2717063851. CC BY 2.0. Last visited: 2021-02-13
‣ C0.2: HarshLight. (2009). Winchester Mystery House (modified, cropped). https://www.flickr.com/photos/harshlight/3669393933. CC BY 2.0.
Last visited: 2023-04-16
‣ C0.3: TREEAID. (2006). Village granary near Fada, Burkina Faso. www.flickr.com/photos/53871588@N05/5092313365. CC BY 2.0. Last
visited: 2021-02-12
‣ C0.4: granary field Asturias Spain. www.piqsels.com/en/public-domain-photo-fbasa. CC0. Last visited: 2021-02-12
‣ C0.5: red granary Bydgoszcz mill island Poland. www.piqsels.com/en/public-domain-photo-fvzkq. CC0. Last visited: 2021-02-12
‣ C0.6: silo wheat storage wheat storage. www.piqsels.com/en/public-domain-photo-znymm . CC0. Last visited: 2021-02-12
‣ C0.7: iSAQB. (2020). Foundation Level Curriculum, Version 2019.2-EN from June 16, 2020. p.7. https://isaqb-org.github.io/curriculum-
foundation/foundation-curriculum-en.pdf. Last visited: 2021-02-12
‣ C0.8: Geek & Poke. (2011). How to write a CV. http://geek-and-poke.com/geekandpoke/2011/1/27/nosql.html. CC BY 3.0. Last visited: 2021-
02-12.
Websites
‣ [iSAQB1]: International Software Architecture Qualification Board – iSAQB. http://www.isaqb.org/. Last visited: 2021-02-12
‣ [iSAQB2]: International Software Architecture Qualification Board – iSAQB. www.isaqb.org/certifications/. Last visited: 2021-02-12
‣ [iSAQB-Curriculum] International Software Architecture Qualification Board – iSAQB. https://public.isaqb.org/curriculum-foundation/.
Last visited: 2023-04-16
‣ [iSAQB-Glossary] iSAQB Glossary of Software Architecture Terminology. https://public.isaqb.org/glossary/. Last visited: 2023-04-16
‣ [iSAQB4]: International Software Architecture Qualification Board – iSAQB. www.isaqb.org/certifications/literature. Last visited: 2021-02-12
‣ [IREB1]: International Requirements Engineering Board – IREB. http://www.ireb.org/. Last visited: 2021-02-12
‣ [ISTQB1]: International Software Testing Board – ISTQB. http://www.istqb.org/. Last visited: 2021-02-12
CPSA-F-C1_v1.0.0-EN-1_2023-07-26
Overview
Architectural Domains
Software-intensive system
A system for which software is a major technical
challenge and is perhaps the major factor that
affects system schedule, cost, and risk
System
Combination of interacting elements organized
to achieve one or more stated purposes
Software
Computer programs, procedures and possibly
associated documentation and data pertaining
to the operation of a computer system
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.1: (some exemplary) dimensions of a software system, from [Gharbi+2019] 26
What Is Software Architecture?
Significance of Software Architecture for Software-Intensive Systems
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.2: Key Terms in Definitions of Software Architecture 28
Definitions of Software Architecture
Design
Klasse2 Klasse4
Size / Softwar
complex e
ity of the Architect Type of
Softwar ures Architect
e ure
Architect
ure
Quality
Operatio of
nal
Architect
Aspects
ure
More detail on
WWWWW WWWWW
architecture
formation later
in this chapter.
This is not a linear process!
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.3b: Architecture design as part of the SDLC 32
Goals and Benefits
Principles for Good Architecture
useful
‣ Fulfill functional and quality
requirements
stable
‣ Reliable, mature, maintainable
graceful
venustas ‣ Well-structured design
firmitas
Specifies necessary
Creates a meaningful implementation measures
division of components Good Software
‣ Abstraction from Architecture
Defines design guidelines to
complex details ensure conceptual integrity
‣ Isolate cross-cutting
concerns
Project Goals
Architecture Goals
Before we proceed, …
Building Block
Class, Layout /
Component, Data Structure,
Module, Script Mapping
Program DB-Table
Function Definition
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.5: Examples of building blocks [Gharbi+2019] 38
Key Terms and Concepts
Building Block / Component
Unit of hierarchical (de)composition and encapsulation
Component ISO/IEC 25010:2011
“entity with discrete structure, such as an assembly or software module, within a
system considered at a particular level of analysis”
Components provide (static) structure
Different sizes
‣ Small (data structure, function)
‣ Medium (library)
‣ Large (framework, container cluster)
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.7: Black and White Box Components 42
Key Terms and Concepts
(De-)Composition and Refinement
Components can be further decomposed
into subcomponents according to, e.g.,:
‣ Important data types
‣ Layers
‣ Customer journey
‣ Smallest piece of self-contained functionality
‣ ...
We will come back to Separation of Concerns (SoC) and how to deal with cross-cutting
concerns later.
iSAQB CPSA-F – 1. Basic Concepts 44
Key Terms and Concepts
Stakeholder
Stakeholder ISO/IEC/IEEE 24765:2017
‣ “Individual or organization having a right, share, claim, or interest in a system or in its
possession of characteristics.”
‣ “An individual, group, or organization who may affect, be affected by, or perceive itself
to be affected by a decision, activity, or outcome of a project.”
Essentially: Concept for grouping people and organizations into categories according to
their concerns and influence.
Be precise about
“What is this requirement related to?”
‣ Requirements are interconnected
‣ A requirement for one thing can lead to
a requirement for another.
Distinguish between
‣ Functional requirement
‣ Quality requirement
‣ Constraints More on requirements and
constraints in Chapter 3.
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.9: Requirements 46
Key Terms and Concepts
Functional vs. Quality Requirements
… do happen and
can be managed CHANGES … might happen and can
imply significant risks.
logic layer
Business logic
data layer
goes here.
software
Other architectural domains: architecture
‣ Enterprise IT architecture goes here
‣ Business process architecture
‣ Hardware architecture
‣ Processor architecture
‣ …
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.12: Dern‘s Architecture Pyramid, illustration derived from [Lehner+2007] 57
Other Architectural Domains
Subdomains of Enterprise Architecture
Enterprise Architecture
Business Architecture
‣ Goals, strategies, KPIs ‣ Processes
‣ Organization (structure, skills, knowledge, location) ‣ Partners and suppliers
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.13 by Roger Rhoades, according to [TOGAF2018] 58
Architectural Domains
Domains Within Software Architecture.
Architectural Domains
Functional vs. Technical Architecture
Architectural Technical
style infrastructure
ABSTRACTION
Functional Technical
architecture architecture
level level
concrete
We want to organize
things into views.
What is a view?
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.16 65
Conceptual Model of Architecture Description
What is a model?
iSAQB CPSA-F – 1. Basic Concepts Fig C 1.17 66
What Is a Model?
A model is a lie!
Fig. C1.18 Fig .C1.19
Abstraction of reality
‣ For specific purpose (viewpoint)
‣ Explain or predict reality
‣ Omit certain aspects of reality
‣ Reduced complexity Fig. C1.20 Fig. C1.21
context view
High-Level Overview
Architecture Formation
How Does a Software Architecture Take Form?
Prerequisites
‣ Essential quality requirements are known.
‣ (Core) functional requirements are known. ← “It depends”
‣ Most important influencing factors are known.
When?
‣ Starts at project begin.
‣ Continues during the development and maintenance of the system.
Formation
‣ Incremental refinement and extension.
‣ In small teams.
‣ Through experience and application of “best practices”.
Requirements, Design
Stakeholders,
Constraints
Implementation
Context, Architect Experience
Organization Developers gained
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.27: The Architecture Influence Cycle according to [Starke2020] and [Bass+2021] 73
Architecture Formation
Iterative Development of Architectures
Architecture design is an iterative process! Architecture, stakeholders, and IT system
influence each other. Requirements and
Initially influencing factors can change.
‣ Analyze requirements
‣ Design a high-level architecture Influencing
Refine software architecture in iterations Requirements
factors
‣ Analyze requirements in more detail influences
‣ Consider feedback
‣ Extend software architecture changes Architecture changes
design
→ Identify design problems early
→ Deliver high-value functionality early Context &
Customer
stakeholders
Beware of IKIWISIs!
“I know it when I see it.”
They are
everywhere!
But we can manage them.
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.29: derived from iconcheese Fig. C1.30 : The Twin-Peaks model, illustration derived from [Nus2001] 75
Architecture Formation
Refinement of Requirements
An architecture is the result of many design decisions.
Analyze and explicate requirements to derive architecture decisions from them!
Quantify requirements whenever possible, e.g.:
‣ Mean Time Between Failure (MTBF)
‣ Average response time, load behavior, and scalability
‣ Specification of quality scenarios
→ Not helpful: “often”, “many”, “safe”, “fast”
Consider system behavior in abnormal and fault situations
What are the things that you don’t know?
Do you know how stable your requirements are?
We come back to this in
more detail in Chapter 3.
iSAQB CPSA-F – 1. Basic Concepts 76
Architecture Formation
Consider the Future
Software architecture design is “informed clairvoyance”
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.31: According to Hofmeister et al. “A general model of software architecture design …” [Hof2007] 79
Architecture Formation
The Software Life Cycle
iSAQB CPSA-F – 1. Basic Concepts Fig. C1.32: Versioned staged model for the software life cycle according to Rajlich and Bennett [Raj2000] 80
Basic Concepts
Summary / Wrap Up
What have we covered so far?
‣ Software-intensive systems, definitions of software architecture
‣ Software architecture as part of the software life cycle
‣ Objectives and benefits of software architecture, long-term vs short-term goals
‣ Key terms and concepts
‣ Architectural domains (within and external to software architecture)
‣ Conceptual model of architecture description, models and views
‣ Architecture formation
What’s next?
‣ Chapter 2: Roles and responsibilities of architects
‣ Chapter 3: How to derive quality goals and constraints from requirements
Table of Figures
‣ C1.1: from [Gharbi+2019]
‣ C1.2: own work
‣ C1.3: derived from [Gharbi+2019]
‣ C1.3b: derived from ITech Progress slide deck
‣ C1.4: Caryatides (From the edition of Vitruvius by Fra Giocondo, Venice, 1511) ) as it appeared in Ten Books on Architecture by Vitruvius,
translated by Morris Hicky. (1914). Source: http://www.gutenberg.org/files/20239/20239-h/29239-h.htm. Author: Herbert Langford Warren &
Nelson Robinson. https://commons.wikimedia.org/wiki/File:Caryatides_from_the_edition_of_Vitruvius_by_Fra_Giocondo.jpg. CC0. Last
visited: 2021-02-11
‣ C1.5: ITech Progress slide deck, also published in [Gharbi+2019]
‣ C1.6: derived from katemangostar. (2020). Set geschäftsleute mit klemmbrettern Kostenlosen Vektoren. https://de.freepik.com/vektoren-
kostenlos/set-geschaeftsleute-mit-klemmbrettern_5562386.htm#page=4&position=35. CC0. Last visited: 2021-02-11
‣ C1.7: own work
‣ C1.8: derived from [Gharbi+2019]
‣ C1.9: own work
‣ C1.10: Geek & Poke. (2012). Sometimes it´s that simple. http://geek-and-poke.com/geekandpoke/2012/4/16/sometimes-its-that-simple.html.
CC BY 3.0. Last visited: 2021-02-11
‣ C1.11: own work
‣ C1.12: derived from [Lehner+2007]
‣ C1.13: by Roger Rhoades, according to [TOGAF2018]
‣ C1.14: own work
‣ C1.15: derived from [Gharbi+2019]
iSAQB CPSA-F – 1. Basic Concepts 82
References
Table of Figures
‣ C1.16: from ISO/IEC/ IEEE 42010 :2011 (p 5, detail of fig. 2)
‣ C1.17: from ISO/IEC/ IEEE 42010 :2011 (p 5, detail of fig. 2)
‣ C1.18: mallard water bird duck blue. https://www.piqsels.com/en/public-domain-photo-snyzh. CC0. Last visited: 2021-02-12
‣ C1.19: A. Konby (?). (1899). Imaginary rendering of Vaucanson's digesting duck in Scientific American. https://en.wikipedia.org/wiki/Digesting_Duck#/media/File:Digesting_Duck.jpg. Public domain.
Last visited: 2021-02-12
‣ C1.20: lego duck drake mallard. https://www.piqsels.com/en/public-domain-photo-zrrjr. CC0. Last visited: 2021-02-12
‣ C1.21: own work
‣ C1.22: Disneyland paris Disneyland paris theme. https://www.piqsels.com/en/public-domain-photo-fwnxq. CC0. Last visited: 2021-02-12
‣ C1.23: bath duck close up cute duck. https://www.piqsels.com/en/public-domain-photo-zbjzk. CC0. Last visited: 2021-02-12
‣ C1.24: from [Gharbi+2019]
‣ C1.25: Software Architecture Views. illustration from WG Universities slide deck
‣ C1.26: Systematic design: derived from ITech Progress slide deck
‣ C1.27: The Architecture Influence Cycle according to [Starke2020] and [Bass+2021]
‣ C1.28: Mutually Influencing Factors. from ITech Progress slide deck
‣ C1.29: derived from iconcheese. Monster. https://thenounproject.com/search/?creator=2793072&q=monster. CC0. Last visited: 2021-02-12
‣ C1.30: The Twin-Peaks model, illustration derived from [Nus2001]
‣ C1.31: derived from [Hof2007], but annotated and extended
‣ C1.32: according to [Raj2000], own drawing but derived from this source
Literature Sources
‣ [Bass+2021] Len Bass, Paul Clements, Rich Kazman: Software Architecture in Practice. Addison-Wesley; 4th edition, 2021.
‣ [Booch+1999] Booch, G., Rumbaugh, J. and Jacobson, I. (1999). The Unified Modeling Language User Guide. Bonn, Germany: Addison-
Wesley.
‣ [Gharbi+2019] Mahbouba Gharbi, Arne Koschel, Andreas Rausch: Software Architecture Fundamentals - A Study Guide for the Certified
Professional for Software Architecture®,dpunkt.verlag, 2019.
‣ [Hof2007] Hofmeister, C., Kruchten, P., Nord, R. L., Obbink, H., Ran, A., & America, P.(2007). A general model of software architecture
design derived from five industrialapproaches. Journal of Systems and Software, 80(1), 106-126.
‣ [Lehner+2007] Lehner, F.; Wildner, S.; Scholz, M.: Wirtschaftsinformatik: Eine Einführung. Carl Hanser Verlag, München 2007, p. 185 f; and
Keller W.: IT-Unternehmensarchitektur: Von der Geschäftsstrategie zur optimalen IT-Unterstützung. dpunkt.verlag, Heidelberg2007., p. 22]
‣ [Nus2001] Nuseibeh, B. (2001). Weaving together requirements and architectures. Computer, 34(3), 115-119.
‣ [Raj2000] Václav T. Rajlich, Keith H. Bennett: A staged model for the software life cycle. Computer 33.7 (2000)
‣ [Starke2020] Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden. 9.Auflage, Hanser, 2020.
‣ [TOGAF2018] The Open Group: TOGAF® Standard, Version 9.2, 2018.https://pubs.opengroup.org/architecture/togaf9-doc/arch/
CPSA-F-C2_v1.0.0-EN-1_2023-07-26
Overview
To deliver on expectations:
‣ Ensure fulfillment of functional and ensure
quality requirements …
‣ … in alignment with project/product Architecture
goals and business objectives. Goals
Project /
Product Goals
help to achieve
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.2 87
Tasks of Software Architects
Overview
Tasks and responsibilities of
software architects extend far
beyond the scope of “only”
designing the system’s
architecture.
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.3: according to [Starke2020] and [Bass+2021] 88
Tasks of Software Architects
Establish a Business Case for the System
IT projects should be based on a business case.
‣ Consider expected costs and desired benefits.
‣ Business value from customer perspective. The primary owner of the business case is
‣ What is YOUR business model? the project sponsor, but architects should
at least be consulted and provide input.
Choose technologies:
‣ Reuse proven frameworks, libraries, and components.
‣ Consider developers’ experience and skill set.
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.4 92
Tasks of Software Architects
Document + Communicate Software Architecture
Create a shared understanding via:
‣ Conceptualization and illustrative representations
‣ Depiction of functionality and technical elements
Technical Expertise
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.5 99
Interfaces to Other Roles and Stakeholders
IT Operations
Architects often fulfill other roles
in IT projects (especially in SMEs).
‣ Improved understanding of
additional concerns.
Security Expert
CON
Customer or
‣ Conflicts of interests User
‣ Neglecting documentation Software Architect
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.6: adapted from arc42 [arc42] 100
Interfaces to Other Roles
Analyst / Requirements Engineer / Product Owner
Accepts requirements from analyst, requirements engineer or product owner
‣ Examines the feasibility of requirements
‣ Detects inconsistencies
‣ Asks for possible changes in requirements to improve architecture.
Requirements
Change requests
Analyst, requirements Software architect
Analyst
engineer, or product owner Softwarearchitekt
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.7: adapted from arc42 [arc42] 101
Interfaces to Other Roles
Customer
“Lawyer” of the customer
‣ Ensures that requirements are sensible and feasible
‣ Ensure that the requirements are fulfilled from an architectural perspective
Requirements
Results; Feedback
Customer
Anwender Software architect
Softwarearchitekt
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.8: adapted from arc42 [arc42] 102
Interfaces to Other Roles
Project Manager
“Advisor" of the project management
‣ Support project planning, including the creation of work packages
‣ Risk analysis and prevention
Status feedback,
Project Manager architectural/technical risks, Software architect
Projektleiter Softwarearchitekt
solutions
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.9: adapted from arc42 [arc42] 103
Interfaces to Other Roles
Developer
Contact person for the developers
‣ Architecture guidelines, possibly development specifications
‣ Know-how transfer
‣ Code Reviews to check compliance to the architecture guidelines
Architecture Guidelines
Developer Software architect
Entwickler Softwarearchitekt
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.10: adapted from arc42 [arc42] 104
Interfaces to Other Roles
Tester
Contact person for the testers
Architecture guidelines and constraints regarding testing.
Support the testers with, e.g.
‣ Test constraints
‣ Test cases
‣ Sequence and dependencies during testing
‣ Prioritization of tests
Guidelines, constraints
Tester Software architect
Tester Softwarearchitekt
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.11: adapted from arc42 [arc42] 105
Interfaces to Other Roles
IT Operations
Contact person for the operators of the system
‣ Considers operational framework
(Network topology, available hard- and software, operating systems)
‣ Defines deployment structure
‣ Defines configuration guidelines
Operational constraints
Deployment, Configuration
IT Operations Software architect
Betrieb Softwarearchitekt
iSAQB CPSA-F – 2. Roles, Responsibilities, and Activities of Software Architects Fig. C2.12: adapted from arc42 [arc42] 106
Summary
Roles, Responsibilities, and Activities
Architects are responsible for ensuring the fulfillment of requirements.
Special skills and intensive cooperation with many other roles and stakeholders are
required to accomplish these tasks.
If you take on additional roles, you should be able to identify the specific responsibilities
associated with the role of the architect.
Table of Figures
‣ C2.1: Geek & Poke. (2012). Simply Explained. http://geek-and-poke.com/geekandpoke/2012/1/28/simply-explained.html. CC BY 3.0. Last visited: 2021-02-
11
‣ C2.2: own work
‣ C2.3: own work derived from [Starke2020] and [Bass+2021]
‣ C2.4: ITech Progress slide deck
‣ C2.5: own work
‣ C2.6 – C2.12: icons from ITech Progress slide deck, adapted from arc24 [arc42]
Literature Sources
‣ [arc42] arc42 - Template for Software Architecture Documentation. Open-Source, published on https://arc42.org. Created by Peter Hruschka and Gernot
Starke.
‣ [Bass+2021] Len Bass, Paul Clements, Rich Kazman: Software Architecture in Practice. Addison-Wesley; 4th edition, 2021.
‣ [Starke2020] Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden. 9.Auflage, Hanser, 2020.
CPSA-F-C3_v1.0.0-EN-1_2023-07-26
Overview
System Context
To
From
Influencing Factors Quality
Requirement
Goals and
s and
Quality Requirements Design
Context
Constraints
Impact of Stakeholders
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.1 111
What Is a Requirement?
Requirement Types
‣ Functional Requirement
Note the different possible
‣ Quality Requirement meanings of this term.
‣ Constraint
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints 112
What Is a Constraint?
A constraint is a requirement that limits the solution space beyond what is necessary
for meeting the given functional requirements and quality requirements. [Pohl+2016]
may concern
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.2: some details derived from [Hof2007] 114
System Context
Systems in operation
other technical systems Documents
or hardware laws, standards,
system documentation
Events
technical or physical Processes
technical, physical,
business processes
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.3: System context according to Pohl et al. [Pohl+2016] 115
Influencing Factors
Categories
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.4: according to Hofmeister et al. [Hof+2005] and Starke [Starke2020] 116
Organizational Influencing Factors
Organization and Structure
Organizational structure of the company
Organizational structure of project team
Decision makers
Partnerships / Cooperation
Internal or external (e.g., outsourced) development
Commercial product or internal usage
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.5 118
Organizational Influencing Factors
Conway’s Law
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.7 Fig. C3.8 120
Technological Influencing Factors
Software-Infrastructure Programming
Guidelines
Hardware-Infrastructure
Programming Language
Data Structures
Technological
Communication Factors
Protocols Operating Environment
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.11 121
Product-Related Influencing Factors
Functional requirements
‣ Describe desired functionalities, data, or behavior
of the system or product
(what the system should / can do).
Quality requirements
Those are important, so
‣ Describe desired quality attributes of
we will discuss them in detail!
the system or product.
(how the system should be)
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.12 122
Quality Requirements
Why Are They So Important?
Often neglected (in contrast to functional requirements)
High impact on fundamental architectural design decisions
→ Must be explicit to derive design goals.
1 also called
“quality characteristics”
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.13: own drawings based on IEC 25010 125
Quality Requirements
Derive a Specific Quality Tree
flexibility
time-to-market simplicity
performance
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.16: adapted from [Bass+2021] 129
Impact of Stakeholders
Some Examples
Stakeholder Concern
deployment approach
failure handling
administrator
monitoring
available hardware
easy to hire new developers
management
architecture matches organizational structure
QA architecture meets quality requirements
Ask questions:
‣ What is the motivation/reasoning of the stakeholder?
‣ How does this impact the design space and architecture?
‣ Does it create risks for the project?
‣ Is this request feasible? Is it negotiable?
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.17 133
Where Are We Now?
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.1 134
Identifying and Managing Risks
What Are Risks?
Threat to the successful fulfillment of project or architectural goals.
‣ Probability of an adverse event amount of harm
‣ High degree of uncertainty, may depend on chance
Architects must
‣ Recognize risks
‣ Communicate risks
‣ Assess and limit risks
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.18 136
Identifying and Managing Risks
Risks by Category
iSAQB CPSA-F – 3. Deriving Quality Goals and Design Constraints Fig. C3.19 137
Identifying and Managing Risks
Implicit Influencing Factors
Very risky: implicit influencing factors and assumptions
‣ “… it should have been clear to everyone that …”
‣ “… we always assumed that …”
If the political issues are not managed, the system development will never be successful.
Table of Figures
‣ C3.1: derived from ITech Progress slide deck
‣ C3.2: some details derived from [Hof2007]
‣ C3.3: System context according to Pohl et al. [Pohl+2016]
‣ C3.4: own drawing according to Hofmeister et al. [Hof+2005] and Starke [Starke2020]
‣ C3.5 - C3.7: derived from WG Universities slide deck
‣ C3.8: derived from Viktor Vorobyev. tools. https://thenounproject.com/term/tools/561840/. CC BY. Last visited: 2021-02-17, derived from
Jemis mali. paper. https://thenounproject.com/term/paper/968444/. CC BY. Last visited: 2021-02-17
‣ C3.9: derived from Srinivas Agra. Wealth. https://thenounproject.com/search/?q=2536858&i=2536858. CC BY. Last visited: 2021-02-17,
derived from Normansyah. Stopwatch. https://thenounproject.com/search/?q=3426071&i=3426071. CC BY. Last visited: 2021-02-17
‣ C3.10: derived from Alena Artemova. Libra. https://thenounproject.com/search/?creator=2412371&q=libra&i=967626. CC BY. Last visited:
2021-02-17
‣ C3.11: ITech Progress slide deck
‣ C3.12: own work
‣ C3.13: own drawings based on IEC 25010
‣ C3.14: own drawings based on IEC 25010 and [arc42], the examples of the WG Universities slide deck
‣ C3.15: Rubberband-Model from WG Universities slide deck ”Adapted with permission from: Gernot Starke – Effektive Software-
Architekturen”
‣ C3.16: Stakeholders from slide deck WG Universities, adapted from [Bass+2021]
Table of Figures
‣ C3.17: own drawing derived from WG Universities slide deck
‣ C3.18: derived from ITech Progress slide deck
‣ C3.19: own work
Literature Sources
‣ [Bass+2021] Len Bass, Paul Clements, Rich Kazman: Software Architecture in Practice. Addison-Wesley; 4th edition, 2021.
‣ [Hof+2005] Hofmeister, C., Nord, R. L., & Soni, D. (2005). Global analysis: moving from software requirements specification to structural views of the
software architecture. IEE Proceedings-Software, 152(4), 187-197.
‣ [Hof2007] Hofmeister, C., Kruchten, P., Nord, R. L., Obbink, H., Ran, A., & America, P.(2007). A general model of software architecture design derived from
five industrial approaches. Journal of Systems and Software, 80(1), 106-126.
‣ [Pohl+2016] Klaus Pohl, Chris Rupp: Requirements Engineering Fundamentals, 2nd Edition: A Study Guide for the Certified Professional for Requirements
Engineering Exam -Foundation Level, Rocky Nook, 2016.
‣ [Starke2020] Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden. 9.Auflage, Hanser, 2020.
CPSA-F-C4_v1.0.0-EN-1_2023-07-26
Overview
Architect’s “Toolbox”
Establishing Context
From To
General Design Principles
WHAT? HOW?
SOLID Principles
Design Constraints
Influencing Factors
Objectives
‣ Reduce unwanted complexity
‣ Achieve quality requirements
(e.g., increase flexibility, changeability, and adaptability)
+addTransaction(Transaction)
Breaking encapsulation leads to unwanted dependencies. +getBalance()
→ Higher complexity
iSAQB CPSA-F – 4. Design Principles Fig. C4.3: http://hyperboleandahalf.blogspot.com/2010/06/this-is-why-ill-never-be-adult.html Fig. C4.4 152
Design Principles
SoC – Separation of Concerns
Objective: Manage different
problems separately.
Separate Concerns
‣ Domain, sub-domains, sub-tasks, …
‣ Persistence, logic, behavior,
presentation, …
Modules
‣ Encapsulate responsibilities
‣ Expose well defined interfaces only
‣ Can be developed, maintained, and tested
independently
‣ Objective: Can be replaced without side effects
Fig. C4.5b
Call
Coupling
Execution
Creation
Location
Time Data
Inheritance is a very
strong type of coupling.
Coupling
require same hardware, create another
Execution
runtime environment, Creation building block
Location
or network segment
software decay
DRY helps to avoid
code smell
degenerated design.
bit rot
iSAQB CPSA-F – 4. Design Principles Fig. C4.17: Jon Postel at work by Irene Fertik, USC News Service 170
Design Principles
Abstraction
Identify useful generalizations
‣ Emphasize common properties or functionalities
‣ Omit/hide unnecessary details
Various implementations
‣ Stable (“closed”) interfaces
‣ Inheritance from abstract base classes
‣ Extension points, delegation
‣ Various design patterns
Table of Figures
‣ C4.1: derived from ITech Progress slide deck
‣ C4.2: own work
‣ C4.3: “All the things” meme generated by https://imgflip.com/memetemplate/X-All-The-Y; original drawing by
http://hyperboleandahalf.blogspot.com/2010/06/this-is-why-ill-never-be-adult.html (Attribution License). Last visited: 2021-02-16
‣ C4.4: “Account” by WG Universities slide deck
‣ C4.5 derived from WG Universities slide deck
‣ C4.5b NASA https://www.hq.nasa.gov/office/pao/History/SP-4205/ch2-3.html
‣ C4.6-C4.14: derived from WG Universities slide deck
‣ C4.15: WG Universities slide deck, adapted from [arc42], [Starke2020], and [Starke+2023]
‣ C4.16: modified version of Geek & Poke. (2013). Stackoverflow. http://geek-and-poke.com/geekandpoke/2013/1/22/stackoverflow.html. CC BY 3.0. Last
visited: 2021-02-16
‣ C4.17: Irene Fertik, USC News Service. (1994). Jon Postel at work. https://commons.wikimedia.org/w/index.php?curid=665678. Copyright 1994. Last
visited: 2021-02-16
‣ C4.18: own work
‣ C4.19: (2017). Metro Map Sofia. https://de.m.wikipedia.org/wiki/Datei:Metro_Map_Sofia_(German).svg. CC0. Last visited: 2021-02-16
‣ C4.20: illustration of runway numbering at Frankfurt Airport, own work
‣ C4.21: component diagram: own work
‣ C4.22 – C4.25: class diagram: own work
Literature Sources
‣ [arc42] arc42 - Template for Software Architecture Documentation. Open-Source, published on https://arc42.org. Created by Peter Hruschka
and Gernot Starke.
‣ [Hunt+1999] Andrew Hunt, David Thomas: The Pragmatic Programmer : From Journeymanto Master, Addison-Wesley, 1999.
‣ [Starke2020] Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden. 9.Auflage, Hanser, 2020.
‣ [Starke+2023] G. Starke, A. Lorz: Software Architecture Foundation – 2nd edition - CPSA-F® Exam Preparation Van Haren, 2023.
CPSA-F-C5_v1.0.0-EN-1_2023-07-26
Overview
Selected Patterns
Additional Patterns
HOW?
iSAQB CPSA-F – 5. Patterns Fig. C5.2: agricultural valleys pattern from [Alexander1977] 186
Designing With Patterns
‣ Control elements
Presentation Layer
‣ (Partial-) views of domain
‣ Domain-specific aspects:
Business Domain Layer
Datatypes, processing rules, etc.
‣ Layers are independent ‣ Layers are overhead when they only pass
− For development information to following layers to deliver a
(distribution of tasks) specific service.
− In production ‣ Loose layering:
(installation, maintenance) − Allows for skipping layers
− Implementations are interchangeable (open layered architecture)
‣ Unidirectional dependencies − But increases dependency
(no circular dependencies) ‣ Some changes (e.g., adding a data field)
‣ The Layers pattern is easy to understand. may require changes to all layers.
Filters
‣ Processing unit, unaware of other filters
‣ Transform, aggregate, or manipulate data
‣ Connects to multiple input/output pipes
‣ Supports the open-closed principle, loose ‣ Hard learning curve for developers
coupling, and dependency inversion ‣ Shifts complexity to DI frameworks
‣ Manage dependencies “by configuration” ‣ Static analysis is difficult/impossible
‣ Vastly improves ‣ Things fail at run time (not compile time)
− Extensibility
− Flexibility, adaptability
− Testability (mock components)
‣ Better readability of code
Broker
Event-Sourcing
coordinate communication between provider(s)
and consumer(s) in distributed systems handle operations on data by a sequence of
events recorded in an append-only store
Combinator (aka: closure of operations)
for domain object of type T, look for operations Interpreter
which both input and output type T Represent domain object or DSL as syntax.
Provide function implementing a semantic
interpretation of a domain object separately from
the domain object itself
iSAQB CPSA-F – 5. Patterns 200
Additional Patterns
General Overview 2/2
Interfacing-patterns: Adapter, Facade, Plug-In
Proxy extend the behavior of a component
integration of subsystems and/or
simplification of dependencies Ports & Adapters
(see Onion-/Hexagonal-Architecture)
MVC, MVVM, MV-Update, PAC
Separate presentation (view) from data, Remote Procedure Call
services, and their coordination remote execution of functions
Observer
asynchronous notification of consumers
iSAQB CPSA-F – 5. Patterns 201
Additional Patterns
Creational Design Patterns
iSAQB CPSA-F – 5. Patterns Fig. C5.7: Design patterns for humans from [kamranahmedse] 202
Additional Patterns
Structural Design Patterns
🔌 Adapter ☕️Decorator
🚠 Bridge 📦Facade
🌿 Composite 🎱Proxy
https://github.com/kamranahmedse/design-patterns-for-humans
iSAQB CPSA-F – 5. Patterns Fig. C5.8: Design patterns for humans from [kamranahmedse] 203
Additional Patterns
Behavioral Design Patterns
😎 Observer 📒 Template
https://github.com/kamranahmedse/design-patterns-for-humans
iSAQB CPSA-F – 5. Patterns Fig. C5.9: Design patterns for humans from [kamranahmedse] 204
Additional Patterns
Model-View-Controller
Pattern for Interaction-Oriented Systems
‣ Model encapsules data
‣ View presents (renders) information from
the model
‣ Controller processes user input and system
events and then modifies the model
(behavior)
Model can be used by any number of
View-/Controller-pairs.
iSAQB CPSA-F – 5. Patterns Fig. C5.12: Broker pattern derived from [Bus+1996] and [Gharbi+2019] 207
Additional Patterns
Broker 2/2
Client Server Proxy
‣ Implements client functionality ‣ Calls services on the server
‣ Sends requests through the client ‣ System-specific functionality
proxy ‣ Mediates between the server and
Server broker
‣ Implements the services Bridge
‣ Registers itself with the broker ‣ Network-specific functionality
‣ Responses are sent through the ‣ Mediates between the local broker and
Server Proxy the bridge of a remote broker
Client Proxy Broker
‣ System-specific functionality ‣ Locates and manages the server
‣ Mediates between the client and ‣ Forwards messages
broker ‣ Handles errors, Provides APIs
Table of Figures
‣ C5.1: derived from ITech Progress slide deck
‣ C5.2: derived from [Alexander1977]
‣ C5.3: ITech Progress slide deck
‣ C5.4: WG Universities slide deck
‣ C5.5 – C5.6: own work
‣ C5.7 – C5.9: kamranahmedse. Design patterns for humans. https://github.com/kamranahmedse/design-patterns-for-humans. CC BY 4.0.
Last visited: 2021-02-16
‣ C5.10: own work
‣ C5.11: derived from [Gharbi+2019]
‣ C5.12: Broker pattern, derived from [Bus+1996] and [Gharbi+2019]
‣ C5.13: Ports & Adapters from WG Universities slide deck
‣ C5.14: derived from [Gharbi+2019]
‣ C5.15: adapted from [Gharbi+2019]
Literature Sources
‣ [Alexander1977] Christopher Alexander. A pattern language: towns, buildings, construction. Oxford university press, 1977.
‣ [Bus+1996] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-Oriented Software Architecture
(POSA): A System of Patterns. Wiley, 1996.
‣ [Gam+1994] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns: Elements of Reusable Object-Oriented
Software. Addison-Wesley, 1994.
‣ [Gharbi+2019] Mahbouba Gharbi, Arne Koschel, Andreas Rausch: Software ArchitectureFundamentals- A Study Guide for the Certified
Professional for Software Architecture®,dpunkt, 2019.
Website
‣ [Wikipedia1]: Wikipedia. https://en.wikipedia.org/wiki/Software_design_pattern. Last visited: 2021-02-16
‣ [kamranahmedse]: GitHub. https://github.com/kamranahmedse/design-patterns-for-humans . Last visited: 2021-02-17
CPSA-F-C6_v1.0.0-EN-1_2023-07-26
Overview
Reduce Complexity
Cross-Cutting Concerns
weaving
with metadata Logging
‣ Evaluated by annotation processor at compile time
Persistence
iSAQB CPSA-F – 6. Additional design considerations Fig. C6.2: derived from Christian Schenk 220
Cross-Cutting Concerns
Overview
Impact the entire system and often lead to additional technical constraints.
Are often a result of fulfilling quality requirements.
Cannot be easily separated into independent components and may violate DRY/SoC.
Possible Solution: AOP, annotations etc. to centralize code.
Tactics to Control
stimulus System Response response
Compromise on
Reduce flexibility
energy efficiency
of the system
Reduce communication
between system components
Error prevention:
Error detection: ‣ Use transactions
‣ Monitor and analyze ‣ Store state of the system
system in operation
‣ Validate the accuracy of
results from different Strategies for high
redundant components availability
Error handling:
‣ Create mechanisms for robust exception handling
‣ Roll back on fault
‣ Keep multiple redundant system components available
‣ Replace defective components in case of a fault
‣ Basic deployment (recreate deployment): Old application version is stopped and replaced by the
new version.
‣ Rolling deployment (ramped deployment): In case of multiple parallel application instances.
Old instances are gradually replaced by new version.
‣ Blue/green deployment: Old (blue) and new (green) version run in parallel. Users are redirected to
the new version.
‣ Shadow deployment: Similar to blue/green. Requests are forked and sent to both versions. Users
initially receive only the responses from the old version.
‣ Canary deployment: Only a part of the users receives the new version. Proportion is slowly
increased. (Comparable with A/B-testing for user feedback.)
Additional Design Considerations
Summary
Generative approaches, programming Designing good interfaces is not rocket
paradigms and languages, and AOP and science. We have covered some basic
annotations help architects to make and rules that support you in doing so.
implement design decisions.
Be aware of design degeneration and
Cross-cutting concerns require special refactor/redesign in time and over time!
attention. Implementation solutions for
them should be localized when feasible. Design tactics and strategies will help you
to achieve quality goals.
Table of Figures
‣ C6.1: derived from ITech Progress slide deck
‣ C6.2: derived from Christian Schenk. AOP. https://www.christianschenk.org/blog/aop-with-aspectj/. Last visited: 2021-02-17
‣ C6.3 – C6.5: own work
‣ C6.6: Geek & Poke. (2010). How To Make Enterprise Software. http://geek-and-poke.com/geekandpoke/2010/7/31/how-to-make-enterprise-
software.html. CC BY 3.0. Last visited: 2021-02-17
‣ C6.7: ITech Progress slide deck
‣ C6.8 – C6.9: WG Universities slide deck
‣ C6.10: Geek & Poke. (2012). How To Create A Stable API. http://geek-and-poke.com/geekandpoke/2012/6/6/how-to-create-a-stable-
api.html. CC BY 3.0. Last visited: 2021-02-17
‣ C6.15: WG Universities slide deck
‣ C6.16- C6.18: derived from ITech Progress slide deck
Literature Sources
‣ [Fowler+1999] Martin Fowler, Kent Beck: Refactoring: improving the design of existing code. Addison-Wesley Longman Publishing, 1999
CPSA-F-C7_v1.0.0-EN-1_2023-07-26
Overview
HOW?
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.2: based on: https://www.digite.com/blog/waterfall-to-agile-with-kanban250
Architecture Development Approaches
Iterative and Incremental Design 1/3
influences
Context &
Customer
stakeholders
Iterative:
Doing the same steps repeatedly
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.4: “A general model of software architecture design…” Hofmeister et al. [Hof2007]
252
Architecture Development Approaches
Iterative and Incremental Design 3/3
Incremental process
‣ Multiple smaller steps rather than one giant step
‣ Reduces complexity
‣ Partial solutions
‣ Smaller focus
Increment:
Add a (small, more manageable) amount/quantity/set,
i.e., a runnable set of functionalities that extends the
existing software system, usually created as a result
of an iteration.
Different development approaches have their specific “opinions” as to which views are
sensible and how they are named.
− Communication protocols
Interaction
Building blocks Synchronization
Interfaces Performance
− Communication patterns
Layers, Relations
Responsibilities
(sync/async, push/pull, …)
‣ May provide an overview of the most important use
cases of the system from an external perspective
‣ Relevance:
− Entry point and overview for the system being
designed
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.7 257
Architecture Development Approaches
View-Based Architecture Development (5/7)
– Building-Block View
‣ Explains the static decomposition of the system into Context view
(context demarcation)
Deployment view
Deployment units
Interaction
(interfaces, dependencies, associations, relations, …). Building blocks
Interfaces
Synchronization
Performance
Layers, Relations
‣ Relevance:
− Support project management with defining work packages
− Helps stakeholders to understand the system
(especially developers)
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.8 258
Architecture Development Approaches
View-Based Architecture Development (6/7)
– Deployment View
‣ Deployment of run-time elements to hardware Context view
(context demarcation)
Deployment view
Deployment units
components (e.g., servers, hosts, docker containers, ...) High-level view
Nodes
Computers
Top-down
‣ Decomposition into smaller
problems (analysis)
Bottom-up
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.11 261
Architecture Development Approaches
Top-Down and Bottom-Up 2/3
Top-Down
Advantages Disadvantages
General understanding of the (Possibly) difficult integration at the end
problem
Independent of hardware and Existing solutions might be ignored to solve at
programming language least part of the overall problem.
No getting lost in the details. Some Problems that are identified late in the process
problems might be easier to identify might cause serious and costly changes
from an overall perspective.
Consistency, clean-cut distribution of Late feedback as to whether the design is
responsibilities and interfaces. suitable
Design is visible in the product
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.12 262
Architecture Development Approaches
Top-Down and Bottom-Up 3/3
Bottom-Up
Advantages Disadvantages
Typically, existing components are Often not all parts or functions are needed.
reused. → increased complexity, potentially more bugs
Incremental testing leads to high Orientation towards technical factors instead of
satisfaction of the users users‘ requirements
Stepwise integration (Possible) danger of premature optimization
Real sub-problems are the starting Danger of uncontrolled growth
point (“Frankenstein-Architecture”)
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.14: from [Gharbi+2019] 264
Architecture Design Methods
Domain Driven Design - Approach
Identify the system’s business domain.
Create a domain model using the user‘s language
Discuss the model with the domain experts
Use the domain model as a basis for the system design
Identify subdomains and map them to bounded contexts
in the solution space.
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.16: according to Eric Evans [Evans2003] 266
Architecture Design Methods
Domain Driven Design – Elements of the Domain Layer 1/2
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.17: derived from Eric Evans [Evans2003] 267
Architecture Design Methods
Domain Driven Design – Elements of the Domain Layer 2/2
Elements of the domain layer
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.19: derived from http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html 270
Architecture Design Methods
Evolutionary Architecture
Incremental, guided change as the first
principle along multiple dimensions
‣ Continuous delivery
− Automate everything
− “done” = released
− Feedback from stakeholders
‣ Guide: Project-specific fitness functions
‣ Dimensions
− Technical
− Domain
iSAQB CPSA-F – 7. Design Approaches and Methods Fig. C7.20: from [Ford+2017] 271
Architecture Design Methods
Model Driven Software Development / Model Driven Architecture
Use models and generators/transformations
Models are:
‣ Directly interpreted by a virtual machine, or
‣ Transformed into executable applications
+ Efficient development
+ Easy changes
+ Include domain experts
+ Portability
– Complex, extensive infrastructure
(DSLs, modelling framework, generators)
MDA: levels of modeling
What’s next?
‣ Chapter 8: Documentation and Communication
‣ Chapter 9: Software Architecture Evaluation
Table of Figures
‣ C7.1: derived from ITech Progress slide deck
‣ C7.2: based on Waterfall vs. Agile. https://www.digite.com/blog/waterfall-to-agile-with-kanban. Last visited: 2021-02-17
‣ C7.3: ITech Progress
‣ C7.4: “A general model of software architecture design…” Hofmeister et al. [Hof2007]
‣ C7.5 - C7.10: WPS – Workplace Solutions GmbH
‣ C7.11 – C7.13: ITech Progress
‣ C7.14: derived from ITech Progress and [Gharbi+2019]
‣ C7.15: WPS – Workplace Solutions GmbH
‣ C7.16: according to Eric Evans [Evans2003]
‣ C7.17: derived from Eric Evans [Evans2003]
‣ C7.18: WPS – Workplace Solutions GmbH
‣ C7.19: derived from http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html. Last visited: 2021-02-17
‣ C7.20: from [Ford+2017]
‣ C7.21: MDSD generation workflow: own drawing by WPS – Workplace Solutions GmbH/Bernd Hauck
Literature Sources
‣ [Evans2003] Eric Evans: Domain-Driven Design: Tackling Complexity in the Heart ofSoftware, Addison-Wesley, 2003.
‣ [Ford+2017] Neal Ford, Patrick Kua, and Rebecca Parsons. Building EvolutionaryArchitectures: Support Constant Change. O'Reilly, 2017.
‣ [Gharbi+2019] Mahbouba Gharbi, Arne Koschel, Andreas Rausch: Software ArchitectureFundamentals- A Study Guide for the Certified
Professional for Software Architecture®,dpunkt, 2019.
‣ [Hof2007] Hofmeister, C., Kruchten, P., Nord, R. L., Obbink, H., Ran, A., & America, P.(2007). A general model of software architecture
design derived from five industrialapproaches. Journal of Systems and Software, 80(1), 106-126.
CPSA-F-C8_v1.0.0-EN-1_2023-07-26
Overview
Goals, Benefits and Quality of Documentation
by the way
42 → “The Answer to the Ultimate Question of Life, the Universe, and Everything”
Chapter 2: Constraints
Constraints to the design and implementation
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.4: from [arc42] 285
Template-Based Documentation
arc42 – Contents 2/4
Chapter 4: Solution Strategy
Fundamental decisions and solution strategies
Technology, top-level decomposition
Approaches to achieve prioritized quality goals
and relevant organizational decisions
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.7: from [arc42] 287
Template-Based Documentation
arc42 – Contents 4/4
Chapter 10: Quality Requirements
Architecturally relevant quality requirements
Relevant scenarios
Quality tree
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.8: icon by Symbolon, IT Fig. C8.9: images from [arc42] 288
Template-Based Documentation
ISO-42010 Contents of an Architecture Document
Architecture description identification and overview
‣ System identification, additional information (name, change history, etc.),
‣ Architecture overview, architecture assessments, rationale for important decisions
Stakeholders and concerns
Definition of viewpoints
‣ Name of the viewpoint, mapping to stakeholder concerns, model types and conventions
Views and models
‣ Name, description, and models
Correspondences rules, correspondences, inconsistencies
Architecture decisions and rationales
Architectural overview
Summary of the central architecture description, covering only the essential points. Can serve
as a minimum substitution for the complete description.
Document Summary
A list of all architecture-related documents
Overview presentation
Set of slides to give an overview of the architecture or specific parts of the architecture
Architecture “wallpaper”
Many aspects of the architecture on a single, very large output (e.g., printout or flipcharts) too
big to fit on a computer screen or single sheet of paper, usually hung from a wall (hence
wallpaper). It can serve as a basis for discussion between architects and developers.
Technical information
One or more documents containing important information for developers and testers. It should
contain information about development methodologies, code conventions, build and test.
PRO
‣ Often easier to understand
‣ Appeals to visual memory
CON
‣ High effort to create and maintain
‣ Might be misleading if not explained properly
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.11: derived and adapted from [VisPar1] 294
UML 2.5 Diagrams
Class Diagram
R2
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.12: derived from [VisPar2] 295
UML 2.5 Diagrams
Package Diagram
R2
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.13: derived from [VisPar3] 296
UML 2.5 Diagrams
Component Diagram
R2
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.14: Component Diagram derived from [UMLD1] 297
UML 2.5 Diagrams
Composite-Structure Diagram
R3
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.15: Composition-Structure Diagram from [UMLD2] 298
UML 2.5 Diagrams
Deployment Diagram
R2
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.16: Deployment Diagram from [UMLD3] 299
UML 2.5 Diagrams
Sequence Diagram
R2
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.17: Sequence Diagram from [UMLD4] 300
UML 2.5 Diagrams
Activity Diagram
R2
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.18 301
UML 2.5 Diagrams
State Machine Diagram
R3
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.19: State Diagram from [UMLD5] 302
Alternatives to UML
ArchiMate
Flow charts, (numbered) lists, pseudo code
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.20: Example BPMN Diagram303
Documenting Views
Views: Separate Architectural Concerns
Four Proven View Types
Context view Runtime view
‣ Shows the entire system in the context ‣ Shows instances of the system’s
of its environment components (building blocks) during
‣ Interfaces to neighboring systems runtime
‣ Interactions with users/external systems ‣ Describes the dynamic interaction of these
‣ Reflects the “vision” of the system run time instances
Shows
You are responsible
‣ All** external interfaces of system
‣ All** neighboring systems and exchanged data for this!
** depending on the stakeholders of the documentation
(migrated)
The content of the context view depends on Account data
what is relevant for the specific system as
(New) Web
well as the stakeholder needs. Account System Data
flow
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.23: derived from [Starke2020] 309
Building-Block View
Purpose
Maps functional and non-functional requirements of the system to a static structure of
building blocks
Describes components, packages, classes, subsystems, and/or partitions as parts of the
system
‣ What are the dependencies between these building blocks?
‣ Which building blocks map to which requirements?
‣ Which building blocks are implemented, which are configured, and which are
implemented with purchased components ?
Changes to one view can have an impact on other views, either positive or negative
Ensure that the architecture views are updated in each iteration of an iterative approach
see https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions
iSAQB CPSA-F – 8. Documentation and Communication 325
Best Practices
Documentation - Best Practices
The following slides contain best practices
for creating and maintaining an adequate
architecture documentation.
Think before you break them.
Some of the following rules are based on
Clements et al., Documenting Software
Architectures; Addison Wesley, 2011.
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.27: derived from katemangostar 328
Documentation Best Practices
Write From the Readers’ Perspective
Will the information requirements of the reader be satisfied?
‣ Or readers may find his/her requirements
were not taken seriously
Get feedback from target groups
‣ Customers, developers, operations, …
Less is more!
‣ Time spent on concise writing is
saved when reading the documentation many times over.
Structure: write thoughts and ideas in a logical or required sequence
Use active voice and explain motivations
KISS: Avoid unnecessary technical jargon, explain technical terms
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.28: derived from katemangostar 329
Documentation Best Practices
Avoid Repetitions and Redundancy
Avoid unnecessary repetition!
Only if necessary – use sparingly and selectively:
‣ Is the variation/repetition intentional?
‣ What purpose does it serve?
(e.g., perspective of another stakeholder)
Do not update the documentation too often when design decisions change often
‣ Establish fixed, timely synchronization periods
‣ Versioning of documentation is useful
iSAQB CPSA-F – 8. Documentation and Communication 334
Documentation Best Practices
Communicate Status and Validity of Documentation
Documentation evolves!
‣ How current/outdated is the given information?
‣ How stable is it? Are changes to be expected?
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.31: derived from https://c4model.com/ 338
C4 Model
Level 1 - Context
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.32: derived from https://c4model.com/ 339
C4 Model
Level 2 - Container
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.33: derived from https://c4model.com/ 340
C4 Model
Level 3 - Components
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.34: derived from https://c4model.com/ 341
C4 Model
Level 4 - Code
iSAQB CPSA-F – 8. Documentation and Communication Fig. C8.35: derived from https://c4model.com/ 342
Other Architecture Description Frameworks
RM-ODP
Reference Model of Open
Distributed Processing
ISO-standard since 1996
Meta model for describing
information systems
Table of Figures
‣ C8.1: derived from ITech Progress slide deck
‣ C8.2: Development cycle derived from WG Univeraities slide deck, derived from [Starke2020]
‣ C8.3: derived from Jemis mali. paper. https://thenounproject.com/term/paper/968444/. CC BY. Last visited: 2021-02-17
‣ C8.4: from [arc42]
‣ C8.5: derived from Maxim Kulikov. Light Bulb. https://thenounproject.com/term/light-bulb/1793376/. CC BY. Last visited: 2021-02-17
‣ C8.6 – C8.7: from [arc42]
‣ C8.8: derived from Symbolon, IT. Skull. https://thenounproject.com/search/?creator=1922003&q=Skull&i=3263616. CC BY. Last visited:
2021-02-17
‣ C8.9: from [arc42]
‣ C8.10: Geek & Poke. (2012). Simply Explained. https://geek-and-poke.com/geekandpoke/2012/1/28/simply-explained.html. CC BY 3.0. Last
visited: 2021-02-17
‣ C8.11: derived and adapted from [VisPar1]
‣ C8.12: derived from [VisPar2]
‣ C8.13: derived from [VisPar3]
‣ C8.14: Component Diagram, derived from [UMLD1]
‣ C8.15: Composition-Structure Diagram from [UMLD2]
‣ C8.16: Deployment Diagram from [UMLD3]
‣ C8.17: from [UMLD4]
Table of Figures
‣ C8.18: redrawn from WG Universities slide deck
‣ C8.19: from [UMLD5]
‣ C8.20: Example BPMN Diagram, derived from https://de.wikipedia.org/wiki/Business_Process_Model_and_Notation. Last visited: 2021-02-
17
‣ C8.21 – C8.22: ITech Progress slide deck
‣ C8.23: derived from [Starke2020]
‣ C8.24 – C8.25: ITech Progress slide deck
‣ C8.26: Geek & Poke. (2012). The New Developer. https://geek-and-poke.com/geekandpoke/2012/4/25/the-new-developer.html. CC BY 3.0.
Last visited: 2021-02-17
‣ C8.27 – C8.28: derived from katemangostar. (2020). Set geschäftsleute mit klemmbrettern Kostenlosen Vektoren.
https://de.freepik.com/vektoren-kostenlos/set-geschaeftsleute-mit-klemmbrettern_5562386.htm#page=4&position=35. CC0. Last visited:
2021-02-17
‣ C8.29: own work
‣ C8.30: Geek & Poke. (2009). Enterprise Architecture Made Easy – Part 1. https://geek-and-poke.com/geekandpoke/2009/11/2/enterprise-
architecture-made-easy-part-1.html. CC BY 3.0. Last visited: 2021-02-18
‣ C8.31 – C8.35: derived from https://c4model.com/. Last visited: 2021-02-18
‣ C8.36: ITech Progress slide deck
Literature Sources
‣ [Starke2020] Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden. 9.Auflage, Hanser, 2020.
‣ [VisPar1] Visual Paradigm: Overview of the 14 UML Diagram Types https://www.visual-paradigm.com/guide/uml-unified-modeling-language/overview-of-
the-14-uml-diagram-types/ (last visited 2021-02-03)
‣ [VisPar2] Visual Paradigm: UML Class Diagram Tutorial https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/
(last visited 2021-02-03)
‣ [VisPar3] Visual Paradigm: What is Package Diagram? https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-package-diagram/
(last visited 2021-02-03)
Websites
‣ Cognitect. https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions. Last visited: 2021-02-18
‣ [UMLD1] ULM Diagrams. https://www.uml-diagrams.org/component-diagrams.html. Last visited: 2021-02-18
‣ [UMLD2] ULM Diagrams. https://www.uml-diagrams.org/composite-structure-diagrams.html. Last visited: 2021-02-18
‣ [UMLD3] ULM Diagrams. https://www.uml-diagrams.org/deployment-diagrams-overview.html. Last visited: 2021-02-18
‣ [UMLD4] ULM Diagrams. https://www.uml-diagrams.org/sequence-diagrams.html. Last visited: 2021-02-18
‣ [UMLD5] ULM Diagrams. https://www.uml-diagrams.org/bank-atm-uml-state-machine-diagram-example.html. Last visited: 2021-02-18
CPSA-F-C9_v1.0.0-EN-1_2023-07-26
Overview
iSAQB CPSA-F – 9. Software Architecture Evaluation Fig. C9.2: modified version of https://geek-and-poke.com/geekandpoke/2008/1/20/one-year-in-a-it-project-day-8.html 351
Quality and Quality Attributes
“Quality is the correspondence between the
observed properties and the previously defined
requirements of an observation unit.”
Definition of quality based on IEC 2371
“… degree to which a software product satisfies stated and implied needs when used
under specified conditions.” [ISO 25010:2011]
‣ Aggregates attributes of a software product that relate to their suitability to fulfill defined
or required needs.
affects affects
iSAQB CPSA-F – 9. Software Architecture Evaluation Fig. C9.9: illustration derived from [arc42] 359
Quality Scenarios
Exploratory Scenario
Usage Scenario Growth Scenario
(also called Boundary
(also called (also called Change or
or Stress / Failure
Application scenario) Modification scenario)
scenario)
Not to be
confused
with UML
use cases!
e.g. description of e.g. implementing an e.g. power failure
efficiency or performance additional functionality
Fig. C9.11 Fig. C9.12
Fig. C9.10
Static: Dynamic:
‣ Metrics from static analysis ‣ Metrics from dynamic analysis
(LOC, coupling, complexity, …) (time and resource usage)
‣ Reviews of Code and Design ‣ Tests Metrics
‣ Audits of Code and Design • Performance Tests,
• Security Tests (Fuzzing)
• Usability Tests
Organizational, e.g.
‣ change/bugfix effort per subsystem
‣ number of errors per component
Failure Design
‣ Mean time between failures ‣ Dependencies (inbound / outbound)
‣ Abstraction
‣ Stability
Watch out for error clusters!
‣ Distance
Components, where many errors have
been found, probably contain even more.
Charles Goodhart
Consider:
What is the impact on e.g. test coverage and the meaningfulness of tests, if a certain
target metric is imposed for the acceptance of a merge request?
1
Gather information General process
about the target architecture applying to all
(i.e., quality goals) software evaluation
approaches
2
Assess actual system
concerning quality goals
3
Suggest
improvement actions
Architect
Required
Business Quality
Scenarios
Drivers Attributes
Analysis
Architectural Architectural Architectural
Plan Approaches Decisions
Tradeoffs
Impacts Sensitivity
Points
Non-Risks
Distilled into
Risk Themes Risks
Phase 1 Phase 2
Presentation of Identification of
the ATAM Architectural
Method Approaches Brainstorming and
Prioritization of
Presentation of Scenarios
Generation of Presentation of
Business Quality Attribute the Results
Drivers Utility Tree Analysis of
Architectural
Approaches
Presentation of Analysis of
Architecture Architectural
Approaches
Harris Profile
‣ Demonstration prototype
− Acquisition
Caution,
danger!
‣ Prototype in the strict sense
− Analysis
‣ Laboratory sample
− Design questions
‣ Pilot system
− Product core
Table of Figures
‣ C9.1: derived from ITech Progress slide deck
‣ C9.2: modified version of Geek & Poke. (2008). One Year In A IT Project – Day 8.
https://geekandpoke.typepad.com/geekandpoke/2008/01/one-year-in-a-i.html. CC BY 3.0. Last visited: 2021-02-19
‣ C9.3: Geek & Poke. (2010). How To Ensure Quality. http://geek-and-poke.com/geekandpoke/2010/9/7/how-to-ensure-quality.html. CC BY
3.0. Last visited: 2021-02-18
‣ C9.4: derived from ITech Progress slide deck
‣ C9.5: own work
‣ C9.6 – C9.8: WPS – Workplace Solutions GmbH
‣ C9.9: from WG Universities slide deck and derived from [arc42]
‣ C9.10 – C9.12: ITech Progress slide deck
‣ C9.13: Geek & Poke. (2010). Behind The Lines. http://geek-and-poke.com/geekandpoke/2010/9/23/behind-the-lines.html. CC BY 3.0. Last
visited: 2021-02-18
‣ C9.14: derived from ITech Progress slide deck
‣ C9.15 – C9.17: from ITech Progress slide deck
‣ C9.18: ITech Progress slide deck, contained in [Gharbi+2019], according to PHA derived from [arc42]
‣ C9.19: derived from [Gharbi+2019]
Table of Figures
‣ C9.20: Geek & Poke. (2012). Thank God Not Everything Is Software. http://geek-and-poke.com/geekandpoke/2012/3/3/thank-god-not-
everything-is-software.html. CC BY 3.0. Last visited: 2021-02-18
Literature Sources
‣ [arc42] arc42 - Template for Software Architecture Documentation. Open-Source, published on https://arc42.org. Created by Peter Hruschka
and Gernot Starke.