You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

Software development life cycles (SDLC)

Here are several popular SDLC models:

Waterfall

The waterfall model is best suited for well-defined complex projects, where problems can be spotted early and complexity is dealt with in an orderly way. Key distadvantages include low customer visibility and low flexibility to mid-project changes.

Incremental development

"Incremental" here refers to adding to the work products (requirements, source code, etc.) in stages. In each stage, more functionality is added (core functionality first).

Iterative development

In iterative development one iterates through the whole process (requirements → ... → deployment) multiple times. Iterative and incremental development often go together.

Spiral

Spiral is a type of incremental and iterative development where risk assessment occurs at the start of each cycle.

Agile

Agile is a form of incremental and iterative development with emphasis on frequent face-to-face communication, high customer visibility, adaptability to change, and minimizing non-software work products. For example, Extreme Programming (XP) is an agile methodology based on the principles of communication, simplicity, feedback, courage, and respect.

Evolutionary

In an evolutionary model, deliverables are given to the customer frequently and incrementally. The focus is on high-value features first and getting customer feedback early and often.

Code & Fix

This is a kind of incremental development where life cycle phases other than coding and debugging (requirements analysis, software design, testing, etc.) are skipped, and code refactoring is often neglected.

Prototyping

This isn't really a life cycle on its own (although it can be adapted as such, as with "evolutionary prototyping"). Rather, it's a technique that is good for dealing with unclear requirements, assisting in communication, or in developing initial user interface design.

Questions guiding the choice of SDLC model

This list is adapted from Rapid Development by Steve McConnell.

  • How well do the customer and development team understand the requirements?
  • How likely are requirements to change?
  • Are major archiectural changes likely?
  • Are there hard schedule constraints?
  • Are the relevant tools and technologies well-understood by the development team?
  • Is high visibility important to customers and/or management?
  • How will human factors affect the project (discipline, skills, training, and intellectual limits)?
  • What opportunities are there to parallelize work phases?