software architecture: why and what?

Post on 12-Aug-2015

342 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Chester Devs, 2015 Chris F Carroll

Software Architecture – Why and What?

In the beginning ...

...therewere algorithms; computable functions; the lambdacalculus…

Imported Author
“The Beginning” for computer science was the 1930s: the attempts to formalise mathematics resulted in Church’s Lambda Calculus and Turing’s Machine. All of which was done on paper…

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…

Author
Bletchley Park needed speed for breaking first the Navel Enigma, and then the Lorentz cipher. They built first ‘bombes’ – racks of automated enigma machines running in parallel – and then:The world’s first electronic programmable digital computer
Author
Machines are like Regular Expressions. As in, “Some people, faced with a problem, think, ‘ah, I’ll use a regular expression’. Now they have two problems”.
Author
If you have a problem and you build a machine to solve it, you now have two problems. How do I setup or program the machine? How much does it breakdown? Who can repair it? How often does it need maintenance? What does that cost? Is it fast enough? Will it overheat? Or explode? What does this flashing light and smell of burning moth mean?
Author
The first bug was hardware.A moth that was caught in a mechanical relay of the US Navy Mark II, 1945
Author
But with software systems, you have 3 problems:
Author
Things that used to go wrong in machine… now go wrong in software as well

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”

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?

• 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

• 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

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, …

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

Many ways to get from A to B

what about a horse?

Many ways to get from A to B

how about a camel?

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

Author
But. Every one of these words is so vague and ill-defined as to be completely useless.

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

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

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”

• 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

and even to predictWhat is “Reasoning

about…”?

estimatemeasurerisk-evaluateaccount forcost-benefit-analysecalculatequantifyvalidatebudget

}everything

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

Abstraction is the key to reasoning

even if the seats are concrete

Abstraction: Number of seats

I am not a number!

1 50

• 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

4 Key Concepts Such many stakeholders

Not only the customer & the end-user but also…

Reconciling conflicting stakeholder needs …

Architecturally Significant Requirements

what matters first?

Architecturally Significant Requirements

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?

Abstraction: Number of seats

Maths: Reason by abstraction

Abstraction: Number of seats

I am not a number!

1 50

Abstraction: power to weight ratio

Maths: Reason by abstraction

Abstractions: power & weight Maths: Reason by abstraction

74kW 12t

Views and Viewpoints

Author
An Architecture Description must use as many abstractions / aspects / structures as the significant quality attributes require

Different viewpoints there is no all-encompassing viewpoint

Modifiability, Extensibility, Evolvability

Modifiability & Extensibility

Author
“If we modularise the code well and apply encapsulation then in a year’s time we hope to be able to add or modify functionality as quickly/easily/reliably as we could when it was a greenfield project.”

Load balancing as a tactic for scaling

Load balancing as a tactic for scaling

Author
“If we design the app to run on a webfarm behind a load balancer, we can scale up to millions of users”
Author
Different views of the system give you assurance about different quality attributes

4+1, Updated

20 years on … “6 + 0 + 1”

Rozanski & Woods, Software Systems Architecture, 2nd ed

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?

Author
And finally …What is “The Architecture” of a system?And how do I design a good one?

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.”

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.”

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”

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

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

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

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

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.

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

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

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 …

0. The Context Diagram

ASR 1. Deployable to Mobile Platforms

Author
The bit that isn’t on mobile will probably have to communicate with all the mobiles, so will probably end up as a server of some kind

2. Usability – Very Very Simple

Author
iOS= 11% of mobiles but more than half of internet-browsing mobilesAndroid= 84% of mobilesWindows= 3%-ish
Author
OptionsChoose a high quality cross-platform mobile UI framework => Trial Xamarin & PhoneGap- Choose ‘best of breed’ for each phone platform (Which is what?)
Author
Domain Model will impact usability

3. Usability – Performance

Author
There are no magic tricks for making phones go faster, but may have to prefer native apps not html/javascript?Minimize what has to run on the phone?

4. Usability-Accuracy

5. Low Initial Cost/Time to Market

Author
What technology are we most familiar with? If Javascript, then use PhoneGap+Node ?If .Net, then use Xamarin+ asp.Net ?- Source geolocation & map libraries- Trial Google maps and/or bing maps

6. Key Functionality 1: Communication

Author
Must be something off-the-shelf that helps with this. We probably want bi-directional comms. WebSockets? Some kind of Message Queue?

7. Key Functionality 2: Find Nearby Users

Author
4+7 look like a domain model?

8. Scalability

Author
Load balance the server.We shouldn’t need to/can’t scale anything client side BUT we must ensure that comms does not grow exponentially with number of users!

9. Availability

Author
Yay, our step 8, already solved part of this

Et voila. We have most of an architecture ….

Software Architecture thank you and good-bye

http:www.cafe-encounter.net/about/

top related