SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
The tension between agile
     and architecture
  Useful definitions on software design and architecture

                                        Peter Hendriks
                                        IT Architect at Info Support B.V.
                                        peterhe@infosupport.com
                                        @PeterHendriks80
                                        blogs.infosupport.com/peterhe/
Agile and architecture: cats and dogs?
Agile and architecture are often considered cats and dogs.
Many "classic" software architecture methods are
considered an enemy of agile principles: often describing
heavyweight, upfront documents and -decisions, and a
hierarchy with architects wielding all technical decision
power and responsibility.

Although there are some new "agile architecture" concepts
out there, these typically only address small parts of the
problem and often require significant skill to practice
correctly. There is even the notion that architecture is not
needed anymore when applying agile practices.

But what is "architecture" anyway?
Architecture: a concept, process and role
Like so many software development terms, "architecture" is
not a very well defined thing. For starters, the term
architecture is used for wildly different categories:

The architecture concept: the notion that certain aspects and
design choices of a system are more important and
fundamental.

The architecture process: the way architecture concerns are
addressed in the way teams

The architect role: the person considered responsible for
architecture

We’ll look at each category to establish how "agile friendly"
architecture actually is.
A definition of architecture: the concept

"Worries about the hard stuff - whatever that organization thinks is hard“
  - Martin Fowler and Ralph Johnson, thought leaders in agile and design, on architecture




                                       "Design is the structure or behavior of an system whose presence resolves or
                                                   contributes to the resolution of forces on that system.“
                                                     - Grady Booch, one of the fathers of modern software design, on design


                                          "All architecture is design but not all design is architecture. Architecture
                                           represents the significant design decisions that shape a system, where
                                                          significant is measured by cost of change.“
                                                                       - Grady Booch, now on architecture
Architecture versus design
A design has correlated, but different goals. Design may be needed to allow
communication, collaboration and complex problem solving. Since all architecture is
design, these goals matter for architectural significant design decisions as well.

Design often exists in multiple levels of detail, with the lowest level being the code. High
level design is often considered the architecture. Most of the time this makes sense: high
level design naturally contain a lot of decisions that are hard to change after the system is
built.

Considering high level design as the only architecture is risky: you might want to do too
much of it, while missing decisions with a high cost of change at lower levels.
Architecture in the context of system design
 An example model of system design, relevant forces, and architecture
                                                                               Features           Operational costs
                                      Laws
                           Security            Monitoring & control
                                                                                          Performance

                                                           Stakeholder needs
   Existing systems
                                                                System                                                Technology changes
Common practices
                                                                                                                         Team changes
                   Environment                                                                                Future          Productivity
                                                      Design                  Design
 Licensing deals
                                                                                                                         Extendable
    Corporate standards                    Design               Design                 Design

                                                              Achievability

                                 Technology capabilities        Team skills        Project budget (time/money)

                                       Framework support
The need for the architecture concept in agile
Architecture-as-a-concept assumes that certain parts of a system will be hard to change.
It also assumes that design decisions here will be considered more significant, because
of the greater short-term risk and possible long-term limitations for the evolution of the
system.

It's safe to say these assumptions are still valid for systems built in an agile fashion.
Common agile practices, like automated testing and short iterations, drive down the
overall cost of change. In that sense, agile reduces the amount of architecture needed.
But there is no silver bullet here, there will still be "hard stuff". Making wrong decisions
here will still seriously hurt or kill an agile project.

Agile practices, like working in small teams, releasing early and often or being testable,
often add extra demands on the system design, even at the architecture level. Also,
some architectural design decisions, like applying modularity, may reduce cost of change
and support other important agile values. In order for agile to be a successful approach
to building a system, the architecture must support it.
Where is the problem?
Agile is about embracing change. You want to change because the old
goal has become suboptimal. You want to build “the right thing”.

Architecture is about recognizing that some design decisions are
expensive to change. It will be suboptimal to change those often. You
want to build “the thing right”.

Architecture is a natural effect of building complex systems, and as such,
also a factor for agile teams. Agile and architecture can complement each
other very well, building “the right thing in the right way”.

However, there is a tension here. When we look at architecture as a
process, this becomes more apparent.
Defining the architecture process
               If we consider that architecture is about design decisions that have a
               high cost of change, then an architecture process should strive to lower
               the amount of these decisions, and the rate of change on these
               decisions once they are committed to.

               As a secondary goal, the process should help to identify what changes
               will be more costly to make, making the software development process
               more predictable and improving the confidence of the team.

                Lowering rates of change and long term predictions does not feel very
                   agile. It isn't. In a way, this is where the ideals of agile meet the
                                        boundaries of practical reality.
Why change a design decision?
Reason for change:                                               Considering these goals, it becomes apparent
                                                                that the architecture process should involve all
• The decision was wrong; the resulting system does not work
                                                                  disciplines in a software development team.
• A change in a force invalidates the decision
• A more optimal decision is found                             Investigating and negotiating stable insight is key
                                                                to predict whether the design decision will last
Some countermeasures:                                                         for a longer period.
• Investigate unclear and changing forces
                                                               Testing design assumptions as soon as possible
• Consult existing experience and expertise                     and fixing problems before building an entire
• Early evaluation of the decision                                  system on them can help immensely.
• Delay the decision
• Add abstractions that are more stable                          Planning the system evolution around tough
                                                               choices, or adding abstractions, can postpone or
                                                                          alleviate effects of change.
Deliberate vs accidental architecture
During the evolution of a system, not all design decisions with a
high cost of change are deliberately made using an architecture
process. This design that just happens is often called “accidental
architecture”.

Accidental architecture can be a judgment- or communication
problem, but also a learning effect of building the system.

We should expect that while the system is being built, we may
periodically need to evaluate which design decisions matter
most, and if existing decisions need adjustments.
Agile places heavy emphasis on feedback early and often. This is
  a big help for an architecture process. We can continuously
evaluate design decisions using the real system as it’s built. Also,
     we learn what matters for decisions that come up later.
Tools and practices for architecture processes
               There are many established software architecture tools and practices
               available. These vary from complete and specialized process frameworks
               like TOGAF to various notations and metamodels, like UML and
               ArchiMate, to best practices, like design patterns and the SOLID design
               principles.

               There are design tools, like Enterprise Architect, or code analysis tools like
               Structure101, that can be very useful, but require skill to use. Often, a
               whiteboard is used, easy for everyone to participate, without the
               distractions of having to operating a complex tool while thinking about a
               difficult problem.
               Personally, I believe all these methods and tools can be applied in an agile
               fashion, if used in a small package form. However, they are often
               marketed as big and overarching things. This results in a lot of resistance
               in agile teams.
The role of the architect
So who is driving the architecture process? In the "classical" architecture process, an architect creates a
detailed Big Design Up Front (BDUF). The architect is a senior specialist, who knows what's the best way to
build the system and anticipates how design forces will behave during the lifetime of the system. He/she
designs the system before the "construction" team starts, so they don’t have to wait during the period needed
to create the BDUF. Then, the process aggressively limits any deviation to the original architecture.

As an industry, we have learned that this is an naïve approach. It assumes an all-knowing architect, a
completely predictable future, and a team that just reads a document and then knows what to do.

However, consider the architecture process we've just discussed.     Even in an agile team, this definitely
There is complex decision making, multi-discipline collaboration     seems like a candidate for a specialist role,
and communication, and specialized design methods and tools.         especially for larger systems, where the
Experience with both the problem domain and the technologies         amount of architecture rapidly increases
used to build the system are essential to effectively predict and    and the stakes are much higher.
communicate design decisions and their effects.
Is the architect part of “the team”?
          Agile focuses on small, empowered teams. In most cases, the biggest challenge for an
          architect is collaborating with everyone involved creating the system. From a team
          perspective, the best way to collaborate is to be part of the team.

          An architect ideally does hands-on work. Reading and writing code, for instance, is
          useful for a software architect to feel the effect of design decisions. It is also a great
          way to earn the respect of the team. Being part of the team makes it easier to do
          hands-on work.

          In larger enterprises, the architecture may span multiple teams and systems. In this
          case, the architect operates on a different level, often called enterprise architecture,
          outside the team. Usually, this architecture is perceived different, with other main
          stakeholders and design goals, but still is very important for a team building a system.
          For an architect, trust is a key aspect of being successful. Face-to-face communication
            and close collaboration, whether as formal part of the team or not, helps to build
                             trust, and provides a lot of learning opportunities.
Wrap-up
• Software architecture is all about design decisions with a high
  cost of change
    • This is the nature of complex systems; while agile reduces cost of
      change overall, it does not eliminate the need for critical elements to
      stay stable
• Architecture in your process is about managing these decisions
    • This involves your entire team, and is needed throughout the lifetime
      of the system
• Architects should not be positioned as an all-knowing oracle
    • But shaping a good architecture for a large enough system requires
      responsibility, expertise and experience that should not be considered
      a common skill set
• Architecture is essential for agile success
    • Systems built using agile need to work, and need to last, too
    • Many agile practices rely on advanced architecture design

Contenu connexe

Tendances

Agile Architecture
Agile ArchitectureAgile Architecture
Agile ArchitectureSteve Green
 
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
 
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
 
Water-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-Ugly
Water-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-UglyWater-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-Ugly
Water-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-UglyBrad Appleton
 
Trustworthy Transparency and Lean Traceability
Trustworthy Transparency and Lean TraceabilityTrustworthy Transparency and Lean Traceability
Trustworthy Transparency and Lean TraceabilityBrad Appleton
 
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
 
Agile Architecture
Agile Architecture Agile Architecture
Agile Architecture VMware Tanzu
 
Applying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise ArchitectureApplying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise ArchitectureBenjamin Scherrey
 
User story estimation with agile architectures
User story estimation with agile architecturesUser story estimation with agile architectures
User story estimation with agile architecturesRaffaele Garofalo
 
Prerequisites for evolutionary architecture
Prerequisites for evolutionary architecturePrerequisites for evolutionary architecture
Prerequisites for evolutionary architectureChris Howe-Jones
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile WorldDon McGreal
 
DevOps - The Future of Application Lifecycle Automation
DevOps - The Future of Application Lifecycle Automation DevOps - The Future of Application Lifecycle Automation
DevOps - The Future of Application Lifecycle Automation Gunnar Menzel
 
Agile Overview As V1.2
Agile Overview As V1.2Agile Overview As V1.2
Agile Overview As V1.2Anjan Roy
 
Emerging Trends of Software Engineering
Emerging Trends of Software Engineering Emerging Trends of Software Engineering
Emerging Trends of Software Engineering DR. Ram Kumar Pathak
 
ITSM Roles in an Agile and DevOps World, an ITSM Academy Webinar
ITSM Roles in an Agile and DevOps World, an ITSM Academy WebinarITSM Roles in an Agile and DevOps World, an ITSM Academy Webinar
ITSM Roles in an Agile and DevOps World, an ITSM Academy WebinarITSM Academy, Inc.
 
Agile architecture revolution iasa itarc
Agile architecture revolution   iasa itarcAgile architecture revolution   iasa itarc
Agile architecture revolution iasa itarcJason Bloomberg
 
Agile intro resources
Agile intro resourcesAgile intro resources
Agile intro resourcesAnwar Sadat
 
Extending Agile to Suite Big Projects
Extending Agile to Suite Big ProjectsExtending Agile to Suite Big Projects
Extending Agile to Suite Big ProjectsAmin Bandeali
 
Lean Principles for Agile Teams
Lean Principles for Agile TeamsLean Principles for Agile Teams
Lean Principles for Agile TeamsElizabeth Woodward
 
Agile Practices and Cloud Computing in Software Development
Agile Practices and Cloud Computing in Software DevelopmentAgile Practices and Cloud Computing in Software Development
Agile Practices and Cloud Computing in Software DevelopmentRaja Bavani
 

Tendances (20)

Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 
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
 
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?
 
Water-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-Ugly
Water-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-UglyWater-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-Ugly
Water-Scrum-Fall: The Good, the Bad, and the [Scrum]Butt-Ugly
 
Trustworthy Transparency and Lean Traceability
Trustworthy Transparency and Lean TraceabilityTrustworthy Transparency and Lean Traceability
Trustworthy Transparency and Lean Traceability
 
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
 
Agile Architecture
Agile Architecture Agile Architecture
Agile Architecture
 
Applying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise ArchitectureApplying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise Architecture
 
User story estimation with agile architectures
User story estimation with agile architecturesUser story estimation with agile architectures
User story estimation with agile architectures
 
Prerequisites for evolutionary architecture
Prerequisites for evolutionary architecturePrerequisites for evolutionary architecture
Prerequisites for evolutionary architecture
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile World
 
DevOps - The Future of Application Lifecycle Automation
DevOps - The Future of Application Lifecycle Automation DevOps - The Future of Application Lifecycle Automation
DevOps - The Future of Application Lifecycle Automation
 
Agile Overview As V1.2
Agile Overview As V1.2Agile Overview As V1.2
Agile Overview As V1.2
 
Emerging Trends of Software Engineering
Emerging Trends of Software Engineering Emerging Trends of Software Engineering
Emerging Trends of Software Engineering
 
ITSM Roles in an Agile and DevOps World, an ITSM Academy Webinar
ITSM Roles in an Agile and DevOps World, an ITSM Academy WebinarITSM Roles in an Agile and DevOps World, an ITSM Academy Webinar
ITSM Roles in an Agile and DevOps World, an ITSM Academy Webinar
 
Agile architecture revolution iasa itarc
Agile architecture revolution   iasa itarcAgile architecture revolution   iasa itarc
Agile architecture revolution iasa itarc
 
Agile intro resources
Agile intro resourcesAgile intro resources
Agile intro resources
 
Extending Agile to Suite Big Projects
Extending Agile to Suite Big ProjectsExtending Agile to Suite Big Projects
Extending Agile to Suite Big Projects
 
Lean Principles for Agile Teams
Lean Principles for Agile TeamsLean Principles for Agile Teams
Lean Principles for Agile Teams
 
Agile Practices and Cloud Computing in Software Development
Agile Practices and Cloud Computing in Software DevelopmentAgile Practices and Cloud Computing in Software Development
Agile Practices and Cloud Computing in Software Development
 

En vedette

Agile Architecture and Design
Agile Architecture and DesignAgile Architecture and Design
Agile Architecture and DesignPratip Mallik
 
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
 
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
 

En vedette (7)

Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 
Agile Architecture and Design
Agile Architecture and DesignAgile Architecture and Design
Agile Architecture and Design
 
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
 
MAPPING TOGAF® ADM AND AGILE APPROACH
MAPPING TOGAF® ADM AND AGILE APPROACHMAPPING TOGAF® ADM AND AGILE APPROACH
MAPPING TOGAF® ADM AND AGILE APPROACH
 
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
 

Similaire à The tension between agile and architecture

Agile project management is systems management
Agile project management is systems managementAgile project management is systems management
Agile project management is systems managementGlen Alleman
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfAkilaGamage2
 
Frayed Edges - Architecture In Practice
Frayed Edges - Architecture In PracticeFrayed Edges - Architecture In Practice
Frayed Edges - Architecture In PracticeAman Kohli
 
02 architectures in_context
02 architectures in_context02 architectures in_context
02 architectures in_contextMajong DevJfu
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile waveNiels Bech Nielsen
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?Òscar Vilaplana
 
Importance of Software architecture
Importance of Software architectureImportance of Software architecture
Importance of Software architectureSteve Essich
 
02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt02_Architectures_In_Context.ppt
02_Architectures_In_Context.pptRohanBorgalli
 
ANI | Agile Chennai | Architecture in agile environment challenges enablers |...
ANI | Agile Chennai | Architecture in agile environment challenges enablers |...ANI | Agile Chennai | Architecture in agile environment challenges enablers |...
ANI | Agile Chennai | Architecture in agile environment challenges enablers |...AgileNetwork
 
Elevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designElevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designZarko Acimovic
 
Elevator pitch architecture design
Elevator pitch architecture designElevator pitch architecture design
Elevator pitch architecture designZarko Acimovic
 
Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...
Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...
Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...NUS-ISS
 
مناهج التعليم وصناعة البرمجيات
مناهج التعليم وصناعة البرمجياتمناهج التعليم وصناعة البرمجيات
مناهج التعليم وصناعة البرمجياتEiman Idris
 
Agile Project Management 1 17 2007[1]
Agile Project Management 1 17 2007[1]Agile Project Management 1 17 2007[1]
Agile Project Management 1 17 2007[1]leaptocheap
 
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan OrmeBizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan OrmeMark A
 

Similaire à The tension between agile and architecture (20)

Agile project management is systems management
Agile project management is systems managementAgile project management is systems management
Agile project management is systems management
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdf
 
Frayed Edges - Architecture In Practice
Frayed Edges - Architecture In PracticeFrayed Edges - Architecture In Practice
Frayed Edges - Architecture In Practice
 
02 architectures in_context
02 architectures in_context02 architectures in_context
02 architectures in_context
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?
 
RRC RUP
RRC RUPRRC RUP
RRC RUP
 
The Design Process
The Design ProcessThe Design Process
The Design Process
 
Importance of Software architecture
Importance of Software architectureImportance of Software architecture
Importance of Software architecture
 
02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt
 
ANI | Agile Chennai | Architecture in agile environment challenges enablers |...
ANI | Agile Chennai | Architecture in agile environment challenges enablers |...ANI | Agile Chennai | Architecture in agile environment challenges enablers |...
ANI | Agile Chennai | Architecture in agile environment challenges enablers |...
 
Elevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designElevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software design
 
Elevator pitch architecture design
Elevator pitch architecture designElevator pitch architecture design
Elevator pitch architecture design
 
Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...
Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...
Agile Architecture – Enabling the Organisation’s Successful Digital-Agile Tra...
 
مناهج التعليم وصناعة البرمجيات
مناهج التعليم وصناعة البرمجياتمناهج التعليم وصناعة البرمجيات
مناهج التعليم وصناعة البرمجيات
 
020170482 x
020170482 x020170482 x
020170482 x
 
E3 chap-06
E3 chap-06E3 chap-06
E3 chap-06
 
Agile Project Management 1 17 2007[1]
Agile Project Management 1 17 2007[1]Agile Project Management 1 17 2007[1]
Agile Project Management 1 17 2007[1]
 
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan OrmeBizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
 

The tension between agile and architecture

  • 1. The tension between agile and architecture Useful definitions on software design and architecture Peter Hendriks IT Architect at Info Support B.V. peterhe@infosupport.com @PeterHendriks80 blogs.infosupport.com/peterhe/
  • 2. Agile and architecture: cats and dogs? Agile and architecture are often considered cats and dogs. Many "classic" software architecture methods are considered an enemy of agile principles: often describing heavyweight, upfront documents and -decisions, and a hierarchy with architects wielding all technical decision power and responsibility. Although there are some new "agile architecture" concepts out there, these typically only address small parts of the problem and often require significant skill to practice correctly. There is even the notion that architecture is not needed anymore when applying agile practices. But what is "architecture" anyway?
  • 3. Architecture: a concept, process and role Like so many software development terms, "architecture" is not a very well defined thing. For starters, the term architecture is used for wildly different categories: The architecture concept: the notion that certain aspects and design choices of a system are more important and fundamental. The architecture process: the way architecture concerns are addressed in the way teams The architect role: the person considered responsible for architecture We’ll look at each category to establish how "agile friendly" architecture actually is.
  • 4. A definition of architecture: the concept "Worries about the hard stuff - whatever that organization thinks is hard“ - Martin Fowler and Ralph Johnson, thought leaders in agile and design, on architecture "Design is the structure or behavior of an system whose presence resolves or contributes to the resolution of forces on that system.“ - Grady Booch, one of the fathers of modern software design, on design "All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.“ - Grady Booch, now on architecture
  • 5. Architecture versus design A design has correlated, but different goals. Design may be needed to allow communication, collaboration and complex problem solving. Since all architecture is design, these goals matter for architectural significant design decisions as well. Design often exists in multiple levels of detail, with the lowest level being the code. High level design is often considered the architecture. Most of the time this makes sense: high level design naturally contain a lot of decisions that are hard to change after the system is built. Considering high level design as the only architecture is risky: you might want to do too much of it, while missing decisions with a high cost of change at lower levels.
  • 6. Architecture in the context of system design An example model of system design, relevant forces, and architecture Features Operational costs Laws Security Monitoring & control Performance Stakeholder needs Existing systems System Technology changes Common practices Team changes Environment Future Productivity Design Design Licensing deals Extendable Corporate standards Design Design Design Achievability Technology capabilities Team skills Project budget (time/money) Framework support
  • 7. The need for the architecture concept in agile Architecture-as-a-concept assumes that certain parts of a system will be hard to change. It also assumes that design decisions here will be considered more significant, because of the greater short-term risk and possible long-term limitations for the evolution of the system. It's safe to say these assumptions are still valid for systems built in an agile fashion. Common agile practices, like automated testing and short iterations, drive down the overall cost of change. In that sense, agile reduces the amount of architecture needed. But there is no silver bullet here, there will still be "hard stuff". Making wrong decisions here will still seriously hurt or kill an agile project. Agile practices, like working in small teams, releasing early and often or being testable, often add extra demands on the system design, even at the architecture level. Also, some architectural design decisions, like applying modularity, may reduce cost of change and support other important agile values. In order for agile to be a successful approach to building a system, the architecture must support it.
  • 8. Where is the problem? Agile is about embracing change. You want to change because the old goal has become suboptimal. You want to build “the right thing”. Architecture is about recognizing that some design decisions are expensive to change. It will be suboptimal to change those often. You want to build “the thing right”. Architecture is a natural effect of building complex systems, and as such, also a factor for agile teams. Agile and architecture can complement each other very well, building “the right thing in the right way”. However, there is a tension here. When we look at architecture as a process, this becomes more apparent.
  • 9. Defining the architecture process If we consider that architecture is about design decisions that have a high cost of change, then an architecture process should strive to lower the amount of these decisions, and the rate of change on these decisions once they are committed to. As a secondary goal, the process should help to identify what changes will be more costly to make, making the software development process more predictable and improving the confidence of the team. Lowering rates of change and long term predictions does not feel very agile. It isn't. In a way, this is where the ideals of agile meet the boundaries of practical reality.
  • 10. Why change a design decision? Reason for change: Considering these goals, it becomes apparent that the architecture process should involve all • The decision was wrong; the resulting system does not work disciplines in a software development team. • A change in a force invalidates the decision • A more optimal decision is found Investigating and negotiating stable insight is key to predict whether the design decision will last Some countermeasures: for a longer period. • Investigate unclear and changing forces Testing design assumptions as soon as possible • Consult existing experience and expertise and fixing problems before building an entire • Early evaluation of the decision system on them can help immensely. • Delay the decision • Add abstractions that are more stable Planning the system evolution around tough choices, or adding abstractions, can postpone or alleviate effects of change.
  • 11. Deliberate vs accidental architecture During the evolution of a system, not all design decisions with a high cost of change are deliberately made using an architecture process. This design that just happens is often called “accidental architecture”. Accidental architecture can be a judgment- or communication problem, but also a learning effect of building the system. We should expect that while the system is being built, we may periodically need to evaluate which design decisions matter most, and if existing decisions need adjustments. Agile places heavy emphasis on feedback early and often. This is a big help for an architecture process. We can continuously evaluate design decisions using the real system as it’s built. Also, we learn what matters for decisions that come up later.
  • 12. Tools and practices for architecture processes There are many established software architecture tools and practices available. These vary from complete and specialized process frameworks like TOGAF to various notations and metamodels, like UML and ArchiMate, to best practices, like design patterns and the SOLID design principles. There are design tools, like Enterprise Architect, or code analysis tools like Structure101, that can be very useful, but require skill to use. Often, a whiteboard is used, easy for everyone to participate, without the distractions of having to operating a complex tool while thinking about a difficult problem. Personally, I believe all these methods and tools can be applied in an agile fashion, if used in a small package form. However, they are often marketed as big and overarching things. This results in a lot of resistance in agile teams.
  • 13. The role of the architect So who is driving the architecture process? In the "classical" architecture process, an architect creates a detailed Big Design Up Front (BDUF). The architect is a senior specialist, who knows what's the best way to build the system and anticipates how design forces will behave during the lifetime of the system. He/she designs the system before the "construction" team starts, so they don’t have to wait during the period needed to create the BDUF. Then, the process aggressively limits any deviation to the original architecture. As an industry, we have learned that this is an naïve approach. It assumes an all-knowing architect, a completely predictable future, and a team that just reads a document and then knows what to do. However, consider the architecture process we've just discussed. Even in an agile team, this definitely There is complex decision making, multi-discipline collaboration seems like a candidate for a specialist role, and communication, and specialized design methods and tools. especially for larger systems, where the Experience with both the problem domain and the technologies amount of architecture rapidly increases used to build the system are essential to effectively predict and and the stakes are much higher. communicate design decisions and their effects.
  • 14. Is the architect part of “the team”? Agile focuses on small, empowered teams. In most cases, the biggest challenge for an architect is collaborating with everyone involved creating the system. From a team perspective, the best way to collaborate is to be part of the team. An architect ideally does hands-on work. Reading and writing code, for instance, is useful for a software architect to feel the effect of design decisions. It is also a great way to earn the respect of the team. Being part of the team makes it easier to do hands-on work. In larger enterprises, the architecture may span multiple teams and systems. In this case, the architect operates on a different level, often called enterprise architecture, outside the team. Usually, this architecture is perceived different, with other main stakeholders and design goals, but still is very important for a team building a system. For an architect, trust is a key aspect of being successful. Face-to-face communication and close collaboration, whether as formal part of the team or not, helps to build trust, and provides a lot of learning opportunities.
  • 15. Wrap-up • Software architecture is all about design decisions with a high cost of change • This is the nature of complex systems; while agile reduces cost of change overall, it does not eliminate the need for critical elements to stay stable • Architecture in your process is about managing these decisions • This involves your entire team, and is needed throughout the lifetime of the system • Architects should not be positioned as an all-knowing oracle • But shaping a good architecture for a large enough system requires responsibility, expertise and experience that should not be considered a common skill set • Architecture is essential for agile success • Systems built using agile need to work, and need to last, too • Many agile practices rely on advanced architecture design