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.

Try it: questions about Agile development

In agile development methods such as Extreme Programming (XP), what is the activity of reorganizing the internal structure of a program so that it is easier to understand and change, without changing its externally visible behavior?

  1. APair programming
  2. BReverse engineering
  3. CRefactoring
Show answer and explanation

Answer: C. Refactoring

Refactoring improves the structure of code without changing its function, for example by merging duplicated code, splitting long functions and choosing clearer names. To confirm that the behavior has not changed, automated tests are prepared and run after each small change. Pair programming is an XP practice in which two people write a program together at one computer. Reverse engineering is analyzing an existing program to uncover its specification and design.

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.

Agile development in the explanations

Questions that mention Agile development (2)

  1. In agile development methods such as Extreme Programming (XP), what is the activity of reorganizing the internal structure of a program so that it is easier to understand and change, without changing its externally visible behavior?
  2. Which is a characteristic of the waterfall model of software development?

Books on Software Development and Project Management Ad

As an Amazon Associate I earn from qualifying purchases.

Related terms

Waterfall model Black-box testing Boundary value analysis Branch coverage CI/CD (continuous integration and continuous delivery) Critical path method (CPM) Earned value management (EVM) Equivalence partitioning Scrum SLA (service level agreement)

Back to the glossary