Agile – an Overview
“Agile” or “lightweight” techniques are becoming more and more popular for developing new and innovative software projects. In these new contexts, the ways technical documentation is developed have changed quite remarkably. It can be interesting to understand reasons and consequences for these new working scenarios. Agile and more specifically Dynamic Systems Development Method (DSDM) is a continuously evolving worldwide standard for developing business solutions within tight timeframes and fixed budgets. It is a framework based originally around Rapid Application Development (RAD), supported by its continuous user involvement in an iterative development and incremental approach which is responsive to changing requirements, in order to develop a system that meets the business needs on time and on budget. Focusing on business benefit, Agile ensures that solutions incrementally meet the needs of today’s dynamic businesses. The simplicity, practicality and flexibility of the approach allow us to apply its framework in a variety of business scenarios and does not limit itself solely to IT encompassed solutions.
In a few words Agile provides a framework for the delivery of business solutions on time and to budget.
Issues and Concerns
Companies today are racing to build better products and solutions faster. As a result, traditional problems inherent with the development of IT systems are costing companies more and more.
- Technologies are fast moving and continuously changing, making managing your skill set more difficult.
- Requirements constantly change and scope creep seems to be becoming inherent to every project
- Product deadlines and targets are missed due to the fact that Testing always seems to be an afterthought and problems and changes crop up at the last minute.
- An ‘us and them’ blame culture develops within the organization as Users are not constantly involved in the development process
Do any of the above issues seem familiar?
Agile addresses all of the above in a simple yet effective, ‘common sense’ framework.
The use of Agile has shown to provide the following benefits:
- Reduced time to market
- Improved quality due to the continuous user involvement and increased ownership by the business
- Increased productivity.
- Reduced costs as requirements are prioritised and change is managed more effectively.
In a few words Agile provides a framework for the delivery of business solutions on time and to budget. Agile is not a short cut to developing systems, nor is it only suitable for small systems development. It is not a hard and fast set of rules applicable to every project and it is often the case that certain projects would mandate a hybrid or more traditional approach.
Steps in Agile Model
The Agile philosophy is a simple one, it states that in an Agile project the time and resources are fixed while the functionality remains the variable factor. The requirements must therefore contain an amount of flexibility and must allow for prioritisation.
There are nine principles:
1. Active user involvement is imperative.
2. The team must be empowered to make decisions.
3. The focus is on frequent delivery of products.
4. Fitness for business purpose is the essential criterion for acceptance of deliverables.
5. Iterative and incremental delivery is necessary to converge on accurate business solution
6. All changes during development are reversible
7. Requirements are base-lined at a high level
8. Testing is integrated throughout the lifecycle
9. Collaboration and co-operation between all stakeholders is essential
People are the essence of an agile team. Agile development teams include people from the technical side as well as people from the business side. Some of the roles recommended by Agile are:
- Executive Sponsor
- Ambassador users
- Advisor Users
- Technical Co-ordinator / Project Leader
Agile makes use of a number of tools and techniques. These include:
- Workshop organization: How to plan, organise, run and follow up an effective workshop Facilitation. How to facilitate the workshops.
- Time-boxes: A time-box is a unit of time, 2 to 6 weeks long, at the end of which there should be a deliverable. Time-boxes are split into three phases; investigation phase, refine phase, consolidation phase.
- MoSCoW prioritization: MoSCoW prioritisation is a method used to prioritise requirements. MoSCoW is the acronym for Musts, Shoulds, Coulds, Will not have this time round.
The Agile framework is made up of 6 phases. These are:
- 1. Clarify Requirements. The scope of the project must be established and the business problem or business idea must be clearly defined.
- 2. Feasibility Study. Investigate requirements, identify possible business solutions, and propose a business solution.
- 3. Business Study. List prioritised functional and non-functional requirements, identify resources and availability, provide high level estimates for development, define system where development is being made and deployed, define technical standards.
- 4. Functional Model Iteration (FMI). During the FMI phase the users and the developer build the right system together. The main focus here is on the functional requirements.
- 5. Design and Build Iteration (DBI). During the DBI phase the developers are build the system right. The main focus here is on the non-functional requirements.
- 6. Implementation. Train the users, implement the system and review the success of the project. The phases above are not necessarily a one time pass. Frequent returns may be made between phases 4 and 5. From phase 6 you may also return to any of phases 3, 4, 5. A project will usually be split into increments that will allow you to return to phase 3 from phase 6 for a second increment