Software Processes and Methodologies
Software processes and methodologies are the structured frameworks of activities, milestones, and practices that organize how software is specified, designed, built, validated, and evolved over its lifetime.
Definition
A software process is a set of related activities and their ordering that leads to the production of a software product, and a software methodology is a documented approach that prescribes those activities, roles, artifacts, and practices for a class of projects.
Scope
This area covers prescriptive process models such as the waterfall, incremental, and spiral models; iterative and evolutionary approaches; agile methodologies and their values and ceremonies; lean and DevOps practices for continuous integration and delivery; and process improvement frameworks such as CMMI and ISO/IEC 12207. It treats both the abstract structure of processes and the human and organizational factors that govern their adoption.
Sub-topics
Core questions
- How should the activities of specification, design, implementation, and validation be ordered and iterated?
- When are plan-driven (predictive) processes preferable to agile (adaptive) ones?
- How can a process be measured, assessed, and incrementally improved?
- How do team structure, communication, and tooling shape the effectiveness of a process?
Key theories
- Waterfall (plan-driven) model
- A sequential model in which requirements, design, implementation, verification, and maintenance follow as discrete phases with formal sign-off, well suited to stable, well-understood requirements but criticized for poor accommodation of change.
- Spiral and risk-driven models
- Boehm's spiral model organizes development as repeated cycles, each driven by identifying and resolving the highest project risks, unifying iterative development with explicit risk management.
- Agile and iterative-incremental development
- Agile methods deliver working software in short iterations, favoring customer collaboration, responding to change, and frequent feedback over heavyweight up-front planning and documentation.
Clinical relevance
The choice of process directly affects delivery predictability, defect rates, ability to absorb changing requirements, and team productivity; modern practice blends agile iteration with DevOps automation to shorten feedback loops while preserving quality and compliance.
Evidence & guidelines
ISO/IEC/IEEE 12207 standardizes software life-cycle processes, and the SWEBOK Software Engineering Process knowledge area and CMMI provide widely used reference frameworks for process definition and improvement.
History
Early large-system development popularized phased, document-driven models in the 1970s. Boehm introduced explicit risk-driven iteration in 1988, the Rational Unified Process formalized iterative development in the 1990s, and the 2001 Agile Manifesto crystallized lightweight, change-tolerant methods that, with DevOps in the 2010s, became mainstream.
Debates
- Plan-driven versus agile processes
- A long-running debate concerns when predictive, documentation-heavy processes outperform adaptive agile ones; the consensus is that the right balance depends on requirement stability, regulatory constraints, team size, and the cost of late change.
Key figures
- Winston W. Royce
- Barry Boehm
- Kent Beck
- Watts Humphrey
Related topics
Seminal works
- royce1970
- boehm1988
- sommerville2015
Frequently asked questions
- Is the waterfall model obsolete?
- Pure sequential waterfall is rarely ideal for projects with evolving requirements, but its phased structure still informs regulated and safety-critical domains and underlies hybrid models; most modern projects use iterative or agile variants that retain disciplined specification and validation.
- What is the difference between a process and a methodology?
- A process describes the activities and their ordering, while a methodology is a more complete, named prescription that also fixes roles, artifacts, ceremonies, and practices; Scrum and the Rational Unified Process are methodologies that instantiate iterative or agile processes.