the conflict between agile and architecture y t i l a e r
play

The conflict between agile and architecture ? y t i l a e r - PowerPoint PPT Presentation

The conflict between agile and architecture ? y t i l a e r h t y M r o Simon Brown simon.brown @ coding the architecture .com @ simonbrown on Twitter Jersey, Channel Islands I help software teams understand software architecture ,


  1. The conflict between agile and architecture ? y t i l a e r h t y M r o Simon Brown

  2. simon.brown @ coding the architecture .com @ simonbrown on Twitter Jersey, Channel Islands

  3. I help software teams understand software architecture , technical leadership and the balance with agility (I code too) Training Book Speaking

  4. What is agile ?

  5. What is architecture? As a noun... Structure The definition of something in terms and of its components and interactions As a verb... Vision The process of architecting, making (significant) design decisions, etc

  6. The conflict between agile and architecture ? y t i l a e r h t y M r o

  7. Myth There is no conflict between agile and architecture All software projects need structure and vision

  8. 1. A conflict in team structure vs Dedicated Everybody is a software architect software architect Single point of responsibility for Joint responsibility for the the technical aspects of the technical aspects of the software project software project

  9. Big up front design Waterfall and analysis paralysis UML I’m a software architect Ivory Tower PowerPoint Architect Architecture Astronaut

  10. Software development is not a relay sport e a r w t o f S e u r c t e i t h r c A n t e m u o c D AaaS ... architecture as a service

  11. Architects? We don't need no stinkin’ architects!

  12. Developer Developer Developer Developer Developer Small teams of generalising specialists, everybody does everything With agile, there is often a perception that you must have self-organising teams

  13. 2. A conflict in process /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard e a r w { f t o S vs private DomainObject _object; r e u c t private WizardPage _page; e h i t c A r private WizardController _controller; t e n m u c o D public SomeWizard() { } ... } Evolutionary architecture Big up front design The architecture evolves secondary to the value created Requirements capture, analysis by early regular releases of and design complete before working software coding starts

  14. The conflict relates to the desired approach Moving fast, embracing p u g n change, delivering value i h t y r e v e g n d i n a t s r e d n t U n i r p early, getting feedback e u l b a g n i n f i e d , t vs n o r f ” w o l l o f “ o t m a e t e h t r o f

  15. Responding to change over following a plan Manifesto for Agile Software Development, 2001 This doesn’t mean “don’t do any planning”!

  16. Modern software development teams often seem afraid of doing analysis

  17. Big o N design up front

  18. We don’t need software architecture; we do TDD Agile software team

  19. The result of the conflicts?

  20. Chaos! Does the team understand what they are building and how they are building it?

  21. No defined structure, inconsistent approaches, Chaos! big ball of mud, spaghetti code, ... STOP Does the team understand what they are building and how they are building it? Slow, insecure, unstable, unmaintainable, hard to deploy, hard to change, over time, over budget, ...

  22. Shared vision of WTF?!

  23. Software architecture in the 21st century

  24. Let’s agree t , i c i l p m i e h t e k a on some things m s ’ t e No defined structure, L t i c i l inconsistent approaches, p x e Chaos! big ball of mud, spaghetti code, ... STOP Does the team understand what they are building and how they are building it? Slow, insecure, unstable, unmaintainable, hard to deploy, hard to change, over time, over budget, ... Put some boundaries and guidelines in place

  25. 1. A conflict in team structure vs Dedicated Everybody is a software architect software architect Single point of responsibility for Joint responsibility for the the technical aspects of the technical aspects of the software project software project

  26. Every software development team needs a master builder 1 or many

  27. Generalising Breadth Specialist Broad knowledge of patterns, designs, approaches, technologies, Depth non-functional requirements Deep hands-on technology ... skills and knowledge Awareness of options and trade-offs Good software architects are master-builders

  28. The software architecture role From chaos to self-organising Dedicated Everybody is a software architect software architect Elastic Leadership (Roy Osherove) , Single point of responsibility for o l ) Joint responsibility for the r n t o c d a n d n m a m o c ( s o h a C the technical aspects of the technical aspects of the g ) , n h i c o a c ( n g n i r e a l software project software project n ) o t i t a l i c i f a ( g i n i s a n g o r - l f s e

  29. 2. A conflict in process /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard e a r w { f t o S vs private DomainObject _object; r e u c t private WizardPage _page; e h i t c A r private WizardController _controller; t e n m u c o D public SomeWizard() { } ... } Evolutionary architecture Big up front design The architecture evolves secondary to the value created Requirements capture, analysis by early regular releases of and design complete before working software coding starts

  30. How much up front design should you do? Emergent design? (or none, depending on Big design up front? your viewpoint!) Waterfall Something in between?

  31. You should do “just enough” g n i e b t u o b a e l g i a t ’ n s I g n t i p a d a d n a e b l i x e l f ) - : ? t x e t n o c e h t o t

  32. What’s important? Significant decisions Low-level details Class and sequence Understanding the diagrams covering every significant elements and user story how they fit together Understanding how security will work Defining the length of all database columns

  33. Just enough up front design to understand the structure of the software and create a shared vision for the team

  34. You need to identify and mitigate your highest priority risks e s u a c l l i w t a h t s g n h i T l a i f o t t c e o j r p A g i l e s o r f t w a u r e p r o o j e c y t s ! d e r i f e b o t u d o o h a v e y r i s k s , r i g r h t ? : o - )

  35. Probability High (3) Medium (2) Low (1) 3 2 Low (1) 1 Medium (2) Impact 6 4 2 9 6 3 High (3)

  36. Risk-storming A collaborative and visual technique for identifying risk

  37. “just enough” software architecture Understand how the significant elements fit together The role e t a g i t i m d n a y f i t n e d I s k s i r y e k e h t Provide firm foundations and a vision to move forward /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard r e w a o f t S { e t u r private DomainObject _object; t e c c h i A r The process private WizardPage _page; t e n u m o c private WizardController _controller; D public SomeWizard() { } ... }

  38. Is a collaborative and lightweight approach to software architecture the missing piece of the jigsaw ?

  39. you Do whatever works for simon.brown @ coding the architecture .com @ simonbrown on Twitter

  40. Buy the ebook for only $10 1GfwZBLaUKAM (code expires 8th May 2013)

Recommend


More recommend