Agile Methods | responding to change through innovation
Agile methodologies

Agile methodologies are becoming increasingly popular because of their ability to respond quickly to competitive challenges, and to deliver value to the business in order to profit in a volatile commercial environment.

Agile methodologies, e.g. eXtreme Programming, are collaborative and adaptive approaches to software development that balance requirements, time to delivery and cost with design robustness, flexibility and structure. Their essence revolves around a family of interacting values, principles and practices that deliver evolutionary software rapidly, with improved quality and robustness, despite ambiguous and changing requirements.

A collaborative culture designed to capitalize on peoples' strengths

While lightweight processes are part of an agile methodology, more focus is placed on building individual skills and strong relationships, fostering a high degree of interaction among developers, business experts, users and the customer. Great emphasis is placed on the practices carried out by talented and skilled individuals to produce results. Over time, the lightweight processes are adapted to suit the team.

The whole premise of agile software development is that change happens quickly. Therefore communication must be constant and without impediment. The business experts and the customer are continuously engaged to provide immediate guidance to the developers. In return they receive a more responsive software development that can be steered based upon frequent progress checks, and changes in the business.

Iterative development

Under conditions of ongoing discovery and change, development is performed in a series of discrete, evolutionary cycles, termed iterations. Each iteration is a self-contained unit comprising analysis, design, implementation, integration, and testing activities, and focuses on producing a fully operational version of the system comprising a subset of the requirements. At the start of each iteration, the customer selects the requirements, based on business value, to be implemented during that iteration - this means the customer always obtains the highest value features first. Upon its completion, the iteration is demonstrated to the customer for acceptance.

Continuous analysis, modeling, and implementation enables the developers to improve the system and accommodate new requirements, while maintaining a robust design with a very high level of software quality. This quality is reinforced by the thorough testing completed within iterations, and the multiple cycles of regression testing - together producing an increased confidence in the overall project.

Planning for reality

Agile methodologies involve meticulous planning, but they recognize that plans are ultimately not predictable.

Iterative development provides an honest feedback mechanism, which can accurately inform on the situation at regular intervals. With improved estimates based on actual working code, credible and stable plans can be constructed for the next iteration or two, while keeping longer-term plans fluid - it is easier to plan and manage a relatively small piece of work, i.e. an iteration, rather than a whole project. Over multiple iterations, tangible measures of progress generate better estimates for the following iterations.

All living things evolve

Software is a living entity that requires nurturing during the entire project lifecycle, so that the resultant design is appropriate to the needs of the system. An evolutionary delivery cycle helps the project converge on a solution that best balances all the goals and constraints.

Back to top ^^

This page is valid XHTML 1.0 This page uses valid CSS

Best Practices | Agile Methods

Methodologies | Project Management | Analysis & modeling | Development | Testing | Quality Assurance

Home | Services | Contact Us