Agile, an umbrella term used to represent all light weight software methodologies which abide by agile manifesto, is becoming very popular method of software development. Those familiar with agile would be aware of agile manifesto and principles. In this article, I would like to focus on five important building block practices of agile.
1. Definition of Done: In agile, selected user stories (a.k.a features) are completed in short iterations of 1-4 weeks. Definition of Done defines what is meant by ‘done’ of user stories / sprint / release. This concept is also known as ‘done done’ criteria. A typical definition of done could be
User story is done when all code are checked, build, tested, acceptance test passed, and accepted by product owner.
Iteration is done when all user stories are completed, acceptance test passed, accepted by product owner, and defects were fixed or postponed in agreement with product owner.
Release is done when in addition to iteration done criteria, stress testing, performance tuning, security validation and disaster recovery are successfully performed.
2. Time-box: In agile, iterations and even meetings (daily stand up, iteration planning, iteration review and retrospectives) follow time-box concept. In time-box concept, the time is fixed and non-negotiable; but scope can be negotiated. For example, if 9 out of 10 selected user stories are completed in an iteration and one user story needs a day more to complete then instead of extending iteration by a day, the user story is allowed to spill over to future iteration. Short time box alleviates the problems of Parkinson law (work expand to time available) and Student syndrome (Eleventh hour seriousness).
3. Sashimi technique blends time-box and definition of done. It require that every slice of functionality be complete in an iteration as per definition of done.
4. Progressive elaboration: This concept is about elaborating near future plans while keeping the distant future plan at summary level. The distant future plans are elaborated once the project approaches those items. The idea is to do micro planning only when we have more clarity / certainty on the planning items. This concept is practiced in release plan - iteration plan combination in agile. In release plan, the overall release plan is made while detailed iteration planning is done at the start of every iteration. In agile, this technique is not only followed in planning but also in scope definition.
5. Incremental delivery: The product is delivered in increments of shippable quality, at the end of every short time-boxed iterations. Agile believes in using working code as pure measure of the progress. This incremental delivery concept not only helps customer to rightly shape up the product by giving feedback during iteration demonstrations, but also enables to go to market early and realize better return on investment (ROI).
No comments:
Post a Comment