SE Notes
Building a working model to understand and refine requirements.
The Prototype model is a software development approach where you build a preliminary version of the system—a prototype—to explore requirements, validate design decisions, and gather user feedback before committing to full-scale development. Think of it like an architect building a scale model of a building before construction begins. The prototype allows stakeholders to interact with something tangible rather than abstract specifications, helping everyone understand what the final system should look like and how it should behave.
Why Prototyping Exists
Traditional models like Waterfall assume that requirements can be completely and correctly specified before development begins. In practice, users often cannot articulate exactly what they want until they see something concrete. They might say "I want a user-friendly interface" but cannot define what that means until they interact with options. Prototyping solves this communication gap by making abstract ideas tangible early in the process.
The classic problem prototyping addresses is illustrated by this scenario: A client requests an inventory management system. After months of development following written specifications, the delivered system technically meets every documented requirement but is completely unusable because the workflow does not match how warehouse staff actually operate. A prototype shown early would have revealed this mismatch within weeks rather than months.
Types of Prototypes
Throwaway (Rapid) Prototyping creates a quick-and-dirty model solely to understand requirements, then discards it entirely. The prototype is built with the cheapest, fastest approach possible—perhaps using a different language or tool than the final system. Once stakeholders confirm the requirements, development starts fresh with proper architecture and quality standards.
Evolutionary Prototyping builds a robust initial prototype that is refined iteratively into the final product. Each iteration adds features, improves performance, and addresses user feedback until the prototype evolves into the production system. This approach requires careful initial architecture decisions since the prototype becomes the foundation.
Incremental Prototyping divides the system into components, prototypes each separately, and integrates them into the final system. Different components may be at different stages of refinement at any point.
Extreme Prototyping is used primarily for web applications and consists of three phases: static HTML pages showing the interface, functional prototypes with simulated services, and finally implementation of actual services behind the interface.
The Prototyping Process
Step 1: Identify basic requirements. Gather enough information to build an initial prototype. Focus on user interface and core interactions rather than complete specifications.
Step 2: Build the prototype. Create a working model focusing on the user-facing aspects. Internal algorithms may use simplified logic or hardcoded data. The goal is demonstrating behavior, not production-quality code.
Step 3: User evaluation. Present the prototype to users and stakeholders. Observe how they interact with it. Collect feedback on what works, what confuses them, and what is missing.
Step 4: Refine or rebuild. Incorporate feedback into either the next prototype iteration (evolutionary) or the final requirements specification (throwaway).
Real-World Example: Mobile Banking App
A bank wants to develop a mobile banking application but is uncertain about the optimal user experience for features like fund transfers, bill payments, and account management. Using prototyping:
Week 1-2: The team builds clickable wireframes in Figma showing the navigation flow, screen layouts, and key interactions. No actual backend exists.
Week 3: Focus groups of actual customers interact with the prototype on their phones. The team discovers that customers expect to see their balance immediately upon opening the app (not after navigating a menu) and want biometric login rather than passwords.
Week 4-5: A functional prototype is built with real login flows and mock transaction data. Users test actual workflows and reveal that the three-step transfer process should be reduced to two steps.
Week 6: Requirements are finalized based on validated prototype feedback, and full development begins with confidence that the UX design meets customer expectations.
Advantages of Prototyping
Users are actively involved throughout, reducing the risk of building the wrong system. Requirements are validated through interaction rather than imagination. Misunderstandings between developers and stakeholders surface early when they are cheap to fix. The approach is particularly valuable for user interface design, where user experience cannot be adequately captured in written specifications.
Disadvantages and Risks
Scope creep: Users may keep requesting additions to the prototype, expanding the project indefinitely. Clear boundaries between prototyping and production development must be established.
Unrealistic expectations: Users may believe the prototype is nearly complete and expect delivery soon, not understanding that a production system requires proper architecture, security, error handling, and testing that the prototype lacks.
Poor architecture (evolutionary risk): If an evolutionary prototype is built hastily without proper design, the final system inherits technical debt that becomes increasingly expensive to address.
Time investment: While prototyping saves time overall by reducing rework, the prototyping phase itself requires significant effort and stakeholder availability.
When to Use Prototyping
Prototyping is ideal when requirements are unclear or users cannot articulate their needs, when the system has significant user interface components, when the development team is unfamiliar with the application domain, and when the cost of building the wrong system is high. It is less appropriate when requirements are well-understood, when the system is primarily algorithmic with minimal user interaction, or when stakeholders are unavailable for iterative feedback sessions.
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Prototype Model.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Software Engineering topic.
Search Terms
software-engineering, software engineering, software, engineering, process, models, prototype, model
Related Software Engineering Topics