SW Deploy Bites: Process

The build pipeline flows
Tests, builds, and releases dance
Production glows bright
- Haiku by ChatGPT 4o

1.0 Prologue

Software processes are organized collections of activities designed to make development efficient and result in products that are correct and maintainable. This page is an introduction to several modern process styles. The mechanics and details of each process depend on the scale of the project, e.g., small personal project, two or three developers collaborating on a few thousand lines of code, or bigger projects with scores of developers working on several million lines of code.

2.0 Outline of Software Development Processes

The table below, generated by ChatGPT 4o, lists many of the currently used software development processes. A few of the most popular process models are discussed in more detail below the table.
Process Type Category Brief Description
Waterfall Plan‑Driven Sequential phases (requirements → design → implementation → testing → maintenance) with little overlap.
V‑Model Plan‑Driven “Verification & Validation” extension of Waterfall; each development phase maps to a testing phase.
Spiral Risk‑Driven Iterative cycles combined with explicit risk assessment and mitigation activities.
Agile Umbrella Framework Iterative, incremental delivery; values individuals, working software, and customer collaboration.
Scrum Agile Framework Sprint‑based delivery with fixed time‑boxes, cross‑functional teams, and regular ceremonies.
Kanban Agile Framework Continuous flow model using visual boards and WIP (work‑in‑progress) limits to optimize throughput.
Extreme Programming (XP) Agile Practice Emphasizes pair programming, TDD, collective code ownership, and frequent releases.
Lean Software Development Lean Principles Focuses on eliminating waste, amplifying learning, and delivering fast (derived from Lean manufacturing).
DevOps Dev + Ops Integration Blends development and operations to enable continuous integration, delivery, and feedback loops.
Feature‑Driven Development (FDD) Agile Framework Model‑driven, short iterative cycles centered around designing & building features.
Test‑Driven Development (TDD) Agile Practice Development guided by writing failing tests first, then code to make them pass.
Rational Unified Process (RUP) Iterative Framework Defined phases (Inception → Elaboration → Construction → Transition) with customizable workflows.
Rapid Application Development (RAD) Prototyping Model Emphasizes quick prototyping over lengthy planning, with user involvement throughout.
Scaled Agile Framework (SAFe) Agile at Scale Prescriptive approach to applying Agile, Lean, and DevOps practices across large enterprises.
Scrumban Hybrid Framework Combines Scrum’s sprint structure with Kanban’s flow‑based pull system.
Dynamic Systems Development Method (DSDM) Agile Framework Business‑centric Agile method with fixed budgets & timelines, iterative delivery, and empowered teams.

3.0 Development Process Features

  1. Recursive Waterfall A linear walk through budget, schedule, concept, specification, design, implementation, test, and deployment, with feedback paths to make additions, deletions, and corrections.
    Waterfall is often a subprocess of other modern development processes.
  2. Agile Iterative, incremental software delivery emphasizing flexability, collaboration, and customer feedback.
    Build increments of product in short time periods called sprints to deliver partial functionality of the final product, gather customer feedback for next sprint. Each sprint develops brief specification, design, and implementation for a remaining high priority requirement.
    Agile is well matched to small and medium size projects, but needs to be factored into multiple processes across a development organization for large scale projects, e.g., many thousand lines of code.
  3. DevOps DevOps is designed to merge Software Development (Dev) with IT Operations (Ops) into a continuous workflow. Its goal is to increase deployment frequency and deliver high quality software through collaboration, automation, and rapid feedback across development and maintenance teams.
    Developers, Quality Assurance, and Operations engineers work together and share ownership through all stages of the development process.
    Teams that develop features are responsible for deploying and supporting them in production.
These processes are nested, e.g., DevOps is usually implemented with an Agile process for each team. The Agile processes often use Recursive Waterfall as a framework for their activities.