Share
Embed
Architecture And The Agile Approach
André Neubauer
December 03, 2012
Transcript
32 slides
-
"Software engineering enthusiast. Moved to the dark side. Now executive
and strong advocate on lean management. Speaker, author, lateral thinker & happy." – @devpg -
What is Agile? - Iterations - Transparency - Potentially shippable
code - Continuous improvement -
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 -
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 -
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 -
What are the goals of architecture? - Reduce cost of
change - Minimize impact - Make it easy to understand -
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 -
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 -
Architecture has a bad reputation in the agile world! Why?
- Ivory tower - Big design/architecture up front (BDUF/BAUF) - Formal models -
- Single responsibilty → Knowledge silos - Distance What about
the ivory tower? Source: How Projects Really Work -
And what's wrong with big up front? The unknown unknown!
Continuous discovery Window of opportunity -
Emergent vs. Evolving emergent: emerging; coming into view or into
existence; nascent; new. → [de]: entstehend evolve: evolving; to develop. → [de]: entwickelnd -
What's emergent design? Implement & Integrate ... based on: -
Best practice - High test coverage - Continuous refactoring -
The fine line between big up front and cowboy hacking!
Complexity Time Big up front Cowboy hacking Emergent design Essential complexity Accidental complexity -
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 -
Objectives change over time Ease of development Homogeneity Modularity Simplicity
Scalability Decoupling Cohesion (Support for) Heterogeneity Source: Breaking the Monolith -
Defer decisions in the future When you add it When
you need it Technical debt -
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 -
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 -
What's the role of an architect? Architectus Reloadus Architectus Oryzus
Source: Who needs an architect? -
Take away "No one is arguing against the sense of
architecture, but the way it's implemented!" – @devpg 1 -
Take away "Find the fine line between big upfront and
cowboy hacking to avoid technical debt!" – @devpg 2 -
Take away "Evolving your software architecture is an opportunity most
environments don't have. Use it!" – @devpg 3 -
Take away "If you have architects, put them in the
team." – @devpg 5