Documenting & Communicating Software Architectures Arie van - - PowerPoint PPT Presentation

documenting communicating software architectures
SMART_READER_LITE
LIVE PREVIEW

Documenting & Communicating Software Architectures Arie van - - PowerPoint PPT Presentation

Documenting & Communicating Software Architectures Arie van Deursen 2 AOSA Example: Git 1. Git in a Nutshell Susan Potter 2. Gits Origin 3. Version Control System Design 4. The Toolkit 5. The Repository 6. The Object


slide-1
SLIDE 1

Documenting & Communicating Software Architectures

Arie van Deursen

slide-2
SLIDE 2

2

slide-3
SLIDE 3

AOSA Example: Git

1. Git in a Nutshell 2. Git’s Origin 3. Version Control System Design 4. The Toolkit 5. The Repository 6. The Object Database 7. Storage 8. Merge Histories 9. What’s Next?

  • 10. Lessons learned

3

Susan Potter

slide-4
SLIDE 4

Kruchten’s “4+1 Views”

4

IEEE So'ware, November 1995

slide-5
SLIDE 5

Architectural Views: Bones, Muscles, Nerves

5

slide-6
SLIDE 6

Viewpoints

  • A collec'on of pa,erns, templates, and conven'ons for construc'ng
  • ne type of view.
  • Defines the
  • stakeholders whose concerns are reflected in the viewpoint
  • and the guidelines, principles, and template models for construc'ng its views.

6 Ch.3

slide-7
SLIDE 7

A Viewpoint Taxonomy

7

slide-8
SLIDE 8

Context View

Describes the relationships, dependencies, and interactions between the system and its environment Environment: the people, systems, and external entities with which it interacts

8 Ch.16

slide-9
SLIDE 9
slide-10
SLIDE 10
slide-11
SLIDE 11

11

slide-12
SLIDE 12

Development View

Describes the architecture that supports the so/ware development process. Communicates the aspects of the architecture of interest to stakeholders involved in building, tes<ng, maintaining, and enhancing the system.

12 Ch.20

slide-13
SLIDE 13
slide-14
SLIDE 14
slide-15
SLIDE 15
slide-16
SLIDE 16

Alternative Catalogs

“View types”:

  • Module
  • Component & Connector
  • Alloca:on

Component & connectors:

  • Pipe and filter, shared data,

publish subscribe, client-server, p2p, …

16

slide-17
SLIDE 17

Example: Pipes & Filter

17

slide-18
SLIDE 18

ISO So&ware Quality Characteris5cs

18

slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21

Realizing Quality Attributes

  • An architecture must realize the required quality attributes
  • Models required that permit reasoning over quality attributes
  • Architectural decisions may have to make tradeoff between

conflicting quality attributes

21

slide-22
SLIDE 22

Architectural Perspectives

An architectural perspective is a collection of architectural activities, tactics, and guidelines that are used to ensure that a system exhibits a particular set of related quality properties that require consideration across a number of the system’s architectural views.

2 2 Ch.4

slide-23
SLIDE 23

23 Ch.4

slide-24
SLIDE 24

The arc42.org Template for Architecture Communication and Documentation

  • 1. Introduc+on and Goals
  • 2. Constraints
  • 3. Context and Scope
slide-25
SLIDE 25

The arc42.org Template for Architecture Communication and Documentation

  • 4. Solution strategy
  • 5. Building block view
  • 6. Run time view
  • 7. Deployment view
  • 8. Crosscutting concepts
  • 9. Architectural decisions
slide-26
SLIDE 26

The arc42.org Template for Architecture Communication and Documentation

  • 10. Quality Requirements
  • 11. Risks and Technical Debt
slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 29
slide-30
SLIDE 30
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33

What Is Technical Debt?

  • Ward Cunningham:
  • “I coined the debt metaphor to explain

the refactoring that we were doing.”

  • Michael Feathers:
  • “The refactoring effort needed to add a

feature non invasively”

33 https://www.youtube.com/watch?v=7hL6g1aTGvo hKp://c2.com/cgi/wiki?WardExplainsDebtMetaphor

slide-34
SLIDE 34
slide-35
SLIDE 35

Kruchten, 2013: The (missing) value of software architecture

slide-36
SLIDE 36
slide-37
SLIDE 37

Learning how to do it

I am in favor of writing code to reflect your current understanding of a problem even if that understanding is partial

37

http://c2.com/cgi/wiki?WardExplainsDebtMetaphor

slide-38
SLIDE 38

Assessing Technical Debt?

  • https://www.sonarqube.org/
  • https://www.jarchitect.com/Metrics
  • https://github.com/tsantalis/JDeodorant
slide-39
SLIDE 39

Beware: Debt is Relative

  • The refactoring effort needed to add a feature (resolve an issue)

non invasively

  • Debt depends on features and issues to solve
  • Systems are used and society progresses
  • New libraries and versions come available
  • Actual usage affects our understanding of what matters
  • Debt quantifications / visualizations are only useful when they

lead to action. Avoid ranting; propose rational action instead.

39

slide-40
SLIDE 40

Microservices

  • Small, autonomous services

that work together

  • Single Responsibility Principle:
  • Gather together those things that

change for the same reason

  • Strong cohesion within the service
  • Loose coupling among services

40

slide-41
SLIDE 41

41

slide-42
SLIDE 42
slide-43
SLIDE 43
slide-44
SLIDE 44

The Role of the Architect

The architect is responsible for designing, documenting, and leading the construction of a system that meets the needs of all its stakeholders.

44

slide-45
SLIDE 45

Fred Brooks: Conceptual Integrity

The quality of a system where all the concepts and their relationships with each other are applied in a consistent way throughout the system. Conceptual Integrity is the most important consideration in system design. It is better to have […] one set of design ideas, than [...] many good but independent and uncoordinated ideas.

45

slide-46
SLIDE 46

How many Architects?

Conceptual integrity in turn dictates that the design must proceed from one mind, or from a very small number

  • f agreeing resonant minds

46

slide-47
SLIDE 47

The Evolutionary Architect

“architects need to shift their thinking away from creating the perfect end product, and instead focus on helping create a framework in which the right systems can emerge, and continue to grow as we learn more.”

47

slide-48
SLIDE 48

Software Architect = Town Planner

  • Attempt to optimize the layout of a city
  • to best suit the needs of the citizens today,
  • taking into account future use
  • Cannot foresee everything that will happen.
  • Don’t plan for any eventuality,
  • Plan to allow for change

48

slide-49
SLIDE 49

The Coding Architect?

  • Architects must ensure that

systems are ‘habitable’ for developers too.

  • Architects must spend time with the team
  • Architects must spend time coding
  • Pair with a developer
  • Beyond code review
  • This should be a routine activity

49