2. Grammatically correct
Agile Day Riga 2015 2
agile
[aj-uh l, -ahyl]
adjective
1. quick and well-coordinated in movement; lithe:
an agile leap
2. active; lively:
an agile person
3. marked by an ability to think quickly; mentally acute or aware:
She's 95 and still very agile
http://dictionary.reference.com/browse/agile
4. Typical software architecture
Agile Day Riga 2015 4
Web Interface
Business Logic
Data Access Database
Caching
Authorization
Client Application
API
External services
5. What is software architecture
Agile Day Riga 2015 5
Software architecture is 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
6. When I mention Agile…
Agile Day Riga 2015 6
“Yes, we are doing SCRUM”
8. What is Agile all about?
Welcome changing requirements, even late in development
Deliver working software frequently
Reflect on how to become more effective
Agile Day Riga 2015 8
CHANGE
It is all about reacting to
http://www.agilemanifesto.org/principles.html
9. Agile in practice
Practice Degree of applying
Refactoring rather often
Simple Design rather often
Test-Driven Development sometime
Clean Code rather rare
Non-Solo Development rather rare
Clean Architecture rather very rare
Agile Day Riga 2015 9
http://agiledesign.org/2014/09/09/i-roadmap-to-an-agile-design/
10. Agile software architecture
Agile Day Riga 2015 10
Agile teams don't necessarily create
agile software architectures
A good architecture enables agility
but
Agility and the essence of software architecture, Simon Brown
11. Agile Day Riga 2015 11
Doing software architecture
is also an iterative process
12. Start as early as possible
Every meeting with a client should be attended of at least one
Agile Day Riga 2015 12
13. Always ask questions
Agile Day Riga 2015 13
Clients do not know what they do not know
Clients do not know what IT can
Clients do not know how to improve their processes-
Clients know what they do every day
+
14. Specification of the system (1)
Any kind of documentation that specifies what the system should do
◦ Word documents
◦ Wireframes / sketches
◦ Post-it notes
◦ White board drawings
◦ Photo shots
Agile Day Riga 2015 14
15. Specification of the system (2)
Agile Day Riga 2015 15
Can potentially include too many artifacts
Can become chaotic
Document content is hard to keep up-to-date-
Core functionalities are described very quickly
Visual representation of the future system
Customer can see it on-the-fly and add input+
16. Why to keep documentation
Write decisions down – every decision is important
Be able to justify your past decisions
Future maintenance of the system
Some people leave, some people come
Agile Day Riga 2015 16
17. How to do documentation (1)
Agile Day Riga 2015 17
UML?
People tend to ignore it
18. How to do documentation (2)
Agile Day Riga 2015 18
NoUML
Everything can be used
to do documentation
19. How to do documentation (3)
Agile Day Riga 2015 19
20. How to do documentation (4)
Agile Day Riga 2015 20
21. Agile Day Riga 2015 21
Developers should learn
how to do sketches
22. Agile Day Riga 2015 22
Don’t be a slave to tools,
make your own rules
23. Case example
Ferry company wants a new web system for selling tickets
The inventory is already managed by an external system
The new system should be decoupled in a way that the back-end part could be rewritten
in other language in the future
Agile Day Riga 2015 23
24. Iteration #1
The inventory service has a custom token-based authentication mechanism
The inventory service has limitations to the required data
Agile Day Riga 2015 24
Service layer
(API)
External inventory
web service
Browser application
Data
store
25. Iteration #2
The inventory service has performance issues
The inventory service stop functioning when “stressed too much”
Agile Day Riga 2015 25
Service layer
(API)
External inventory
web service
Browser application
Data
store
Inventory service
proxy
26. Iteration #3
Customers see tickets that are actually sold-out
Agile Day Riga 2015 26
Service layer
(API)
External inventory
web service
Browser application
Data
store
Inventory service
proxy
Cache
27. Iteration #4
Agile Day Riga 2015 27
Service layer
(API)
External inventory
web service
Browser application
Data
store
Inventory service
proxy
Cache
External inventory
system
Clear
inventory
cache
28. Take-away tips
Start simple, grow slowly
It is creative work
◦ People should enjoy it
Add complexity only when needed
◦ Try to postpone it as much as possible
◦ Do NOT predict the future, it changes a lot
Document important decisions
◦ You will regret not doing this at a later point
Agile Day Riga 2015 28
29. Ļoti pateicos!
29Agile Day Riga 2015
http://bit.ly/adr15-boyan
Rate meGet in touch
hey@boyan.in
@bmihaylov
Afterparty