Software Architecture
> Definition ISO 42010
Fundamental concepts or properties
of a system in its environment
embodied in its elements,
relationships,
and in the principles of its design and evolution
Slide 7
Slide 7 text
Architecture =
Boxes & Arrows
Slide 8
Slide 8 text
Software Architect?
> A title?
> A role!
> …in particular in agile teams.
> Anyone / someone is
doing architecture
Slide 9
Slide 9 text
Software Architect?
> Designer
> …like an architect for buildings
Slide 10
Slide 10 text
Architecture=
Boxes + Arrows
Architect=
Designer Role
Slide 11
Slide 11 text
Conway’s Law
Architecture
copies
communication structures
of the organization
Slide 12
Slide 12 text
Current
Frontend
Backend
Slide 13
Slide 13 text
Goal
Slide 14
Slide 14 text
Current
Frontend
Backend
Slide 15
Slide 15 text
Current
Frontend
Backend
Slide 16
Slide 16 text
Goal
Slide 17
Slide 17 text
Reorganization!
Slide 18
Slide 18 text
Reorganization!
Slide 19
Slide 19 text
Current: New goal?
Slide 20
Slide 20 text
Current: New goal?
Slide 21
Slide 21 text
New Goal
Slide 22
Slide 22 text
Architecture
> If architecture = organization
> …then change to architecture = reorganization
> …or organization is a constraint.
Slide 23
Slide 23 text
Goal
Slide 24
Slide 24 text
Goal:
Self-contained System
http://scs-architecture-org
Slide 25
Slide 25 text
Result
Slide 26
Slide 26 text
Result
Slide 27
Slide 27 text
Architecture
> Developers’ skills and preferences drive
technology decisions.
> Technology decisions can drive architecture.
Slide 28
Slide 28 text
Architecture=
Boxes + Arrows
+Org
Architect=
?
Slide 29
Slide 29 text
Why do we even care
about Architecture?
Slide 30
Slide 30 text
Maintainability!!
Slide 31
Slide 31 text
Quality Attributes
> ISO 25010
> E.g. reliability
> Usability
> Maintainability
> ...and a lot more
Maintainability
> Clean
architecture!
> I am waiting for
such a customer.
Slide 56
Slide 56 text
We can achieve
maintainability with
clean architecture +
clean code.
Slide 57
Slide 57 text
Clean Architecture
Slide 58
Slide 58 text
Developer
Slide 59
Slide 59 text
Developer
Slide 60
Slide 60 text
Result?
Slide 61
Slide 61 text
No content
Slide 62
Slide 62 text
ECommerce
System
Order
Catalog
Billing
Search
Module = microservices
Slide 63
Slide 63 text
ECommerce
System
Order
Catalog
Billing
Search
Module = microservices
Communication e.g. REST
Slide 64
Slide 64 text
REST REST
Slide 65
Slide 65 text
ECommerce
System
Order
Catalog
Billing
Search
Dependencies between
systems cannot sneak in
Slide 66
Slide 66 text
ECommerce
System
Order
Catalog
Billing
Search
Dependencies between
systems cannot sneak in
Slide 67
Slide 67 text
ECommerce
System
Order
Catalog
Billing
Search
Dependencies between
systems cannot sneak in
“Architecture Firewalls”
Slide 68
Slide 68 text
“Architecture Firewall”
like REST
enforce the architecture
Slide 69
Slide 69 text
ECommerce
System
Order
Catalog
Billing
Search
Microservices small
Slide 70
Slide 70 text
ECommerce
System
Order
Catalog
Billing
Search
Microservices small
Hard to mess up
Slide 71
Slide 71 text
ECommerce
System
Order
Catalog
Billing
Search
Microservices small
Hard to mess up
Slide 72
Slide 72 text
ECommerce
System
Catalog
Billing
Search
Microservices small
Hard to mess up
Slide 73
Slide 73 text
ECommerce
System
Order
Catalog
Billing
Search
Microservices small
Hard to mess up
Replace if messed up.
Slide 74
Slide 74 text
Small,
independent deployable
microservices
are recyclable.
Slide 75
Slide 75 text
Recycle your
software!
!
Slide 76
Slide 76 text
How many people
are trying
to replace legacy
systems?
Slide 77
Slide 77 text
Replaceability
is usually no goal
for a software project.
Why??
Slide 78
Slide 78 text
We can achieve
maintainability with
clean architecture +
clean code
Slide 79
Slide 79 text
We can achieve
maintainability with
architecture firewalls +
recyclable microservices
Slide 80
Slide 80 text
Maintainability
> Clean architecture
focuses on
Changeability.
> …and Analyzability.
> There is more!
Slide 81
Slide 81 text
Testability
> Another contributing to maintainability
> IMHO: Should be tests, not just testability
> Bonus if tests need not be changed for
refactoring.
> Unit tests?
> Acceptance tests?
Slide 82
Slide 82 text
Deployment
> It’s nice to change code.
> It’s (lean) waste until it is in production.
> Deployment: another factor for
maintainability.
Maintainability
> Not clean architecture and code
> Recyclable, very decoupled microservices
> Not just structure of the system, but also
> …test and deployment
> …continuous delivery pipeline
Slide 85
Slide 85 text
Maintainability
> Not just architect and Dev, but also
> QA and Ops
Slide 86
Slide 86 text
Architecture=
Quality Attributes+Org
Architect=
?
Slide 87
Slide 87 text
Achieving the Attributes
> Organizational Measure (e.g. hire UX)
> Cross-functional: Ops, Dev, QA
Slide 88
Slide 88 text
Architect?
> Technical manager
> In charge of achieving the
quality attributes
> Influencing organization
> …and Ops, Dev, QA
Slide 89
Slide 89 text
Agile Team
> Self Organization
> i.e. not necessarily a defined architect
> Architecture activities cover Ops, Dev, QA
> Cross-functional!
Slide 90
Slide 90 text
Architecture=
Quality Attributes+Org
Architect=
Technical
Management Role