Agile architecture <ul><li>The next silver bullet to solve all your problems </li></ul>Magnus Mickelsson, Citerus AB [emai...
Upfront Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183
Upfront Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183
Agile methods <ul><ul><li>Deliver working software  </li></ul></ul><ul><ul><li>Individuals/communication > processes and t...
Engineering Practices Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 DONE
Cowboy-architecture <ul><li>Hack something that works, then ”refactoring” </li></ul><ul><li>Structures and patterns emerge...
Cowboy-architecture <ul><li>Hack something that works, then ”refactoring” </li></ul><ul><li>Structures and patterns emerge...
Where do we place ourselves on the scale? Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183
Lean-principles <ul><ul><li>Go out and see  </li></ul></ul><ul><ul><li>Optimize value flow </li></ul></ul><ul><ul><li>Elim...
Lean-principles <ul><ul><li>Go out and see  </li></ul></ul><ul><ul><li>Optimize value flow </li></ul></ul><ul><ul><li>Elim...
Systems thinking <ul><li>How do things  really  work? </li></ul><ul><ul><li>How do our users work? </li></ul></ul><ul><ul>...
Lean/Agile architecture work <ul><ul><li>Working software </li></ul></ul><ul><ul><li>Working with people > specifications ...
” Lean Architecture” - Coplien/Björnvig <ul><li>” All together, from early on” </li></ul><ul><ul><li>Reduce need for thing...
DDD - Domain-driven Design <ul><li>Cooperation with domain experts yields invaluable knowledge </li></ul><ul><li>Let the d...
DDD is not just application design <ul><li>Big Balls of Mud + Entropy -> Core Domain </li></ul><ul><li>Context mapping </l...
Whirlpool model exploration method Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183
Example #1 - simple/isolated webapp <ul><li>Now, target, expectations </li></ul><ul><li>How do things  really  work? </li>...
Explore, think, test, measure, improve... Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183
... and maybe, just maybe ... Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183
Example #2 - average to large system <ul><li>Systems thinking </li></ul><ul><li>Use-cases or user stories? </li></ul><ul><...
Model-View-Controller Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 Model Service Account Customer V...
DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 Model/Data Interactio...
DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 Model/Data Interactio...
DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 Model/Data Interactio...
DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 Model/Data Interactio...
What’s worth taking home? <ul><li>What can be done without IT? Systems thinking </li></ul><ul><li>Use-cases or user storie...
Questions? Citerus - Magnus Mickelsson, 2011 -  [email_address]  - 0708-444183 [email_address] [email_address] Twitter: ma...
Reading tips <ul><li>Lean architecture (Coplien/Björnvig) </li></ul><ul><li>The Pragmatic Programmer (Hunt/Thomas) </li></...
Upcoming SlideShare
Loading in …5
×

Agile architecture

776 views

Published on

Lean/Agile system architecture presentation. Goes through pros/cons of upfront work and the xp/agile approach. Defines important concepts, shows examples of how things could be done and goes through tools/things that can help along the way.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
776
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • The ivory tower all-knowing architect is usually wrong, because we don’t have enough knowledge in the start of the project. Also, not working with the team = bad (team misses information/reasoning/causes, architect could use more input/discussions/ideas). Output - systems chart, subsystems/relations, layers sketch, example design for a usecase, maybe example code/tests. The good part - we thought of the domain and made a model. It’s probably not a good enough one though. :p The bad - heavy burden of maintaining artifacts, illusion of ”just the implementation to go”, change management, knowledge spreading etc.
  • The ivory tower all-knowing architect is usually wrong, because we don’t have enough knowledge in the start of the project. Also, not working with the team = bad (team misses information/reasoning/causes, architect could use more input/discussions/ideas). Output - systems chart, subsystems/relations, layers sketch, example design for a usecase, maybe example code/tests. The good part - we thought of the domain and made a model. It’s probably not a good enough one though. :p The bad - heavy burden of maintaining artifacts, illusion of ”just the implementation to go”, change management, knowledge spreading etc.
  • XP, DSDM, Scrum, Crystal etc Agile Manifesto
  • Engineering practices: TDD, BDD, Refactoring, Continuous Integration, Version control, KLART-kriterie, etc BDD - Given, When, Then SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion)
  • ” ..sometimes” = hardly ever. Lack of time, rarely plan for the ”slack” needed to clean up the mess, think about it and redesign. Refactor fridays? Plant - Emergent Design, Neal Ford. What does it take to make emergent design work?
  • ” ..sometimes” = hardly ever. Lack of time, rarely plan for the ”slack” needed to clean up the mess, think about it and redesign. Refactor fridays? Plant - Emergent Design, Neal Ford. What does it take to make emergent design work?
  • Depends on your business domain, what’s to be done, the team, the system on a higher scale, etc.
  • Genchi Gembutso optimize the value flow for a feature costs are meant to be reduced, not rigorously calculated. Muda (waste) - defects, waiting, overproduction, transportation, inventory, complexity, unused creativity
  • Genchi Gembutso optimize the value flow for a feature costs are meant to be reduced, not rigorously calculated. Muda (waste) - defects, waiting, overproduction, transportation, inventory, complexity, unused creativity
  • Vanguard - John Seddon Processarchitect - learn about the domain - concepts/terms/way to work/how to think. ”Pure” IT enters the scene when the confusion starts to settle, or there is waste.
  • Understand the business and the domain Explore models for the domain Work with developers (or AS one)
  • All together from early on, cross-functional competence, gather/share domain knowledge early, reduce need for heavy documentation (focus on collaboration and important artifacts in the future) The team can get a good idea of what needs to be done, if the system requires bigger or smaller initial architectural effort and where the complexity will probably lie. ” Lean Architecture” - Coplien/Björnvig 2010
  • Eric Evans, book from 2003 (Amazon)-2004 (from the book’s (c)) The ubiqutous language
  • We’re battling thermodynamics when we want to clean things up, as well as business interests/money etc.
  • 1-2 teams, max.
  • friday demo in the morning, afternoon free refactoring, new ideas, improve. builds motivation, relate to the ”broken window” situation Tage Danielsson ”poke at things”
  • What it does - spikes, and important feature(s)
  • Trygve Reenskaug 1978ish (Xenon PARC)
  • Trygve Reenskaug 2006 (design modell)-&gt; (Coplien 2007ish). 2008ish other actors and languages - for example Öberg, Lehmann, Hedhman. Behaviour becomes encapsulated. Separate what the system IS and what it DOES. Domain model = Data, Use cases = Context, Roles = Interaction.
  • Algorithm: Source account - verify funds. Source and target accounts update balance. Source and target update their respective transaction log. What the system does (which changes more frequently) is independent of what the system is (changes, but rarely). Architects can focus on what the system is and experiment with what the system does, as a developer it’s the other way around.
  • Use pragmatism, gut feeling, experience.
  • Agile architecture

    1. 1. Agile architecture <ul><li>The next silver bullet to solve all your problems </li></ul>Magnus Mickelsson, Citerus AB [email_address]
    2. 2. Upfront Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    3. 3. Upfront Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    4. 4. Agile methods <ul><ul><li>Deliver working software </li></ul></ul><ul><ul><li>Individuals/communication > processes and tools </li></ul></ul><ul><ul><li>Close to the business </li></ul></ul><ul><ul><li>User stories </li></ul></ul><ul><ul><li>Engineering practices </li></ul></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 As a .. <role> I want .. <function> So that .. <purpose>
    5. 5. Engineering Practices Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 DONE
    6. 6. Cowboy-architecture <ul><li>Hack something that works, then ”refactoring” </li></ul><ul><li>Structures and patterns emerge.. </li></ul><ul><li>.... sometimes. </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    7. 7. Cowboy-architecture <ul><li>Hack something that works, then ”refactoring” </li></ul><ul><li>Structures and patterns emerge.. </li></ul><ul><li>.... sometimes. </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    8. 8. Where do we place ourselves on the scale? Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    9. 9. Lean-principles <ul><ul><li>Go out and see </li></ul></ul><ul><ul><li>Optimize value flow </li></ul></ul><ul><ul><li>Eliminate waste </li></ul></ul><ul><ul><li>5xWhy? </li></ul></ul><ul><ul><li>Pull, not push </li></ul></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    10. 10. Lean-principles <ul><ul><li>Go out and see </li></ul></ul><ul><ul><li>Optimize value flow </li></ul></ul><ul><ul><li>Eliminate waste </li></ul></ul><ul><ul><li>5xWhy? </li></ul></ul><ul><ul><li>Pull, not push </li></ul></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 <ul><li>Defects </li></ul><ul><li>Waiting </li></ul><ul><li>Over-production </li></ul><ul><li>Transport </li></ul><ul><li>Complexity </li></ul><ul><li>Unused creativity </li></ul>
    11. 11. Systems thinking <ul><li>How do things really work? </li></ul><ul><ul><li>How do our users work? </li></ul></ul><ul><ul><li>What are the consequences of the current way? </li></ul></ul><ul><ul><li>Improve the process (without IT) </li></ul></ul><ul><ul><li>Pull IT into the improvement work </li></ul></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 http://vimeo.com/19122939
    12. 12. Lean/Agile architecture work <ul><ul><li>Working software </li></ul></ul><ul><ul><li>Working with people > specifications </li></ul></ul><ul><ul><li>Increase knowledge in the organisation </li></ul></ul><ul><ul><li>Eliminate waste </li></ul></ul><ul><ul><li>Systems thinking - optimise the whole </li></ul></ul><ul><ul><li>Be ready to get ”pulled” in </li></ul></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    13. 13. ” Lean Architecture” - Coplien/Björnvig <ul><li>” All together, from early on” </li></ul><ul><ul><li>Reduce need for things that slow down </li></ul></ul><ul><li>Think Lean, be Agile </li></ul><ul><li>Some upfront-work => what the system is </li></ul><ul><li>Use-cases good for what the system does </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    14. 14. DDD - Domain-driven Design <ul><li>Cooperation with domain experts yields invaluable knowledge </li></ul><ul><li>Let the domain control the solution design, not technology </li></ul><ul><li>Design that makes maintenance and developer testing easier </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    15. 15. DDD is not just application design <ul><li>Big Balls of Mud + Entropy -> Core Domain </li></ul><ul><li>Context mapping </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    16. 16. Whirlpool model exploration method Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    17. 17. Example #1 - simple/isolated webapp <ul><li>Now, target, expectations </li></ul><ul><li>How do things really work? </li></ul><ul><li>What can be done without IT? </li></ul><ul><li>Gather user stories (detail a few) </li></ul><ul><li>Ubiqutous language (DDD) </li></ul><ul><li>Explore architecture/design - sprint 0 </li></ul><ul><li>1-2 spikes </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    18. 18. Explore, think, test, measure, improve... Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    19. 19. ... and maybe, just maybe ... Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    20. 20. Example #2 - average to large system <ul><li>Systems thinking </li></ul><ul><li>Use-cases or user stories? </li></ul><ul><li>Context mapping </li></ul><ul><li>Architecture (form) - what is the system? </li></ul><ul><li>Map subsystems to teams </li></ul><ul><li>Explore what the system does </li></ul><ul><li>Focus on Lean, to be Agile </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    21. 21. Model-View-Controller Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 Model Service Account Customer View Controller
    22. 22. DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 Model/Data Interaction Account Customer View Controller Context Role Role
    23. 23. DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 Model/Data Interaction Account Customer View Controller Account transfer Source account Target account
    24. 24. DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 Model/Data Interaction Account Customer View Controller Account transfer Source account Target account Account Account
    25. 25. DCI - Data, Context, Interaction Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 Model/Data Interaction € $ Account Customer View Controller Account transfer Source account Target account Account Account
    26. 26. What’s worth taking home? <ul><li>What can be done without IT? Systems thinking </li></ul><ul><li>Use-cases or user stories? </li></ul><ul><li>How much ”form” upfront depends </li></ul><ul><li>Lean principles help us stay Agile </li></ul><ul><li>DDD, Context mapping, DCI </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183
    27. 27. Questions? Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183 [email_address] [email_address] Twitter: magnusmickel
    28. 28. Reading tips <ul><li>Lean architecture (Coplien/Björnvig) </li></ul><ul><li>The Pragmatic Programmer (Hunt/Thomas) </li></ul><ul><li>Domain Driven Design (Evans) </li></ul><ul><li>Working effectively with legacy code (Feathers) </li></ul><ul><li>Refactoring to patterns (Kerievsky) </li></ul><ul><li>Lean Software Development (2*Poppendieck) </li></ul><ul><li>Freedom from Command & Control ... (Seddon) </li></ul><ul><li>Evolutionary architecture & Emergent Design (Ford) </li></ul>Citerus - Magnus Mickelsson, 2011 - [email_address] - 0708-444183

    ×