What is Agile development?
A general term for ways of developing software that repeat short iterations of a few weeks, produce working software each time, incorporate user feedback and revise the plan to follow changing requirements. Representative methods include Scrum and Extreme Programming (XP).
Japanese name: アジャイル開発
Agile development appears in 2 practice questions across 1 topic, including Software Development and Project Management.
Field: Software Development and Project Management
The Manifesto for Agile Software Development
The ideas of agile development are summarized in the Manifesto for Agile Software Development, published in 2001. It values individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan. It acknowledges that the items on the right have value but values the items on the left more, so it does not mean that documentation or plans are unnecessary.
How it differs from the waterfall model
In the waterfall model, the requirements are fixed first and the whole system is built in one pass, so users see something working only near the end of development. In agile development, features are built a little at a time starting with the highest priority, and something working is shown at short intervals, so misunderstood or changing requirements are noticed early. In exchange, the final scope and cost are hard to fix at the start, and suitable contracts and continuous involvement of users in development are needed. Which approach is better depends on how certain the requirements are and how costly changes are.
Use in development close to hardware
Because chips and boards are expensive and slow to remake, hardware development itself is mainly planned, with the specification fixed early. On the other hand, software such as firmware, drivers, EDA scripts and verification environments is often developed in an agile way combined with continuous integration and automated testing. Before real hardware exists, software is run first on simulators or FPGA prototypes, combining the hardware schedule with software iterations.
FAQ
Does agile development mean not writing design documents?
No. The Manifesto for Agile Software Development values working software over comprehensive documentation, but it also recognizes the value of documentation. Documents needed for maintenance or for explaining safety are written as far as needed and updated along with the software.
Are agile development and Scrum the same thing?
Scrum is one of the representative frameworks of agile development. Agile development is a general term for the idea of delivering value in short iterations; besides Scrum, it includes Extreme Programming (XP), with practices such as test-driven development and pair programming.