SlideShare una empresa de Scribd logo
1 de 106
Descargar para leer sin conexión
Agile Architecture
                Colombo Agile Meetup
      Johannes Brodwall, Chief scientist
                      Exilesoft Global
What is an architect?
      From greek Arkhi-Tecton
Arkhi: Chief. Like “Arch angel”
            Or “Arch nemesis”
                Tecton: 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 the
         problem
(Tool time)
For some stakeholder
                 Who has a goal
       The Colombo Agile Meetup
              Is a type of activity
         Which gives a capability.

  Unlike most relevant alternative
This has a distinguishing attribute.
For anyone interested in agile methods
             Who ________________
          The Colombo Agile Meetup
             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 :                  •       Day
                       {pending, accept, rejec
                       t}
                   •   Email_sent
                   •   Position
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
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
/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
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
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

Más contenido relacionado

Destacado

The tension between agile and architecture
The tension between agile and architectureThe tension between agile and architecture
The tension between agile and architecturePeter Hendriks
 
How and why to design your teams for modern software systems - Agile in Leeds...
How and why to design your teams for modern software systems - Agile in Leeds...How and why to design your teams for modern software systems - Agile in Leeds...
How and why to design your teams for modern software systems - Agile in Leeds...Skelton Thatcher Consulting Ltd
 
Agile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayAgile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayGary Pedretti
 
Does Agile Enterprise Architecture = Agile + Enterprise Architecture?
Does Agile Enterprise Architecture = Agile + Enterprise Architecture?Does Agile Enterprise Architecture = Agile + Enterprise Architecture?
Does Agile Enterprise Architecture = Agile + Enterprise Architecture?Jason Bloomberg
 
Adam boczek 2015 agile architecture in 10 steps v1.0
Adam boczek 2015 agile architecture in 10 steps v1.0Adam boczek 2015 agile architecture in 10 steps v1.0
Adam boczek 2015 agile architecture in 10 steps v1.0iasaglobal
 
Enterprise Architecture, the Agile Way
Enterprise Architecture, the Agile WayEnterprise Architecture, the Agile Way
Enterprise Architecture, the Agile Wayconsulting_croz
 
Microservices: Architecture for Agile Software Development
Microservices: Architecture for Agile Software DevelopmentMicroservices: Architecture for Agile Software Development
Microservices: Architecture for Agile Software DevelopmentEberhard Wolff
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
 

Destacado (10)

The tension between agile and architecture
The tension between agile and architectureThe tension between agile and architecture
The tension between agile and architecture
 
Architectural runway
Architectural runwayArchitectural runway
Architectural runway
 
How and why to design your teams for modern software systems - Agile in Leeds...
How and why to design your teams for modern software systems - Agile in Leeds...How and why to design your teams for modern software systems - Agile in Leeds...
How and why to design your teams for modern software systems - Agile in Leeds...
 
Agile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayAgile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we Today
 
Does Agile Enterprise Architecture = Agile + Enterprise Architecture?
Does Agile Enterprise Architecture = Agile + Enterprise Architecture?Does Agile Enterprise Architecture = Agile + Enterprise Architecture?
Does Agile Enterprise Architecture = Agile + Enterprise Architecture?
 
MAPPING TOGAF® ADM AND AGILE APPROACH
MAPPING TOGAF® ADM AND AGILE APPROACHMAPPING TOGAF® ADM AND AGILE APPROACH
MAPPING TOGAF® ADM AND AGILE APPROACH
 
Adam boczek 2015 agile architecture in 10 steps v1.0
Adam boczek 2015 agile architecture in 10 steps v1.0Adam boczek 2015 agile architecture in 10 steps v1.0
Adam boczek 2015 agile architecture in 10 steps v1.0
 
Enterprise Architecture, the Agile Way
Enterprise Architecture, the Agile WayEnterprise Architecture, the Agile Way
Enterprise Architecture, the Agile Way
 
Microservices: Architecture for Agile Software Development
Microservices: Architecture for Agile Software DevelopmentMicroservices: Architecture for Agile Software Development
Microservices: Architecture for Agile Software Development
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 

Similar a Agile Architecture

Agile Architecture in Odessa
Agile Architecture in OdessaAgile Architecture in Odessa
Agile Architecture in OdessaJohannes Brodwall
 
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
 
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
 
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
 
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
 
Behavior Driven Development - TdT@Cluj #15
Behavior Driven Development - TdT@Cluj #15Behavior Driven Development - TdT@Cluj #15
Behavior Driven Development - TdT@Cluj #15Tabăra de Testare
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building BlocksMark Windholtz
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022 Michael Yagudaev
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerShotaro Sakamaki
 
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
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time rebootKentaro Goto
 
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
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia eventXebia India
 
Schibsted Spain - Day 1 - DDD Course
Schibsted Spain - Day 1 - DDD CourseSchibsted Spain - Day 1 - DDD Course
Schibsted Spain - Day 1 - DDD CourseKevin Mas Ruiz
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
 

Similar a Agile Architecture (20)

Agile Architecture in Odessa
Agile Architecture in OdessaAgile Architecture in Odessa
Agile Architecture in Odessa
 
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
 
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
 
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
 
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
 
Behavior Driven Development - TdT@Cluj #15
Behavior Driven Development - TdT@Cluj #15Behavior Driven Development - TdT@Cluj #15
Behavior Driven Development - TdT@Cluj #15
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building Blocks
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote Worker
 
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...
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
API Design Workflows
API Design WorkflowsAPI Design Workflows
API Design Workflows
 
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 ...
 
DITA Interoperability
DITA InteroperabilityDITA Interoperability
DITA Interoperability
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
 
Schibsted Spain - Day 1 - DDD Course
Schibsted Spain - Day 1 - DDD CourseSchibsted Spain - Day 1 - DDD Course
Schibsted Spain - Day 1 - DDD Course
 
SDWest2005Goetsch
SDWest2005GoetschSDWest2005Goetsch
SDWest2005Goetsch
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 

Más 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
 

Más 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

  • 1. Agile Architecture Colombo Agile Meetup Johannes Brodwall, Chief scientist Exilesoft Global
  • 2. What is an architect? From greek Arkhi-Tecton Arkhi: Chief. Like “Arch angel” Or “Arch nemesis” Tecton: Builder
  • 3. What is an architect? (Exilesoft definition)
  • 4. A solution architect is someone who understands the problem of the customer and uncovers and communicates a feasible solution
  • 5. 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)
  • 6. 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
  • 7. • Describing architecture • Simplifying architecture • Delivering architecture • Delivering software
  • 10. Understanding the problem
  • 12. For some stakeholder Who has a goal The Colombo Agile Meetup Is a type of activity Which gives a capability. Unlike most relevant alternative This has a distinguishing attribute.
  • 13. For anyone interested in agile methods Who ________________ The Colombo Agile Meetup Is a _________________ Which ________________. Unlike ______________________ This _______________________.
  • 15. Example vision statement
  • 16. 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.
  • 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 apps This is optimized for the large number of talks we have and allows us to make changes fast.
  • 18.
  • 20. 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
  • 21. Sponsor Description • Busy • Manager • Not very interested Duties • Provide logo • Pay sponsorship Values • Informal communication • Easy evaluation
  • 23. 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
  • 24.
  • 25. 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
  • 27. Uncovering a solution
  • 29. Participant Speaker Organizer Paypal Smidig2011.no Printing company
  • 30. Example domain model
  • 31. 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
  • 33. 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
  • 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
  • 36. /Uncovering a solution
  • 37. Communicating a solution
  • 38.
  • 39. Vision Stakeholders Usage flow Context Domain model Implementation Deployment
  • 40. Does the architect have to do this herself?
  • 42.
  • 43. /Communicating a solution
  • 48. Person- Person- Person- PersonDao Controller Service Repository Person- Person- Person- PersonDao Controller- Repository ServiceImpl Impl Impl Impl Session- Factory
  • 49. Controllers Services Managers Workers Repositories
  • 50. Controllers DTO Services Mapping Domain Managers Workers Repositories
  • 51.
  • 53. Tidying up art (Ursus Wehrli)
  • 54.
  • 55.
  • 56. Feature oriented architecture
  • 57. Coherence • What changes together lives together
  • 58.
  • 59. Tolerance • What should be different can be different
  • 60.
  • 61. Meaning • What is central in domain is central in code
  • 62.
  • 63. Your thinking is contrained by technology fashion:
  • 64. Controllers DTO Services Mapping Domain Managers Workers Repositories
  • 65. Your solution is constrained by deployment
  • 66. Web user Browser JSON/http Controller DTO? Web Application Consumer DTO SOAP Service DTO Web Service Database
  • 67. Web user Browser JSON/http DTO? Controller Web Application DAO Database
  • 68. Web user html/http Controller Web Application DAO Database
  • 69. Web user html/http Reverse proxy html/http Controller Web Application DAO Database
  • 70. Web user Controller Rich client DTO Objects over http DTO Web Application Database
  • 71. Web user Controller Rich client Consumer DTO Web service Service DTO Web Application Database
  • 72. Web user External client Browser JSON/http Controller DTO? Web Application Consumer DTO SOAP Service DTO Web Service DAO Database
  • 73. Web user External client Browser JSON/http Service Controller DTO Web Application DAO Database
  • 77. Common Sprint problems
  • 79. Every feature must be perfect at first try
  • 81. One-sentence Scrum
  • 82. We demonstrate progress at regular intervals
  • 83. It’s all about the demo
  • 84. We demonstrate progress at regular intervals
  • 86. 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
  • 87.
  • 88.
  • 90. 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!
  • 91. What would you do in Sprint 1?
  • 92. 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!
  • 93. 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!
  • 94. 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!
  • 95. 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!
  • 96. 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!
  • 97. 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!
  • 98. 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!
  • 99. 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!
  • 102. Travel light – 7 perspectives Domain oriented architecture Sprint with a (rainbow) plan
  • 105. Good architecture comes from understanding usage
  • 106. 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