Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Architecture And The Agile Approach

Architecture And The Agile Approach

André Neubauer

December 03, 2012
Tweet

More Decks by André Neubauer

Other Decks in Technology

Transcript

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

    and strong advocate on lean management. Speaker, author, lateral thinker & happy." – @devpg
  2. 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
  3. 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
  4. 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
  5. What are the goals of architecture? - Reduce cost of

    change - Minimize impact - Make it easy to understand
  6. 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
  7. 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
  8. Architecture has a bad reputation in the agile world! Why?

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

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

    Continuous discovery Window of opportunity
  11. Emergent vs. Evolving emergent: emerging; coming into view or into

    existence; nascent; new. → [de]: entstehend evolve: evolving; to develop. → [de]: entwickelnd
  12. What's emergent design? Implement & Integrate ... based on: -

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

    Complexity Time Big up front Cowboy hacking Emergent design Essential complexity Accidental complexity
  14. 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
  15. Objectives change over time Ease of development Homogeneity Modularity Simplicity

    Scalability Decoupling Cohesion (Support for) Heterogeneity Source: Breaking the Monolith
  16. 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
  17. 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
  18. Take away "No one is arguing against the sense of

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

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

    environments don't have. Use it!" – @devpg 3