This document discusses software architecture in agile development. It notes that traditional approaches assume well-defined requirements and predictable schedules, which often do not hold for agile projects. Agile development embraces changing requirements and focuses on delivering working software frequently. The document discusses how agile teams can maintain software architecture through practices like clean architecture, non-solo development, clean code, and test-driven development. It emphasizes starting architectural work early, questioning assumptions, and documenting decisions to support future changes.
1. Lean or Agile,
Software Architecture
Is Fragile
Boyan Mihaylov
@bmihaylov
Agile Tour London 2015
2. Traditional approach
2@bmihaylov | Agile Tour London 2015
Requirements
analysis
Design
Development
Testing
Maintenance
Software
architecture
3. General assumptions
Requirements are
well-defined and stable
Development can fit into
a predictable schedule
Integration of the various
components is predictable
3@bmihaylov | Agile Tour London 2015
1.
2.
3.
Predictability
Stability
&
4. Trying to predict the future is like trying to
drive down a country road at night with no
lights while looking out the back window.
photo: www.dcrainmaker.com
Peter Drucker
“
”
5. Walking on water and developing
software from a specification are easy if
both are frozen.
photo: www.planetsolar.org
Edward V. Berard
“
”
6. The Agile promises
CHANGE
It is all about reacting to
Welcome changing requirements,
even late in development
Deliver working
software frequently
Reflect on how
to become more effective
photo: 7-themes.com
8. What is software architecture?
8@bmihaylov | Agile Tour London 2015
[...] the fundamental organization of a SYSTEM
embodied in its COMPONENTS, their
RELATIONSHIPS to each other, and to the
ENVIRONMENT, and the principles guiding its
design and evolution.
IEEE 1471
9. The architecture is the
skeleton of your system.
photo thegraphicsfairy.com
photo: Wikimedia.org
10. Agile software architecture
10@bmihaylov | Agile Tour London 2015
Does it mean I can make significant
architectural changes in the last moment?
photo: bgfons.com
11. Agile software architecture
11@bmihaylov | Agile Tour London 2015
Agile teams don't necessarily create
agile software architectures
A good architecture enables agility
but
Agility and the essence of software architecture, Simon Brown
photo: bgfons.com
12. Agile in practice
Clean architecture
Non-solo development
Clean code
Test-driven development
Simple design
Refactorying
12@bmihaylov | Agile Tour London 2015
rather
very rare
rather
rare
sometimes rather
often
source: http://agiledesign.org/2014/09/09/i-roadmap-to-an-agile-design/
13. The software architect
13@bmihaylov | Agile Tour London 2015
Big picture
thinking
Focuses on
compliance
Produces models
and blue prints
Not so much
hands-on
14. The Scrum team
14@bmihaylov | Agile Tour London 2015
The Product
Owner
The Scrum
Master
The
Development
Team
15. The Agile software architect
15@bmihaylov | Agile Tour London 2015
Balances big
picture and details
Focuses on
sustainability
Produces the
necessaryto
make informed
decisions
Hands-on
experience
16. When should I start?
16photo: athleticsmotivation.com
Sprint 0?
17. At the start
17@bmihaylov | Agile Tour London 2015
The architecture probably won’t be
finished when the team starts
working on the project
That’s fine
It might actually never get
finished…
That’s fine, too
18. Start as early as possible
Every meeting with a client should be attended of at least one
@bmihaylov | Agile Tour London 2015 18
19. Question everything
@bmihaylov | Agile Tour London 2015 19
Clients do NOT know what they do not know
Clients do NOT know what IT can do for them
Clients do NOT know how to improve their status quo
Clients do know what they do every day
photo: idealistcareers.org
21. Decide at the most responsible moment,
not at the last possible
photo: wikimedia.org
22. Documentation of the system
Some people leave, some people come
Future maintenance of the system
Be able to justify your past decisions
Write decisions down – every decision is important
photo: www.popsugar.com
23. How to do documentation
@bmihaylov | Agile Tour London 2015 23
UML?People tend to ignore it
24. How to do documentation
@bmihaylov | Agile Tour London 2015 24
NoUMLEverything can be used
to do documentation
27. @bmihaylov | Agile Tour London 2015 27
Documentation of the system
Core functionalities are described very quickly
Visual representation of the future system
Clients can see it on-the-fly and add input
Can potentially include too many artifacts
Can become chaotic
Document content is hard to keep up-to-date
28. @bmihaylov | Agile Tour London 2015 28
Developers should learn how to do sketches
photo: thehippingpost.com