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.

40 lines
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?