+ All Categories
Home > Documents > Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie...

Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie...

Date post: 20-May-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
43
© 2016 Carnegie Mellon University Software Engineering Institute Carnegie Mellon University Pittsburgh, PA 15213 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Reflections on Software Architecture Linda Northrop SEI Fellow
Transcript
Page 1: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

© 2016 Carnegie Mellon University

Software Engineering InstituteCarnegie Mellon UniversityPittsburgh, PA 15213

Distribution Statement A: Approved for Public Release; Distribution is Unlimited

Reflections on Software ArchitectureLinda NorthropSEI Fellow

Page 2: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

2Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Copyright 2016 Carnegie Mellon University

This material is based upon work funded and supported by the Department of Defense under Contract No. FA8721-05-C-0003 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center.

Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the United States Department of Defense.

NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN “AS-IS” BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.

[Distribution Statement A] This material has been approved for public release and unlimited distribution. Please see Copyright notice for non-US Government use and distribution.

This material may be reproduced in its entirety, without modification, and freely distributed in written or electronic form without requesting formal permission. Permission is required for any other use. Requests for permission should be directed to the Software Engineering Institute at [email protected].

Carnegie Mellon® and CERT® are registered marks of Carnegie Mellon University.DM-0003595

Notices

Page 3: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

3Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

The quality and longevity of a software-reliant system is largely determined by its architecture.

Software Architecture

Architecture is of enduring importance because it is the right abstraction for performing ongoing analyses throughout a system’s lifetime.

Page 4: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

4Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

High-level system design providing system-level structural abstractions and quality attributes, which help in managing complexity

Makes engineering tradeoffs explicit

Software Architecture Thinking

Page 5: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

5Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Quality attributes properties of work products or goods by which stakeholders

judge their quality stem from business and mission goals. need to be characterized in a system-specific way

Quality attributes include Performance Availability Interoperability Modifiability Usability Security Etc.

Quality Attributes

Page 6: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

6Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

IMPLEMENT AND EVOLVE

SATISFY

Central Role of Architecture

DESIGN IMPLEMENT

SATISFY CONFORM

ARCHITECTURE SYSTEMBUSINESS ANDMISSION GOALS

Page 7: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

7Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

‘90’s – “The Golden Age of Software Architecture” Clements and Shaw: IEEE Software. March/April 2006.

Page 8: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

8Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

PRIN

CIP

LES

EVA

LUAT

ION

REP

RES

ENTA

TIO

NB

OO

KS

‘90’s: Early Foundations

Perry and Wolf paper Shaw/Garlan Rechtin/Maier

4+1 Views Acme, Darwin, Wright UML 1.1

Witt/Baker/MerrittGamma/Helm/Johnson/Vlissides

Garlan/Jackson/Shaw/Boehm

Kazman/Bass/Abowd/Webb

Kruchten

SAAM

Page 9: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

9Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

SEI’s Role

The SEI developed principles, methods, foundations, techniques, tools, and materials in support of creating, fostering, and stimulating widespread transition of architecture-centric engineering.

Page 10: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

10Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Our View: Architecture-Centric Engineering

Page 11: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

11Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Architectural patterns and tactics

Component-based approaches

Company-specific product lines

Model-based approaches

Aspect-oriented approaches

Frameworks and platforms

Standard interfaces

Standards

SOA

Advancements Over the Years

Persisting Themes:

Modularity

Commonality vs Variability

Page 12: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

12Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Community Gatherings

Research WICSA

CompArch

European Conference on Software Architecture

QoSA

+ tracks in other research and practitioner events

Practice Software Architect

ArchConf

O’Reilly Software Architecture Conference

SATURN SEI Software

Architecture Educators’ Workshop Series

Page 13: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

13Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Incremental approachesLight-weight software development approachesOpen sourceDistributed development environments

Related Shifts

Page 14: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

14Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Increased connectivityScale and complexity decentralization and distribution “big data” increased operational tempo inter-reliant ecosystems autonomy vulnerability collective actionDisruptive and emerging technologies

What Changed?

https://www.flickr.com/photos/simononly/

https://www.flickr.com/photos/cogdog/

Page 15: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

15Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Technology Trends

Page 16: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

16Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Application frameworksDistributed development environmentsCloud strategiesNoSQLNewSQLMachine LearningStatic analysis toolsDashboardsDevOpsContainersMicroservices

Software Development Trends

Page 17: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

17Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Technical Challenges

Page 18: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

18Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

At the intersections there are difficult tradeoffs to be made in structure, process, time, and cost.

Architecture is the enabler for tradeoff analyses.

The Intersection and Architecture

Page 19: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

19Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

How much architecture design is enough?

Can architecture design be done incrementally?

There is a difference between being agile and doing agile.

Agility is enabled by architecture –not stifled by it.

Managing technical debt is key.

Architecture and Accelerated Capability

Page 20: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

20Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

A design or construction approach that's expedient in the short term but that creates a technical context that increases complexity and cost in the long term.

Technical Debt*

• Term first used by Cunningham, W. 1992. The WyCash Portfolio Management System. OOPSLA '92 Experience Report. http://c2.com/doc/oopsla92.html.

Graph: Jim Highsmith, Oct 19 2010 http://jimhighsmith.com/the-financial-implications-of-technical-debt/

Page 21: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

21Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

In Research and Practice

“Two developers ask forgiveness of technical debt at the beginning of the sprint” Jean-Francois Millet 1857-1859: Classic Programmer Paintings

Dagstuhl Workshop on Technical Debt

April 2016

Page 22: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

22Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

321

titj

Incurred Symptom

Intentional and strategic

PayoffRework

4

5

What is the debt?Technical debt issue description

How does debt accumulate?Static and architecture analysis

When to pay back debt?Architecture-focused release planning

Timeline for Managing Technical Debt

Page 23: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

23Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Bad architectural choices rated as the top contributor to technical debt, followed by overly complex code and inadequate testing among over 1800 developers we surveyed. 56% of the respondents ranked architecture among their top three pain points.

Architecture and Technical Debt

A Field Study of Technical Debt

https://insights.sei.cmu.edu/sei_blog/2015/07/a-field-study-of-technical-debt.html

Page 24: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

24Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

What color is your backlog?

New features and added

functionality

Architectural, structural features

Defects Technical Debt

Visible Invisible

PositiveValue

NegativeValue

Philippe Kruchten, Robert L. Nord, Ipek Ozkaya: Technical Debt: From Metaphor to Theory and Practice. IEEE Software 29(6): 18-21 (2012)

Page 25: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

25Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

The DevOps movement continues what Agile started.

Continuous Deployment

Page 26: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

26Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Focus is on culture and teaming process and practices

− value stream mapping− continuous delivery practices− Lean thinking

tooling, automation, and measurement− tooling to automate manual, repetitive tasks− static analysis − automation for monitoring architectural health− performance dashboards− containers

DevOps in Practice

Page 27: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

27Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Design decisions that involve deployment-related limitations can blindside teams.

Architectural choices need to facilitate continuous delivery.

Architecture and DevOps

Page 28: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

28Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Microservices

“Army of contractors migrating to Microservices”Canaletto, 1733 or 1734 : Classic Programmer Paintings

Page 29: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

29Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Monoliths

Progress in decomposition management supporting change automation

Architecture Evolution for Business Applications

UXBL

Data

2-Tier

UXBL

Data

3-Tier

UX

Data

BL

SOA

UX

Data

BL

Srv APIs

Cloud

IaaS

PaaS

SaaS

Microservices

Srv

Persisting Themes: Modularity Commonality vs Variability

Page 30: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

30Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Cloud strategiesCloud strategies for mobilityBig data

Architecture and Scale

“Scale Changes Everything”

Page 31: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

31Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Two Perspectives of Software Architecture in Cloud Computing

=

Two potentially different sets of business goals and quality attributes

Page 32: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

32Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Mobile Device Trends

Page 33: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

33Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Edge ComputingUsing external resource-rich surrogates to augment the capabilities of resource-limited devices code/computation offload data staging

Architecture Trends: Cyber-Foraging

Nokia Siemens NetworksLiquid Applications

Cisco SystemsFog Computing

Page 34: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

34Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Two very distinct but related technological thrusts Data analytics

Infrastructure

Analytics is typically a massive data reduction exercise – “data to decisions.”Computation infrastructure necessary to ensure the analytics are fast

scalable

secure

easy to use

Big Data Systems

Page 35: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

35Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

System costs must grow more slowly than system capacity.Approaches scalable software architectures scalable software technologies scalable execution platformsScalability reduces as implementation complexity grows.NoSQL/NewSQL models are not created equal.You can’t manage what you don’t monitor.

Architecture and Big Data

Page 36: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

36Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Architecture and Assurance It’s not just about security, but functioning as intended and only as intended.

Supply chains, open source, frameworks, outsourcing introduce unknowns.

Tool chains that generate code, configuration files, etc. introduce unknowns.

Consequences include operational failures, security and privacy compromises, reputational impact, etc.

Page 37: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

37Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Assurance is Imperative

Page 38: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

38Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

evaluation is not a phase – ongoing analysis is required capture architecture in a form amenable to ongoing

analysis• range from informal (e.g., visio diagrams) to formal (e.g.,

with precisely defined execution semantics)• In safety critical systems formality is warranted.

• Example: SAE Architecture Analysis & Design Language (AADL) Standard Suite (AS-5506 Series) - single annotated architecture model permits formal analysis across multiple quality attributes

More tooling and automation is needed to satisfy assurance needs.

Analysis and Architectural Models

Page 39: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

39Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

There is tension and a need for educated decisions.

Architecture is the enabler for tradeoff analyses.

Software Development: Making Decisions

Page 40: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

40Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Software architecture has strong foundations. Much progress has been made. Changes stemming from connectivity have precipitated a

new world – new technologies, approaches, and challenges.

Software architecture principles and their importance persist.

But…much remains to be done. The future is in your hands.. be mindful.

Conclusion

Persisting Themes:

Modularity

Commonality vs Variability

Page 41: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

41Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Page 42: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

42Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

At the SEI and CMU (past and present)Len Bass Philippe KruchtenJoe Batman Grace LewisFelix Bachmann Ipek OzkayaMario Barbacci Rod NordStephany Bellomo Mary ShawPaul Clements and many more…

Peter Feiler And so many othersDavid Garlan in the professional James Ivers community..Rick KazmanJohn KleinMark Klein

This Is the Work of Many

Page 43: Reflections on Software Architecture · 3 Reflections on Software Architecture © 2016 Carnegie Mellon University Distribution Statement A: Approved for Public Release; Distribution

43Reflections on Software Architecture© 2016 Carnegie Mellon UniversityDistribution Statement A: Approved for Public Release; Distribution is Unlimited

Linda NorthropSEI FellowTelephone: 1+ 412-268-7638Email: [email protected]@LindaNorthrop

Website: http://www.sei.cmu.edu/architecture

U.S. Mail:Software Engineering InstituteCarnegie Mellon UniversityPittsburgh, PA 15213-3890

Contact Information


Recommended