Lecture 1 - Introduction To Software Architecture
Lecture 1 - Introduction To Software Architecture
Introduction To
Software Architecture
Architecture thinking
One possible answer
Role of software architecture
Context
What is
software architecture ?
Definitions
Architecture for a specific system may be captured as
“a collection of computational components – or simply
components – together with a description of the
interactions between these components – the
connectors”
An Introduction to Software Architecture - Garlan and Shaw (1993)
3 main cultures:
Process
Agile
Object-oriented
Emphasize:
Plans
Schedules
Documents
Requirements
Specifications
Order of tasks
Commitments
Characteristics:
o Short iterations
o Emphasis on working code; de-emphasis of plans
and documents
o Emphasis on testing; de-emphasis of specifications
and design . "Test-Driven Development"
o Constant customer involvement
o Refusal to commit to both functionality and deadlines
o Specific practices, e.g. Pair Programming
Emphasizes:
Seamless development
Reversibility
Single Product Principle
Design by Contract
Software Architecture
AVAILABLE FLIGHTS: 2
transition (i, k)
giving the state to go to from state i for choice k.
0 1 2 3
0 (Initial) 2
1 (Help) Exit Return
2 (Confirmation) Exit 3 0
3 (Reservation) Exit 4 2
4 (Seats) Exit 5 3
5 (Flights) Exit 0 4
The transition diagram
Software Architecture
in context
Fundamental Understanding
o Requirements
o Design
o Implementation
o Analysis and Testing
o Evolution
o Development Process
Requirements Analysis
The Twin Peaks Model is used in software development to iteratively develop the
architecture and the requirements.
Both “peaks” are equally important.
Design and Architecture
o Objects
Main abstraction entity in OOD
Encapsulations of state with functions for accessing and
manipulating that state
Advantages and Disadvantages of OOD
Advantages
o UML modeling notation
o Design patterns
Disadvantages
o Provides only
• One level of encapsulation (the object)
• One notion of interface
• One type of explicit connector (procedure call)
Even message passing is realized via procedure calls
o OO programming language might dictate important design
decisions
o OOD assumes a shared address space
Domain Specific Software Architecture (DSSA)
o Generative techniques
• e.g. parser generators
o Frameworks
• collections of source code with identified places
where the engineer must “fill in the blanks”
o Middleware
• CORBA, DCOM, RPC, …
o Reuse-based techniques
• COTS, open-source, in-house
o Writing all code manually
How It All Fits Together
Analysis and Testing
Architectural model
o may be examined for consistency with requirements
o may be used in determining analysis and testing strategies
for source code
o may be used to check if an implementation is faithful
Evolution and Maintenance
All activities that chronologically follow the release of an
application
Software will evolve
o Regardless of whether one is using an architecture-centric
development process or not
The traditional software engineering approach to maintenance is
largely ad hoc
o Risk of architectural decay and overall quality degradation
Architecture-centric approach
o Sustained focus on an explicit, substantive, modifiable,
faithful architectural model
Architecture-Centric Evolution Process
Motivation
Evaluation or assessment
Design and choice of approach
Action
o includes preparation for the next round of adaptation
Processes