Agile Architecture

735
-1

Published on

Agile Archite

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
735
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
37
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Agile Architecture

  1. 1. Agile Architecture Colombo Agile Meetup Johannes Brodwall, Chief scientist Exilesoft Global
  2. 2. What is an architect? From greek Arkhi-TectonArkhi: Chief. Like “Arch angel” Or “Arch nemesis” Tecton: Builder
  3. 3. What is an architect? (Exilesoft definition)
  4. 4. A solution architect is someone who understandsthe problem of the customer and uncovers and communicates a feasible solution
  5. 5. A solution architect is someone who understands the customer’s problem (includingcontraints, context, domain knowledge) and uncovers (though a team effort) and communicates (with credibility) a feasible solution (primarily, but not exclusively technical)
  6. 6. Uncover problem vision, stakeholders, usage flow Describe problem context and domain model Describe solutiondeployment, implementation model Simplify architecture feature oriented structure Deliver software rainbow plans
  7. 7. • Describing architecture• Simplifying architecture • Delivering architecture • Delivering software
  8. 8. Part I:
  9. 9. Describingarchitecture
  10. 10. Understanding the problem
  11. 11. (Tool time)
  12. 12. For some stakeholder Who has a goal The Colombo Agile Meetup Is a type of activity Which gives a capability. Unlike most relevant alternativeThis has a distinguishing attribute.
  13. 13. For anyone interested in agile methods Who ________________ The Colombo Agile Meetup Is a _________________ Which ________________. Unlike ______________________ This _______________________.
  14. 14. Example«Smidig» conference application
  15. 15. Example vision statement
  16. 16. For Agile practitionersWho need to expand on their experience and network The Smidig conference Is a networking event Which connects you with other Agile practitioners. Unlike traditional conferencesThis presents the experience of many people through lightning talks.
  17. 17. For Conference organizers Who want to organize a good conference The Smidig conference app Is a web application Which eliminates unnecessary work. Unlike commercial conference appsThis is optimized for the large number of talkswe have and allows us to make changes fast.
  18. 18. Examplestakeholders
  19. 19. Speaker Attendee OrganizerDescription Description Description• Experienced • Knows about agile • Volunteer• New speaker • Works in project • Works in evenings• Passionate • Norwegian • Has networkDuties Duties Duties• Register talk • Pay for conference • Select talks• Upload slide • Get approval to go • Follow up• Give talk paymentsValues Values Values • Easy selection process• Constructive • Easy registration • Good information feedback on talk overview• Easy CfP • Never lose a participant• Fast answer • Financial transparency
  20. 20. SponsorDescription• Busy• Manager• Not very interestedDuties• Provide logo• Pay sponsorshipValues• Informal communication• Easy evaluation
  21. 21. Example usage flow
  22. 22. Attendance1. Agile project practitioner wants to learn2. Attendee goes to Smidig website3. Attendee registers4. Attendee pays5. Attendee receives confirmation mail6. Organizer can see the registration7. Organizer sends reminder email to attendee to come8. Organizer prints badges for attendees9. Attendee shows up at Smidig and has an excellent time
  23. 23. Speaker1. Agile experts wants to share knowledge2. Potential speaker goes to Smidig website3. Potential speaker registers personal info4. Potential speaker registers talk5. Potential speaker receives registration confirmation email6. Organizer sees registered talk and can market speaking opportunities7. Organizer accepts talk for confence8. Speaker receives acceptance email – Alternative: Speaker withdraws talk – organizer updates the talk and selects another9. Organizer prints badges for speakers10. Speaker shows up at Smidig and gives talk
  24. 24. /Understanding the problem
  25. 25. Uncovering a solution
  26. 26. Example context model
  27. 27. Participant Speaker OrganizerPaypal Smidig2011.no Printing company
  28. 28. Example domain model
  29. 29. User • Name Registration • Email • Ticket type • Price • Company • Paid amount • Phone • Paypal ref • Password • Payment date • Invoice address [optional] • Accepts email? *Comment *• Title Speaker• Text• Created date * * Talk Period • Title • Description • Stage • Tags[] • Title • Slide file • Time of day • Status : • Day {pending, accept, rejec t} • Email_sent • Position
  30. 30. Exampleimplementation diagram
  31. 31. Browser Smidig2012.no Paypal.com 1. POST /users Save user info 2. Redirect to paypal with return_url and notify_url 3. Perform payment 4. POST /payment_notifications Update user info 5. Redirect to return_url 5. GET /user/<id> Show user info
  32. 32. Exampledeployment model
  33. 33. Web user Developer html/httpgit push git pushgit pull Smidig- conference http Paypal github git.heroku (Rails) smtp Heroku Smtp.dreamhost.com smidigdb PostgreSQL
  34. 34. /Uncovering a solution
  35. 35. Communicating a solution
  36. 36. Vision Stakeholders Usage flow Context Domain modelImplementation Deployment
  37. 37. Does the architect have to do this herself?
  38. 38. Team effort
  39. 39. /Communicating a solution
  40. 40. /Describingarchitecture
  41. 41. Part II:
  42. 42. Simplifyingarchitecture
  43. 43. Lasagnaarchitecture
  44. 44. Person- Person- Person- PersonDaoController Service Repository Person- Person- Person- PersonDaoController- Repository ServiceImpl Impl Impl Impl Session- Factory
  45. 45. Controllers Services Managers WorkersRepositories
  46. 46. Controllers DTO Services Mapping Domain Managers WorkersRepositories
  47. 47. CustomerInvoiceOrderProduct
  48. 48. Tidying up art (Ursus Wehrli)
  49. 49. Feature oriented architecture
  50. 50. Coherence• What changes together lives together
  51. 51. Tolerance• What should be different can be different
  52. 52. Meaning• What is central in domain is central in code
  53. 53. Your thinking is contrained bytechnology fashion:
  54. 54. Controllers DTO Services Mapping Domain Managers WorkersRepositories
  55. 55. Your solution is constrained by deployment
  56. 56. Web user Browser JSON/httpController DTO? Web ApplicationConsumer DTO SOAPService DTO Web Service Database
  57. 57. Web user Browser JSON/http DTO?ControllerWeb Application DAO Database
  58. 58. Web user html/httpControllerWeb Application DAO Database
  59. 59. Web user html/http Reverse proxy html/httpControllerWeb Application DAO Database
  60. 60. Web userController Rich client DTO Objects over http DTOWeb Application Database
  61. 61. Web userController Rich clientConsumer DTO Web serviceService DTOWeb Application Database
  62. 62. Web userExternal client Browser JSON/http Controller DTO? Web Application Consumer DTO SOAP Service DTO Web Service DAO Database
  63. 63. Web userExternal client Browser JSON/http Service Controller DTO Web Application DAO Database
  64. 64. /Simplifyingarchitecture
  65. 65. Part III:
  66. 66. Delivering software
  67. 67. Common Sprint problems
  68. 68. User stories without context
  69. 69. Every feature must be perfect at first try
  70. 70. Users don’t understand the demo
  71. 71. One-sentence Scrum
  72. 72. We demonstrate progress at regular intervals
  73. 73. It’s all about the demo
  74. 74. We demonstrate progress at regular intervals
  75. 75. Progress towards what?
  76. 76. Usage flow1. Something happens in the real world2. The event is communicated to the system3. The system does something4. Someone does something with the system5. …6. …7. …8. …9. …10. Some goal is achieved
  77. 77. Rainbow plan
  78. 78. Usage flow: frugalflights.com1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  79. 79. What would you do in Sprint 1?
  80. 80. Usage flow: frugalflights.com1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  81. 81. Sprint 1: Walking skeleton1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  82. 82. Sprint 2: SMS support1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  83. 83. Sprint 3: Complete workflow1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  84. 84. Sprint 4: Complete SMS1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  85. 85. Sprint 5: Web pages1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  86. 86. Sprint 7: Integration1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  87. 87. Sprint 8: Spit-and-polish1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted offers on the system website10. The customer enjoys a cheap vacation!
  88. 88. /Delivering software
  89. 89. Conclusion:
  90. 90. Travel light – 7 perspectivesDomain oriented architecture Sprint with a (rainbow) plan
  91. 91. What’s the common theme?
  92. 92. Usage flow
  93. 93. Good architecture comes fromunderstanding usage
  94. 94. Thank you jbr@exilesoft.com http://johannesbrodwall.com http://exilesoft.com http://twitter.com/jhannes • Vision • Stakeholders • Usage flows – rainbow plans • Context • Domain • (Simple) Deployment • (Feature oriented) implementation
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×