Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
1
Software Architecture:Perspectives on a maturing discipline
Philippe Kruchten
1Copyright © 2020 by P.KruchtenJun. 2, 2020
1
Perspectives on an emerging discipline
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 2
Mary ShawDavid Garlan
1996
2
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
2
Early history of software architecture
• NATO conference (1969)• Box & arrows (1960s-1980s)• Views & viewpoints (1990s-2000)• ADLs (1980s-2000s)• Architectural design methods (1990s-2000s)• Standards, reference architectures (1995-…)• Architectural design decisions (2004-…)
3Copyright © KESL 2011Kruchten Obbink Stafford 2006
3
My own trajectory
• 1984: I became “System Architect” at Alcatel– Butler Lampson (1983) Hints for computer system design– John Mills (1985) Pragmatic view of the system architect
• 1987: Technical consultant at Rational Software– Exposed to a wide range of large systems, all over the world– Internal community of practice– External software architecture community
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 4
4
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
3
Software Architecture Tutorial ca. 1998
Outline1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ? (any tool support?)
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 5
5
Today’s 5 viewpoints
1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ? (any tool support?).
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 6
6
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
4
From 1998 to 2020
1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ?
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 7
7
1. Semantics
• Hard to converge on a simple definition in the 1990s• Paul Clements’ collection of definitions
– Structure, Component, Connectors
• Standard IEEE 1471:2000 on represetnation– “Software architecture refers to the fundamental structures of a
software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.”
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 8
8
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
5
• Software architecture encompasses the set of significant decisions about the organization of a software system …
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 9
1995, with Booch, Reitman and Bittnerderived from Shaw and Garlan’s definition
9
From the RUP (1998)
Software architecture encompasses the set of significant design decisions that shapes a software system, including the selection of the structural elements and their interfaces by which the system is composed; behavior as specified in collaboration among those elements; composition of these structural and behavioral elements into larger subsystems; and an architectural style that guides this organization. Software architecture also involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns.
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 10
TL; DR
10
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
6
• The architecture is the set of significant design decisions that shape a software system, where significant is measured by cost of change.
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 11
Rhymes with Ralph Johnson’s, and Martin Fowler’s views
Booch 2006
11
Software architecture today
• Architecture as a common understanding of trajectory and boundaries.– Where is the project going– Shared mental model of “the design”– Conceptual integrity (handrails)
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 12
12
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
7
From 1998 to 2020
1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ?
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 13
13
5. Process – the recipe
• “Mommy, where do software architecture come from?”– ICSE 1995 workshop on architecture of software system
• Theft, method, intuition
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 14
14
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
8
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 15
ICSE 1995
15
Architectural Design Method
Architecture
ArchitecturalEvaluation
ArchitecturalSynthesis
Context, Constraints
Evaluation resultsArchitecturally
Requirements
Architecture
Backlog
ArchitecturalEvaluation
ArchitecturalSynthesis
ArchitecturalAnalysis
Significant
Source: Hofmeister, Kruchten, et al., 2005, 2007 16Copyright © KESL 2011
16
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
9
Architectural Design
Ideas
Architecture
ArchitecturalEvaluation
ArchitecturalSynthesis
Ideas
Context, Constraints
Evaluation results
ArchitecturalAssets
Architecturally
Requirements
Architecture
Backlog
ArchitecturalEvaluation
ArchitecturalSynthesis
ArchitecturalAnalysis
Significant
Source: Hofmeister, Kruchten, et al., 2005, 2007 17Copyright © KESL 2011
17
Useful input: elements of design
• Catalogue of Styles (Shaw and Garlan)• Architectural Patterns (Stal, Buschmann & co)• Architectural mechanisms (in RUP), also called Architectural
Tactics at the SEI (Bass, Kazman, Clements & co)
• ….
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 18
18
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
10
Today’s situation
• Many accessible sets of architectural solutions• Covering a wide range of problems or domains• Documented• Tested• Many are open-source• Some are developed or used by large companies• Large active communities• Reduced risks
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 19
19
Architectural nugget
• Concrete implementation of one or a small set of architectural patterns
• Around a programming language
• Stacks, ecosystems, solution framework, …
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 20
20
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
11
• LAMP stack
• MEAN stack– MongoDB, Express, AngularJS, NodeJS
• Ruby on Rails ecosystem
• REACT Native
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 21
Examples
And dozens more
21
Today’s landscape
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 22
22
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
12
Pick one
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 23
?
23
Less suitable choices
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 24
?
24
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
13
Our architectural nuggets…
• Implicitly impose an architectural style• Coherence, consistency• Interfaces, API
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 25
25
Impedance mismatch
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 26
26
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
14
Maybe no good choices
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 27
?
27
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 28
28
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
15
Landscape has changed a lot
• Pick a general trajectory – Comes with a set of ready-made decisions– Experiment– Adapt
• Most of the remaining architectural work is about resolving impedance mismatch
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 29
29
Architecting today
• New issue or concern X => architectural backlog• How are the others doing in our ecosystem?
– Let us do the same they did for X
• We need something new or different?– How do we make to work? (impedance mismatch)– Risk? Let us experiment now
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 30
30
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
16
Architecting today
• Mostly theft (= select, copy, adapt)• Very little intuition (= invention)
• Not much need for rigorous step by step method
• On the down side:– Trapped in a solution path– Architectural debt
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 31
In general
31
From 1998 to 2020
1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ?
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 32
32
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
17
4. Who - the software architects
• Software architect– Job title, function, hierarchy, – badge of honour for services rendered, ivory tower
• Educating architects• Certification
• A few large places have succeeded doing so (e.g., Siemens)
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 33
33
4. Who - the software architects
• Issue with the title?• Architecture is design• Experience is key
– Little material available in the 1980s – 90s– Lots of visible architecture today
• Open source• Major players (Google, Amazon, Netflix, Spotify, …)• ecosystems
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 34
34
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
18
Experience
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 35
35
Breadth of Experience
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 36
36
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
19
Breadth of Experience
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 37
37
Depth of Expertise
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 38
38
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
20
• Martin Fowler, Who needs an architect (2003):– Architectus reloadus => more breadth)– Architectus aryzus => more depth
• Architecture Owner
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 39
39
• How do you becomes an architect?– Course, books? Meh…– Practice, exposure to a wide array of cases
But not to forget:• Decision making• Cognitive biases
• Leadership• Communication
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 40
40
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
21
From 1998 to 2020
1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ?
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 41
41
2. Representation
• 1990’s– Boxes and arrows– Icons– Colors– PowerPoint
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 42
42
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
22
Copyright © 2013 by Philippe Kruchten
43
Views (ca. 1990)
• An idea that was ripe– Philips BAPO/CAFR– Siemens S4V– Rational’s 4+1 views
• Took root for a while: – Eoin Woods & Nick Rozanski book– IEEE 1471:2000, ISO 42010:2007
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 44
44
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
23
The 4+1 view model of architecture
Logical View ImplementationView
ProcessView
DeploymentView
Use CaseView
ProgrammersSoftware management
PerformanceScalability Throughput
System Integrators
End-user, designers Functionality
System topology Delivery, installation
Communication
System Engineering
Users/Analysts/TestersBehavior
Kruchten 1995 45Copyright © KESL 2011
45
Views in 2020
• Still a useful concept in 2020 (?)• Not much evidence of actual application
– Simon Brown’s C4Model …?
• Visualization is still important– Ruth Malan & Dana B.
• Tool: back to PowerPoint
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 46
46
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
24
Small detour: ADL
• Architecture Description Languages
• Many created (> 100)• A handful more noticeable• Almost no traction in industry
• UML 2.0 as an ADL? (2005)
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 47
47
Actor A
Use Case 1
Use Case 2
Actor B
user : Clerk
mainWnd : MainWnd
fileMgr : FileMgr
repository : Repositorydocument : Document
gFile : GrpFile
9: sortByName ( )
L1: Doc view request ( )
2: fetchDoc( )
5: readDoc ( )
7: readFile ( )
3: create ( )
6: fillDocument ( )
4: create ( )
8: fillFile ( )
Window95
¹®¼°ü® Ŭ¶óÀ̾ðÆ®.EXE
WindowsNT
¹®¼°ü® ¿£Áø.EXE
WindowsNT
Windows95
Solaris
ÀÀ¿ë¼¹ö.EXEAlphaUNIX
IBM Mainframe
µ¥ÀÌź£À̽º¼¹ö
Windows95
¹®¼°ü® ¾ÖÇôDocument
FileManager
GraphicFileFile
Repository DocumentList
FileList
usermainWnd fileMgr :
FileMgrrepositorydocument :
DocumentgFile
1: Doc view request ( )
2: fetchDoc( )
3: create ( )
4: create ( )
5: readDoc ( )
6: fillDocument ( )
7: readFile ( )
8: fillFile ( )
9: sortByName ( )
ÆÁ¤¹®¼¿¡ ëÇÑ º ±â¦ »ç¿ëÀÚ°¡ ¿äûÇÑÙ.
ÈÀÏ°ü®ÀÚ Àоî¿Â ¹®¼ÀÇ Á¤º ¦ ÇØç ¹®¼°Ã¼¿¡ ¼³Á¤À» ¿äûÇÑÙ.
Èé °Ã¼Â ÀоîµéÀÎ °Ã¼µé¿¡ ëÇØ ÀÌ §º°·Î Á¤·ÄÀ» ½ÃÄÑ Èé¿¡ º ¿©ÁØÙ.
Openning
Writing
Reading Closing
add file [ numberOffile==MAX ] / flag OFF
add file
close file
close fileUse Case 3
Use-CaseDiagram Class Diagram
Collaboration Diagram
Sequence Diagram
Component Diagram
StatechartDiagram
GrpFile
read( )open( )create( )fillFile( )
rep
Repository
name : char * = 0
readDoc( )readFile( )
(from Persistence)
FileMgr
fetchDoc( )sortByName( )
DocumentList
add( )delete( )
Document
name : intdocid : intnumField : int
get( )open( )close( )read( )sortFileList( )create( )fillDocument( )
fList
1
FileList
add( )delete( )
1
File
read( )
read() fill the code..
Deployment Diagram
Many kinds of diagrams, but not always very adapted to
architecture 48Copyright © KESL 2011
48
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
25
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 49
49
Representation today
• Minimal documentation attached to pieces of an architectural nugget. No UML. No views.
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 50
50
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
26
From 1998 to 2020
1. Semantics – definition: what is it?2. Representation – how does it look like?3. When – in the lifecycle is it done?4. Who – who’s doing it?5. Process – what is the process / method to
design a software architecture ? (any tool support?).
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 51
51
3. When does it happens
• 1990: waterfall lifecycle still prevalent
• 200: Start of the never ending debate Big Up-front Design versus Gradual emergence
• “Big design up front is dumb. Doing no design up front is even dumber.”
Dave Thomas, via Simon Brown
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 52
52
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
27
Agile Manifesto - principle #11 (2000)
“The best architectures, requirements, and designs emerge from self-organizing teams.”
Really?
Refactoring
You need an “Architecture owner” to drive the emergence
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 53
53
Zipper model: Weaving functional and architectural bits
54Copyright © KESL 2011
54
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
28
Actually, today….
• Once you’ve picked an architectural nugget, emergence is pretty fast:– There are ready-made, validated solutions to most issues or
architectural concerns– Narrow range of alternatives: stick with the family
• Architecture is slowly incorporated in more mature agile approaches:– SAFE, or LESS, for example
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 55
55
Recap: Software Architecture in 2020
1. Semantics – roughly understood2. Representation – Text and code, boxes and arrows, some
views and UML in rare cases3. When – Iteratively, early in the life-cycle; occasional
refactoring when no way forward4. Who – a software designer with expertise and/or authority5. Process – Steal, adapt, experiment, steal some more, adapt.
Manage impedance mismatches.
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 56
56
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
29
A Mature Discipline?
1. Basic research2. Concept formulation3. Development and extension4. Internal enhancements and exploration5. External enhancements and exploration6. Popularization
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 57
Redwine Riddle 1985Shaw 2001Shaw Clements 2006Clements Shaw 2009
57
Mature Discipline?
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 58
1990 2000 2010 2020
Basic research
Concept formulation
Development & Extensions
Internal enhancements
External enhancements & exploration
Popularization
58
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
30
A mature discipline?
In 2020:• Body of knowledge (books, etc)• The landscape has changed• Less general conferences, more specialized ones
– Saturn, O’Reilly, CompArch + WICSA– Architecture and XYZ
• where XYZ = DevOps, MicroServices, BlockChain, Tech Debt, HealthCare, Security, IoT, Social aspect, Industry 4.0, …
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 59
59
Mind the gap ?
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 60
1990 2000 2010 2020
Basic research
Concept formulation
Development & Extensions
Internal enhancements
External enhancements & exploration
Popularization
60
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
31
A mature discipline?
External enhancements and exploration• Driven by
– Open source– New technologies– Speed
• Left behind much of the earlier progress• Discontinuity, Gap
– Left behind: definitions, standards, methods, representation
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 61
61
A mature discipline?Popularization• We have not done such a great job at popularization (hence the gap)• How to guides at O’Reilly
– The first book ever on software architecture was just published in 2020 (no kidding).• Diversity of approaches (which is good)
– More than one definition– More than one representation– More than one method
• Some standards
“Everything has been said before, but since nobody listens, everything must be said again.” André Gide 1891
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 62
62
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
32
Where do we go from here?• External enhancement and exploration• Popularization
• On Software architecture:– Few key individuals– Develop their own ideas– Become star speakers at conferences– Write blogs and books
• On architectural nuggets:– Few key companies or groups of individuals– Develop their architectural solution– Create a community or ecosystem around it– Speak at more specialized conferences– And How-to books are published at O’Reilly
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 63
63
Where do we go from here?
• Internal enhancements and exploration
• Research on software architecture– Validate or invalidate some of the new ideas– Software Architecture & something
• Technology, domain, concern
– “Under the lamppost”– Constrained by the publishing game and the size
of PhD chunkJun. 2, 2020 Copyright © 2020 by P.Kruchten 64
64
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
33
Topics needing more research
• Economic aspects– Value & cost– Technical debt (as an angle on this) hint, hint … =>
• Social aspects– Role, leadership, communication– Open-source development dynamics
• Decision making process, and cognitive biases• Representation & Tool support• Tactics
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 65
65
“Mommy, where do the architectural nuggets come from?”
• Who, How, Why,….
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 66
66
Software Architecture, SEI AwardPh. Kruchten
June 2, 2020
34
Thank you….
… Linda, James, the SEI, and all of our colleagues around the world
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 67
67
People to thank
M. Shaw, D. Garlan, D. Perry, A. Wolf, G. Booch, M. Fowler, I. Gorton, R. Malan & D. Bredemeyer, E. Rechtin & M. Maier,
R. Kazman, P. Clements, L. Bass, C. Hofmeister, H. Obbink, H. van Vliet, P. Lago, J. Bosch, F. Buschmann, M. Stal, C. Larman, A. Tang,
E. Woods, E. Poort, G. Hohpe, R. Hilliard, U. Olson, M. Klein, J. Klein, L. Northrop, R. Martin, M. Feathers, J. Coplien, C. Szyperski,
R. Nord, I. Ozkaya, The Siemens & Philips & ABB folks, W. Kozaczynski, R. Wirfs-Brock, D. Sotirovski, D. de Koning,
B. Hamilton, J. Barnes, N. Kruchten, and many more
Jun. 2, 2020 Copyright © 2020 by P.Kruchten 68
68