Software Architecture: Why and What?
-
Upload
chris-carroll -
Category
Software
-
view
336 -
download
0
Transcript of Software Architecture: Why and What?
![Page 1: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/1.jpg)
Chester Devs, 2015 Chris F Carroll
Software Architecture – Why and What?
![Page 2: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/2.jpg)
In the beginning ...
...therewere algorithms; computable functions; the lambdacalculus…
![Page 3: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/3.jpg)
The Software Architectural Qualities of a Proof on Paper…
• Availability: 7–Nines Uptime
• Reliability/Robustness: no moving parts, can survive drops, collisions and earthquakes
• Parallel processing: Can be copied and worked on by multiple people in parallel (good implementation of immutability)
• Can be geographically distributed without loss of performance
• But not, alas, extremely fast…
![Page 4: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/4.jpg)
![Page 5: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/5.jpg)
![Page 6: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/6.jpg)
![Page 7: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/7.jpg)
why architecture? because …
“… No-one replaces or re-writes a system because of its functionally. It’s always because of some quality failing – performance or reliability, usability, or ease of modifiability”
![Page 8: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/8.jpg)
The Claim of Software Architecture
To enable Reasoning about:
… the Quality Attributes of
Software-intensive Systems
… to meet Stakeholder’s Concerns
… using Architecture Descriptions of
the system’s fundamental structure(s)
in terms of its elements, relationships, properties and principles
Why software architecture?
![Page 9: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/9.jpg)
• What is a Quality Attribute?• What does “Reasoning about”
mean?• What are Stakeholder Concerns?• What is an Architecture
Description and how does it help?
4 Key Concepts The promise of Software Architecture
![Page 10: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/10.jpg)
• What is a Quality Attribute?• What does “Reasoning about”
mean?• What are Stakeholder Concerns?• What is an Architecture
Description and how does it help?
4 Key Concepts The promise of Software Architecture
![Page 11: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/11.jpg)
What is a Quality Attribute?
Who defines quality?
“It’s not what you do, it’s the way that you do it”
affordability, availability, correctness,
deployability,efficiency, evolvability,
extensibility, fault-tolerance, main-
tainability, modifiability, reliability,
resilience, responsiveness, robust-ness,
safety, scalability, securability, testability,
usability, …
![Page 12: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/12.jpg)
What is a Quality Attribute?
ISO 25010
“It’s not what you do, it’s the way that you do it”
accessibility, accountability, accuracy, adaptability, administrability, affordability, agility,
auditability, autonomy, availability, compatibility, composability, configurability, correctness,
credibility, customizability, debugability, degradability, determinability, demonstrability,
dependability, deployability, discoverability, distributability, durability, effectiveness, efficiency,
evolvability, extensibility, failure transparency, fault-tolerance, fidelity, flexibility, inspectability,
installability, integrity, interchangeability, interoperability, learnability, maintainability,
manageability, mobility, modifiability, modularity, operability, orthogonality, portability, precision,
predictability, process capabilities, producibility, provability, recoverability, relevance, reliability,
repeatability, reproducibility, resilience, responsiveness, reusability, robustness, safety, scalability,
seamlessness, self-sustainability, serviceability, supportability, securability, simplicity, stability,
standards compliance, survivability, sustainability, tailorability, testability, timeliness, traceability,
ubiquity, understandability, upgradability, usability
![Page 13: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/13.jpg)
Many ways to get from A to B
what about a horse?
![Page 14: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/14.jpg)
Many ways to get from A to B
how about a camel?
![Page 15: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/15.jpg)
What is a Quality Attribute?
but … what do all these words mean?
“It’s not what you do, it’s the way that you do it”
accessibility, accountability, accuracy, adaptability, administrability, affordability, agility, auditability, autonomy, availability, compatibility, composability, configurability, correctness, credibility, customizability, debugability, degradability, determinability, demonstrability, dependability, deployability, discoverability, distributability, durability, effectiveness, efficiency, evolvability, extensibility, failure transparency, fault-tolerance, fidelity, flexibility, inspectability, installability, integrity, interchangeability, interoperability, learnability, maintainability, manageability, mobility, modifiability, modularity, operability, orthogonality, portability, precision, predictability, process capabilities, producibility, provability, recoverability, relevance, reliability, repeatability, reproducibility, resilience, responsiveness, reusability, robustness, safety, scalability, seamlessness, self-sustainability, serviceability, supportability, securability, simplicity, stability, standards compliance, survivability, sustainability, tailorability, testability, timeliness, traceability, ubiquity, understandability, upgradability, usability
![Page 16: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/16.jpg)
Software Quality Attributes
first, define your terms
Define what matters to you about a quality attribute by either ♣ Describing scenarios or ♣ Defining measures (or proxy measures)Then research the tactics/patterns/appliances you can use to achieve the quality
![Page 17: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/17.jpg)
Availability & Resilience
♣ Availability / Resilience
o A common measure is up-time: “5-nines”
o A scenario for a failure event might be
“When an out-of-memory failure occurs, the app
should recycle, and the system should continue
operating as normal within 30 seconds.”
o Attack Scenarios:
“When attack X happens, Y should happen and the
system should continue operating as normal”
quality attributes : define it
![Page 18: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/18.jpg)
Modifiability is ... quality attributes : measure it
♣ Modifiability / Maintainability / Evolution
o Could be measured as (estimated) cost or
speed
♣ Are these reasonable measures of modifiability?
o “It should not require a change request and
14 day wait to correct a spelling error on the
website”
o “Sprint velocity after a year of development
should be at least as good as in months 3 to 12”
![Page 19: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/19.jpg)
• What is a Quality Attribute?• What does “Reasoning about…”
mean?• What are Stakeholder Concerns?• What is an Architecture Description
and how does it help?
4 Key Concepts The promise of Software Architecture
![Page 20: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/20.jpg)
and even to predictWhat is “Reasoning
about…”?
estimatemeasurerisk-evaluateaccount forcost-benefit-analysecalculatequantifyvalidatebudget
}everything
![Page 21: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/21.jpg)
What is “Reasoning about…”?
Show me the numbers
♣ Being able to describe, define,
measure, calculate, test and even
predict how a system will behave …
♣ … preferably in advance of paying
the full cost of delivery and preferably
before missing the timeframe in which
the system is still useful
![Page 22: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/22.jpg)
Abstraction is the key to reasoning
even if the seats are concrete
![Page 23: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/23.jpg)
Abstraction: Number of seats
I am not a number!
1 50
![Page 24: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/24.jpg)
• What is a Quality Attribute?• What does “Reasoning about…”
mean?• What are Stakeholder
Concerns?• What is an Architecture Description
and how does it help?
4 Key Concepts The promise of Software Architecture
![Page 25: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/25.jpg)
4 Key Concepts Such many stakeholders
Not only the customer & the end-user but also…
![Page 26: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/26.jpg)
Reconciling conflicting stakeholder needs …
![Page 27: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/27.jpg)
Architecturally Significant Requirements
what matters first?
Architecturally Significant Requirements
![Page 28: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/28.jpg)
4 Key Concepts The promise of Software Architecture
• What is a Quality Attribute?• What does “Reasoning about…”
mean?• What are Stakeholder Concerns?• What is an Architecture
Description and how does it help?
![Page 29: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/29.jpg)
Abstraction: Number of seats
Maths: Reason by abstraction
![Page 30: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/30.jpg)
Abstraction: Number of seats
I am not a number!
1 50
![Page 31: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/31.jpg)
Abstraction: power to weight ratio
Maths: Reason by abstraction
![Page 32: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/32.jpg)
Abstractions: power & weight Maths: Reason by abstraction
74kW 12t
![Page 33: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/33.jpg)
Views and Viewpoints
![Page 34: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/34.jpg)
Different viewpoints there is no all-encompassing viewpoint
![Page 35: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/35.jpg)
Modifiability, Extensibility, Evolvability
![Page 36: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/36.jpg)
Modifiability & Extensibility
![Page 37: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/37.jpg)
Load balancing as a tactic for scaling
![Page 38: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/38.jpg)
Load balancing as a tactic for scaling
![Page 39: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/39.jpg)
![Page 40: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/40.jpg)
4+1, Updated
![Page 41: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/41.jpg)
20 years on … “6 + 0 + 1”
Rozanski & Woods, Software Systems Architecture, 2nd ed
![Page 42: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/42.jpg)
The Claim of Software Architecture
To enable Reasoning about:
… the Quality Attributes of
Software-intensive Systems
… to meet Stakeholder’s Concerns
… using Architecture Descriptions of
the system’s fundamental structure(s)
in terms of its elements, relationships, properties and principles
Why software architecture?
![Page 43: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/43.jpg)
What is “The Architecture” of a system?
rough cut definitions
“… the fundamental structures or organisation of your code”“… all the rules & design decisions you have get right up-front, because they are too expensive to change later.”
![Page 44: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/44.jpg)
Architecture is ... Bass, Clements, Kazman, 1997-2012
SEI, early 2000s“The structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.”
![Page 45: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/45.jpg)
Architecture is ... what does fundamental mean?
ISO/IEC/IEEE 42010:2011“The fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution”
![Page 46: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/46.jpg)
Architecture is ... Kruchten, updated 2009
Kruchten 2009: The significant decisions about♣ the organization of a software system,♣ the selection of the structural elements and their interfaces by which the system is composed together with their behavio[u]r as specified in the collaboration among those elements,♣ the composition of these elements into progressively larger subsystems,the architectural style that guides this organization, these elements and their interfaces, their collaborations, and their composition
![Page 47: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/47.jpg)
How to produce an architecture
A catalogue & a method
How can we design systems to meet quality requirements?
1) A catalogue of off-the-shelf tactics, components, appliances, patterns, frameworks, reference architectures… with known quality–impacts
2) A method for applying them when designing your system
![Page 48: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/48.jpg)
catalogues of patterns, tactics, …
A (very long) Reading List
♣ http://bing.com/search?q=architecture+tactics
♣ http://bing.com/search?
q=reference+architectures
♣
http://google.com/search?q=architecture+pattern
♣ http://pubs.opengroup.org/architecture/togaf8-doc/arch/
chap28.html
♣ Rozanski & Woods, Software Systems
Architecture
♣ Bass et al, Software Architecture in Practise
♣ Buschmann et al,
Pattern-Oriented Software Architecture Vols 1–5
Blue Peter Architecture
![Page 49: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/49.jpg)
Patterns,Tactics, Appliances
Off the shelf architecture
Including …
Pipe and Filter Architecture, Blackboard Architecture, Hexagonal Architecture, Layered Architecture, Service Oriented Architecture, Message Oriented Distributed Architecture, Client-Server, Client-Proxy Server, Master-Slave, Microservices, Reactor, Replication, Transactions, ACID, Eventual Consistency, Subsystem Interface, RDBMS, NoSQL DB, Graph Database, Datawarehouse, GUI, Command Line Interface, Batch Processing, Thread Pool, Activator, Factory, Dependency Injection, File System, Web Application, Sharding, Horizontal Scaling, Load Balancer, Message Queues, Publish-Subscribe, Request Broker, Web Services, Desktop Applications, Mobile Apps, Virtual Machine, Model View Controller, Domain Model, Domain Driven Design, Immutability, Caching, Proxy, Facade, Bridge, Adapter, Mediator, Decorator, Command, Interpreter, Web Farm, Web Garden, P2P, ORM, Data Mapper, Active Record, Tokens, Locks, Monitors, Heartbeat, Error detection, Backup and DR, the InterWebs, LAN, WAN, AES, PKI, Flash Drives, Gigabit Ethernet, WPA2-PSK
![Page 50: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/50.jpg)
a method for designing an architecture
1. Draw a box for the system. Surround it with the external actors which/who must interact with it.
2. List the Architecturally Significant Requirements in priority order
3. Start at the top of the list and work down
4. For each requirement, Identify or Create a Partition of the system which will meet that quality requirement
5. Identify tactics/patterns/appliances which achieve the Quality Requirement
6. Goto 2Simplified from Bass et. al.
![Page 51: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/51.jpg)
Simple Case Study No relation to Uber
Our New Startup
• sÜper is an application which will find
other sÜper users near you, and help
you to arrange a lift share.
• Business plan: Grow users to critical
mass in year 1, charge a fee from year 2
onwards
![Page 52: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/52.jpg)
Functional & Quality Requirements
Key Functionality•Based on the sUper user’s geolocation, find their nearest peers
•Enable communication & appointment making between
Quality Requirements• Must be mobile/geo-based• Must be very very simple & fast to use & not make embarrassing mistakes
• Must be virally attractive• Must (appear to) be reliable• Available 24/7• Must be cheap to build & maintain for the 1st year• Must cope with viral growth in user base• Must keep user data especially payment data secure
Are not un-related to each other
![Page 53: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/53.jpg)
ASRs
Prioritised Architecturally Significant
Requirements
1. Deployability: Must run on mobiles
2. Usability: Must be very very simple
3. Usability/Performance: Must be fast to use
4. Usability/Accuracy: Not make embarrassing mistakes
5. Low Initial Cost & Time to Market
6. Functionality: Communication between users
7. Functionality: Find nearby users
8. Scalability
9. Availability 24/7
because the architect said so …
![Page 54: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/54.jpg)
0. The Context Diagram
![Page 55: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/55.jpg)
ASR 1. Deployable to Mobile Platforms
![Page 56: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/56.jpg)
2. Usability – Very Very Simple
![Page 57: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/57.jpg)
3. Usability – Performance
![Page 58: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/58.jpg)
4. Usability-Accuracy
![Page 59: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/59.jpg)
5. Low Initial Cost/Time to Market
![Page 60: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/60.jpg)
6. Key Functionality 1: Communication
![Page 61: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/61.jpg)
7. Key Functionality 2: Find Nearby Users
![Page 62: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/62.jpg)
8. Scalability
![Page 63: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/63.jpg)
9. Availability
![Page 64: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/64.jpg)
Et voila. We have most of an architecture ….
![Page 65: Software Architecture: Why and What?](https://reader038.fdocuments.in/reader038/viewer/2022103019/55ca316ebb61ebd2658b47a2/html5/thumbnails/65.jpg)
Software Architecture thank you and good-bye
http:www.cafe-encounter.net/about/