Software Development Life Cycle
Software Development Life Cycle
The Software Development Life Cycle (SDLC) is a structured process used to plan, design, develop, test,
deploy, and maintain software. It ensures a systematic workflow and helps align software development with
business goals and user requirements.
The Software Development Life Cycle (SDLC) typically consists of six or seven stages, depending on the
development model used.
This stage determines whether the project is technically, financially, and operationally feasible.
In this stage, detailed functional and non-functional requirements are documented clearly and approved by
stakeholders.
In this stage, the approved requirements are transformed into a technical blueprint for
implementation.
• High-Level Design (HLD): Defines system architecture, technology stack, database design,
and major modules.
• Low-Level Design (LLD): Specifies component logic, APIs, data structures, and workflows.
Stage 5: Testing
Testing ensures the software meets requirements and is free from defects before release.
Stage 6: Deployment
• Modern Approach: Continuous Integration and Continuous Deployment (CI/CD) pipelines for
faster and reliable releases
Software Development Models are structured frameworks that guide the planning, execution, and
delivery of software projects. They define the sequence of development stages, such as requirements,
design, coding, testing, and deployment.
Common models:
➢ Prescriptive model
➢ Incremental model
➢ Evolutionary modle
➢ Specialized model
➢ Agile model
Waterfall Model
Waterfall Model is a traditional software development approach that follows a linear, step-by-step
process where each phase is completed before moving to the next. Its features are:
• Follows a sequential approach where each phase is completed before the next begins.
Classical Waterfall Model divides the life cycle into a set of phases. The development process
can be considered as a sequential flow in the waterfall. The different sequential phases of the
classical waterfall model are as follows:
The first stage focuses on clearly understanding and documenting the customer’s needs.
• Requirement Gathering and Analysis: Customer requirements are collected and carefully
examined to remove errors, confusion, and inconsistencies.
2. Design
The requirements specified in the SRS are converted into a system design that can be
implemented in code.
• High-Level Design (HLD): Defines the overall system architecture, major components, and
their interactions.
• Low-Level Design (LLD): Provides detailed design of each component, including logic and data
flow, to guide developers during coding.
3. Development
This phase involves converting the design into actual working software.
It is ensured that the integrated software functions correctly and is successfully delivered for
real world use.
Testing: After unit testing, software modules are integrated and integration testing is
performed. Once integration is complete, system testing is carried out to verify the entire
system.
Deployment: After successful testing, the software is deployed to a live environment for end
users. This phase includes environment setup, user training, and final checks to ensure smooth
operation in real world conditions.
5. Maintenance
Use Cases
• Well-Defined Requirements: Requirements are clear, stable, and fully documented before
development begins.
• Minimal Changes Expected: The project scope is unlikely to change during development.
• Small to Medium-Sized Projects: Suitable for projects with limited complexity and a clear
development path.
• Predictable and Low Risk: Risks are known, manageable, and can be addressed early in the
development cycle.
• Client Prefers a Sequential Approach: Best when the client wants a step-by-step, linear
development process.
• Limited Resources: Works well when resources are limited and need careful planning and
allocation.
A real-world example of the Waterfall Model using an Online Food Delivery System.
1. Analysis: Customer and business requirements are gathered. This includes understanding
features such as user registration, restaurant listing, menu display, order placement, payment
methods, delivery tracking, and customer support.
2. Design: Based on the requirements, the system design is created. This includes deciding the
app architecture, database design, user interface layout, payment gateway integration, and
security measures. The goal is to ensure smooth ordering, fast performance, and secure
transactions.
3. Development: Modules such as login, restaurant search, order processing, payment, and
notifications are developed. Each feature is built exactly as planned in earlier phases.
4. Testing: Once development is complete, the system is tested to ensure everything works
correctly. This includes testing order placement, payment processing, delivery tracking, and
app performance. Bugs and errors are identified and fixed before release.
5. Maintenance: After deployment, the app is maintained to fix issues, improve performance,
and add minor updates. This may include adding new restaurants, improving delivery tracking,
updating security features, or supporting new payment methods.
Advantages
V-Model
The V-Model is a Software Development Life Cycle (SDLC) approach that integrates testing and
validation at every stage. It follows a “V” shape structure, where each phase of development
is directly connected to a corresponding testing phase, ensuring better quality and early
detection of defects..
Phases of SDLC V-Model
The V-Model, which includes the Verification and Validation it is a structural approach to software
development. The following are the different Phases of the V-Model of the SDLC.
1. Verification Phases
This is where the process begins. The first step is to gather and understand the customer’s needs for
the software. The goal is to define the scope of the project clearly to make sure everyone is on the
same page.
2. Validation Phases
It involves dynamic analysis techniques (functional, and non-functional), and testing done by
executing code. Validation is the process of evaluating the software after the completion of the
development phase to determine whether the software meets the customer's expectations and
requirements.
I. Unit Testing: In Unit testing, unit test plans are executed to eliminate bugs in code or unit level.
II. Integration testing: After completion of unit testing integration testing is performed. In integration
testing, the modules are integrated and the system is tested.
3. System Testing: System testing checks the whole application to see if everything works properly
together.
4. User Acceptance Testing (UAT): User Acceptance Testing (UAT) is performed in a user environment
that resembles the production environment.
Industrial Challenge
Modern software projects are more complex and fast-paced, which makes strict requirement
definition and early testing even more critical for the V-Model.
• Validate that the application they had built adhered to the authorized business requirements.
Importance
The V-Model is an important part of the SDLC, and the process is structured and sequential
throughout all the testing.
• Early Defect Detection: Finds and fixes defects early, reducing cost and effort.
• Avoids Big Bang Testing: Testing is performed throughout development, not just at the end.
• Higher Quality: Ensures thorough verification and validation for reliable software.
Principles
• Large to Small: In V-Model, testing is done in a hierarchical perspective. As each of these
phases is completed the requirements, they are defining become more and more refined and
detailed.
• Data/Process Integrity: Project design must integrate data and processes cohesively at every
stage. Process elements must be identified at every requirement.
• Scalability: This principle states that the V-Model concept has the flexibility to accommodate
any IT project irrespective of its size, complexity, or duration.
Applications
• Healthcare Systems: Used in hospital management systems, medical imaging software, and
patient monitoring systems where software errors can affect patient safety.
• Banking and Financial Software: Applied in internet banking, ATM software, and payment
processing systems that require high security and accuracy.
• Aerospace and Aviation: Used in flight control systems, navigation software, and aircraft
monitoring systems where failures can have serious consequences.
• Automotive Industry: Used for developing software in Anti-lock Braking Systems (ABS),
airbags, Advanced Driver Assistance Systems (ADAS), and engine control units.
Advantages
Disadvantages
The Incremental Model is divided into multiple phases, where each increment goes through a
complete development cycle to build the system step by step.
1. Requirement Analysis: Requirements for the current increment are gathered and clearly
defined.
2. Design & Development: The system design is prepared, and new features are developed.
3. Testing: Each increment is tested to ensure new and existing features work correctly.
4. Implementation: The tested increment is delivered and integrated with previous versions.
The Incremental Model has two main types, each offers different approaches to how software is
developed in parts.
Develops software in a sequence of planned stages, where each stage delivers a functional part of
the system. Each release brings the product closer to completion, allowing it to evolve gradually.
Working versions are delivered at regular intervals, making progress visible and manageable
throughout the development process.
2. Parallel Development Model
Divides the system into multiple modules that are developed in parallel by different teams. By
working on separate components in parallel, the development process becomes faster and more
efficient. This approach reduces overall project time and allows teams to focus on specific
functionalities concurrently.
Advantages
Note: The Incremental Model is not ideal when the software development team is not highly
skilled or experienced because managing increments and integrating them well requires a
competent team.
Disadvantages
Spiral Model
The spiral model is a risk-driven software development process model. Based on the unique
risk patterns of a given project, the spiral model guides a team to adopt elements of one or
more process models, such as incremental, waterfall, or evolutionary prototyping.
Focus is on managing risk through multiple iterations of the software development process. Each
phase of the Spiral Model is divided into four Quadrants.
2. Risk Analysis
• Feedback is collected
The next iteration of the spiral begins with a new planning phase, based on the results of the
evaluation. The Radius of the spiral at any point represents the expenses (cost) of the project so
far, and the angular dimension represents the progress made so far in the current phase.
Risk Handling
The Spiral Model is often called a Meta-Model because it combines concepts from multiple SDLC
models such as Waterfall, Iterative, and Prototyping models.
Example
Following shows how the Spiral Model supports continuous improvement and risk management
at every stage in building E Commerce Website.
• Requirements & Prototype: Gather basic requirements like product listing, cart, and payment,
identify risks, and build a prototype.
• Design & Development: Refine the design using feedback and develop core features such as
secure payments, user registration, and shopping cart functionality, then test and refine them.
• Advanced Features: Add advanced features such as order tracking, product reviews, and
search functionality are developed, and also test performance, security, and scalability.
• Deployment & Maintenance: The system is fully tested, deployed for users, and continuously
monitored to address remaining risks and make further improvements.
Advantages
• Effective Risk Handling: Identifies and resolves risks at every phase, making it ideal for
projects with high uncertainty.
• Suitable for Large Projects: Best suited for large and complex software systems.
• High Software Quality: Continuous testing and refinement lead to reliable and high-quality
software.
Disadvantages
• Complex to Manage: The model is complex due to multiple iterations and continuous risk
analysis.
• High Cost: Not suitable for small projects because it requires more time, effort, and resources.
• Depends Heavily on Risk Analysis: Success depends on accurate risk identification, which
requires experienced professionals.
• Difficult Time Estimation: The number of iterations is not fixed, making scheduling difficult.
Iterative Waterfall Model was very popular for completing a project in early days. But
nowadays, developers face various problems while using it like handling customer change
requests during project development and the high cost and time required to incorporate these
changes. In the mid-1990s, the Agile Software Development Model was proposed to overcome
these drawbacks of the Waterfall Model.
Agile Model
Primarily designed to help a project adapt change requests quickly. The main aim is to
facilitate quick project completion. To accomplish this task, it is important that agility is
achieved. Agility is achieved by adapting the development process to suit the specific project,
eliminating unnecessary activities that do not add value, and avoiding tasks that waste time
and effort. The Agile Model is not a single method but a collection of development
approaches.
1. Requirement Gathering
3. Construction / Iteration
5. Deployment
6. Feedback
1. Requirement Gathering
In this step, the development team must gather the requirements, by interaction with the
customer. Development team should plan the time and effort needed to build the project.
Based on this information they can evaluate technical and economical feasibility.
• Meet with the customer to really understand their needs and what they expect from the
software.
• Identify requirements and align them with business objectives so everyone shares the same
understanding.
• Estimate how much time and effort it will take to develop the software.
• Assess if the project is technically possible and whether it's worth the investment from both a
technical and economic standpoint.
In this step, the development team will use user-flow-diagram or high-level UML Diagrams to
show the working of the new features and show how they will apply to the existing software.
Wireframing and designing user interfaces are done in this phase.
• After gathering requirements, the next step is to design the overall structure of the system
based on those needs. This ensures the software is organized in a way that meets user
expectations.
• Wireframes are then created for the user interface. These act as simple layouts that show how
the software will look and how users will interact with it, making sure it is easy to use.
• At this stage, high-level designs using UML (Unified Modeling Language) diagrams are
prepared to visually show the system structure and how different components are connected.
• Prototypes are also developed to give stakeholders an early view of the system. This helps in
collecting feedback early and making necessary changes before full development begins.
3. Construction / Iteration
In this step, the development team starts working on the project with the goal of delivering a
working product. Each cycle typically consists of 1–4 weeks, and at the end of each iteration, a
working version of the software is delivered.
• The team develops the features identified during the requirement and design phases.
• New functionalities are coded and integrated into the software based on the goals of that
specific iteration.
• After each cycle, a usable version of the software is ready for review or use.
• With every iteration, the software is improved by adding new features and refining existing
ones.
In this phase, the software is tested to ensure it works correctly and meets the required
standards. The team identifies and fixes bugs, errors, and performance issues to improve
overall quality.
• Unit Testing: Checks small pieces of code to ensure each part of the program works correctly
on its own. It focuses on testing individual units or components.
• Integration Testing: Verifies that different units of the software work properly when combined
and helps identify issues in their interaction.
• System Testing: Ensures that the complete software meets user requirements and works
correctly in all possible scenarios.
5. Deployment
In this step, the development team deploys the working software to end users. Once an
iteration is completed and fully tested, the software is ready for release.
In Agile, deployment is not a one-time activity; it is a continuous process where updates and
improvements are released regularly to keep the software evolving.
• Deploy the software to a test or live environment so that it can be used by customers or end
users
• Make the software accessible to users and ensure they can start using it as expected.
• Ensure the deployment runs smoothly and quickly fix any issues that arise.
6. Feedback
This is the final step of the Agile Model, where the team collects feedback on the product and
works on fixing issues based on input from customers.
• Take feedback from customers, users, and stakeholders after each iteration.
• The team analyzes how well the product meets user needs and identifies areas for
improvement.
• Make adjustments to the development plan based on feedback to improve the product
further.
1. Test-Driven Development (TDD): Software development process relying on creating unit test
cases before developing the actual code of the software. It is an iterative approach that
combines 3 operations, programming, creation of unit tests, and refactoring.
2. Behavior Driven Development (BDD): Agile software testing that aims to document and
develop the application around the user behavior a user expects to experience when
interacting with the application. It encourages collaboration among the developer, quality
experts, and customer representatives.
3. Exploratory Testing: The tester has the freedom to explore the code and create effective and
efficient software. It helps to discover the unknown risks and explore each aspect of the
software functionality.
7. Dynamic Software Development Method (DSDM): Agile project delivery framework that
provides a framework for building and maintaining systems. It can be used by users,
developers, and testers.
8. Crystal Methodologies: Focuses on people and their interactions when working on the project
instead of processes and tools. The suitability of the crystal method depends on three
dimensions, team size, criticality, and priority of the project.
There are 12 Agile Principles mentioned in the Agile Manifesto. Agile principles are guidelines
for flexible and efficient software development.
1. Our highest priority is to satisfy the client through early and continuous delivery of valuable
computer software.
3. Deliver operating computer software often, from a pair of weeks to a couple of months, with a
preference to the shorter timescale.
4. Business individuals and developers should work along daily throughout the project.
5. The build comes around actuated people. offer them the setting and support they have, and
trust them to urge the task done.
6. the foremost economical and effective methodology of conveyancing info to and among a
development team is face-to-face speech.
8. Agile processes promote property development. The sponsors, developers, and users will be
able to maintain a relentless pace indefinitely.
10. Simplicity—the art of maximizing the number of work not done—is essential.
11. the most effective architectures, necessities, and styles emerge from self–organizing groups.
12. At regular intervals, the team reflects on a way to become simpler, then tunes and adjusts its
behavior consequently.
Characteristics of the Agile Process
The Agile process is all about being flexible, working together, and focusing on delivering real
value to customers. Here is the Characteristics of the Agile Process:
• Agile processes must be adaptable to technical and environmental changes. That means if any
technological changes occur, then the agile process must accommodate them.
• The development of agile processes must be incremental. That means, in each development,
the increment should contain some functionality that can be tested and verified by the
customer.
• The customer feedback must be used to create the next increment of the process.
The Agile model works really well for certain types of projects. Here’s when Use the Agile
Model:
• When new changes need to be implemented. The freedom that playfulness gives for change is
very important.
• New changes can be implemented at a very low cost due to the frequency of new increments.
• Implementing a new feature requires developers to lose only a few days or even just hours of
work to get it back and implemented.
• In the Agile model, unlike the Waterfall model, very limited planning is required to start a
project.
• Agile believes that the needs of end users are always changing in the dynamic business and IT
world.
• Changes can be discussed and features can be redesigned or removed based on feedback.
• Working through Pair programming produces well-written compact programs which have
fewer errors as compared to programmers working alone.
• Customer representatives get the idea of updated software products after each iteration. So, it
is easy for him to change any requirement if needed.
• Agile development puts the customer at the center of the development process, ensuring that
the end product meets their needs.
• Lack of formal documentation can create confusion, and important decisions may be
misinterpreted by team members.
• Highly dependent on customer interaction; unclear requirements can lead the team in the
wrong direction.
• Short development cycles make it difficult to plan, estimate timelines, and manage resources
effectively.
• Requires experienced and skilled team members to handle changing requirements and
iterative development.
• Limited documentation can make maintenance difficult after project completion, especially
when team members move to other projects.
The Concurrent Development Model is a software development approach where multiple phases
(e.g., design, coding, testing) occur simultaneously. This model emphasizes the overlapping of
various project stages, which allows teams to work on different parts of the project at the same
time.. This model supports the concept of concurrency in that design, code, test and another
related phase occur simultaneously.
• Parallel Workflow: Several phases start and run concurrently like the design phase,
development phase, and the testing phase allowing completion of a project more expediently.
• Real-time Communication: Everyone gets repeated feedback hence the team works and
solutions together to ensure the common goal is achieved.
• Flexibility: Stakeholders can incorporate new changes and improvements easily since one
phase operates in tangent to another.
• Iterative Development: The model is also suitable for iterative activities in which input and
testing are received continually, and prototypes are revised.
• Reduced Time-to-Market: The work is divided between the tasks and stages, making the
project faster since many tasks are done concurrently.
While the Waterfall Model is traditionally sequential, it can allow for some parallelism in specific
sub-phases (e.g., testing specific modules). However, it is not inherently a concurrent
development model. Although the Waterfall model itself doesn’t support concurrent
development, certain sub-phases (e.g., testing of specific modules) can run in parallel, but the
overall flow is sequential. It works best for projects where requirements are well-defined and
unlikely to change during development.
Pros
• Simple and Easy to Understand: Due to its clear structure and logical sequence of the
presented steps, it is very convenient to navigate.
• Well-Defined Stages: This makes each phase the project has to go through to be compact and
easier to monitor due to its deliverables.
• Easy to Manage: The rigidity enshrined here makes it easy to manage, especially where it is a
small project you are working on.
• Structured Process: Applicable for the project where requirements are definite and clearly
defined.
Cons
• Late Testing: Testing is conducted after development and therefore can present major
problems that are difficult to solve.
• High Risk: Ensuring that quality is built into a system at its’ developmental stage is much
cheaper than having to retrofit it later.
• Not Ideal for Complex Projects: It has problems with iterative development and with the
development of distinct project phases.
• Longer Delivery Time: The entire system is only delivered after all these phases and this
elevates the time to be in the market.
2. Prototype Model
In the prototype Model, an initial version or prototype is created and presented to users for
feedback. The prototype is revised concurrently with other system components, making it a
model conducive to continuous user involvement and iterative improvements. After the user
provides feedback, the prototype is refined and modified until the final system is developed. This
model encourages concurrent development, especially in the initial phases, as the prototype is
developed alongside other parts of the system. This approach allows for ongoing user
involvement and iterative improvements
Pros
• User Feedback Driven: People can touch and give a sort of live input from the design, which
makes for a better product at the end of the day.
• Risk Reduction: Lead time identification of the concerns minimizes the chances of failing the
project.
Cons
• Time-Consuming: Continual rehearsals and feedback seem to prolong the time of the activity.
• Increased Costs: Cumulative alterations and modifications in the documentation can become
expensive for the implementers.
• Scope Creep: This means that there will be constant changes that stakeholders may ask for
hence causing more scope creep.
• Limited Scalability: A prototype actuality may not contain a necessary system’s scalability,
which may result in necessary work redoing.
3. Spiral Model
The Spiral Model focuses on iterative development with an emphasis on risk management. It
allows for concurrent phases where feedback is integrated at each iteration, making it a good fit
for ongoing refinement, though not entirely a 'concurrent development' model. The development
process is divided into cycles (or spirals), each of which involves planning, risk analysis, design,
development, and testing. These cycles are iterative, with each spiral producing a refined version
of the system. The Spiral Model encourages concurrent development, as feedback and changes
are integrated at every cycle, allowing teams to continuously refine the system.
Pros
• Risk Management Focus: Every build entails risk analysis, which lowers the risk of project
failure significantly.
• Flexibility: Readable and reusable allowing for changes and refinements throughout the
software development making it appropriate for projects with changing requirements.
• Early Detection of Problems: Review and assessment are conducted at the end of every spiral,
this facilitates early discovery of risks and issues.
• User Feedback Integration: More often, user feedbacks are integrated into the development
process hence enhancing the overall results of the development process in an improved user-
centric final product.
• Iterative Development: Enables the concept of building a system incrementally and refining
the design in each assembly cycle.
Cons
• Complex and Costly: There can be high costs of risk analysis and it becomes very much a
complex structure that is difficult to manage.
• Requires High Expertise: One of the most important factors of successful risk analysis is the
team of experienced specialists, which means that the option is more challenging for
organizations without sufficient experience.
• Not Suitable for Small Projects: Sometimes it might be too much for a project or it may call
for too many resources than needed for a small project.
• Difficult to Set Timelines: The repetitiveness inherent in the cycle leads to the unpredictability
of timeframes and failure to deliver on project deadlines.
• Documentation Overload: Much documentation can be carried out at every spiral, but this
can be tiring.
In the Concurrent Development Model, multiple phases like System Requirements Gathering,
Design, Development, and Testing run concurrently. For example, design and coding happen in
parallel with real-time testing and integration, significantly speeding up delivery.
• System Requirements Gathering: Defining the project requirements, which can evolve
throughout the project.
• Design and Prototyping: Design happens alongside development and testing. Prototypes may
be created concurrently to help stakeholders understand the project’s progress.
• Development and Coding: Development is done in parallel with design and testing phases.
Different teams might work on separate modules or features.
• Integration and Testing: Continuous integration ensures that newly developed modules are
tested and integrated into the system as they are completed. Testing occurs iteratively during
development.
• Deployment and Maintenance: Deployment occurs progressively with feedback from users,
and maintenance continues as the system evolves.
• Reduced Development Time: By running multiple phases in parallel, tasks are completed
faster, leading to shorter time-to-market.
• Early Detection of Issues: Continuous testing and feedback integration allow for issues to be
detected early in the development process.
• Flexibility and Adaptability: Changes can be incorporated at any stage of the development,
allowing for a more adaptable approach to evolving project needs.
• Enhanced Product Quality: With real-time feedback and iterative testing, the final product
benefits from higher quality due to continuous improvements throughout the development
cycle.
• Complex Project Management: Managing concurrent tasks across multiple teams requires
effective coordination and real-time communication to ensure that the teams’ efforts align
properly.
• Difficulty in Managing Dependencies: Teams often depend on each other’s work, and if one
team lags behind, it can affect the entire project’s progress.
• Increased Complexity in Integration: Integrating modules developed by different teams
concurrently can lead to compatibility issues, requiring additional testing and debugging.
• Aerospace and Defense: Aerospace projects often involve multiple teams working on different
subsystems, such as avionics, propulsion, and control systems, all developing in parallel. This
approach ensures that components are integrated efficiently and meet strict deadlines.
• Consumer Electronics: Companies like Samsung use the concurrent development model to
develop hardware and software for products like smartphones, where both components need
to be ready for launch simultaneously.
• Video Game Development: In game development, designers, developers, and artists work in
parallel on various elements (game mechanics, story, graphics) to create a unified final
product.
• Prototyping Model
Prototyping Model is a way of developing software where an early version, or prototype, of the
product is created and shared with users for feedback.
In this model, a prototype of the end product is first developed, tested, and refined as per
customer feedback repeatedly till a final acceptable prototype is achieved which forms the basis
for developing the final product.
In this process model, the system is partially implemented before or during the analysis phase
thereby allowing the customers to see the product early in the life cycle. The process starts by
interviewing the customers and developing the incomplete high-level paper model.
This document is used to build the initial prototype supporting only the basic functionality as
desired by the customer. Once the customer figures out the problems, the prototype is further
refined to eliminate them. The process continues until the user approves the prototype and finds
the working model to be satisfactory.
Requirement analysis is the first step in developing a prototyping model. During this phase, the
system’s desires are precisely defined. During the method, system users are interviewed to
determine what they expect from the system.
2. Quick design
The second phase could consist of a preliminary design or a quick design. During this stage, the
system’s basic design is formed. However, it is not a complete design. It provides the user with a
quick overview of the system. The rapid design aids in the development of the prototype.
3. Build a Prototype
During this stage, an actual prototype is intended to support the knowledge gained from quick
design. It is a small low-level working model of the desired system.
The proposed system is presented to the client for preliminary testing at this stage. It is beneficial
to investigate the performance model’s strengths and weaknesses. Customer feedback and
suggestions are gathered and forwarded to the developer.
5. Refining prototype
If the user is dissatisfied with the current model, you may want to improve the type that responds
to user feedback and suggestions. When the user is satisfied with the upgraded model, a final
system based on the approved final type is created.
The final system was fully tested and distributed to production after it was developed to support
the original version. To reduce downtime and prevent major failures, the programmer is run on a
regular basis.
There are four types of Prototyping Models, which are described below.
• This technique offers a useful method of exploring ideas and getting customer feedback for
each of them.
• In this method, a developed prototype need not necessarily be a part of the accepted
prototype.
• Customer feedback helps prevent unnecessary design faults and hence, the final prototype
developed is of better quality.
2. Evolutionary Prototyping
• In this method, the prototype developed initially is incrementally refined based on customer
feedback till it finally gets accepted.
• In comparison to Rapid Throwaway Prototyping, it offers a better approach that saves time as
well as effort.
• This is because developing a prototype from scratch for every iteration of the process can
sometimes be very frustrating for the developers.
3. Incremental Prototyping
• In this type of incremental prototyping, the final expected product is broken into different
small pieces of prototypes and developed individually.
• In the end, when all individual pieces are properly developed, then the different prototypes
are collectively merged into a single final product in their predefined order.
• It's a very efficient approach that reduces the complexity of the development process, where
the goal is divided into sub-parts and each sub-part is developed individually.
• The time interval between the project's beginning and final delivery is substantially reduced
because all parts of the system are prototyped and tested simultaneously.
• Of course, there might be the possibility that the pieces just do not fit together due to some
lack of ness in the development phase – this can only be fixed by careful and complete plotting
of the entire system before prototyping starts.
4. Extreme Prototyping
This method is mainly used for web development. It consists of three sequential independent
phases:
• In this phase, a basic prototype with all the existing static pages is presented in HTML format.
• In the 2nd phase, Functional screens are made with a simulated data process using a
prototype services layer.
• This is the final step where all the services are implemented and associated with the final
prototype.
This Extreme Prototyping method makes the project cycling and delivery robust and fast and
keeps the entire developer team focused and centralized on product deliveries rather than
discovering all possible needs and specifications and adding necessitated features.
• The customers get to see the partial product early in the life cycle. This ensures a greater level
of customer satisfaction and comfort.
• Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing
the quality of the software.
• The developed prototype can be reused by the developer for more complicated projects in the
future.
• Flexibility in design.
• Early feedback from customers and stakeholders can help guide the development process and
ensure that the final product meets their needs and expectations.
• Prototyping can be used to test and validate design decisions, allowing for adjustments to be
made before significant resources are invested in development.
• Prototyping can help reduce the risk of project failure by identifying potential issues and
addressing them early in the process.
• Prototyping can facilitate communication and collaboration among team members and
stakeholders, improving overall project efficiency and effectiveness.
• Prototyping can help bridge the gap between technical and non-technical stakeholders by
providing a tangible representation of the product.
• There may be too much variation in requirements each time the prototype is evaluated by the
customer.
• It is very difficult for developers to accommodate all the changes demanded by the customer.
• There is uncertainty in determining the number of iterations that would be required before
the prototype is finally accepted by the customer.
• After seeing an early prototype, the customers sometimes demand the actual product to be
delivered soon.
• The customer might lose interest in the product if he/she is not satisfied with the initial
prototype.
• The prototype may not be scalable to meet the future needs of the customer.
• The prototype may not accurately represent the final product due to limited functionality or
incomplete features.
• The focus on prototype development may shift away from the final product, leading to delays
in the development process.
• The prototype may give a false sense of completion, leading to the premature release of the
product.
• The prototype may not consider technical feasibility and scalability issues that can arise during
the final product development.
• The prototype may be developed using different tools and technologies, leading to additional
training and maintenance costs.
• The prototype may not reflect the actual business requirements of the customer, leading to
dissatisfaction with the final product.
• The prototyping model can also be used if requirements are changing quickly.
• This model can be successfully used for developing user interfaces, high-technology software-
intensive systems, and systems with complex algorithms and interfaces.
• The prototyping Model is also a very good choice to demonstrate the technical feasibility of
the product.
Conclusion