icon picker
Software Architecture

Week 1

Why do we need Software Architecture?

Large and Distributed System
Complex System
Should be delivered on time and within budget
Software problems changes in nature

The system must have conceptual integrity, which can be only achieved by seperating architecture from implementation.

Definition for Software Architecture

Defines the blueprints of a system
Gross level structure
Including components
Connections (Relationships) between these components

3 different classes of architectural elements

Processing elements
Data elements
Connection elements

Design Principles

Separation Of Concerns
Don’t Repeat Yourself (DRY)
Principle of Least Knowledge

Principles of Component Cohension

The Reuse/Release Equivalence Principle (REP)
The Common Closure Principle (CCP)
The Common Reuse Principle (CRP)


Software Architecture Realization
Program Families
Information-hiding Modules

Week 2

Rationale for Software Architecture

Abstract Specification

Ignore the details
Help to cope with complexity
Improve understanding of the software system

Stackholder Communication

Software Architecture provide a common medium for communication among stackholders
Improve understanding of the system among stackholders

Coping with Evolution (Manifestion of the earliest design decisions)

Deal with changes and evolution
Changes will be limited to the abstraction boundaries
Balance between fixed and adaptable parts of the system

Guides Software Development Process

Organization of the Development Project

Organization of Documentation
Basis of integration
Division into teams
Basis of test plan, testing
Basis of maintenance
Incremental deployment

Large Scale Reuse

Can be reused for similar structure and requirements
Can promote software product lines

Week 3

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.