introduction to the software architecture
TRANSCRIPT
-
8/6/2019 Introduction to the Software Architecture
1/18
Software Design and Architecture
Muhammad Nasir
Introduction to Software Architecture
-
8/6/2019 Introduction to the Software Architecture
2/18
Agenda 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 Design and Architecture Difference
-
8/6/2019 Introduction to the Software Architecture
3/18
Goal (s) of this lecture To give you an understanding of the concept
Software Architectures, and its importance in
software development. To make you understand the challenges of
Software Architectures.
-
8/6/2019 Introduction to the Software Architecture
4/18
Challenges in Software Engineering
Reduce Development Cost
Delivery on time and within budget
Increase System Quality
Decrease Maintenance Costs
80% of a systems lifespan is spent in
maintenance phase. Reduce Time-To-Market
Manage increasing Complexity
-
8/6/2019 Introduction to the Software Architecture
5/18
How Software Architectures can
Help
Understanding System
Theoretical Limitations
Planning Resources
Labor
Communication
Customer Stakeholders
Evaluating Quality
Identifying Opportunities for Reuse
-
8/6/2019 Introduction to the Software Architecture
6/18
What is Software Architecture?
The software architecture of a program or
computing system is the structure or
structures of the system, which comprisesoftware 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
-
8/6/2019 Introduction to the Software Architecture
7/18
Software Architecture is Abstraction
-
8/6/2019 Introduction to the Software Architecture
8/18
Software Architecture in Development?
-
8/6/2019 Introduction to the Software Architecture
9/18
Why Develop a Software Architecture?
Why spend time on developing a Software
Architecture?
We have the requirements It takes time
We want to start coding
Ostrich Algorithm
-
8/6/2019 Introduction to the Software Architecture
10/18
Why Develop a Software Architecture!
Early Problem Analysis
Communicate back to Customer
Define Interfaces Avoid Problems during Integration
Early Information for
Testing
Planning
-
8/6/2019 Introduction to the Software Architecture
11/18
Challenges with Software Architectures
Requirements alone do notgenerate aspecific Software Architecture?
There are other factors. Which? Who has input to the Software Architecture?
Who are users of the Software Architecture?
What are the ramifications of a Software
Architecture?
-
8/6/2019 Introduction to the Software Architecture
12/18
Influencing Factors Technical & Organizational Factors
Development Organization
Previous Experiences
Quality Requirements from Target Domain
Technical Environment
Business Factors Overall Business Goals
System Stakeholders Management Low cost, keep people employed
Marketing Neat features, low cost, time-to-market
End UserBehavior, performance, reliable Maintenance org. Modifiable, understandable
Customer Low cost, timely delivery
Other Quality Requirements
-
8/6/2019 Introduction to the Software Architecture
13/18
Factors Influence Architecture
ArchitectureInfluence Factors
A Software Architecture Manifest Early Design Decisions
Constrains an Implementation
Dictates Organizational Structure
Impacts Change Management
Facilitates Evolutionary Prototyping
A Developed Software System Adds to previous experiences
May affect business goals
Refines development organization(Process Improvement)
Affect customer requirements
May revolutionize Computer Industry (e.g.GUI)
-
8/6/2019 Introduction to the Software Architecture
14/18
Software Architecture DesignM
ethods
Not one method!
Multiple approaches, depending on the
system that is built. Different methods in different companies.
Different attitudes towards SA: Formal
Semi-formal Agile
etc.
-
8/6/2019 Introduction to the Software Architecture
15/18
How to Develop a Software Architecture
A Software Architecture sets the theoreticalmax & min boundaries of Quality Attributes
for a Software System E.g. Performance, Modifiability, Reliability
Hence, Requirements on Quality Attributesshould drive Software Architecture Design.
Structured Software Architecture DesignMethods Bosch
Hofmeister et al.
-
8/6/2019 Introduction to the Software Architecture
16/18
Challenges when Creating a
Software Architecture
To model an architecture that meets therequirements. Trade-offs between conflicting requirements.
That can adapt to changed requirements.
To document the architecture models in the rightway. Everyone should understand!
To maintain/manage the architecture.
To spread knowledge about the architecture In the project
Outside the project
-
8/6/2019 Introduction to the Software Architecture
17/18
Design and Architecture Difference
No clear boundary line.
All architecture is design all design is
notarchitecture!
Architecture building blocks:
Components, modules
Design building blocks:
Classes/objects
-
8/6/2019 Introduction to the Software Architecture
18/18
The End
Thanks for listening
Questions would be appreciated.