Architecture And The Agile Approach

Architecture And The Agile Approach

0b5d242584112741f7c14c9a2e1a299d?s=128

André Neubauer

December 03, 2012
Tweet

Transcript

  1. Architecture And The Agile Movement A Contradiction?

  2. "Software engineering enthusiast. Moved to the dark side. Now executive

    and strong advocate on lean management. Speaker, author, lateral thinker & happy." – @devpg
  3. What is Agile? - Iterations - Transparency - Potentially shippable

    code - Continuous improvement
  4. What is architecture? "The highest level concept of a system

    in ist environment. The architecture of a software system (at a given point in time) is its organization or structure of significant components interacting through interfaces, those components being composed of successively smaller components and interfaces." – IEEE Recommended Practice for Architectural Description, IEEE Std P1471
  5. What is architecture? "In most successful software projects, the expert

    developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture.’ This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of smaller components, but the architecture only includes the components and interfaces that are understood by all the developers." – Ralph Johnson
  6. What is architecture? "Architecture is about the important stuff. Whatever

    that is." – Who needs an architect?, by Martin Fowler "Stuff that's hard to change later." – Neal Ford
  7. What are the goals of architecture? - Reduce cost of

    change - Minimize impact - Make it easy to understand
  8. No conflict so far! :-)

  9. Architecture has a bad reputation in the agile world! "I

    want to talk to somebody that actually writes software, not drawing hand-waver" – The frustrated architect, by Simon Brown
  10. Architecture has a bad reputation in the agile world! „Der

    Software-Architekt ist die Vergangenheit, der Software- Experte die Zukunft.“ – Die Zukunft des Architekten in der Software-Entwicklung, by Ilker Cetinkaya
  11. Architecture has a bad reputation in the agile world! Why?

    - Ivory tower - Big design/architecture up front (BDUF/BAUF) - Formal models
  12. - Single responsibilty → Knowledge silos - Distance What about

    the ivory tower? Source: How Projects Really Work
  13. And what's wrong with big up front? The unknown unknown!

    Continuous discovery Window of opportunity
  14. Evolving Architecture Emergent Design An agile approach

  15. Emergent vs. Evolving emergent: emerging; coming into view or into

    existence; nascent; new. → [de]: entstehend evolve: evolving; to develop. → [de]: entwickelnd
  16. Architecture and design Source: Evolutionary architecture

  17. Spectrum of processes BDUF Cowboy hacking Some DUF EA+ED Waterfall

    Agile
  18. What's emergent design? Implement & Integrate ... based on: -

    Best practice - High test coverage - Continuous refactoring
  19. The fine line between big up front and cowboy hacking!

    Complexity Time Big up front Cowboy hacking Emergent design Essential complexity Accidental complexity
  20. How to achieve "essential complexity" only? - Distinguish between cross-system

    (marco) and system-internal (micro) concerns - Focus on the objectives that currently matters - Defer decisions to the last responsible moment - Do research (e.g. spikes) to build up knowledge
  21. Objectives change over time Ease of development Homogeneity Modularity Simplicity

    Scalability Decoupling Cohesion (Support for) Heterogeneity Source: Breaking the Monolith
  22. Defer decisions in the future When you add it When

    you need it Technical debt
  23. The last responsible moment Benefits of deferring the decision Cost

    of change
  24. Who is responsible? Team? Architect? "Schlußendlich sollte es in einem

    agilen Team [...] das Ziel sein, auch die Aufgaben (Anm.: Architektur-Aspekte) gemeinschaftlich im Team umzusetzen." – Die Zukunft des Architekten in der Software-Entwicklung, by Ilker Cetinkaya
  25. Do we really need architects? "Es muss keine Position eines

    Software- Architekten geben. Es muss auch niemand zwangsläufig fix die Rolle eines Software- Architekten innehaben. An irgendwem muss das Thema jedoch hängen, glaube ich." – Architekturbewusstsein verkörpern, by Ralf Westphal
  26. What's the role of an architect? Architectus Reloadus Architectus Oryzus

    Source: Who needs an architect?
  27. Take away "No one is arguing against the sense of

    architecture, but the way it's implemented!" – @devpg 1
  28. Take away "Find the fine line between big upfront and

    cowboy hacking to avoid technical debt!" – @devpg 2
  29. Take away "Evolving your software architecture is an opportunity most

    environments don't have. Use it!" – @devpg 3
  30. Take away "Move decisions to the last responsible moment." –

    @devpg 4
  31. Take away "If you have architects, put them in the

    team." – @devpg 5
  32. Architecture And The Agile Movement A Contradiction? @devpg