SlideShare a Scribd company logo
1 of 24
Download to read offline
Agile
       versus?
       Architecture
Sunday, November 18, 12                                                                     1

This presentation is about Software Architecture and its relationship to Agile practices.

There is often a kind of tension between Agile Concepts and Architecture concepts.
Why is that?
What can be done about it?
• “Who Needs An Architect?” by Martin Fowler
            - http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf



     • “Architecture” video by Uncle Bob (Robert Martin)
            - http://www.cleancoders.com/codecast/clean-code-episode-7/show



     • “Emergent Design and Evolutionary Architecture”
            by Neal Ford - http://www.thoughtworks.com/emergent-design
     • “Design == Code” by Jack Reeves
            - http://www.developerdotstar.com/printable/mag/articles/reeves_design_main.html



     • Zen and Enterprise Architecture (me at IASA)
            - http://richardalexandergreen.wordpress.com/2011/08/17/profil/zen-and-enterprise-architecture/



     • Agile SOA, Agile EAI (me at IASA)
            - http://richardalexandergreen.wordpress.com/2011/08/17/profil/agilesoa_iasab/




Sunday, November 18, 12                                                                                      2

I am putting the links up front instead of out back.

- If you want to understand this subject better,
I can think of no faster way than watching Uncle Bob’s “Architecture” video.
It is well worth the $___ and 90 minutes it will cost you.

Tooting my own horn: I’ve also presented two technical “how to do it” talks at two regional
“International Association of Software Architects” (IASA) conferences.
Definitions

        • Architecture
               is an aspect of design.
               - It is the aspect
               where the designers decide
               how the components
               will be organized.

Sunday, November 18, 12                     3
Metaphors
        •      Enterprise Architeture
               is like urban planning.
               - There is a big-picture plan,
               but it has to be developedone project at a time.

        •      Application Architecture
               is like the floor plan of a building.
               - It identifies the major functional areas
               and indicates how they communicate.

        •      Program Architecture
               is like the layout of a refrigerator.
               - It indicates the design patterns to be used
               by those who work on various types of modules.
Sunday, November 18, 12                                           4
Sometimes there is tension between
           Agile concepts and
           Architecture concepts




Sunday, November 18, 12                                                                                                        5

Now back to our story.

Many people, especially project managers, perceive a tension between Agile practices and Architecture practices.

These tensions are real, not just perceived.

I have been an Enterprise Architect, but I am trying to quit.
My point of view is largely that of an architecture proponent.
But I have also been a project manager, methodologist, business analyst, strategic planning consultant, and still program in
Smalltalk, Java, and Erlang.
So I tend to think I can also think in other contexts.

Later, Suzanne and Scott and you in the audience will have a chance to talk about your experiences in this context.
What
                                            will we
                                           be asked
                                            to do?
Sunday, November 18, 12                                            6


One of the drivers of the tension between Agile and Architecture
is that people outside your team feel
that they need some advance notice
so that they can be ready for deployment
or provide budget.
Traditional Planning Needs
      • Tradition: Long lead times
              for infrastructure purchases and installation
              seemed to require early planning.
      • Tradition: The staffing of the project
              is based on the target framework
              for the product.
      • Tradition:  Once the project is rolling,
              service, database, and desktop engineering
              all want to know how and when
              they will be expected to contribute.
Sunday, November 18, 12                                                                                                     7
- One of the drivers of the tension between Agile concepts and Architecture concepts
is that traditionally there were long lead times for infrastructure.
- Many companies still have an annual planning cycle that is driven by their budget preparation process.
That means that their average response time is on the order of 180 days.
When I worked for Ford Power-train Engineering, we figured software time-to-solution
was on order of 3 years for new projects because of the way budgets worked.
- But even if budgeting was not a constraint,
traditionally there were other things that drive planners and managers to want an early forecast of infrastructure needs.
- If you ask your server engineering folks for a host, how long will it take them to provide it?
- Do you need to know what technology will be used for your product before you staff your project?
- Once your project is rolling,
how much lead-time do your infrastructure support groups need or want before you deploy at scale?
HOW MUCH HOW SOON?




Sunday, November 18, 12                                                                        8

The essential question is how much can be known at various stages of the project.

Early on, we can only predict some big picture aspects.
As the project progresses and individual features are created in an Agile process, detail is
developed “just in time” as needed.
Planning process
   tends to want
   up-front designs
   while agile
   prefers to keep
   options open.
       • Traditionally, (pre-agile) Architecture
               wants to preview
               how the application will be deployed.
       • In effect, several stakeholders
               want to know the how
               before the what is well established.
Sunday, November 18, 12                                                                            9

Also, of course, not-so-agile project management traditions
tend to want up-front designs and forecasts.

Those who wish to assure themselves that things are under control
want often follow the idea that there should be a roadmap and schedule
and expect reports that show that the project is on the path and on schedule.

Experienced managers know that this form of control only works for low tech projects.
Military officers have a saying: “No plan survives contact with the enemy.”
So other systems of control are needed.
As Agile people we have a control system based on evolution rather than a priori science fiction.
Keep
                                                    options
                                                     open
Sunday, November 18, 12                                                    10

Being agile in any context requires keeping your options open.

The remainder of this presentation
is mostly about various ways you can keep options open.

A good architecture allows you and your business partners the ability to
experiment,
change you mind,
and respond to changes
without getting in your own way.
Deploy via cloud
     until that
     becomes
     too
     expensive.
     Risk:
     This trades lead-time advantage
     for other problems.


Sunday, November 18, 12                                                        11

Currently, many people are suggesting
that you can work around infrastructure lead times
by deploying in the cloud.

I’ve never done that,
so I can’t really say that I know enough about it to predict the trade-offs.
Again, it is worth some thought.

Have any of you deployed in the cloud?
Design
 so that you can
 switch frameworks
 with minimum costs.

 Risk:
 Such designs
 seem too abstract
 to some, and
 they will
 ignore the design.


Sunday, November 18, 12                                                                   12

Any software architect worthy of the name
will know design patterns and programming practices
that will enable the team to switch to another deployment framework.
However,
many programmers and project managers
will find the architecture diagrams too abstract.
As a consequence, they will ignore the design.

This strategy works best with people who have strong object-oriented design experience.
Tell everyone that the early releases
            are prototypes
            to test usability (or some other quality).

            Risk: All too frequently
            the "prototype" message
            means different things to different people.




Sunday, November 18, 12                                   13


One technique that is frequently suggested is . . .

tell everyone that your early releases are prototypes.

My own experience is that this can be very dangerous
but it is worth thinking about.
Let the architecture emerge.
                Risk:
                Many teams
                do not
                know how
                to do that.
                (See next)



Sunday, November 18, 12                                                                    14

An additional strategy is to allow the architecture to emerge
as the implementation is developed.

The basic idea is that early concepts of the architecture
are often wrong
and/or examples of pre-mature optimization.

Uncle Bob says that when he and his co-inventor were developing fitness,
they assumed they would need a database to support persistence.
In the end, they discovered that persistence, in their case, did not require a database.
Agility means
              keeping your options open.
              Try to remember
              that business practice, policy, and strategy
              will change.

              Defer decisions
              to the last responsible moment.

              Embrace change
              - avoid strategies that constrain the future
              of the product.

              Define components
              and coding practices
              that minimize the costs and risks of change.




Sunday, November 18, 12                                                                      15

These are design principles that apply to architecture and agile programming.
- Don’t hard-code a business practice into your product if you can avoid it.
. . What will happen to your product if the practice changes?
. . Don’t hard-code a business policy.
. . What will happen to the investment in your product
      if your client changes their business strategy?
- Whenever possible, defer decisions to the last responsible moment.
. . This can be very difficult because it resemble vacillation.
- To embrace change you need to avoid strategies that constrain the future of the product.
. . Try to make sure that a plan B will be available.
- A good architecture allows you to replace components with minimal impact.
Architecture is not about
                          tools and frameworks.

                          Architecture is about collaboration
                              collaborating components
                          and collaborating teams.

                          Architecture
                          defines the roles and responsibilities
                          of components.

                          A good architecture (and coding practice)
                          allows components to be replaced
                          with minimal costs.

Sunday, November 18, 12                                                                                                     16

Architects and vendors sometimes cause people to think that architecture
is about the tools and frameworks that you use.
However, think about this:
- An out-house has a certain architecture. Does the architecture change when the construction material changes?
It will have the same essential architecture whether it is build of straw, wood, brick, stone, or fiberglass.
- A client-server application should have the same basic architecture
whether it is built using visual basic, or one of three dozen web application frameworks.
- The architecture of any system is really about
assigning roles and responsibilities to the various components of the system.
This is true whether the architecture is for a bridge, a city, an aircraft, a vehicle, a business, or a software product.
But an agile architecture will allow any of those components to be re-engineered at will.
Good architecture
  is like good
  object-oriented design.
  You design for
    coherence,
    minimal coupling,
    potential re-use.

  The difference between architecture and object-oriented design
  is mainly a matter of context.

  Well-designed components are like "black box"
    Other components see the interface,
    but don't need to know what goes on inside.

  Black boxes are defined by their interfaces.
    Defining the interfaces clearly (and early)
    will enable and expedite collaboration
    between programmers and teams.
Sunday, November 18, 12                                                                                         17
- Here is how hardware and software architects think about systems.
They think about the components as black boxes.
- Software architects tend to apply the same concepts that are recommended for good object-oriented design.
They design components that have good coherence, minimal coupling, and potential re-use.
The difference between software architecture design and object-oriented design is mainly a matter of context.
- Back to black boxes.
The essential idea is that you don’t need to know exactly what is going on inside the black box.
You define the function of the black box by specifying its interfaces with the outside world.
Defining interfaces is the basis basic skill for being agile in architecture.
- A modern automobile has over 3000 parts. They are typically designed by almost as many engineers.
But they come together on the assembly line with very good predictability.
An agile company can bring a new automobile to market in about 24 months from concept to production.
How do they do that?
They focus their attention on the interfaces between the components.
Technique




Sunday, November 18, 12                                                 18

There are techniques that can be applied at various levels of design.
In an enterprise context,
 certain "applications"
 (and their corresponding teams)
 are the natural candidates
 for certain responsibilities.
 - Example: Customer contact data
 is owned by Customer Relationship Management
 (CRM) system.

 - Example: Contacting a customer
 should involve CRM
 when Field Service (another system)
 requires some contact.
Sunday, November 18, 12                                                                                               19

- As an enterprise architect,
I tend to want a function to be assigned cleanly to a single component.

- But consider this, a field service person might need to contact a customer to confirm an appointment.
It seem natural enough that the field service person might contact the customer using their own cell phone.
But, what if the customer does not get the field service cell phone number and they phone your call center?
Will the call center understand what is going on?

- If something goes wrong, will we have a record of the various conversations so that we can respond intelligently.

Our customer expects us to act as if we are a single brain with some level of intelligence.
Sunday, November 18, 12                                               20


Okay. We could say that each customer contact should go through the
Customer Relationship system.

That kind of decision seems obvious enough,
but at the application level,
such assignments are not that obvious.
In an application design context,
 there are various techniques for
 predicting needed interfaces.
 (At first, the designers might not have a clear idea of what the component actors
 will be, let alone what they need to say to each other.
 But there are team ideation and collaboration techniques
 that tend to drive these things out quickly.)


 -CRC cards = Class Responsibility Collaboration cards.

 - Use Case Scenarios.                                                                        Story Cards

 - There is a variation on Behavior Driven Design (BDD)
      where the design team starts from an BDD test
      and proceeds to create stub code and interface definitions.
                  (This is similar to a CRC session,
                  but it creates interface code instead of cards.
                  It is slower but more precise.)
Sunday, November 18, 12                                                                                        21

- At the level of the application architecture,
it is often not at all obvious how responsibilities for various functions will be assigned.
But there are techniques for quickly making educated guesses.
Here are three techniques that your design team should know.
I won’t explain these because each one could be the subject of an 3 hour tutorial.

- CRC cards provide a way of writing down the basic functions to be performed and identify collaborations.
- Use case scenarios provide a way of writing out the sequence of collaborations.
- A somewhat newer technique is based on behavior driven concepts.
The basic idea is that you start with the original request and work your way to the needed class interfaces.
The advantage of this technique is that you can write the interface specifications in code.
It gives you a more precise specification but it takes more time.
there are design patterns
     and programming conventions
     that teams discuss and agree to follow.

     - Late Binding:
     Dependency Injection vs. Class Factory vs. RPC

     - Initialization: Automatic / Lazy / Eager / How much?

     - Conventions for documenting methods / messages.
     (Write an English sentence describing the action / fact.)

     - Logging: Which logging framework?
       What/When/Why to log at each level of logging.

     - How to model a real-world concept in data?
      (measurement, money, date, time-stamp, location)
Sunday, November 18, 12                                                  22

At the level of a program,
teams make decisions about how programs will be organized and written.
These decisions define patterns
that the team members are expected to follow.

The goal is make all of the programs look alike
so that a team member or future maintainer
can easily read the code.
Agile
       Architecture
Sunday, November 18, 12                                   23


In summary, if you want to be agile with architecture
and enable collaboration inside and outside your team,
focus everyone’s attention on how interfaces are defined
and in how they evolve over time.
Sunday, November 18, 12                     24



Now for some stories from the front-lines

and from someplace behind the lines.

More Related Content

What's hot

Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical DebtSteve Green
 
Master thesis presentation
Master thesis presentationMaster thesis presentation
Master thesis presentationTania Pavlenko
 
P&msp2010 08 development-management
P&msp2010 08 development-managementP&msp2010 08 development-management
P&msp2010 08 development-managementEmanuele Della Valle
 
Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Michael Stal
 
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
 
Applying agile and lean principles to the governance of software and systems ...
Applying agile and lean principles to the governance of software and systems ...Applying agile and lean principles to the governance of software and systems ...
Applying agile and lean principles to the governance of software and systems ...IBM Rational software
 
20150227 agility in it projects m niziolek (sent)
20150227  agility in it projects m niziolek (sent)20150227  agility in it projects m niziolek (sent)
20150227 agility in it projects m niziolek (sent)Marek Niziolek
 
Today’s Agile Documentation
Today’s Agile DocumentationToday’s Agile Documentation
Today’s Agile DocumentationMegan Leney
 
Cs 1023 lec 5 (week 1) edit 1
Cs 1023 lec 5 (week 1) edit 1Cs 1023 lec 5 (week 1) edit 1
Cs 1023 lec 5 (week 1) edit 1stanbridge
 
2014 02 florian-matthes-agile-enterprise-architecture-management
2014 02 florian-matthes-agile-enterprise-architecture-management2014 02 florian-matthes-agile-enterprise-architecture-management
2014 02 florian-matthes-agile-enterprise-architecture-managementEric Javier Espino Man
 
Lean Software Development Alan Shalloway
Lean Software Development   Alan ShallowayLean Software Development   Alan Shalloway
Lean Software Development Alan ShallowayValtech UK
 
Cultivating Your Design Heuristics
Cultivating Your Design HeuristicsCultivating Your Design Heuristics
Cultivating Your Design HeuristicsRebecca Wirfs-Brock
 
Documentation in the agile software development process
Documentation in the agile software development processDocumentation in the agile software development process
Documentation in the agile software development processFabian Kiss
 
WANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-setWANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-setBrad Appleton
 

What's hot (17)

Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
 
Master thesis presentation
Master thesis presentationMaster thesis presentation
Master thesis presentation
 
P&msp2010 08 development-management
P&msp2010 08 development-managementP&msp2010 08 development-management
P&msp2010 08 development-management
 
Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Oop 2014 sw architekt v3
Oop 2014 sw architekt v3
 
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?
 
Applying agile and lean principles to the governance of software and systems ...
Applying agile and lean principles to the governance of software and systems ...Applying agile and lean principles to the governance of software and systems ...
Applying agile and lean principles to the governance of software and systems ...
 
LSCITS-engineering
LSCITS-engineeringLSCITS-engineering
LSCITS-engineering
 
20150227 agility in it projects m niziolek (sent)
20150227  agility in it projects m niziolek (sent)20150227  agility in it projects m niziolek (sent)
20150227 agility in it projects m niziolek (sent)
 
Today’s Agile Documentation
Today’s Agile DocumentationToday’s Agile Documentation
Today’s Agile Documentation
 
Ultimate agilisttokyo
Ultimate agilisttokyoUltimate agilisttokyo
Ultimate agilisttokyo
 
Cs 1023 lec 5 (week 1) edit 1
Cs 1023 lec 5 (week 1) edit 1Cs 1023 lec 5 (week 1) edit 1
Cs 1023 lec 5 (week 1) edit 1
 
2014 02 florian-matthes-agile-enterprise-architecture-management
2014 02 florian-matthes-agile-enterprise-architecture-management2014 02 florian-matthes-agile-enterprise-architecture-management
2014 02 florian-matthes-agile-enterprise-architecture-management
 
Lean Software Development Alan Shalloway
Lean Software Development   Alan ShallowayLean Software Development   Alan Shalloway
Lean Software Development Alan Shalloway
 
Cultivating Your Design Heuristics
Cultivating Your Design HeuristicsCultivating Your Design Heuristics
Cultivating Your Design Heuristics
 
Documentation in the agile software development process
Documentation in the agile software development processDocumentation in the agile software development process
Documentation in the agile software development process
 
Demystify Agile
Demystify AgileDemystify Agile
Demystify Agile
 
WANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-setWANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-set
 

Similar to Agile Architecture (MAE slides with speaker notes)

Agile Architecture (MAE slides)
Agile Architecture (MAE slides)Agile Architecture (MAE slides)
Agile Architecture (MAE slides)Richard Green
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Marvin Heery
 
Getting agile with drupal
Getting agile with drupalGetting agile with drupal
Getting agile with drupalPromet Source
 
How to be an agile programmer.
How to be an agile programmer.How to be an agile programmer.
How to be an agile programmer.Tsuyoshi Ushio
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectivelyAshutosh Agarwal
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleDhivyaa C.R
 
Project post-mortem analysis
Project post-mortem analysisProject post-mortem analysis
Project post-mortem analysisJaiveer Singh
 
Working with Developers
Working with DevelopersWorking with Developers
Working with DevelopersPaul Walk
 
Project Management for Freelancers
Project Management for FreelancersProject Management for Freelancers
Project Management for FreelancersCrystal Williams
 
HanoiScrum: Agile co-exists with Waterfall
 HanoiScrum: Agile co-exists with Waterfall HanoiScrum: Agile co-exists with Waterfall
HanoiScrum: Agile co-exists with WaterfallVu Hung Nguyen
 
Project Based Training Programme
Project Based Training Programme Project Based Training Programme
Project Based Training Programme Dhaval Anjaria
 
importance of resources allocation in formal method of software engineering ...
 importance of resources allocation in formal method of software engineering ... importance of resources allocation in formal method of software engineering ...
importance of resources allocation in formal method of software engineering ...Abdul Naqashbandi
 
He mian agile project-inception
He mian   agile project-inceptionHe mian   agile project-inception
He mian agile project-inceptionOdd-e
 
Architecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to SuccessArchitecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to SuccessRandy Williams
 
User Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyUser Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyJoshua Randall
 
Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Daniel Leroux
 
Approaches for Distributed Agile
Approaches for Distributed AgileApproaches for Distributed Agile
Approaches for Distributed AgileBrad Kaufman
 
Agile vs Waterfall: May the 4th Be With You in the Great Debate
 Agile vs Waterfall: May the 4th Be With You in the Great Debate Agile vs Waterfall: May the 4th Be With You in the Great Debate
Agile vs Waterfall: May the 4th Be With You in the Great DebateAggregage
 

Similar to Agile Architecture (MAE slides with speaker notes) (20)

Agile Architecture (MAE slides)
Agile Architecture (MAE slides)Agile Architecture (MAE slides)
Agile Architecture (MAE slides)
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4
 
Getting agile with drupal
Getting agile with drupalGetting agile with drupal
Getting agile with drupal
 
How to be an agile programmer.
How to be an agile programmer.How to be an agile programmer.
How to be an agile programmer.
 
L21 Architecture and Agile
L21 Architecture and AgileL21 Architecture and Agile
L21 Architecture and Agile
 
Agile pm v2
Agile pm v2Agile pm v2
Agile pm v2
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectively
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycle
 
Project post-mortem analysis
Project post-mortem analysisProject post-mortem analysis
Project post-mortem analysis
 
Working with Developers
Working with DevelopersWorking with Developers
Working with Developers
 
Project Management for Freelancers
Project Management for FreelancersProject Management for Freelancers
Project Management for Freelancers
 
HanoiScrum: Agile co-exists with Waterfall
 HanoiScrum: Agile co-exists with Waterfall HanoiScrum: Agile co-exists with Waterfall
HanoiScrum: Agile co-exists with Waterfall
 
Project Based Training Programme
Project Based Training Programme Project Based Training Programme
Project Based Training Programme
 
importance of resources allocation in formal method of software engineering ...
 importance of resources allocation in formal method of software engineering ... importance of resources allocation in formal method of software engineering ...
importance of resources allocation in formal method of software engineering ...
 
He mian agile project-inception
He mian   agile project-inceptionHe mian   agile project-inception
He mian agile project-inception
 
Architecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to SuccessArchitecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to Success
 
User Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyUser Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the Ugly
 
Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131
 
Approaches for Distributed Agile
Approaches for Distributed AgileApproaches for Distributed Agile
Approaches for Distributed Agile
 
Agile vs Waterfall: May the 4th Be With You in the Great Debate
 Agile vs Waterfall: May the 4th Be With You in the Great Debate Agile vs Waterfall: May the 4th Be With You in the Great Debate
Agile vs Waterfall: May the 4th Be With You in the Great Debate
 

More from Richard Green

Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming LanguageRichard Green
 
Agile SOA - Agile EAI
Agile SOA - Agile EAIAgile SOA - Agile EAI
Agile SOA - Agile EAIRichard Green
 
Practical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data ManagementPractical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data ManagementRichard Green
 
Zen and Enterprise Architecture
Zen and Enterprise ArchitectureZen and Enterprise Architecture
Zen and Enterprise ArchitectureRichard Green
 

More from Richard Green (7)

Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming Language
 
User stories
User storiesUser stories
User stories
 
Genetic algorithms
Genetic algorithmsGenetic algorithms
Genetic algorithms
 
Agile SOA - Agile EAI
Agile SOA - Agile EAIAgile SOA - Agile EAI
Agile SOA - Agile EAI
 
Given When Then
Given When ThenGiven When Then
Given When Then
 
Practical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data ManagementPractical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data Management
 
Zen and Enterprise Architecture
Zen and Enterprise ArchitectureZen and Enterprise Architecture
Zen and Enterprise Architecture
 

Recently uploaded

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 

Recently uploaded (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 

Agile Architecture (MAE slides with speaker notes)

  • 1. Agile versus? Architecture Sunday, November 18, 12 1 This presentation is about Software Architecture and its relationship to Agile practices. There is often a kind of tension between Agile Concepts and Architecture concepts. Why is that? What can be done about it?
  • 2. • “Who Needs An Architect?” by Martin Fowler - http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf • “Architecture” video by Uncle Bob (Robert Martin) - http://www.cleancoders.com/codecast/clean-code-episode-7/show • “Emergent Design and Evolutionary Architecture” by Neal Ford - http://www.thoughtworks.com/emergent-design • “Design == Code” by Jack Reeves - http://www.developerdotstar.com/printable/mag/articles/reeves_design_main.html • Zen and Enterprise Architecture (me at IASA) - http://richardalexandergreen.wordpress.com/2011/08/17/profil/zen-and-enterprise-architecture/ • Agile SOA, Agile EAI (me at IASA) - http://richardalexandergreen.wordpress.com/2011/08/17/profil/agilesoa_iasab/ Sunday, November 18, 12 2 I am putting the links up front instead of out back. - If you want to understand this subject better, I can think of no faster way than watching Uncle Bob’s “Architecture” video. It is well worth the $___ and 90 minutes it will cost you. Tooting my own horn: I’ve also presented two technical “how to do it” talks at two regional “International Association of Software Architects” (IASA) conferences.
  • 3. Definitions • Architecture is an aspect of design. - It is the aspect where the designers decide how the components will be organized. Sunday, November 18, 12 3
  • 4. Metaphors • Enterprise Architeture is like urban planning. - There is a big-picture plan, but it has to be developedone project at a time. • Application Architecture is like the floor plan of a building. - It identifies the major functional areas and indicates how they communicate. • Program Architecture is like the layout of a refrigerator. - It indicates the design patterns to be used by those who work on various types of modules. Sunday, November 18, 12 4
  • 5. Sometimes there is tension between Agile concepts and Architecture concepts Sunday, November 18, 12 5 Now back to our story. Many people, especially project managers, perceive a tension between Agile practices and Architecture practices. These tensions are real, not just perceived. I have been an Enterprise Architect, but I am trying to quit. My point of view is largely that of an architecture proponent. But I have also been a project manager, methodologist, business analyst, strategic planning consultant, and still program in Smalltalk, Java, and Erlang. So I tend to think I can also think in other contexts. Later, Suzanne and Scott and you in the audience will have a chance to talk about your experiences in this context.
  • 6. What will we be asked to do? Sunday, November 18, 12 6 One of the drivers of the tension between Agile and Architecture is that people outside your team feel that they need some advance notice so that they can be ready for deployment or provide budget.
  • 7. Traditional Planning Needs • Tradition: Long lead times for infrastructure purchases and installation seemed to require early planning. • Tradition: The staffing of the project is based on the target framework for the product. • Tradition:  Once the project is rolling, service, database, and desktop engineering all want to know how and when they will be expected to contribute. Sunday, November 18, 12 7 - One of the drivers of the tension between Agile concepts and Architecture concepts is that traditionally there were long lead times for infrastructure. - Many companies still have an annual planning cycle that is driven by their budget preparation process. That means that their average response time is on the order of 180 days. When I worked for Ford Power-train Engineering, we figured software time-to-solution was on order of 3 years for new projects because of the way budgets worked. - But even if budgeting was not a constraint, traditionally there were other things that drive planners and managers to want an early forecast of infrastructure needs. - If you ask your server engineering folks for a host, how long will it take them to provide it? - Do you need to know what technology will be used for your product before you staff your project? - Once your project is rolling, how much lead-time do your infrastructure support groups need or want before you deploy at scale?
  • 8. HOW MUCH HOW SOON? Sunday, November 18, 12 8 The essential question is how much can be known at various stages of the project. Early on, we can only predict some big picture aspects. As the project progresses and individual features are created in an Agile process, detail is developed “just in time” as needed.
  • 9. Planning process tends to want up-front designs while agile prefers to keep options open. • Traditionally, (pre-agile) Architecture wants to preview how the application will be deployed. • In effect, several stakeholders want to know the how before the what is well established. Sunday, November 18, 12 9 Also, of course, not-so-agile project management traditions tend to want up-front designs and forecasts. Those who wish to assure themselves that things are under control want often follow the idea that there should be a roadmap and schedule and expect reports that show that the project is on the path and on schedule. Experienced managers know that this form of control only works for low tech projects. Military officers have a saying: “No plan survives contact with the enemy.” So other systems of control are needed. As Agile people we have a control system based on evolution rather than a priori science fiction.
  • 10. Keep options open Sunday, November 18, 12 10 Being agile in any context requires keeping your options open. The remainder of this presentation is mostly about various ways you can keep options open. A good architecture allows you and your business partners the ability to experiment, change you mind, and respond to changes without getting in your own way.
  • 11. Deploy via cloud until that becomes too expensive. Risk: This trades lead-time advantage for other problems. Sunday, November 18, 12 11 Currently, many people are suggesting that you can work around infrastructure lead times by deploying in the cloud. I’ve never done that, so I can’t really say that I know enough about it to predict the trade-offs. Again, it is worth some thought. Have any of you deployed in the cloud?
  • 12. Design so that you can switch frameworks with minimum costs. Risk: Such designs seem too abstract to some, and they will ignore the design. Sunday, November 18, 12 12 Any software architect worthy of the name will know design patterns and programming practices that will enable the team to switch to another deployment framework. However, many programmers and project managers will find the architecture diagrams too abstract. As a consequence, they will ignore the design. This strategy works best with people who have strong object-oriented design experience.
  • 13. Tell everyone that the early releases are prototypes to test usability (or some other quality). Risk: All too frequently the "prototype" message means different things to different people. Sunday, November 18, 12 13 One technique that is frequently suggested is . . . tell everyone that your early releases are prototypes. My own experience is that this can be very dangerous but it is worth thinking about.
  • 14. Let the architecture emerge. Risk: Many teams do not know how to do that. (See next) Sunday, November 18, 12 14 An additional strategy is to allow the architecture to emerge as the implementation is developed. The basic idea is that early concepts of the architecture are often wrong and/or examples of pre-mature optimization. Uncle Bob says that when he and his co-inventor were developing fitness, they assumed they would need a database to support persistence. In the end, they discovered that persistence, in their case, did not require a database.
  • 15. Agility means keeping your options open. Try to remember that business practice, policy, and strategy will change. Defer decisions to the last responsible moment. Embrace change - avoid strategies that constrain the future of the product. Define components and coding practices that minimize the costs and risks of change. Sunday, November 18, 12 15 These are design principles that apply to architecture and agile programming. - Don’t hard-code a business practice into your product if you can avoid it. . . What will happen to your product if the practice changes? . . Don’t hard-code a business policy. . . What will happen to the investment in your product if your client changes their business strategy? - Whenever possible, defer decisions to the last responsible moment. . . This can be very difficult because it resemble vacillation. - To embrace change you need to avoid strategies that constrain the future of the product. . . Try to make sure that a plan B will be available. - A good architecture allows you to replace components with minimal impact.
  • 16. Architecture is not about tools and frameworks. Architecture is about collaboration collaborating components and collaborating teams. Architecture defines the roles and responsibilities of components. A good architecture (and coding practice) allows components to be replaced with minimal costs. Sunday, November 18, 12 16 Architects and vendors sometimes cause people to think that architecture is about the tools and frameworks that you use. However, think about this: - An out-house has a certain architecture. Does the architecture change when the construction material changes? It will have the same essential architecture whether it is build of straw, wood, brick, stone, or fiberglass. - A client-server application should have the same basic architecture whether it is built using visual basic, or one of three dozen web application frameworks. - The architecture of any system is really about assigning roles and responsibilities to the various components of the system. This is true whether the architecture is for a bridge, a city, an aircraft, a vehicle, a business, or a software product. But an agile architecture will allow any of those components to be re-engineered at will.
  • 17. Good architecture is like good object-oriented design. You design for coherence, minimal coupling, potential re-use. The difference between architecture and object-oriented design is mainly a matter of context. Well-designed components are like "black box" Other components see the interface, but don't need to know what goes on inside. Black boxes are defined by their interfaces. Defining the interfaces clearly (and early) will enable and expedite collaboration between programmers and teams. Sunday, November 18, 12 17 - Here is how hardware and software architects think about systems. They think about the components as black boxes. - Software architects tend to apply the same concepts that are recommended for good object-oriented design. They design components that have good coherence, minimal coupling, and potential re-use. The difference between software architecture design and object-oriented design is mainly a matter of context. - Back to black boxes. The essential idea is that you don’t need to know exactly what is going on inside the black box. You define the function of the black box by specifying its interfaces with the outside world. Defining interfaces is the basis basic skill for being agile in architecture. - A modern automobile has over 3000 parts. They are typically designed by almost as many engineers. But they come together on the assembly line with very good predictability. An agile company can bring a new automobile to market in about 24 months from concept to production. How do they do that? They focus their attention on the interfaces between the components.
  • 18. Technique Sunday, November 18, 12 18 There are techniques that can be applied at various levels of design.
  • 19. In an enterprise context, certain "applications" (and their corresponding teams) are the natural candidates for certain responsibilities. - Example: Customer contact data is owned by Customer Relationship Management (CRM) system. - Example: Contacting a customer should involve CRM when Field Service (another system) requires some contact. Sunday, November 18, 12 19 - As an enterprise architect, I tend to want a function to be assigned cleanly to a single component. - But consider this, a field service person might need to contact a customer to confirm an appointment. It seem natural enough that the field service person might contact the customer using their own cell phone. But, what if the customer does not get the field service cell phone number and they phone your call center? Will the call center understand what is going on? - If something goes wrong, will we have a record of the various conversations so that we can respond intelligently. Our customer expects us to act as if we are a single brain with some level of intelligence.
  • 20. Sunday, November 18, 12 20 Okay. We could say that each customer contact should go through the Customer Relationship system. That kind of decision seems obvious enough, but at the application level, such assignments are not that obvious.
  • 21. In an application design context, there are various techniques for predicting needed interfaces. (At first, the designers might not have a clear idea of what the component actors will be, let alone what they need to say to each other. But there are team ideation and collaboration techniques that tend to drive these things out quickly.) -CRC cards = Class Responsibility Collaboration cards. - Use Case Scenarios. Story Cards - There is a variation on Behavior Driven Design (BDD) where the design team starts from an BDD test and proceeds to create stub code and interface definitions. (This is similar to a CRC session, but it creates interface code instead of cards. It is slower but more precise.) Sunday, November 18, 12 21 - At the level of the application architecture, it is often not at all obvious how responsibilities for various functions will be assigned. But there are techniques for quickly making educated guesses. Here are three techniques that your design team should know. I won’t explain these because each one could be the subject of an 3 hour tutorial. - CRC cards provide a way of writing down the basic functions to be performed and identify collaborations. - Use case scenarios provide a way of writing out the sequence of collaborations. - A somewhat newer technique is based on behavior driven concepts. The basic idea is that you start with the original request and work your way to the needed class interfaces. The advantage of this technique is that you can write the interface specifications in code. It gives you a more precise specification but it takes more time.
  • 22. there are design patterns and programming conventions that teams discuss and agree to follow. - Late Binding: Dependency Injection vs. Class Factory vs. RPC - Initialization: Automatic / Lazy / Eager / How much? - Conventions for documenting methods / messages. (Write an English sentence describing the action / fact.) - Logging: Which logging framework? What/When/Why to log at each level of logging. - How to model a real-world concept in data? (measurement, money, date, time-stamp, location) Sunday, November 18, 12 22 At the level of a program, teams make decisions about how programs will be organized and written. These decisions define patterns that the team members are expected to follow. The goal is make all of the programs look alike so that a team member or future maintainer can easily read the code.
  • 23. Agile Architecture Sunday, November 18, 12 23 In summary, if you want to be agile with architecture and enable collaboration inside and outside your team, focus everyone’s attention on how interfaces are defined and in how they evolve over time.
  • 24. Sunday, November 18, 12 24 Now for some stories from the front-lines and from someplace behind the lines.