- Dissatisfaction with the overheads involved in design methods led to the creation of agile methods. These methods:
- Focus on the code rather than the design;
- Are based on an iterative approach to software development;
- Are intended to deliver working software quickly and evolve this quickly to meet changing requirements.
- Agile methods are probably best suited to small/medium-sized business systems or PC products.
Principles of agile methods
Principle | Description |
Customer involvement | The customer should be closely involved throughout the development process. Their role is to provide and priorities new system requirements and to evaluate the iterations of the system. |
Incremental delivery | The software is developed in increments with the customer specifying the requirements to be included in each increment. |
People not process | The skills of the development team should be recognized and exploited. The team should be left to develop their own ways of working without prescriptive processes. |
Embrace change | Expect the system requirements to change and design the system so that it can accommodate these changes. |
Maintain simplicity | Focus on simplicity in both the software being developed and in the development process used. Wherever possible, actively work to eliminate complexity from the system. |
Problems with agile methods
- It can be difficult to keep the interest of customers who are involved in the process.
- Team members may be unsuited to the intense involvement that characterizes agile methods.
- Prioritizing changes can be difficult where there are multiple stakeholders.
- Maintaining simplicity requires extra work.
- Contracts may be a problem as with other approaches to iterative development.
Agile Manifesto principles
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
•Simplicity –the art of maximizing the amount of work not done –is essential.