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.

André Neubauer

December 11, 2016
Tweet

More Decks by André Neubauer

Other Decks in Technology

Transcript

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

    leadership. Motivated by 'Y'! Love to work at @Misterspex, acting as CTO” – @devpg
  2. 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
  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.’ [...] 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. "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?
  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. Company ABC ▪ Monolithic legacy app ▪ More than 100

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

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

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

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

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

    Continuous discovery Window of opportunity
  15. 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
  16. What's emergent design? ... is based on: ▪ Best practice

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

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

    Scalability Decoupling Cohesion (Support for) Heterogeneity Source: Breaking the Monolith
  20. 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
  21. 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
  22. Best practices ▪ Decide for micro services/ SCS/ isolated small

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

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

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

    opportunity not all environments have. Use it!" – @devpg