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.