Agile architecture & programming<br />Agile Mëtteg – 16 September 2010<br />
OBJECTIVES<br />Understand the implications of agile development on architecture, design and coding practices<br />Explain...
AGILE PARTNER SERVICES<br />Custom Software Development & Maintenance<br />Our core business to answer customer needs<br /...
ABOUT ME<br />About Me<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />4<br />
AGENDA<br />Agenda<br />Myths about agility and architecture<br />What do we mean by Architecture?<br />What do we mean by...
Myths about Agility and Architecture<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />6<br />
MYTHS ABOUT AGILITY & ARCHITECTURE<br />Agile = Fragile<br />No Architecture <br />No Design<br />Only works for small pro...
What do we mean by Architecture?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />8<br />
WHAT DO WE MEAN BY ARCHITECTURE?<br />Architecture embodies the critical design decisions that classify a system<br />Ente...
WHAT DO WE MEAN BY ARCHITECTURE?<br />A good architecture is one in which the significance of decisions is reduced<br />Th...
WHAT DO WE MEAN BY ARCHITECTURE?<br />The importance of decisions needs to be well understood and assessed<br />Heavy-weig...
WHY ARCHITECTURE IS SO IMPORTANT<br />Base for further decisions<br />Influence on team structure<br />Foundation for GUI<...
What do we mean by AGILE?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />13<br />
AGILE MANIFESTO<br />Individuals and interactions over processes and tools<br />Working software over comprehensive docume...
AGILE DEVELOPMENT<br />What makes development agile is ...<br />Sustainability of process and code<br />Feedback at differ...
How does agility affect Architecture?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />16<br />
HOW DOES AGILITY AFFECT ARCHITECTURE?<br />Requirements for an “agile” design<br />The design should improve inter team co...
BUFD, NUFD or RUFD?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />18<br />
WATERFALL / CLASSICAL APPROACH<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />19<br />Project<br />Plan<br ...
WATERFALL / CLASSICAL APPROACH<br />Big upfront design<br />Impossible to know everything in advance<br />Lack of flexibil...
SCRUM<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />21<br />Sprint<br />Plan<br />Deploy<br />Plan<br />Pl...
AGILE MODELLING<br />No Up-Front Design<br />Team members have a very high technical expertise<br />Team members have in-d...
AGILE MODELLING<br />Keep up-front design short<br />But not tooshort<br />You do not have to know precisely what to build...
D<br />RUFD vs NUFD <br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />24<br />Release <br />G<br />A<br />H<b...
EVOLVING ARCHITECTURE<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />25<br />Feedback<br />Models, <br />Vi...
LAYERED ARCHITECTURE<br />Iteration n<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />26<br />Iteration 3<br...
InTrODuction TODoMain-DRIVEN DESIGN<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />27<br />
DOMAIN-DRIVEN DESIGN<br />Domain-Driven Design (Eric Evans)<br />Focus on the core domain and domain logic<br />Model is t...
DOMAIN-DRIVEN DESIGN<br />Domain-Driven Design Concepts<br />Just in time modeling<br />Ubiquitous language<br />Bounded C...
InTrODuction TOCOMPONENT-BASED DESIGN<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />30<br />
COMPONENT-BASED DESIGN<br />Component-Based Design<br />An individual component is a software package, a web service, or a...
COMPONENT-BASED DESIGN<br />Component-Based Design Concepts<br />Modularity<br />Reusability<br />Composition<br />Encapsu...
COMBINING APPROACHES<br />Using Domain-Driven Design within a component<br />To create domain model and logic<br />Bounded...
COMBINING APPROACHES<br />Using Component-Based design to achieve<br />Modularity<br />Composition<br />Encapsulation and ...
SOFTWARE CELLS<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />35<br />Presentation<br />Presentation<br />P...
Coding practices<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />36<br />
TEST-DRIVEN DEVELOPMENT<br />Test-Driven Development<br />Design tests BEFORE implementing a feature<br />Tests are testin...
BEHAVIOR-DRIVEN DEVELOPMENT<br />Behavior-Driven Development<br />Get business specialists involved in testing!<br />Focus...
VERSION CONTROL & CONTINUOUS INTEGRATION<br />Version Control<br />A version control system allows the team members to sim...
REFACTORING<br />Refactoring<br />Improve code quality without changing its behavior<br />Code towards design patterns<br ...
DECOUPLING<br />Decoupling<br />How?<br />Inversion of control<br />Dependency Injection <br />Encapsulation<br />Helps wi...
DESIGN PATTERNS<br />Design Patterns<br />Do not re-invent the wheel<br />Design Patterns provide solutions for common pro...
DEMo<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />43<br />
QUESTIONS<br />IntentionallyBlank(ish)<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />44<br />
RESOURCES<br />Agile Partner: www.agilepartner.net<br />Agile Partner blog: blog.agilepartner.net<br />Agile Interest Grou...
NEXT TRAININGS & CERTIFICATIONS<br />June 17th, 2010<br />Agile Mëtteg - Continuous improvement in practice<br />46<br />C...
CONTACTS<br />Thank You<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />47<br />
Upcoming SlideShare
Loading in...5
×

Agile Mëtteg series session 7

2,597

Published on

Agile Architecture & Programming
16 September 2010

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,597
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
46
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • SCH
  • SCH
  • CPO &amp; PAG
  • CPO
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • CPO
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • PAG
  • CPO
  • CPO
  • CPO
  • CPO
  • CPO
  • CPO
  • CPO
  • CPO
  • CPO
  • Agile Mëtteg series session 7

    1. 1. Agile architecture & programming<br />Agile Mëtteg – 16 September 2010<br />
    2. 2. OBJECTIVES<br />Understand the implications of agile development on architecture, design and coding practices<br />Explain some myths about software architecture and agility<br />Show some best practices<br />16 Sept 2010<br />2<br />Agile Mëtteg - Agile architecture<br />
    3. 3. AGILE PARTNER SERVICES<br />Custom Software Development & Maintenance<br />Our core business to answer customer needs<br />IS services<br />Thanks to our expertise we can support IT team to reach their productivity & quality objectives (Assessment, Coaching, Support, Training, Resource delegation…)<br />IS Solutions<br />Take benefit from commercial or Open Source platform to answer as quick as possible to specific needs<br />IS users services<br />We can support Product & Services owners to work closely with the IT team (Assessment, Coaching, Support, Training, Resource delegation…)<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />3<br />IS users Services<br />1<br />4<br />Software Development & SoftwareMaintenance<br />2<br />ISSolutions<br />IS Services<br />Agility<br />Agility<br />3<br />1<br />2<br />3<br />4<br />Agility<br />
    4. 4. ABOUT ME<br />About Me<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />4<br />
    5. 5. AGENDA<br />Agenda<br />Myths about agility and architecture<br />What do we mean by Architecture?<br />What do we mean by Agile?<br />How does agility affect architecture?<br />Introduction to Domain-Driven Design<br />Introduction to Component-Based Design<br />Coding practices<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />5<br />
    6. 6. Myths about Agility and Architecture<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />6<br />
    7. 7. MYTHS ABOUT AGILITY & ARCHITECTURE<br />Agile = Fragile<br />No Architecture <br />No Design<br />Only works for small projects<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />7<br />
    8. 8. What do we mean by Architecture?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />8<br />
    9. 9. WHAT DO WE MEAN BY ARCHITECTURE?<br />Architecture embodies the critical design decisions that classify a system<br />Enterprise Architecture (relates to organizational structure, cost of change, ...)<br />Technical Architecture (infrastructure)<br />Software Architecture (capabilities of the system, structure of code ...)<br />etc.<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />9<br />
    10. 10. WHAT DO WE MEAN BY ARCHITECTURE?<br />A good architecture is one in which the significance of decisions is reduced<br />This means key decisions are the ones that reduce the significance of other decisions<br />Makes changes easy <br />Reduces cost of change<br />A stable and robust architecture does not mean it is “frozen”<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />10<br />
    11. 11. WHAT DO WE MEAN BY ARCHITECTURE?<br />The importance of decisions needs to be well understood and assessed<br />Heavy-weight approaches are likely to reduce the understanding and the ability to evaluate<br />Keep it simple!<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />11<br />
    12. 12. WHY ARCHITECTURE IS SO IMPORTANT<br />Base for further decisions<br />Influence on team structure<br />Foundation for GUI<br />“The interface is the program” (Raskin)<br />Reflects system design<br />Web, Smart Client, Client/Server, Embedded ...<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />12<br />
    13. 13. What do we mean by AGILE?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />13<br />
    14. 14. AGILE MANIFESTO<br />Individuals and interactions over processes and tools<br />Working software over comprehensive documentation<br />Customer collaboration over contract negotiation<br />Responding to change over following a plan<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />14<br />
    15. 15. AGILE DEVELOPMENT<br />What makes development agile is ...<br />Sustainability of process and code<br />Feedback at different levels of scale<br />Awareness of what is being built and how<br />The right detail at the right time and in the right place<br />The engagement of people in the process<br />Economy<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />15<br />
    16. 16. How does agility affect Architecture?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />16<br />
    17. 17. HOW DOES AGILITY AFFECT ARCHITECTURE?<br />Requirements for an “agile” design<br />The design should improve inter team communication<br />It must be comprehensible to everyone without a lot of documentation<br />It must support testing<br />The design must support customer communication and collaboration<br />It must respond to change<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />17<br />
    18. 18. BUFD, NUFD or RUFD?<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />18<br />
    19. 19. WATERFALL / CLASSICAL APPROACH<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />19<br />Project<br />Plan<br />Build<br />Test<br />Review<br />Deploy<br />
    20. 20. WATERFALL / CLASSICAL APPROACH<br />Big upfront design<br />Impossible to know everything in advance<br />Lack of flexibility<br />Lack of extensibility<br />Lack of adaptability<br />“Ivory Tower” metaphor<br />Architecture might be ignored because team members were not involved in its creation<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />20<br />
    21. 21. SCRUM<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />21<br />Sprint<br />Plan<br />Deploy<br />Plan<br />Plan<br />Plan<br />Review<br />Build<br />Build<br />Build<br />Build<br />Test<br />Test<br />Test<br />Test<br />Review<br />Review<br />Review<br />Review<br />Feature 1<br />Feature 2<br />Feature 3<br />Feature 4<br />
    22. 22. AGILE MODELLING<br />No Up-Front Design<br />Team members have a very high technical expertise<br />Team members have in-depth knowledge of the domain<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />22<br />
    23. 23. AGILE MODELLING<br />Keep up-front design short<br />But not tooshort<br />You do not have to know precisely what to build before you can start building it.<br />A sprint/iteration 0 can help defining key architecture concepts, a vision and initial architecture<br />Use existing expertise<br />Delaying critical design decisions does not mean we ignore existing knowledge<br />Use proof of concepts to backup the architecture and document it<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />23<br />
    24. 24. D<br />RUFD vs NUFD <br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />24<br />Release <br />G<br />A<br />H<br />A - J<br />E<br />B<br />I<br />F<br />C<br />J<br />1st Sprint<br />2nd Sprint<br />3rd Sprint<br />Inception<br />D<br />A<br />G<br />J<br />A - I<br />E<br />B<br />H<br />K<br />F<br />C<br />I<br />L<br />1st Sprint<br />2nd Sprint<br />3rd Sprint<br />4th Sprint<br />
    25. 25. EVOLVING ARCHITECTURE<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />25<br />Feedback<br />Models, <br />Vision<br />Envision Initial Architecture<br />Communicate Architecture to Stakeholders<br />Update Architecture<br />Models, <br />Vision<br />Feedback<br />Models, <br />Vision<br />Work with developers<br />Models, <br />Vision<br />
    26. 26. LAYERED ARCHITECTURE<br />Iteration n<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />26<br />Iteration 3<br />Iteration 2<br />Iteration 1<br />
    27. 27. InTrODuction TODoMain-DRIVEN DESIGN<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />27<br />
    28. 28. DOMAIN-DRIVEN DESIGN<br />Domain-Driven Design (Eric Evans)<br />Focus on the core domain and domain logic<br />Model is the base of complex designs<br />Initiating a creative collaboration between technical and domain experts to find the conceptual heart of the problem iteratively.<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />28<br />
    29. 29. DOMAIN-DRIVEN DESIGN<br />Domain-Driven Design Concepts<br />Just in time modeling<br />Ubiquitous language<br />Bounded Contexts<br />Decoupling business logic from other aspects of the system<br />Separation Of Concerns<br />Cohesiveness<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />29<br />
    30. 30. InTrODuction TOCOMPONENT-BASED DESIGN<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />30<br />
    31. 31. COMPONENT-BASED DESIGN<br />Component-Based Design<br />An individual component is a software package, a web service, or a module that encapsulates a set of related functions (or data).<br />All system processes are placed into separate components so that all of the data and functions inside each component are semantically related (just as with the contents of classes)<br />Software as a circuit board<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />31<br />
    32. 32. COMPONENT-BASED DESIGN<br />Component-Based Design Concepts<br />Modularity<br />Reusability<br />Composition<br />Encapsulation<br />Separation Of Concerns<br />Cohesiveness<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />32<br />
    33. 33. COMBINING APPROACHES<br />Using Domain-Driven Design within a component<br />To create domain model and logic<br />Bounded Contexts<br />Anti-Corruption layers<br />Improve communication with UL<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />33<br />
    34. 34. COMBINING APPROACHES<br />Using Component-Based design to achieve<br />Modularity<br />Composition<br />Encapsulation and Decoupling<br />The component defines a bounded context<br />Enables us to focus on one problem at a time<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />34<br />
    35. 35. SOFTWARE CELLS<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />35<br />Presentation<br />Presentation<br />Presentation<br />Presentation<br />Domain Model<br />Domain Model<br />Domain Model<br />Domain Model<br />Data Access<br />Data Access<br />Data Access<br />Data Access<br />is composed of<br />Presentation<br />Presentation<br />Domain Model<br />Domain Model<br />Data Access<br />Data Access<br />
    36. 36. Coding practices<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />36<br />
    37. 37. TEST-DRIVEN DEVELOPMENT<br />Test-Driven Development<br />Design tests BEFORE implementing a feature<br />Tests are testing the expected behavior of a component or class<br />Implementation is done step by step until all tests pass<br />Supports thinking of a design that can be tested<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />37<br />
    38. 38. BEHAVIOR-DRIVEN DEVELOPMENT<br />Behavior-Driven Development<br />Get business specialists involved in testing!<br />Focuses on collaboration between developers, quality assurance and business users<br />Might be used for User Acceptance testing<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />38<br />
    39. 39. VERSION CONTROL & CONTINUOUS INTEGRATION<br />Version Control<br />A version control system allows the team members to simultaneously work on the code base. It automatically merges differences and reports conflicts.<br />Continuous Integration<br />Regular builds of the code base<br />Early discovery of introduced bugs<br />Automatic execution of test base<br />Reduces Regression<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />39<br />
    40. 40. REFACTORING<br />Refactoring<br />Improve code quality without changing its behavior<br />Code towards design patterns<br />Consider separation of concerns and cohesiveness<br />TDD, BDD, Version Control and CI are the foundation for refactoring (a safety-net), they reduce the fear of change<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />40<br />
    41. 41. DECOUPLING<br />Decoupling<br />How?<br />Inversion of control<br />Dependency Injection <br />Encapsulation<br />Helps with<br />Modularity<br />Extensibility<br />Maintainability<br />Testability<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />41<br />
    42. 42. DESIGN PATTERNS<br />Design Patterns<br />Do not re-invent the wheel<br />Design Patterns provide solutions for common problems<br />Domain-Driven Design defines a set of architectural patterns<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />42<br />
    43. 43. DEMo<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />43<br />
    44. 44. QUESTIONS<br />IntentionallyBlank(ish)<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />44<br />
    45. 45. RESOURCES<br />Agile Partner: www.agilepartner.net<br />Agile Partner blog: blog.agilepartner.net<br />Agile Interest Group Luxembourg:www.aiglu.org<br />Agile Alliance: www.agilealliance.org<br />Scrum alliance: www.scrumalliance.org<br />Scrum.org<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />45<br />
    46. 46. NEXT TRAININGS & CERTIFICATIONS<br />June 17th, 2010<br />Agile Mëtteg - Continuous improvement in practice<br />46<br />Complete calendar on: http://www.agilepartner.net/training/<br />
    47. 47. CONTACTS<br />Thank You<br />16 Sept 2010<br />Agile Mëtteg - Agile architecture<br />47<br />
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×