Waterfall Model
The Waterfall model is a linear, sequential approach where each phase must be completed before the next begins. Like a waterfall flowing down, progress moves in one direction.
1. Requirements - Document all system requirements
2. Design - Create system architecture and detailed designs
3. Implementation - Write the actual code
4. Testing - Verify the system works correctly
5. Deployment - Release to users
6. Maintenance - Fix bugs and make updates
• Each phase has specific deliverables
• No overlapping between phases
• Changes are difficult once a phase is complete
• Building a bridge control system (safety critical)
• Developing software for medical devices
• Projects with fixed, well-understood requirements
• Regulatory environments requiring extensive documentation
• Construction or manufacturing projects where design must be finalised before building
Agile Methodologies
Agile takes an iterative approach, delivering working software in small increments and adapting to changing requirements throughout development.
• Iterative development - Build in small, manageable chunks
• Customer collaboration - Work closely with stakeholders throughout
• Responding to change - Welcome changing requirements, even late in development
• Working software - Deliver functional software frequently
• Self-organising teams - Teams decide how best to accomplish work
• Face-to-face conversation - Most effective form of communication
• Regular reflection and adjustment
• Startup developing a new mobile app (requirements uncertain)
• E-commerce website needing frequent updates
• Projects where customer needs evolve during development
• Innovative products requiring experimentation
• Teams co-located and able to communicate frequently
Extreme Programming (XP)
Extreme Programming takes agile principles to the extreme, emphasising technical excellence and close collaboration.
• Pair Programming - Two programmers work together at one computer
• Test-Driven Development (TDD) - Write tests before writing code
• Continuous Integration - Integrate and test code multiple times daily
• Small Releases - Frequent small releases to get rapid feedback
• Simple Design - Keep designs as simple as possible
• Refactoring - Continuously improve code without changing behaviour
• Collective Code Ownership - Anyone can change any code
• On-site Customer - Customer is part of the team, always available
• 40-hour work weeks - sustainable pace
• Small to medium development teams (2-12 people)
• Projects with vague or changing requirements
• High-risk projects where quality is critical
• Teams with experienced programmers
• Projects where rapid feedback is essential
Spiral Model
The Spiral model combines iterative development with systematic risk analysis, making it ideal for large, complex, or high-risk projects.
1. Determine objectives - Define goals and constraints for this cycle
2. Risk analysis - Identify and resolve risks
3. Development and testing - Build and verify the prototype/release
4. Planning - Plan the next iteration
• Each loop of the spiral represents a phase
• More complete version produced each cycle
• Risk analysis drives the process
• Can incorporate other methodologies within cycles
• Large, complex systems (banking, defence)
• Projects with significant technical risks
• Mission-critical applications where failure is costly
• Projects requiring extensive prototyping
• When risk assessment is a priority
• Development of new product lines
Rapid Application Development (RAD)
RAD prioritises rapid prototyping and quick feedback over lengthy requirements gathering, making it ideal for projects with tight deadlines and clear scope.
• User involvement - Users actively participate throughout
• Prototyping - Build working models quickly, refine based on feedback
• Iterative refinement - Continuous improvement based on user input
• Component reuse - Use existing libraries and frameworks
• Automated tools - CASE tools, code generators, visual development
• Parallel development - Multiple teams work on different modules
• Time-boxing - strict deadlines for each phase
• Projects with tight deadlines (3-6 months)
• Well-defined scope with clear user requirements
• User availability for frequent feedback sessions
• Projects using established technology (not bleeding-edge)
• Internal business applications
• Projects where component reuse is possible
Testing During Development
Every methodology includes testing, but at different points. The waterfall lifecycle tests in a single stage after the code has been written. Agile methodologies, extreme programming and RAD test in every iteration, so errors are found sooner.
| Type of testing | What it involves |
|---|---|
| Black box | Checking that given inputs produce the expected outputs, without looking at the code |
| White box | Checking each path through the code, carried out by someone who can see how it is written |
| Alpha | Testing carried out in-house by the development team before the software is released |
| Beta | Testing carried out by real users on a version given to them before the final release |