Lecture 1 Software Architecture
Lecture 1 Software Architecture
SWE4210
Lecture 01: Introduction
Venue: SWE Lab
Presented by: Saratu Yusuf Ilu
Course Description
• This course provides an in-depth exploration of software architecture and design,
focusing on advanced design principles, architectural patterns, and the
structural organization of complex systems.
• Topics include the role of architecture in software engineering, design for quality
attributes (such as reliability, performance, security, and reusability), and the
application of design metrics and measurement theory.
• CA – 30%
• Exams – 70%
• 5 questions to answer 3
Reference Text
• Software Architecture in Practice (4th Edition) – Len Bass, Paul Clements, Rick
Kazman
• A foundational book covering architectural concepts, styles, quality attributes,
and case studies. Publisher: Addison-Wesley, 2022
• Designing Software Architectures: A Practical Approach – Humberto Cervantes & Rick
Kazman
• Step-by-step guide to designing architectures with a focus on quality-driven
design. Publisher: Addison-Wesley, 2016
• Software Systems Architecture: Working with Stakeholders Using Viewpoints and
Perspectives (2nd Edition) – Nick Rozanski & Eóin Woods
• Practical techniques for designing and documenting software architecture using
views. Publisher: Addison-Wesley, 2012
• Pattern-Oriented Software Architecture: A System of Patterns – Frank Buschmann et
al.
• In-depth reference for architectural patterns and styles. Publisher: Wiley, 1996
Lecture Outline
• Just as building architects create safe, functional, and beautiful structures for people to
live and work in, software architects design systems that are efficient, reliable, and
adaptable for users and businesses.
Characteristics of Software Architecture
Characteristic Description
1. Modularity
• Divides a system into manageable, reusable units.
• Promotes low coupling and high cohesion (High cohesion means that all the parts of
a module, class, or component are strongly related and work together to perform a
single, well-defined task.).
2. Abstraction
• Hides complexity by exposing only essential features.
• Example: A database API hides SQL query details from the UI.
3. Separation of Concerns
• Different parts of the system handle different responsibilities.
• Example: MVC (Model-View-Controller) separates data, logic, and interface.
Relating Software Design to Building Design
1. Modularity: Just as buildings have rooms with specific functions (e.g., kitchen,
bathroom), software has modules (e.g., auth service, payment processor).
2. Abstraction: A software module is like a room; it serves a purpose and hides complexity.
3. Separation of Concerns: In buildings, structure is separated from plumbing and decor.
In software, logic is separated from data storage and user interface.
Architectural Artifacts
• Architectural artifacts are the documents, models, diagrams, or specifications that
capture and communicate the structure, decisions and rationale of a software system’s
architecture.
• They help stakeholders (developers, designers, clients) understand, analyze, and discuss
the system.
• Goals of Architectural Artifacts
• Documentation: Capture important decisions and structures
• Communication: Help teams understand and discuss the design
• Analysis: Identify risks, trade-offs, and evaluate quality attributes
• Evolution: Provide a baseline for future changes and maintenance
• Why Architectural Artifacts Matter
• Clarify design decisions
• Document system structure for current and future teams
• Support communication and alignment across stakeholders
• Provide a basis for evaluation, review, and evolution
Examples of Architectural Artifacts
Artifact Type Description Example
Shows components and how they
Architecture Diagram Layered view of a web app
interact
Defines major software units and
Component Model Modules, classes
their roles
Shows how software is mapped to
Deployment Diagram Cloud services across servers
hardware
Defines how components
Interface Specifications REST API contract
communicate
Design Rationale Explains why certain decisions Why you chose a message
Document were made queue
Architecture Description Comprehensive description of the
IEEE 1471
Document (ADD) system’s architecture
Describes non-functional “System must handle 10k
Quality Attribute
requirements and how the system requests/sec with <1s
Scenarios
supports them latency”
Common Roles of an Architect
Role Responsibility
Requirements
Identify critical quality attributes (e.g., performance)
Design
Choose suitable architectural patterns and styles
• Architecture acts as a shared mental model for developers, testers, managers, and
stakeholders.
• Enables distributed teams to work independently on separate components.
• Reduces misunderstandings by providing clear documentation and design rationale.
• Example: In large Agile teams, architecture defines APIs and contracts upfront so teams
can develop in parallel.
Foundation for Reuse and Standardization
• Promotes reusability of components, patterns, and subsystems.
• Enables standardization across products, projects, or organizational units.