LearningTree

Software Architecture Fundamentals

Architecture principles, roles, requirements & risk management.

01
Chapter One

Introduction to Software Architecture

Origins of Software Architecture

The word "architecture" derives from the Greek arkhi- (chief) + tekton (builder), meaning master builder. Vitruvius codified architecture principles in De Architectura (1st century AD), establishing an analogy to software: planning, designing, and constructing systems that provide rules and structure.

๐Ÿ›๏ธ

Before the 1960s

  • Hardware was complex and expensive
  • Software complexity was low
  • No structured approach needed
โš ๏ธ

Software Crisis (1960s)

  • Computing power outpaced engineers' ability to build "good" IT systems
  • Projects delivered late, over budget
  • High project failure rate
  • Solution โ†’ Software Architecture
Do We Really Need Software Architecture?

Common objections โ€” "Too expensive," "Slows us down," "Just get it done" โ€” reveal a misunderstanding of architecture's long-term value. The real cost lies in not having it.

โš  Low-quality product
โ–ถ
Customers will leave
โš  Poorly structured, hard-to-maintain software
โ–ถ
Constant rework + low profit
โš  Daunting for existing developers
โ–ถ
Developers get demoralized & leave
โš  Difficult for new developers to learn
โ–ถ
New developers will not join
What Is "Good" Architecture?

Good architecture takes ALL factors into account โ€” making the role of a software architect both important and challenging.

Depends on: Environment ยท Scale ยท Customers ยท Budget ยท and more

Architecture exists to avoid expensive and disruptive changes in the future. Good software architecture considers many factors beyond mere functionality, addressing the long-term goals of a system.

๐Ÿ“‹ Chapter 1 โ€” Summary
  • Motivation for software architecture โ†’ analogy to physical architecture
  • We need architecture to avoid:
    • Expensive
    • Disruptive changes in the future
  • Origins of software architecture โ†’ solution to managing growing complexity
  • Intuition for good software architecture:
    • We need to consider many factors
    • Not just functionality
02
Chapter Two

Key Concepts for Software Architecture

Definitions of Software Architecture
ANSI/IEEE 1471

The fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution.

ISO/IEC/IEEE 42010

Fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution.

Building Blocks / Components Relationships between components Relationship with environment Principles, rules & guidelines
Software Architecture โ€” Components, Relationships & Principles
ENVIRONMENT / SYSTEM BOUNDARY Component A ยซserviceยป Component B ยซserviceยป External System ยซexternalยป uses ยซinterfaceยป PRINCIPLES GOVERNING DESIGN & EVOLUTION Separation of Concerns ยท Loose Coupling ยท High Cohesion ยท Single Responsibility
Software vs Program

Software is broader than a single program โ€” it encompasses programs, procedures, documentation, and data. The diagram below shows what software comprises:

Multiple Applications Version Control, Review Process, Release Process Developer / User Guide Files / Databases ๐Ÿ–ฅ๏ธ Software Computer programs, procedures and possibly associated documentation and data pertaining to the operation of a computer system
Building Blocks / Components

A component (ISO/IEC 25010:2011) is an "entity with discrete structure, considered at a particular level of analysis." Components are units of hierarchical decomposition and encapsulation that provide static structure.

๐Ÿ”ฉ

Small

Function, class, data structure, module

๐Ÿ“ฆ

Medium

Package, library, framework, program, script, container, pod

๐Ÿ—๏ธ

Large

Application cluster, container cluster

Black Box vs White Box Components

Any component can be described as either a Black Box or a White Box. The decision depends on the required level of abstraction and the quality attributes that need to be understood.

Quality Attributes
QA
Component
Interface
โฌ› Black Box
  • Hides internal structure
  • Only exposes interface / behavior
  • Focuses on what a component does
  • Better for encapsulation
VS
Quality Attributes
QA
Component
C Q
C
C Q
Interface
โฌœ White Box
  • Shows internal structure
  • Reveals implementation details
  • Shows sub-components & connections
  • Needed for deep analysis or debugging
Interfaces in Software Architecture

An interface (ISO/IEC 2382:2015) is a "shared boundary between two functional units." It acts as a contract that components must abide by โ€” a well-defined access point providing syntax, data structures, functional behavior, error handling, and protocol details.

๐Ÿ”Œ

Provided Interface (API)

"Please do stuff for me โ€” I will do it THIS way."

๐Ÿ”—

Required Interface (SPI)

"Please do stuff for me AND do it THIS way." Plugin interfaces.

๐Ÿ›๏ธ

Standard Interface

"You shall do stuff THIS way." โ€” Provided by a 3rd party.

Stakeholders & Their Concerns

A stakeholder (ISO/IEC/IEEE 24765:2017) is any individual or organization having a right, share, claim, or interest in a system โ€” or that may affect or be affected by a project's decisions or outcomes.

๐Ÿ‘”
Project Managers
๐Ÿ‘ค
Customers
๐Ÿ’ป
Developers
๐Ÿงช
Testers / QA
๐Ÿ–ฅ๏ธ
IT Operations
๐Ÿ’ผ
Investors
๐Ÿค
3rd Party Providers
What Is a Requirement?
ISO/IEC/IEEE 24765:2017 Requirement
โ—‹
Condition or capability that must be met or possessed by a system, system component, product, or service to satisfy an agreement, standard, specification, or other formally imposed documents
โ†’ Something that a system a stakeholder wants / our system needs to provide
โ—‹
Statement that translates or expresses a need and its associated constraints and conditions
โ†’ A document that includes needs, wants, and expectations of stakeholders.
โš  Note the different possible meanings of this term.
Types of Requirements

Requirements fall into three distinct categories, each playing a different role in shaping the software architecture:

โš™๏ธ

Functional Requirements

What shall X do? โ€” "required feature." When A happens, the system shall do B.

๐Ÿ“Š

Quality Requirements

How shall X be? โ€” "required quality." The system shall be secure, maintainable, efficientโ€ฆ

๐Ÿšง

Constraints

Externally imposed limitations on design, implementation, or the development process (technical, budget, legal).

Common Quality Requirements
โšก
Performance
Throughput & Latency
๐Ÿ’ก
Efficiency
Work per resource used
๐Ÿ“ˆ
Scalability
Increase capacity to handle more load
๐Ÿ”ƒ
Elasticity
Scale up & down dynamically on demand
๐Ÿ”’
Security
Protect from threats
๐Ÿ”„
Availability
Uptime & reliability
๐Ÿ› ๏ธ
Maintainability
Ease of change
๐ŸŽฏ
Usability
Ease of use
๐Ÿ”ฌ
Testability
Ease of verification
Changes in Quality Requirements โ€” Impact on Architecture

Changes in quality requirements can have a significant impact on the software architecture โ€” potentially requiring a complete redesign. Two key examples:

๐Ÿ“

Small Scale vs Large Scale Application

A small-scale app (e.g. single-user desktop) can use a simple layered architecture. Scaling to millions of users requires distributed systems, caching layers, load balancers, and horizontal scalability โ€” a fundamentally different architecture.

๐Ÿ”“โ†’๐Ÿ”’

Non-Secure vs Secure System

Adding security requirements to an existing non-secure system is disruptive. It requires adding authentication, authorization, encryption, audit trails, and security boundaries โ€” changes that touch nearly every component.

Functional requirement changes do happen and can be managed. Quality requirement changes might happen and can imply significant risks to the architecture.

What Is a Constraint?
ISO/IEC/IEEE 24765:2017 Constraint
โ—
Externally imposed limitation on system requirements, design, or implementation or on the process used to develop or modify a system
โ—
Examples:
  • โ—‹ Technical constraints
  • โ—‹ Budget constraints
  • โ—‹ Legal constraints
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]
Stability of Requirements
๐Ÿ”„

Why Requirements Change

  • Customers are not sure what they want
  • Legal uncertainties (legislation in progress)
  • Market or business context shifts
โš ๏ธ

Danger of Unstable Requirements

  • May require major rework
  • Cause "scope creep"
  • โ†’ Missed delivery of the project
๐Ÿ›๏ธ

What the Architect Must Do

  • Cannot eliminate unstable requirements
  • Needs to identify them early
  • Design for flexibility where instability is expected
๐Ÿ“‹ Chapter 2 โ€” Summary
  • There are many valid definitions of Software Architecture.
  • Common concepts:
    • Building blocks / Components
    • Relationship between components and each other
    • Relationship between components and their environment
    • Principles, rules and guidelines
  • Building blocks / components can be of any size
  • Can be described as:
    • Black Boxes โ€” Hide internal structure / implementation details
    • White Boxes โ€” Show internal structure / implementation details
  • Interface in Software Architecture โ€” Contract components must abide by.
  • Types of interfaces:
    • Provided Interface (API)
    • Required Interface (SPI)
    • Standard Interface (Provided by 3rd party)
  • Learned the definitions of a "Stakeholder" โ€” Groups/Individuals that:
    • Are affected by our system
    • Affect/influence our system
  • Types of requirements:
    • Functional Requirements
    • Quality Requirements
    • Constraints
03
Chapter Three

Roles and Responsibilities of a Software Architect

The Architect's Task Cycle
Tasks of Software Architects clarify requirements establish business case design / select architecture document + communicate software architecture guide & support implementation evaluate architecture Fig. C2.3: according to [Starke2020] and [Bass+2021]
Tasks & Responsibilities
๐Ÿข

Establish a Business Case

  • Consider costs and desired benefits
  • Understand business value from customer perspective
  • Create economically viable solutions
  • Shape and constrain future requirements
๐Ÿ”

Clarify Requirements

  • Identify, refine, and scrutinize functional & quality requirements
  • Analyze feasibility and contradictions
  • Identify missing/implicit requirements โ†’ make them explicit
  • Estimate stability of requirements

The Software Architect is NOT a Requirements Engineer. It is not their responsibility to define or gather requirements โ€” their role is to guarantee the fulfillment of requirements.

โš”๏ธ

Contradiction Example

Req. A: "Absolute data privacy โ€” no entity may access user data under any circumstances."


Req. B: "Law enforcement must be allowed to access user data without consent in criminal investigations."

๐ŸŽฏ

Implicit Requirements Example

Explicit: "Allow users to stream videos on mobile devices."


Implicit: "The system should use adaptive streaming so quality adjusts to connection speed."

Note
Stability of Requirements โ€” Considerations
Some requirements may change during the project:
  • โ†’ Customers are not sure what they want
  • โ†’ Legal uncertainties (legislation in progress)
Danger of unstable requirements:
  • โš  May require major rework
  • โš  Cause "scope creep" โ†’ missed delivery of the project
A Software Architect:
  • โ— Cannot eliminate those unstable requirements
  • โ— Needs to identify them early
๐ŸŽจ

Design / Select Architecture

  • Select existing solutions or design new ones
  • Consider costs, integration difficulty, alignment
  • Decompose into building blocks (domain, technology layers)
  • Define interfaces and dependencies
  • Decide cross-cutting concerns (persistence, GUI, communication)
  • Test concepts with prototypes
๐Ÿ“

Document & Communicate

  • Create shared understanding via diagrams, views, illustrations
  • Depict functionality and technical elements
  • Make architecture visible and understandable to all stakeholders
๐Ÿ”ง

Guide & Support Implementation

  • Ensure implementation compliance via code reviews and tests
  • Integrate stakeholder feedback
  • Analyze architecturally-relevant issues
  • Support testers with test conditions and constraints
โœ…

Evaluate the Architecture

  • Quantitative assessment: metrics
  • Qualitative assessment: adherence to requirements, constraints, goals
  • Identify risks regarding quality requirements
  • Justify consequences and derive mitigation strategies
Example
Identification of Risks in Practice
Identification of Risks
  • โ†’ Security and Privacy
Decision
  • โ†’ Deployment on public cloud
Justification
  • โ†’ Compliance and encryption
Desired Skills of a Software Architect

A good architect combines technical depth with broad soft skills โ€” they must negotiate, listen, organize, and guide while maintaining strong technical expertise.

๐Ÿง 

Cognitive Skills

  • Capacity for abstract & system thinking
  • Knowledge in breadth (not always depth)
  • Fast learner
  • Innovative / creative
  • Open and adaptable to changes
๐Ÿค

Interpersonal Skills

  • Assertiveness and decision-making
  • Interpersonal communication & negotiation
  • Ability to work in teams and independently
  • Guide, negotiate, listen, organize
Software Architect's Relationships with Other Roles
๐Ÿ“‹

vs Analyst / Requirements Engineer / Product Owner

Architect accepts requirements, examines feasibility, detects inconsistencies, and asks for changes to improve architecture.

๐Ÿ‘ค

vs Customer

Acts as the customer's "lawyer" โ€” ensures requirements are sensible, feasible, and fulfilled from an architectural perspective.

๐Ÿ“…

vs Project Manager

Acts as "advisor" โ€” supports project planning, work packages, risk analysis and prevention.

๐Ÿ’ป

vs Developer

Provides architecture guidelines, know-how transfer, and code reviews. Receives status and change requests.

๐Ÿงช

vs Tester

Provides guidelines, test constraints, test cases, sequencing, and prioritization of tests.

๐Ÿ–ฅ๏ธ

vs IT Operations

Considers operational framework โ€” network topology, hardware/software, OS. Defines deployment structure.

โœ… Benefits of Fulfilling Other Roles
โš  Drawbacks
  • Better understanding of additional concerns
  • Improved context and situational awareness
  • Conflicts of interests
  • Less time for documentation
  • Less time for code review
  • Less time working with developers
๐Ÿ“‹ Chapter 3 โ€” Summary
  • The expected output of a Software Architect is the System's Architecture that:
    • Fulfills the: Functional requirements, Quality requirements
    • Aligns with: The project goals, Business objectives
  • Software Architect's main responsibility is the fulfilment of the long-term strategic, software architecture goals
  • Tasks of a Software Architect:
    • Helping establish a business case
    • Identifying, clarifying and analyzing requirements
    • Designing/selecting the architecture and technologies
    • Documenting and Communicating the Software Architecture
    • Guiding and Supporting Implementation
    • Evaluating the Software Architecture
  • Software Architect's activities are not linear
  • In some organizations, the Software Architect takes on other responsibilities
    • Benefits: Better understanding and context
    • Drawbacks: Conflict of interests, Time conflict
  • Relationship between a Software Architect and:
    • Analyst / Requirements Engineer / Product Owner
    • Customer
    • Project Manager
    • Developer
    • Tester
    • IT Operations
04
Chapter Four

Influencing Factors, Quality Goals & Design Constraints

Origins of Requirements โ€ฆ and What Is Influenced by Them system context relevant requirements and constraints โ† shaped by system context Architecture Analysis Architecture Documentation Architecture Evaluation Concrete Architecture influencing factors may impact ๐Ÿ›๏ธ architecture ๐Ÿ–ฅ๏ธ IT system ๐Ÿ“… implementation IT project Source: ISAQB CPSA-F โ€” [Starke2020]
System Context

"The part of reality that is relevant for the requirements of a system." โ€” Pohl+2016

๐Ÿ‘ฅ

People

Stakeholders or groups of stakeholders

โš™๏ธ

Systems in Operation

Other technical systems or hardware

๐Ÿ“„

Documents

Laws, standards, system documentation

๐Ÿ”„

Events

Technical or physical events

๐Ÿ”

Processes

Technical and business processes

Categories of Influencing Factors
๐Ÿข Organizational
  • Org structure & team
  • Decision makers
  • Partnerships
  • Resources (Budget, Time, Staff)
  • Standards & process models
  • Legal: GDPR, CCPA, HIPAA, COPPA
๐Ÿ“ฆ Product-Related
  • Functional requirements
  • Quality requirements
  • Product cost & licensing
  • Business model
  • Open-source vs closed-source
  • Commercial vs internal usage
๐Ÿ”ง Technological
  • Software infrastructure
  • Hardware infrastructure
  • Programming language
  • Communication protocols
  • Libraries, frameworks
  • Operating environment
Note โ€” Organizational Factor
Issues with Outsourcing Work
Some countries have restrictions (export / technologies):
  • โ†’ Technical constraints
  • โ†’ Legal constraints
Consultancy / out-staffing company employees may have:
  • โš  Conflicting priorities โ†’ Time constraints
  • โš  Hourly pay โ†’ Budget constraints
Note โ€” Product-Related Factor
Commercial vs Internal Product
Commercial, external-facing product:
  • โ†’ Technical / Data Constraints
  • โ†’ More requirements on:
  • โ— Availability
  • โ— Security
  • โ— Performance
Note โ€” Product-Related Factor
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
  • โ—‹ Describe desired quality attributes of the system or product.
  • (how the system should be)
Conway's Law & Organizational Impact
The Law

"Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations."

โ€” Conway, Melvin E. (1968)

Implication
Practical Impact
  • 4 teams โ†’ likely 4 large building blocks
  • Often no technical necessity for this
  • Communication quality influences interface quality
  • Inverse Conway Maneuver: Design org structure to match desired architecture
Conway's Law โ€” Teams Mirror Building Blocks
Organization ๐Ÿ‘ฅ Team 1 Frontend ๐Ÿ‘ฅ Team 2 Backend ๐Ÿ‘ฅ Team 3 Database ๐Ÿ‘ฅ Team 4 DevOps System UI Layer API Service Database Infra / CI-CD 4 teams โ†’ 4 building blocks (regardless of technical necessity)
Conway's Law Example โ€” NASA's Mars Climate Orbiter (1999)
Company A ๐Ÿ‘ฅ Team 1 Millimeters Building Block 1 โ†” Building Block 2 Inches ๐Ÿ’ฅ Company B ๐Ÿ‘ฅ Team 2 โš  Unit mismatch between teams caused $125M spacecraft loss Communication quality between teams โ†’ interface quality between building blocks
Inverse Conway Maneuver โ€” Examples
Layered Architecture โ†’ 1 large team Presentation Layer Application Layer Business Domain Layer Infrastructure Layer VS Microservices โ†’ 4 autonomous teams Customer Account Customer DB Product Catalog Product DB Shopping Cart Cart KVS Order Dispatch Order DB Online Shopping Service (API Gateway) โœ“ Design teams to match desired architecture, not the other way around
Quality Attributes, Goals & Requirements
๐ŸŒŸ

Quality Attributes

  • Properties of the system
  • Performance, Availability, Security, Usability
  • Can be positively or negatively correlated with each other
๐ŸŽฏ

Quality Goals

  • High-level objectives
  • May utilize multiple quality attributes

Example:
"Improve user experience and satisfaction"

Quality attributes: Performance, Usability

๐Ÿ“

Quality Requirements

  • Specific, actionable, measurable statements
  • Derived from quality goals

Examples:

  • "A user should see the product homepage in the browser within 500ms at most"
  • "The product search feature shall return relevant results within 2 seconds with at least 90% accuracy"
Quality Attributes โ€” Correlations and Trade-Offs

Quality goals and requirements can:

  • Align with, or contradict, each other
  • Support or compete with other influencing factors (e.g., project or business goals)
โœ” Positive Correlations
Scalability โœ” High Performance
Flexibility โœ” Testability
Simplicity โœ” Understandability
Reliability โœ” Availability
โšก Negative Trade-Offs
Adaptability, Flexibility โšก High Performance
Memory Usage โšก CPU Utilization
Security โšก Usability
Efficiency โšก Maintainability / Adaptability
Trade-Off Examples
Performance vs Reusability
Consistency vs Availability
Security vs Ease of Use
Development Time vs Performance
Fast Time-to-Market vs Sustainability
Important Considerations
  • Not all quality requirements are easily quantifiable
  • Examples:
    • Sustainability
    • Maintainability
    • Understandability
  • Important: Clear criteria of when:
    • The requirement is met
    • The work is done
Other Product-Related Influencing Factors
  • Open-source vs closed-source
  • One-time purchase vs subscription-based vs consumption-based
Examples
Architecting an open-source database / tool

Additional services / packages can be purchased.

Impact on requirements / design:

  • Reserve performance tricks/tools for paid version
  • Additional capabilities need to be easy to plug-in
Video / Audio editing software

One-time purchase price

Impact on requirements / design:

  • No cloud provider / third-party services
Vertical vs Horizontal Scalability
๐Ÿ“ˆ Vertical Scaling (Scale Up)
๐Ÿ“Š Horizontal Scaling (Scale Out)
  • Increase capacity of a single resource
  • Replace with a more powerful resource
  • Example: Increase DB server memory
  • Example: Upgrade to a faster computer
  • Add more resources to the system
  • Distribute the workload
  • Example: Add servers to a stateless web app
  • Example: Add database replicas
๐Ÿ“‹ Chapter 4 โ€” Summary
  • Origin of requirements and System Context: "The part of reality that is relevant to the requirements of a system."
    • People/Stakeholders
    • Systems in Operation
    • Events
    • Processes
    • Documents (standards / agreements..)
  • Categories of influencing factors on our Software Architecture:
    • Organizational
    • Product-Related
    • Technological โ€” Limit the technologies, frameworks, programming languages etc. Set constraints on our design. Can be both good and bad.
  • Product-related Influencing factors:
    • Functional requirements
    • Quality requirements
      โ†’ Main factor that drives software architecture
      โ†’ Commonly neglected by inexperienced engineers/architects
  • Quality attributes โ€” properties (e.g., performance, reliability, scalability). Can support/contradict each other.
  • Quality goals โ€” high-level objectives related to software quality that an organization wants to achieve.
  • Quality requirements โ€” Specific, actionable, and detailed statements derived from a quality goal, targeted toward a specific quality attribute.
  • Other product-related influencing factors:
    • Product cost
    • Product service
    • Licensing
    • Business model
    • etc.
05
Chapter Five

Identifying Uncertainty and Risks

What Are Risks?

A risk is a threat to the successful fulfillment of project or architectural goals.

Risk
=
Probability of Adverse Event
ร—
Amount of Harm
What Are Risks? โ€” Examples
$0.0001/day Low harm 0.00000001% Low probability $1M/day High harm Risk = [Probability of adverse event] ร— [Amount of harm]

Even with extremely low probability, a very high amount of harm can still produce significant risk.

๐Ÿ”

Recognize

Identify risks early across all project dimensions โ€” technical, organizational, and human.

๐Ÿ“ฃ

Communicate

Justify consequences of architectural decisions to stakeholders clearly and proactively.

๐Ÿ›ก๏ธ

Assess & Limit

Derive solutions and strategies to mitigate risks. Quantify via probability ร— harm.

Risk Categories
๐Ÿข

Organizational Context Risks

  • Long physical distance to stakeholders
  • Complex market conditions
  • Fixed budget / fixed project duration
  • Greenfield project uncertainty
๐Ÿ“ฆ

Product Risks

  • Mission-critical system
  • Demanding quality requirements
  • Unknown quality requirements
  • High complexity / large system
๐Ÿ‘ฅ

Human Factor Risks

  • Poor communication skills
  • Problematic group dynamics
  • Low commitment
  • "Subconscious" knowledge (not shared)
Typical Risks in Projects
Tight Schedule Contradictions Ambiguity Lack of Documentation Inadequate Requirements High Rate of Change New Untested Products Critical External Interfaces Limited Expertise Limited Resource Availability Availability of Tech Infrastructure
Implicit Influencing Factors โ€” A Key Risk
โš ๏ธ

The Danger

Implicit assumptions are very risky โ€” phrases like "it should have been clear to everyone" or "we always assumed thatโ€ฆ" signal undocumented expectations.

โœ…

The Solution

Anticipate and address implicit assumptions. Don't just say what a component is responsible for โ€” explicitly state what it is NOT responsible for.

Be Explicit! Not implicit. A component's scope should be unambiguous to all team members, documented in both positive and negative terms.

Risk Mitigation โ€” Examples
๐Ÿ”

Security & Privacy Risk

Decision: Deployment on public cloud

Justification: Implement compliance measures and encryption to address data privacy and access control risks.

๐Ÿ’พ

Outage / Data Unavailability

Mitigation strategies:

  • Ongoing backups
  • Multiple data centers
  • Multiple cloud providers
What is "In" and "Out" of Scope โ€” Examples
๐Ÿ”ต

Example 1: Microservice A

โœ” In Scope:
"Microservice A is responsible for managing Users."

โœ˜ Out of Scope:
"Microservice A is not responsible for storing user profile pictures."

๐Ÿ”ถ

Example 2: Image Processing Library

โœ” In Scope:
"The Image processing library is responsible for detecting objects in the image and improving its quality."

โœ˜ Out of Scope:
"The image processing library is not responsible for compressing and storing the processed data in a file."

Experience From Large Projects
  • Nobody works more productive or faster under high pressure
    โ†’ Increasing error rate, quick-and-dirty solutions
  • Hiring more people for a delayed project, delays it further.
  • Murphy's Law: Additional problems always arise.
    • Be a pessimist: Prefer to plan too many rather than too few resources.
    • Calculate safety margins.
    • Expect unknown unknowns.
  • If the political issues are not managed, the system development will never be successful.
Engineering Productivity Over Time

Investing in good architecture has a short-term productivity cost but yields long-term gains. Quick-and-dirty approaches create net negative productivity over time โ€” rework, bugs, and tech debt slow the team down progressively.

Productivity Trade-off
Productivity Time No Architecture (short-term gain) With Architecture (long-term gain) Break-even
๐Ÿ“‹ Chapter 5 โ€” Summary
  • What is "Risk":
    • Threat to the successful fulfilment of project goals / architectural goals
    • [Probability of an adverse event] ร— [amount of harm]
  • Risk categories:
    • Organizational Context risks
    • Product risks
    • Human factor risks
  • Mitigating the implicit influencing factor โ€” implicit assumptions
    • Making assumptions explicit
  • Tips for managing risks
Summary โ€” Basic Concepts at a Glance
01 ยท Introduction

What Is Software Architecture?

  • Fundamental structural decisions โ€” hard & expensive to change later
  • Components, relationships & guiding principles
  • Bridges requirements to implementation
02 ยท Key Concepts

Building Blocks & Relationships

  • Components (building blocks) with defined interfaces
  • Dependencies, data flow & communication relationships
  • Architecture views: context, building block, runtime, deployment
03 ยท Roles & Responsibilities

The Software Architect

  • Clarify requirements, make & document design decisions
  • Communicate architecture to all stakeholders
  • Evaluate, validate & continuously improve architecture
04 ยท Influencing Factors

Constraints & Quality Goals

  • Functional requirements, quality goals & constraints shape decisions
  • Conway's Law โ€” team structure mirrors system structure
  • Quality attributes have correlations & trade-offs
05 ยท Risks

Uncertainty & Risk Management

  • Identify organizational, product & human-factor risks early
  • Make implicit assumptions explicit
  • Balance technical debt against delivery speed