Reflections on Software Architecture Linda Northrop SEI Fellow
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA 15213
© 2016 Carnegie Mellon University
Distribution Statement A: Approved for Public Release; Distribution is Unlimited Notices 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
Reflections on Software Architecture © 2016 Carnegie Mellon University 2 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Software Architecture
The quality and longevity of a software-reliant system is largely determined by its architecture.
Architecture is of enduring importance because it is the right abstraction for performing ongoing analyses throughout a system’s lifetime.
Reflections on Software Architecture © 2016 Carnegie Mellon University 3 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Software Architecture Thinking
. High-level system design providing system-level structural abstractions and quality attributes, which help in managing complexity . Makes engineering tradeoffs explicit
Reflections on Software Architecture © 2016 Carnegie Mellon University 4 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Quality Attributes
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.
Reflections on Software Architecture © 2016 Carnegie Mellon University 5 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Central Role of Architecture
IMPLEMENT AND EVOLVE
DESIGN IMPLEMENT
BUSINESS AND MISSION GOALS ARCHITECTURE SYSTEM
SATISFY CONFORM
SATISFY
Reflections on Software Architecture © 2016 Carnegie Mellon University 6 Distribution 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.
Reflections on Software Architecture © 2016 Carnegie Mellon University 7 Distribution Statement A: Approved for Public Release; Distribution is Unlimited ‘90’s: Early Foundations BOOKS PRINCIPLES
Perry and Wolf paper Gamma/Helm/ Shaw/Garlan Rechtin/Maier Witt/Baker/Merritt Johnson/Vlissides
SAAM 4+1 Views Acme, Darwin, Wright UML 1.1 EVALUATION REPRESENTATION
Kazman/Bass/Abowd/ Kruchten Garlan/Jackson/Shaw/ Webb Boehm
Reflections on Software Architecture © 2016 Carnegie Mellon University 8 Distribution 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.
Reflections on Software Architecture © 2016 Carnegie Mellon University 9 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Our View: Architecture-Centric Engineering
Reflections on Software Architecture © 2016 Carnegie Mellon University 10 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Advancements Over the Years
Architectural patterns and tactics Component-based approaches Company-specific product lines Model-based approaches Persisting Themes: Aspect-oriented approaches . Modularity . Commonality vs Frameworks and platforms Variability Standard interfaces Standards SOA
Reflections on Software Architecture © 2016 Carnegie Mellon University 11 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Community Gatherings
Research Practice . WICSA . Software Architect
. CompArch . ArchConf . SATURN . European . O’Reilly Software Conference on . SEI Software Architecture Architecture Software Educators’ Workshop Conference Architecture Series . QoSA
+ tracks in other research and practitioner events
Reflections on Software Architecture © 2016 Carnegie Mellon University 12 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Related Shifts
Incremental approaches Light-weight software development approaches Open source Distributed development environments
Reflections on Software Architecture © 2016 Carnegie Mellon University 13 Distribution Statement A: Approved for Public Release; Distribution is Unlimited What Changed?
Increased connectivity Scale and complexity . decentralization and distribution
https://www.flickr.com/photos/simononly/ . “big data” . increased operational tempo . inter-reliant ecosystems . autonomy . vulnerability . collective action Disruptive and emerging https://www.flickr.com/photos/cogdog/ technologies
Reflections on Software Architecture © 2016 Carnegie Mellon University 14 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Technology Trends
Reflections on Software Architecture © 2016 Carnegie Mellon University 15 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Software Development Trends
Application frameworks Distributed development environments Cloud strategies NoSQL NewSQL Machine Learning Static analysis tools Dashboards DevOps Containers Microservices
Reflections on Software Architecture © 2016 Carnegie Mellon University 16 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Technical Challenges
Reflections on Software Architecture © 2016 Carnegie Mellon University 17 Distribution Statement A: Approved for Public Release; Distribution is Unlimited The Intersection and Architecture
At the intersections there are difficult tradeoffs to be made in structure, process, time, and cost.
Architecture is the enabler for tradeoff analyses.
Reflections on Software Architecture © 2016 Carnegie Mellon University 18 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture and Accelerated Capability
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.
Reflections on Software Architecture © 2016 Carnegie Mellon University 19 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Technical Debt* 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.
• 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/ Reflections on Software Architecture © 2016 Carnegie Mellon University 20 Distribution Statement A: Approved for Public Release; Distribution is Unlimited In Research and Practice
Dagstuhl Workshop on “Two developers ask forgiveness of Technical Debt technical debt at the beginning of the sprint” April 2016 Jean-Francois Millet 1857-1859: Classic Programmer Paintings
Reflections on Software Architecture © 2016 Carnegie Mellon University 21 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Timeline for Managing Technical Debt
Incurred Symptom Rework Payoff
1 2 3 4
tj ti
What is the debt? Intentional and strategic Technical debt issue description 5
How does debt accumulate? Static and architecture analysis
When to pay back debt? Architecture-focused release planning
Reflections on Software Architecture © 2016 Carnegie Mellon University 22 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture and Technical Debt 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. A Field Study of Technical Debt https://insights.sei.cmu.edu/sei_blog/2015/07/a-field-study-of-technical-debt.html
Reflections on Software Architecture © 2016 Carnegie Mellon University 23 Distribution Statement A: Approved for Public Release; Distribution is Unlimited What color is your backlog?
Visible Invisible
New features Architectural, Positive and added structural Value functionality features
Negative Value Technical Defects Debt
Philippe Kruchten, Robert L. Nord, Ipek Ozkaya: Technical Debt: From Metaphor to Theory and Practice. IEEE Software 29(6): 18-21 (2012)
Reflections on Software Architecture © 2016 Carnegie Mellon University 24 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Continuous Deployment
The DevOps movement continues what Agile started.
Reflections on Software Architecture © 2016 Carnegie Mellon University 25 Distribution Statement A: Approved for Public Release; Distribution is Unlimited DevOps in Practice
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
Reflections on Software Architecture © 2016 Carnegie Mellon University 26 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture and DevOps
Design decisions that involve deployment- related limitations can blindside teams.
Architectural choices need to facilitate continuous delivery.
Reflections on Software Architecture © 2016 Carnegie Mellon University 27 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Microservices
“Army of contractors migrating to Microservices” Canaletto, 1733 or 1734 : Classic Programmer Paintings
Reflections on Software Architecture © 2016 Carnegie Mellon University 28 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture Evolution for Business Applications
Progress in . decomposition management Persisting Themes: . supporting change . Modularity . . automation Commonality vs Variability
SaaS UX Srv
UX Srv APIs UX PaaS BL BL BL UX BL IaaS Data Data Data Data
Monoliths 2-Tier 3-Tier SOA Cloud Microservices
Reflections on Software Architecture © 2016 Carnegie Mellon University 29 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture and Scale
Cloud strategies Cloud strategies for mobility Big data
“Scale Changes Everything”
Reflections on Software Architecture © 2016 Carnegie Mellon University 30 Distribution 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
Reflections on Software Architecture © 2016 Carnegie Mellon University 31 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Mobile Device Trends
Reflections on Software Architecture © 2016 Carnegie Mellon University 32 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture Trends: Cyber-Foraging
Edge Computing Using external resource-rich surrogates to augment the capabilities of resource-limited devices . code/computation offload . data staging Nokia Siemens Networks Liquid Applications
Cisco Systems Fog Computing
Reflections on Software Architecture © 2016 Carnegie Mellon University 33 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Big Data Systems
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
Reflections on Software Architecture © 2016 Carnegie Mellon University 34 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Architecture and Big Data
System costs must grow more slowly than system capacity. Approaches . scalable software architectures . scalable software technologies . scalable execution platforms Scalability reduces as implementation complexity grows. NoSQL/NewSQL models are not created equal. You can’t manage what you don’t monitor.
Reflections on Software Architecture © 2016 Carnegie Mellon University 35 Distribution 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. Reflections on Software Architecture © 2016 Carnegie Mellon University 36 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Assurance is Imperative
Reflections on Software Architecture © 2016 Carnegie Mellon University 37 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Analysis and Architectural Models
. 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.
Reflections on Software Architecture © 2016 Carnegie Mellon University 38 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Software Development: Making Decisions
There is tension and a need for educated decisions. Architecture is the enabler for tradeoff analyses.
Reflections on Software Architecture © 2016 Carnegie Mellon University 39 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Conclusion
. 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.
Persisting Themes: . Modularity . Commonality vs Variability
Reflections on Software Architecture © 2016 Carnegie Mellon University 40 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Reflections on Software Architecture © 2016 Carnegie Mellon University 41 Distribution Statement A: Approved for Public Release; Distribution is Unlimited This Is the Work of Many
At the SEI and CMU (past and present) Len Bass Philippe Kruchten Joe Batman Grace Lewis Felix Bachmann Ipek Ozkaya Mario Barbacci Rod Nord Stephany Bellomo Mary Shaw Paul Clements and many more… Peter Feiler And so many others David Garlan in the professional James Ivers community.. Rick Kazman John Klein Mark Klein
Reflections on Software Architecture © 2016 Carnegie Mellon University 42 Distribution Statement A: Approved for Public Release; Distribution is Unlimited Contact Information
Linda Northrop SEI Fellow Telephone: 1+ 412-268-7638 Email: [email protected] @LindaNorthrop
Website: http://www.sei.cmu.edu/architecture
U.S. Mail: Software Engineering Institute Carnegie Mellon University Pittsburgh, PA 15213-3890
Reflections on Software Architecture © 2016 Carnegie Mellon University 43 Distribution Statement A: Approved for Public Release; Distribution is Unlimited