SlideShare une entreprise Scribd logo
1  sur  110
Télécharger pour lire hors ligne
Agile Architecture
                               Odessa
      Johannes Brodwall, Chief scientist
                      Exilesoft Global
What is an architect?
  From greek Arkhi-Tecton
           Tecton: Builder
             Arkhi: Chief.
        Like “Arch angel”
       Or “Arch nemesis”
What is an architect?
          “Chief builder”
What is an architect?
      (Exilesoft definition)
A solution architect is
 someone who understands
the problem of the customer
         and uncovers and
             communicates
         a feasible solution
A solution architect is someone who
         understands the customer’s
                     problem (including
contraints, context, domain knowledge)
  and uncovers (though a team effort)
 and communicates (with credibility) a
   feasible solution (primarily, but not
                  exclusively technical)
Uncover problem
   vision, stakeholders, usage flow
                 Describe problem
         context and domain model
                 Describe solution
deployment, implementation model
              Simplify architecture
          feature oriented structure
                  Deliver software
                      rainbow plans
• Describing architecture
• Simplifying architecture
  • Delivering architecture
    • Delivering software
Part I:
Describing
architecture
• Understanding problem
       • Uncovering solution
•   Communicating architecture
Understanding the
         problem
(Tool time)
For some stakeholder
                Who has a goal
 The Odessa agile user group (?)
             Is a type of activity
       Which gives a capability.

  Unlike most relevant alternative
This has a distinguishing attribute.
For __________________
       Who ________________
 The Odessa agile user group (?)
       Is a _________________
     Which ________________.

Unlike ______________________
This _______________________.
Example
«Smidig» conference application
Example vision
    statement
For Agile practitioners
Who need to expand on their experience and network
                             The Smidig conference
                               Is a networking event
  Which connects you with other Agile practitioners.

                       Unlike traditional conferences
This presents the experience of many people through
                                       lightning talks.
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 apps
This is optimized for the large number of talks
we have and allows us to make changes fast.
Example
stakeholders
Speaker             Attendee                Organizer
Description           Description            Description
• Experienced         • Knows about agile    • Volunteer
• New speaker         • Works in project     • Works in evenings
• Passionate          • Norwegian            • Has network

Duties                Duties                 Duties
• Register talk       • Pay for conference   • Select talks
• Upload slide        • Get approval to go   • Follow up
• Give talk                                    payments
Values                                       Values
                      Values                 •   Easy selection process
• Constructive
                      • Easy registration    •   Good information
   feedback on talk                              overview
• Easy CfP                                   •   Never lose a participant
• Fast answer                                •   Financial transparency
Sponsor
Description
• Busy
• Manager
• Not very interested

Duties
• Provide logo
• Pay sponsorship

Values
• Informal
   communication
• Easy evaluation
Example usage flow
Attendance
1.   Agile project practitioner wants to learn
2.   Attendee goes to Smidig website
3.   Attendee registers
4.   Attendee pays
5.   Attendee receives confirmation mail
6.   Organizer can see the registration
7.   Organizer sends reminder email to attendee
     to come
8.   Organizer prints badges for attendees
9.   Attendee shows up at Smidig and has an
     excellent time
Speaker
1.        Agile experts wants to share knowledge
2.        Potential speaker goes to Smidig website
3.        Potential speaker registers personal info
4.        Potential speaker registers talk
5.        Potential speaker receives registration confirmation
          email
6.        Organizer sees registered talk and can market
          speaking opportunities
7.        Organizer accepts talk for confence
8.        Speaker receives acceptance email
      –      Alternative: Speaker withdraws talk – organizer updates
             the talk and selects another
9.        Organizer prints badges for speakers
10.       Speaker shows up at Smidig and gives talk
/Understanding the
          problem
Uncovering a
    solution
Example context
         model
Participant       Speaker


                                       Organizer




Paypal                 Smidig2011.no
                                                    Printing
                                                   company
Example domain
         model
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 : {pending,   •       Day
                       accept, reject}
                   •   Email_sent
                   •   Position
Example
deployment model
Web user




     Developer                 html/http

git push         git push
git pull
                                Smidig-
                              conference    http
                                                         Paypal
 github          git.heroku     (Rails)
                                            smtp
                               Heroku
                                                   Smtp.dreamhost.com




                               smidigdb
                              PostgreSQL
Example
implementation
      diagram
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
/Uncovering a
     solution
Communicating a
       solution
Vision
  Stakeholders
    Usage flow
       Context
 Domain model
Implementation
   Deployment
Does the architect
  have to do this
          herself?
Team effort
/Communicating a
        solution
/Describing
architecture
Part II:
Simplifying
architecture
• Lasagna architecture
•   Feature oriented architecture
     • Deployment constraints
Lasagna
architecture
Person-       Person-       Person-
                                         PersonDao
Controller     Service      Repository




 Person-                     Person-
               Person-                   PersonDao
Controller-                 Repository
              ServiceImpl                   Impl
  Impl                        Impl



                                          Session-
                                          Factory
Controllers



  Services



 Managers



  Workers



Repositories
Controllers
                DTO

  Services     Mapping

               Domain
 Managers



  Workers



Repositories
Customer



Invoice


Order



Product
Tidying up art (Ursus Wehrli)
Feature oriented
    architecture
Coherence
• What changes together
          lives together
Tolerance
• What should be different
          can be different
Meaning
• What is central in domain
          is central in code
Your thinking is
      contrained by
technology fashion:
Controllers
                DTO

  Services     Mapping

               Domain
 Managers



  Workers



Repositories
Your solution is
 constrained by
    deployment
Web user




      Browser
                   JSON/http

Controller DTO?
 Web Application
Consumer   DTO
                   SOAP

Service   DTO
  Web Service


      Database
Web user




     Browser

             JSON/http



         DTO?
Controller
Web Application
  DAO




      Database
Web user



       html/http



Controller
Web Application
  DAO




      Database
Web user


              html/http


 Reverse proxy
              html/http

Controller
Web Application
  DAO



      Database
Web user

Controller
    Rich client
             DTO
             Objects
             over http

                   DTO
Web Application




      Database
Web user

Controller
    Rich client
Consumer     DTO
             Web
             service

Service   DTO
Web Application




      Database
Web user




External client         Browser
                                      JSON/http

                  Controller DTO?
                   Web Application
                  Consumer   DTO
                                      SOAP

                  Service   DTO
                    Web Service
                        DAO


                         Database
Web user




External client           Browser

                                 JSON/http



                  Service        Controller
                           DTO
                       Web Application
                           DAO


                           Database
/Simplifying
architecture
Part III:
Delivering software
• Common sprint problems
• Demo driven development
         • Rainbow plans
Common Sprint
    problems
User stories without
             context
Every feature must be
    perfect at first try
Users don’t understand the
                     demo
One-sentence
      Scrum
We demonstrate progress
      at regular intervals
It’s all about the demo
We demonstrate progress at
           regular intervals
Progress towards
           what?
Usage flow
1.    Something happens in the real world
2.    The event is communicated to the system
3.    The system does something
4.    Someone does something with the system
5.    …
6.    …
7.    …
8.    …
9.    …
10.   Some goal is achieved
Rainbow plan
Usage flow: frugalflights.com
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
What would you do
      in Sprint 1?
Usage flow: frugalflights.com
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 1: Walking skeleton
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 2: SMS support
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 3: Complete workflow
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 4: Complete SMS
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 5: Web pages
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 7: Integration
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
Sprint 8: Spit-and-polish
1.       A customer wants cheap vacations
2.       The customer signs up for daily or weekly notifications of special
         flight offers
3.       Periodically the System checks which customers should get
         notifications
4.       The System checks for offers that matches the customer’s travel
         preference by looking up flights with the travel provider system
5.       The System notifies customer of any matching offers via SMS
     •      Variation: The System notifies customer of any matching offers via
            email
6.       The customer accepts the offer via SMS
     1.     Variation: The customer accepts the offer on the system website
7.  The System books the tickets on behalf of the customer
8.  The system confirms the booking by sending an SMS to the
    customer
9. The customer can at any point see their active offers and accepted
    offers on the system website
10. The customer enjoys a cheap vacation!
/Delivering software
Conclusion:
Travel light – 7 perspectives
Domain oriented architecture
 Sprint with a (rainbow) plan
What’s the common
            theme?
Usage flow
Good architecture
        comes from
understanding usage
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

Contenu connexe

Similaire à Agile Architecture in Odessa

Bare-Bones Software Architecture
Bare-Bones Software ArchitectureBare-Bones Software Architecture
Bare-Bones Software ArchitectureJohannes Brodwall
 
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoHeiko Voigt
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsMark Windholtz
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use itMark Windholtz
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building BlocksMark Windholtz
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET Dmytro Mindra
 
Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'EnterprisePyCon Italia
 
Android application development
Android application developmentAndroid application development
Android application developmentLinh Vi Tường
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time rebootKentaro Goto
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerShotaro Sakamaki
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022 Michael Yagudaev
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk UpdateESUG
 
Implementing Domain-Driven Design study group - ch. 5 entities
Implementing Domain-Driven Design study group - ch. 5 entitiesImplementing Domain-Driven Design study group - ch. 5 entities
Implementing Domain-Driven Design study group - ch. 5 entitiesHenry Tong
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...Heiko Voigt
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentMarakana Inc.
 

Similaire à Agile Architecture in Odessa (20)

Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 
Bare-Bones Software Architecture
Bare-Bones Software ArchitectureBare-Bones Software Architecture
Bare-Bones Software Architecture
 
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building Blocks
 
API Design Workflows
API Design WorkflowsAPI Design Workflows
API Design Workflows
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'Enterprise
 
Android application development
Android application developmentAndroid application development
Android application development
 
SDWest2005Goetsch
SDWest2005GoetschSDWest2005Goetsch
SDWest2005Goetsch
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote Worker
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
 
306 belmont ssp08agileit
306 belmont ssp08agileit306 belmont ssp08agileit
306 belmont ssp08agileit
 
Implementing Domain-Driven Design study group - ch. 5 entities
Implementing Domain-Driven Design study group - ch. 5 entitiesImplementing Domain-Driven Design study group - ch. 5 entities
Implementing Domain-Driven Design study group - ch. 5 entities
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 

Plus de Johannes Brodwall

Build Your Stuff with Privacy by Design
Build Your Stuff with Privacy by DesignBuild Your Stuff with Privacy by Design
Build Your Stuff with Privacy by DesignJohannes Brodwall
 
Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)Johannes Brodwall
 
Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)Johannes Brodwall
 
Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Johannes Brodwall
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentJohannes Brodwall
 
Extreme Programming Live - JavaZone
Extreme Programming Live - JavaZoneExtreme Programming Live - JavaZone
Extreme Programming Live - JavaZoneJohannes Brodwall
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming liveJohannes Brodwall
 
2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programmingJohannes Brodwall
 
WeActuallyBuildStuff - Extreme Programming Live
WeActuallyBuildStuff - Extreme Programming LiveWeActuallyBuildStuff - Extreme Programming Live
WeActuallyBuildStuff - Extreme Programming LiveJohannes Brodwall
 
Bare-knuckle web development
Bare-knuckle web developmentBare-knuckle web development
Bare-knuckle web developmentJohannes Brodwall
 
Agile Programming Live - AgilePrague2012
Agile Programming Live - AgilePrague2012Agile Programming Live - AgilePrague2012
Agile Programming Live - AgilePrague2012Johannes Brodwall
 
Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012Johannes Brodwall
 
Experience Agile Programming
Experience Agile ProgrammingExperience Agile Programming
Experience Agile ProgrammingJohannes Brodwall
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - KievJohannes Brodwall
 

Plus de Johannes Brodwall (20)

Build Your Stuff with Privacy by Design
Build Your Stuff with Privacy by DesignBuild Your Stuff with Privacy by Design
Build Your Stuff with Privacy by Design
 
The new new mobile web
The new new mobile webThe new new mobile web
The new new mobile web
 
Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)
 
Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)
 
Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web Development
 
Extreme Programming Live - JavaZone
Extreme Programming Live - JavaZoneExtreme Programming Live - JavaZone
Extreme Programming Live - JavaZone
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live
 
2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming
 
WeActuallyBuildStuff - Extreme Programming Live
WeActuallyBuildStuff - Extreme Programming LiveWeActuallyBuildStuff - Extreme Programming Live
WeActuallyBuildStuff - Extreme Programming Live
 
Bare-knuckle web development
Bare-knuckle web developmentBare-knuckle web development
Bare-knuckle web development
 
Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
 
Agile Programming Live - AgilePrague2012
Agile Programming Live - AgilePrague2012Agile Programming Live - AgilePrague2012
Agile Programming Live - AgilePrague2012
 
Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012
 
Smidig Stykkpriskontrakt
Smidig StykkpriskontraktSmidig Stykkpriskontrakt
Smidig Stykkpriskontrakt
 
Experience Agile Programming
Experience Agile ProgrammingExperience Agile Programming
Experience Agile Programming
 
Agile Contracts
Agile ContractsAgile Contracts
Agile Contracts
 
Smidig ansvarsprosjekt
Smidig ansvarsprosjektSmidig ansvarsprosjekt
Smidig ansvarsprosjekt
 
Kiev Coding Dojo
Kiev Coding DojoKiev Coding Dojo
Kiev Coding Dojo
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
 

Agile Architecture in Odessa

  • 1. Agile Architecture Odessa Johannes Brodwall, Chief scientist Exilesoft Global
  • 2. What is an architect? From greek Arkhi-Tecton Tecton: Builder Arkhi: Chief. Like “Arch angel” Or “Arch nemesis”
  • 3. What is an architect? “Chief builder”
  • 4. What is an architect? (Exilesoft definition)
  • 5. A solution architect is someone who understands the problem of the customer and uncovers and communicates a feasible solution
  • 6. A solution architect is someone who understands the customer’s problem (including contraints, context, domain knowledge) and uncovers (though a team effort) and communicates (with credibility) a feasible solution (primarily, but not exclusively technical)
  • 7. Uncover problem vision, stakeholders, usage flow Describe problem context and domain model Describe solution deployment, implementation model Simplify architecture feature oriented structure Deliver software rainbow plans
  • 8. • Describing architecture • Simplifying architecture • Delivering architecture • Delivering software
  • 11. • Understanding problem • Uncovering solution • Communicating architecture
  • 12. Understanding the problem
  • 14. For some stakeholder Who has a goal The Odessa agile user group (?) Is a type of activity Which gives a capability. Unlike most relevant alternative This has a distinguishing attribute.
  • 15. For __________________ Who ________________ The Odessa agile user group (?) Is a _________________ Which ________________. Unlike ______________________ This _______________________.
  • 17. Example vision statement
  • 18. For Agile practitioners Who need to expand on their experience and network The Smidig conference Is a networking event Which connects you with other Agile practitioners. Unlike traditional conferences This presents the experience of many people through lightning talks.
  • 19. 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 apps This is optimized for the large number of talks we have and allows us to make changes fast.
  • 20.
  • 22. Speaker Attendee Organizer Description Description Description • Experienced • Knows about agile • Volunteer • New speaker • Works in project • Works in evenings • Passionate • Norwegian • Has network Duties Duties Duties • Register talk • Pay for conference • Select talks • Upload slide • Get approval to go • Follow up • Give talk payments Values Values Values • Easy selection process • Constructive • Easy registration • Good information feedback on talk overview • Easy CfP • Never lose a participant • Fast answer • Financial transparency
  • 23. Sponsor Description • Busy • Manager • Not very interested Duties • Provide logo • Pay sponsorship Values • Informal communication • Easy evaluation
  • 25. Attendance 1. Agile project practitioner wants to learn 2. Attendee goes to Smidig website 3. Attendee registers 4. Attendee pays 5. Attendee receives confirmation mail 6. Organizer can see the registration 7. Organizer sends reminder email to attendee to come 8. Organizer prints badges for attendees 9. Attendee shows up at Smidig and has an excellent time
  • 26.
  • 27. Speaker 1. Agile experts wants to share knowledge 2. Potential speaker goes to Smidig website 3. Potential speaker registers personal info 4. Potential speaker registers talk 5. Potential speaker receives registration confirmation email 6. Organizer sees registered talk and can market speaking opportunities 7. Organizer accepts talk for confence 8. Speaker receives acceptance email – Alternative: Speaker withdraws talk – organizer updates the talk and selects another 9. Organizer prints badges for speakers 10. Speaker shows up at Smidig and gives talk
  • 29. Uncovering a solution
  • 31. Participant Speaker Organizer Paypal Smidig2011.no Printing company
  • 32. Example domain model
  • 33. 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 : {pending, • Day accept, reject} • Email_sent • Position
  • 35. Web user Developer html/http git push git push git pull Smidig- conference http Paypal github git.heroku (Rails) smtp Heroku Smtp.dreamhost.com smidigdb PostgreSQL
  • 37. 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
  • 38. /Uncovering a solution
  • 39. Communicating a solution
  • 40.
  • 41. Vision Stakeholders Usage flow Context Domain model Implementation Deployment
  • 42. Does the architect have to do this herself?
  • 44.
  • 45. /Communicating a solution
  • 49. • Lasagna architecture • Feature oriented architecture • Deployment constraints
  • 51. Person- Person- Person- PersonDao Controller Service Repository Person- Person- Person- PersonDao Controller- Repository ServiceImpl Impl Impl Impl Session- Factory
  • 52. Controllers Services Managers Workers Repositories
  • 53. Controllers DTO Services Mapping Domain Managers Workers Repositories
  • 54.
  • 56. Tidying up art (Ursus Wehrli)
  • 57.
  • 58.
  • 59. Feature oriented architecture
  • 60. Coherence • What changes together lives together
  • 61.
  • 62. Tolerance • What should be different can be different
  • 63.
  • 64. Meaning • What is central in domain is central in code
  • 65.
  • 66. Your thinking is contrained by technology fashion:
  • 67. Controllers DTO Services Mapping Domain Managers Workers Repositories
  • 68. Your solution is constrained by deployment
  • 69. Web user Browser JSON/http Controller DTO? Web Application Consumer DTO SOAP Service DTO Web Service Database
  • 70. Web user Browser JSON/http DTO? Controller Web Application DAO Database
  • 71. Web user html/http Controller Web Application DAO Database
  • 72. Web user html/http Reverse proxy html/http Controller Web Application DAO Database
  • 73. Web user Controller Rich client DTO Objects over http DTO Web Application Database
  • 74. Web user Controller Rich client Consumer DTO Web service Service DTO Web Application Database
  • 75. Web user External client Browser JSON/http Controller DTO? Web Application Consumer DTO SOAP Service DTO Web Service DAO Database
  • 76. Web user External client Browser JSON/http Service Controller DTO Web Application DAO Database
  • 80. • Common sprint problems • Demo driven development • Rainbow plans
  • 81. Common Sprint problems
  • 83. Every feature must be perfect at first try
  • 85. One-sentence Scrum
  • 86. We demonstrate progress at regular intervals
  • 87. It’s all about the demo
  • 88. We demonstrate progress at regular intervals
  • 90. Usage flow 1. Something happens in the real world 2. The event is communicated to the system 3. The system does something 4. Someone does something with the system 5. … 6. … 7. … 8. … 9. … 10. Some goal is achieved
  • 91.
  • 92.
  • 94. Usage flow: frugalflights.com 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 95. What would you do in Sprint 1?
  • 96. Usage flow: frugalflights.com 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 97. Sprint 1: Walking skeleton 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 98. Sprint 2: SMS support 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 99. Sprint 3: Complete workflow 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 100. Sprint 4: Complete SMS 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 101. Sprint 5: Web pages 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 102. Sprint 7: Integration 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 103. Sprint 8: Spit-and-polish 1. A customer wants cheap vacations 2. The customer signs up for daily or weekly notifications of special flight offers 3. Periodically the System checks which customers should get notifications 4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system 5. The System notifies customer of any matching offers via SMS • Variation: The System notifies customer of any matching offers via email 6. The customer accepts the offer via SMS 1. Variation: The customer accepts the offer on the system website 7. The System books the tickets on behalf of the customer 8. The system confirms the booking by sending an SMS to the customer 9. The customer can at any point see their active offers and accepted offers on the system website 10. The customer enjoys a cheap vacation!
  • 106. Travel light – 7 perspectives Domain oriented architecture Sprint with a (rainbow) plan
  • 109. Good architecture comes from understanding usage
  • 110. 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