Agile Architecture Microsoft Architect Insight Conference Howard van

  • Slides: 28
Download presentation
Agile Architecture Microsoft Architect Insight Conference Howard van Rooijen (howard. vanrooijen@conchango. com) http: //blogs.

Agile Architecture Microsoft Architect Insight Conference Howard van Rooijen (howard. vanrooijen@conchango. com) http: //blogs. conchango. com/howardvanrooijen Simon Evans (simon. evans@conchango. com) http: //blogs. conchango. com/simonevans © conchango 2006 www. conchango. com

The Shift in Mentality ‘If I've got six months to build a system, then

The Shift in Mentality ‘If I've got six months to build a system, then I'll spend six months building it. I'll also spend six months designing it, and another six months testing it. The good news is that it's the same six months. ’ Ron Jeffries http: //www. xprogramming. com/ © conchango 2006 www. conchango. com

Failure Rates The Methodology didn’t work The Solution didn’t work © conchango 2006 www.

Failure Rates The Methodology didn’t work The Solution didn’t work © conchango 2006 www. conchango. com

Feature Use © conchango 2006 www. conchango. com

Feature Use © conchango 2006 www. conchango. com

Agile Adoption in 2005 • • • Yes (37%) No (45%) Maybe (18%) ©

Agile Adoption in 2005 • • • Yes (37%) No (45%) Maybe (18%) © conchango 2006 www. conchango. com

Manifesto for Agile Software Development We are uncovering better ways of developing software by

Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. © conchango 2006 www. conchango. com

Scrum Process © conchango 2006 www. conchango. com

Scrum Process © conchango 2006 www. conchango. com

Why Do We Architect Solutions? Reduce the risk in delivering solutions that are fit

Why Do We Architect Solutions? Reduce the risk in delivering solutions that are fit for purpose © conchango 2006 www. conchango. com

Recipe for Successful Software ‘easy to use’ ‘scalable’ ‘perform well’ ‘extensible’ ‘secure’ ‘accessible’ ‘cost

Recipe for Successful Software ‘easy to use’ ‘scalable’ ‘perform well’ ‘extensible’ ‘secure’ ‘accessible’ ‘cost effective’ ‘easy to maintain’ © conchango 2006 www. conchango. com

Facets of Design END USER SYS ADMIN PRODUCT OWNER IT SUPPORT DEVELOPER © conchango

Facets of Design END USER SYS ADMIN PRODUCT OWNER IT SUPPORT DEVELOPER © conchango 2006 www. conchango. com

Designing Your Solution • • No two solutions are exactly the same Assess how

Designing Your Solution • • No two solutions are exactly the same Assess how important each facet of design is to your project’s success Only make the solution as complex as it needs to be Good design always means tradeoffs © conchango 2006 www. conchango. com

Cost of Complexity © conchango 2006 www. conchango. com

Cost of Complexity © conchango 2006 www. conchango. com

Understanding Project Complexity Sprint Zero • Gain the vision for the project • •

Understanding Project Complexity Sprint Zero • Gain the vision for the project • • • Work only at the conceptual level Set out design goals for the project Assess likely solutions to the design goals Do not focus on a single solution or technology Assist in the creation of the product backlog Propose preferred technologies Gain commercial backing and trust Scale the work to the project complexity No prototypes © conchango 2006 www. conchango. com

Breaking Down the Backlog • • • Each item on the backlog must be

Breaking Down the Backlog • • • Each item on the backlog must be a deliverable business feature that you can produce and demonstrate within one sprint The development team can add technical items to the backlog The more granular the backlog, the more accurate the estimates … … but more effort goes into estimating more granular backlogs Keep product backlog items meaningful to the business Do not be afraid of changing estimates again and again – the estimates are as much for the team as for the business © conchango 2006 www. conchango. com

Horizontal vs. Vertical Architecture (1) © conchango 2006 www. conchango. com

Horizontal vs. Vertical Architecture (1) © conchango 2006 www. conchango. com

Horizontal vs. Vertical Architecture (1) © conchango 2006 www. conchango. com

Horizontal vs. Vertical Architecture (1) © conchango 2006 www. conchango. com

Horizontal vs. Vertical Architecture (2) • Horizontal Architecture (Contract) + + + - -

Horizontal vs. Vertical Architecture (2) • Horizontal Architecture (Contract) + + + - - Design interfaces that span the breadth of the product backlog. Devote time to selecting namespaces. Consider component-level architectural dependencies. Do not code any implementation until the feature is started from the sprint backlog Writing implementation code before you start the feature will introduce waste and risk not completing the feature from the sprint backlog. • Vertical Architecture (Feature) + + + - - Complete demonstrable features that will provide value to the business. Ensure the team has a good understanding of related product backlog items in order to make informed decisions. Assist the product owner in selecting high business impact and high technical risk features first. Do not attempt to deliver individual features before conducting group design and agreeing contracts. Failure to conduct enough group design sessions will cause software rewrites and force knowledge silos within the team. © conchango 2006 www. conchango. com

Causes of Design Reworking • • • Ineffective communication of the technical vision Not

Causes of Design Reworking • • • Ineffective communication of the technical vision Not enough group design sessions Lack of clarity of requirements Lack of team experience Poor understanding of development / design standards Pretending that completed work is ‘done’ © conchango 2006 www. conchango. com

Minimise Development Complexity • Reuse as much as possible • • • Use existing

Minimise Development Complexity • Reuse as much as possible • • • Use existing frameworks Use well-documented patterns and practices Borrow other peoples’ ideas Rely on your own experiences Invest in good engineering practices to reduce friction The stub is your best friend • ASP. net provider model © conchango 2006 www. conchango. com

Group Design • • Timeboxed sessions for the whole team to contribute Sessions should

Group Design • • Timeboxed sessions for the whole team to contribute Sessions should be conducted iteratively Six minds are better than one Conducted informally Visual Studio 2005 class designer (via projector) provides stub creation Group design sessions should lead to pair programming and working alone Group design sessions avoid silos of knowledge © conchango 2006 www. conchango. com

Consolidating Architecture • Retrofit well-designed reusable components from projects with proven architectures © conchango

Consolidating Architecture • Retrofit well-designed reusable components from projects with proven architectures © conchango 2006 www. conchango. com

Pyramid of Engineering Practices © conchango 2006 www. conchango. com

Pyramid of Engineering Practices © conchango 2006 www. conchango. com

The �ole of an Agile Architect • • Enable the team to deliver potentially

The �ole of an Agile Architect • • Enable the team to deliver potentially shippable code. Every month. Focus on delivery of features. Communicate vision of the project. Empower the team to make architectural decisions. Be involved in the formation of the product backlog. Eliminate irreversibility in software designs. Minimise software waste. © conchango 2006 www. conchango. com

Scrum for Team System Product Backlog Item Sprint © conchango 2006 www. conchango. com

Scrum for Team System Product Backlog Item Sprint © conchango 2006 www. conchango. com

Scrum for Team System Sprint Backlog Item Sprint Retrospective Item © conchango 2006 www.

Scrum for Team System Sprint Backlog Item Sprint Retrospective Item © conchango 2006 www. conchango. com

Scrum for Team System © conchango 2006 www. conchango. com

Scrum for Team System © conchango 2006 www. conchango. com

Scrum for Team System © conchango 2006 www. conchango. com

Scrum for Team System © conchango 2006 www. conchango. com

Feedback / Questions Find us at the conference or contact us via the methods

Feedback / Questions Find us at the conference or contact us via the methods below: Howard. van. Rooijen@conchango. com http: //blogs. conchango. com/howardvanrooijen Simon. Evans@conchango. com http: //blogs. conchango. com/simonevans www. scrumforteamsystem. com www. scrum-master. com © conchango 2006 www. conchango. com