Software development smorgasbord

Also in this report

There are several variations when it comes to alternative software development approaches. Here are definitions of some of them and other key concepts.

Agile development: In this alternative to traditional software development, programmers and end users work together to create software through a series of short iterations often called sprints. Constant feedback between the groups quickly addresses coding errors and changes in user requirements.

Lean software development: Borrowing ideas from lean manufacturing disciplines, this relative of agile development seeks to reduce wasted effort in development projects, such as those associated with excessive administrative overhead and costly commitments to software features that would be nice to have but are not essential.

Scrum: One of the most widely adopted agile variations, it taps ScrumMasters to keep teams of programmers and end users focused on creating and testing the software iterations that go into creating the new application.

Spiral development: This methodology uses an evolutionary series of iterations that each result in the creation of reduced-scale prototypes that approximate the desired end-state product. The design stage for each iteration involves a fresh opportunity for risk assessment and program changes.

Waterfall: A traditional programming method that breaks the development process into discrete steps, such as requirements definition, design and implementation. Each step must be completed before engineers move to the next one. It’s increasingly being seen as risky for software development because it doesn’t easily accommodate changing user requirements and might not uncover coding errors until late in the process.

Extreme programming: A distinguishing feature of this agile development variation is pair programming, in which two software developers share coding and over-the-shoulder evaluation duties at one workstation.