SDLC process models

Complete

Concept

Software development lifecycle(SDLC)

  • brownfield: builds upon existing software
  • greenfield: new software from scratch

Sequential model

  • linear process
  • specify requirements -> design -> implement -> test -> deploy

Iterative breadth-first

  • each iteration is a working product
  • all components are improved

Iterative depth-first

  • each iteration implements new functionality
  • iterations may not produce a working product

Agile model

  • alternate to document-driven, heavyweight software development
  • core values:
    • individuals & interactions > processes & tools
    • working software > documentation
    • customer collaboration > contracts
    • responding to change > fixed plans
  • key characteristics:
    • continuous requirement refinement
    • flexible, evolving design
    • transparency and shared responsibility

Extreme Programming(XP) model

  • focus: customer satisfaction and adaptability to changing requirements
  • emphasizes:
    • frequent feedback (testing early and often)
    • simple design
    • teamwork
  • core values: communication, simplicity, feedback, respect, courage

Scrum

  • iterative framework using sprints (1 week–1 month)
  • roles:
    • scrum Master (process facilitator)
    • product Owner (represents stakeholders)
    • team (does the work)
  • key practices:
    • sprint planning → define tasks
    • sprint execution → build working product increment
    • sprint review/retrospective → improve process
    • daily scrum (15 min updates)
  • features:
    • time-boxed development
    • frozen requirements during a sprint
    • prioritized product backlog
    • emphasis on adaptability and self-organizing teams

Unified Process

  • inception -> elaboration -> construction -> transition
  • flexible and customizable framework

Capability Maturity Model Integration(CMMI)

  • maturity levels for a process
  • criteria and what to focus on for each level
  • initial -> managed -> defined -> quantitatively managed -> optimizing