When we’re talking about iterative and incremental software development, it’s easy to forget that it wasn’t all that long ago – well, okay, if you’re my age it doesn’t seem all that long ago – when that wasn’t really a thing.
In the formative years of our profession, in the 1970s, there were three schools of thought that dominated the software design and development methodology landscape:
The “Waterfall” Model – a sequence of development activities (requirements, design, coding, testing, operations), with some basic level of iteration built in to allow us to revisit earlier activities (“do it twice”)
Structured Programming – often seen working with the Waterfall model in the 1970s (the Martin Scorsese and Robert De Niro of software methodology)
Rapid Prototyping – a highly iterative, customer-centric approach to design that used a series of low-fi prototypes to pin down the details before “building it properly”.
In his seminal 1986 paper, A Spiral Model of Software Development and Enhancement, Barry Boehm discusses the drawbacks and risks of these dominant approaches, and then proposes a new model of the software development life cycle that incorporates their strengths and addresses their weaknesses.
This model emphasizes iterative development, risk analysis, and prototyping. It’s designed to combine elements of both the waterfall model and prototyping approaches, ensuring a systematic, but flexible software development process. The Spiral Model’s key feature is its focus on early identification and reduction of project risks, and it allows for incremental refinement of the product through successive spirals or phases. This approach has had a significant influence on how software development is approached, especially in complex, high-risk projects.
Key Points
- Introduction of the Spiral Model: Presents a new approach to software development, combining elements from the traditional Waterfall Model and prototyping, aiming for a systematic yet adaptable process.
- Iterative Development: The model emphasizes iterative cycles of development, where each cycle includes stages of planning, risk analysis, engineering, and evaluation.
- Risk Analysis: Central to the model, it focuses on the early identification and continuous management of risks throughout the project’s lifecycle.
- Prototyping: Utilizes prototyping extensively for refining requirements and design, allowing for user feedback and system adaptation.
- Phased Approach: Breaks down development into smaller segments, each encompassing objective setting, risk assessment, development, and validation.
- User Involvement: Stresses high levels of customer involvement to ensure that the evolving system aligns with user needs.
- Continuous Testing: In the Spiral Model, testing is an integral and continuous activity that occurs throughout the development process.
- Flexibility and Adaptability: Highlights the model’s adaptability to changes and varying risk profiles, making it suitable for large, complex, and high-risk projects.
- Comparison with Other Models: Discusses advantages over traditional models like Waterfall, particularly in addressing uncertainty and risk.
- Implementation Guidelines: Provides practical guidance for implementing the Spiral Model, emphasizing expert judgment in risk evaluation.
The influence of Boehm’s paper can be seen in pretty much all of the software development methodologies that followed. Anybody that proposes not approaching development in an iterative and incremental manner these days will be asked to hand in their methodologist badge and gun. Software development since 1986 has mostly been variations on the Spiral Model theme. Some approaches may take it to eXtremes, of course. But that’s another Bluffer’s Guide for another day.