Prototyping Approaches
Prototyping is the practice of building a preliminary version of a system to explore ideas, validate requirements, and gather user feedback before committing to full development. It reduces risk by detecting misunderstandings early.
Types of Prototypes
| Type | Purpose | Fate |
|---|---|---|
| Throwaway | Explore requirements, answer questions | Discarded after validation |
| Evolutionary | Build incrementally toward final system | Becomes the production system |
| Incremental | Build functional pieces early | Integrated into final system |
Throwaway Prototype
Process:
1. Build quick, rough prototype
2. Show to users for feedback
3. Gather requirements insights
4. Discard prototype
5. Build the real system from specifications
Characteristics:
- Fast to build (hours or days)
- Uses rapid development tools
- May lack error handling, security
- Not optimized for performance
- Purpose is learning, not production
Evolutionary Prototype
Process:
1. Build a minimal working version
2. Show to users for feedback
3. Refine and expand based on feedback
4. Repeat until the system is complete
Characteristics:
- Built with production-quality tools
- Evolves into the final system
- Requires flexible architecture
- Risk: may accumulate design debt
Throwaway vs Evolutionary
| Aspect | Throwaway | Evolutionary |
|---|---|---|
| Goal | Learn requirements | Build the final system |
| Quality | Low (rough draft) | High (production-ready) |
| Time | Very short | Longer (iterative) |
| Cost | Low (discarded) | Higher (retained) |
Rapid Application Development (RAD)
RAD is a development methodology that heavily relies on prototyping. It emphasizes rapid iteration, user involvement, and the use of CASE tools to accelerate development.
- Short development cycles (60-90 days)
- Extensive user participation
- Iterative prototyping and refinement
- Use of visual development tools
When to Use Prototyping
- Requirements are unclear or poorly understood
- Users have difficulty articulating needs
- Testing new interface concepts
- Validating technical feasibility
- Building stakeholder confidence and buy-in
Summary
Prototyping is a powerful technique for reducing uncertainty and improving requirements quality. Choosing between throwaway and evolutionary approaches depends on project goals, timeline, and risk tolerance.