You are on page 1of 13

Software Design and Architecture

Introduction to Software Architecture


Agenda
 Design and Architecture – Difference
 Challenges in Software Engineering
 How Software Architectures can Help
 What is Software Architecture?
 Why Develop a Software Architecture?
 Software Architecture is Abstraction
 Factors Influence Architecture
 Software Architecture Design Methods
 Challenges when Creating a Software Architecture
What is Software Architecture?

 ”The software architecture of a program or


computing system is the structure or
structures of the system, which comprise
software elements, the externally visible
properties of those elements, and the
relationships among them.” (Bass, Clements, Kazman)
 For more (much more),
http://www.sei.cmu.edu/architecture/definitions.html
Design and Architecture – Difference

 No clear boundary line.


 All architecture is design – all design is
not architecture!
 Architecture building blocks:
 Components, modules
 Design building blocks:
 Classes/objects
Software Architecture in Development?
Why Develop a Software Architecture?

 Why spend time on developing a Software


Architecture?
 It takes time

 We have the requirements

 We want to start coding


Why Develop a Software Architecture!

 Early Problem Analysis


 Communicate back to Customer
 Define Interfaces
 Avoid Problems during Integration
 Early Information for
 Testing
 Planning
Challenges in Software Engineering
 Reduce Development Cost
 Delivery on time and within budget
 Increase System Quality
 Decrease Maintenance Costs
 80% of a system’s lifespan is spent in
maintenance phase.
How Software Architectures can Help
 Understanding
 System
 Theoretical Limitations
 Planning
 Resources
 Labor
 Communication
 Customer
 Stakeholders
Challenges with Software
Architectures

 Requirements alone do not generate a


specific Software Architecture?
 There are other factors. Which?
 Who has input to the software architecture?
 Who are users of the software architecture?
Challenges when Creating a
Software Architecture

 To model an architecture that meets the


requirements
 To document the architecture models in the
right way
 Everyone should understand!
 To maintain/manage the architecture.
 To spread knowledge about the architecture
 In the project
 Outside the project
How to Develop a Software Architecture

 A Software Architecture sets the theoretical


max & min boundaries of Quality Attributes
for a Software System
 E.g. Performance, Modifiability, Reliability
 Hence, Requirements on Quality Attributes
should drive Software Architecture Design.
The End
 Thanks for listening
 Questions would be appreciated.

You might also like