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

Architecture And The Agile Approach - A Contradiction? - Reloaded

Architecture And The Agile Approach - A Contradiction? - Reloaded

Mit Softwarearchitektur werden häufig übermächtige, starre und langfristige Modelle assoziiert. Nicht zuletzt vor diesem Hintergrund wird das Thema Architektur im Umfeld agiler Methoden kritisch beäugt. Der Vortrag startet mit einer persönlichen Erfahrung zu diesem Thema – ein Architekturprojekt in einem agilen Unternehmen. Ausgehend davon wird diskutiert, welchen Stellenwert Softwarearchitekturen im agilen Umfeld besitzen und welche Ansätze existieren, um dennoch Softwarearchitekturen und deren Akzeptanz zu etablieren. Am Ende erfolgt eine Betrachtung der Rolle "Softwarearchitekt" im Kontext agiler Vorgehensmodelle.

0b5d242584112741f7c14c9a2e1a299d?s=128

André Neubauer

December 11, 2016
Tweet

Transcript

  1. Architecture And The Agile Movement A Contradiction?

  2. "Technology enthusiast, org development fanatic and strong advocate on modern

    leadership. Motivated by 'Y'! Love to work at @Misterspex, acting as CTO” – @devpg
  3. What is Agile? ▪ Iterations ▪ Transparency ▪ Potentially shippable

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

    in its 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.’ [...] 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. "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 What is architecture?
  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. Some real world experience

  13. Company ABC ▪ Monolithic legacy app ▪ More than 100

    software engineers ▪ One year experience with agile methods ▪ Output doubled!
  14. What should be done! Change web framework Event driven architecture

    Enhance dev environment Swimlanes New domain model
  15. What really happened! One more web framework New business Continuous

    delivery R/W-split pricing One more web framework
  16. Welcome to the information age! ▪ Discontinuous change ▪ Short

    product life cycles ▪ Continuous price declines ▪ Little customer loyalty ▪ Based on knowledge work
  17. What’s wrong with ivory towers? ▪ Single responsibilty ▪ Knowledge

    silos ▪ Distance ▪ Overengineering ▪ Separating planning from execution
  18. And what's wrong with big up front? The unknown unknown!

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

  20. Evolving & Emergent evolve: To move in regular procession through

    a system. [de]: sich entwickeln emergent: emerging; coming into view or into existence; nascent; new. [de]: entstehend
  21. Architecture and design

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

    Agile
  23. What's emergent design? ... is based on: ▪ Best practice

    ▪ High test coverage ▪ Continuous refactoring Implement & Integrate
  24. The fine line between big up front and cowboy hacking!

    Complexity Time Big up front Cowboy hacking Emergent design Essential complexity Accidental complexity
  25. How to achieve "essential complexity" only? aka Evolving Architecture ▪

    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
  26. Objectives change over time Ease of development Homogeneity Modularity Simplicity

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

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

    of change
  29. 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
  30. 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
  31. What's the role of an architect? Architectus Reloadus Architectus Oryzus

    Source: Who needs an architect?
  32. Best practices ▪ Decide for micro services/ SCS/ isolated small

    systems ▪ Community-driven architecture board … put responsibility where it can be taken over
  33. Take away … ⓵ "No one is arguing against the

    sense of architecture, but the way it's implemented!" – @devpg
  34. Take away … ⓶ "Find the fine line between big

    upfront and cowboy hacking to avoid technical debt!" – @devpg
  35. Take away … ⓷ "Evolving your software architecture is an

    opportunity not all environments have. Use it!" – @devpg
  36. Take away … ⓸ “Move decisions to the last responsible

    moment." – @devpg
  37. Take away … ⓹ "If you have architects, put them

    in the team." – @devpg
  38. Architecture And The Agile Movement A Contradiction?