UNIT 1
WATERFALL MODEL
Incremental Process Model
The Incremental Process Model is a method of software development
where the system is built step by step. Instead of delivering the whole
system at once, it is developed and delivered in small parts called
increments. Each increment builds upon the previous one by adding new
functionality, until the complete system is finished.
Key Characteristics of Incremental Process Model
Partial System Delivery: The system is developed and delivered
in small, manageable pieces. Each part adds new features to the
previous version.
Early Functionality: Basic functionality is available early in the
project. This allows users to start using and testing the system
quickly.
Customer Feedback Loop: Feedback is collected after each part is
delivered. This helps improve the next version of the system.
Flexible to Changes: Changes or new features can be added
between increments. This makes the model flexible to evolving
needs.
Combination of Linear and Iterative Approaches: Combines
the structured approach of Waterfall with flexibility. Supports both
planning and ongoing improvements.
Phases of the Incremental Model
The phases of Incremental model is divided into the four parts which is
Requirement, Design, Testing phases and Implementation phase. In those
phase, the process continues until we got the expected output at the end.
Requirement Analysis
The first step in the Incremental Model is understanding what the software
needs to do. The team gathers the requirements from the product experts
and clearly defines the system’s functional needs. This phase is important
because it sets the foundation for everything else in the development
process.
Design & Development
Next, the team focuses on designing how the software will function and
starts developing it. They work on adding new features and making sure
the system works as expected. The design and development steps go
hand-in-hand to build the functionality of the software.
Testing
Once a feature is developed, it goes through testing. The testing phase
checks how the software performs, including both new and existing
features. The team uses different testing methods to make sure
everything is working correctly.
Implementation
This phase involves writing the final code based on the design and
development steps. After testing the functionality, the team verify that
everything is working as planned. By the end of this phase, the product is
gradually improved and updated until it becomes the final working
version.
Types of Incremental Model
The Incremental Model has two main types, each offers different
approaches to how software is developed in parts. Here are the two types:
1.Staged Delivery Model
The Staged Delivery Model 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
The Parallel Development Model divides the system into multiple modules
that are developed simultaneously at the same time 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.
Parallel Development Model
Use Cases of Incremental Process Model
When the requirements are well-defined and clear
Because increments can be planned and developed step-by-step
with minimal requirement changes.
If the project has a long development timeline
Incremental delivery helps manage complexity over time by
breaking the project into smaller, manageable parts.
If the customer needs a quick product release
You can deliver the most critical features early in the first increment,
allowing the customer to start using the software sooner.
When you want to develop the most important features first
This allows early feedback on key functionalities and better
prioritization for subsequent increments.
Advantages of Incremental Process Model
The Incremental Model of software development builds a system in small,
manageable sections (increments), making it a good choice for many
projects. Below are the key advantages:
Faster Software Delivery
o Initial working versions of the software can be delivered
quickly.
o Early delivery increases customer satisfaction and feedback
opportunities.
Clear Understanding for Clients
o Clients get to see parts of the system at each stage.
o This visibility ensures that the final product meets their
expectations.
Easy to Implement Changes
o Requirements can evolve, and changes can be incorporated in
subsequent increments.
o It supports flexibility without heavily disrupting earlier stages.
Effective Risk Management
o Risks can be identified and handled early due to the staged
approach.
o Each increment allows for testing and validation, reducing the
impact of unforeseen issues.
Flexible Criteria and Scope
o Requirements can be adjusted without a major cost increase.
o Better scope management helps keep the project aligned with
business goals.
Cost-Effective
o Compared to models like the Waterfall, the incremental model
is generally more cost-efficient.
o Budget is spread across stages, making it easier to manage
finances.
Simpler Error Identification
o Since development is done in parts, it's easier to pinpoint and
fix errors within a specific increment.
o Testing each module separately enhances quality and
reliability.
Disadvantages of Incremental Process Model
Incremental Model comes with some limitations and challenges. Below are
the key disadvantages:
Requires a Skilled Team and Proper Planning
o Successful implementation demands an experienced team.
o Poor planning or coordination can lead to confusion between
increments.
Cost Can Increase Over Time
o Due to repeated testing, redesign, and integration in every
cycle, the overall project cost may rise.
o Continuous iteration involves added overhead
Incomplete Requirement Gathering Can Cause Design Issues
o If all requirements are not identified early, the system
architecture may not support future needs.
o Inadequate upfront design can lead to rework and
architectural mismatches.
Lack of Smooth Flow Between Increments
o Each iteration may function independently, which can create
inconsistencies.
o There might be integration challenges when combining all the
increments into a unified product.
High Effort to Fix Repeated Issues
o A defect in one increment may exist in others.
o Fixing the same issue across multiple units can be time-
consuming and resource-intensive.
Rapid Application Development Model
(RAD)
The RAD model or Rapid Application Development model is a type of
software development methodology that emphasizes quick and iterative
release cycles, primarily focusing on delivering working software in shorter
timelines.
Unlike traditional models such as the Waterfall model, RAD is designed to
be more flexible and responsive to user feedback and changing
requirements throughout the development process.
The RAD model is a type of incremental process model in which there is a
concise development cycle. The RAD model is used when the
requirements are fully understood and the component-based construction
approach is adopted.
Various phases in RAD are Requirement
Gathering, Analysis and Planning, Design, Build or Construction, and
finally Deployment.
This model consists of 4 basic phases:
1. Requirements Planning - This involves the use of various
techniques used in requirements elicitation like brainstorming, task
analysis, form analysis, user scenarios, FAST (Facilitated Application
Development Technique), etc. It also consists of the entire
structured plan describing the critical data, methods to obtain it,
and then processing it to form a final refined model.
2. User Description - This phase consists of taking user feedback and
building the prototype using developer tools. In other words, it
includes re-examination and validation of the data collected in the
first phase. The dataset attributes are also identified and elucidated
in this phase.
3. Construction - In this phase, refinement of the prototype and
delivery takes place. It includes the actual use of powerful
automated tools to transform processes and data models into the
final working product. All the required modifications and
enhancements are to be done in this phase.
4. Cutover - All the interfaces between the independent modules
developed by separate teams have to be tested properly. The use of
powerfully automated tools and subparts makes testing easier. This
is followed by acceptance testing by the user.
When to use the RAD Model?
1. Well-understood Requirements: When project requirements are
stable and transparent, RAD is appropriate.
2. Time-sensitive Projects: Suitable for projects that need to be
developed and delivered quickly due to tight deadlines.
3. Small to Medium-Sized Projects: Better suited for smaller
initiatives requiring a controllable number of team members.
4. High User Involvement: Fits where ongoing input and interaction
from users are essential.
5. Innovation and Creativity: Helpful for tasks requiring creative
inquiry and innovation.
6. Prototyping: It is necessary when developing and improving
prototypes is a key component of the development process.
7. Low technological Complexity: Suitable for tasks using
comparatively straightforward technological specifications.
Objectives of Rapid Application Development Model (RAD)
1. Speedy Development
2. Adaptability and Flexibility
3. Stakeholder Participation
4. Improved Interaction
5. Improved Quality via Prototyping
6. Customer Satisfaction
Advantages of Rapid Application Development Model (RAD)
The use of reusable components helps to reduce the cycle time of
the project.
Feedback from the customer is available at the initial stages.
Reduced costs as fewer developers are required.
The use of powerful development tools results in better quality
products in comparatively shorter periods.
The progress and development of the project can be measured
through the various stages.
It is easier to accommodate changing requirements due to the short
iteration time spans.
Productivity may be quickly boosted with a lower number of
employees.
Disadvantages of Rapid application development model (RAD)
The use of powerful and efficient tools requires highly skilled
professionals.
The absence of reusable components can lead to the failure of the
project.
The team leader must work closely with the developers and
customers to close the project on time.
The systems which cannot be modularized suitably cannot use this
model.
Customer involvement is required throughout the life cycle.
It is not meant for small-scale projects as in such cases, the cost of
using automated tools and techniques may exceed the entire
budget of the project.
Not every application can be used with RAD.
Drawbacks of Rapid Application Development
It requires multiple teams or a large number of people to work on
scalable projects.
This model requires heavily committed developers and customers. If
commitment is lacking then RAD projects will fail.
The projects using the RAD model require heavy resources.
If there is no appropriate modularization then RAD projects fail.
Performance can be a problem for such projects.
The projects using the RAD model find it difficult to adopt new
technologies. This is because RAD focuses on quickly building and
refining prototypes using existing tools. Changing to new
technologies can disrupt this process, making it harder to keep up
with the fast pace of development. Even with skilled developers and
advanced tools, the rapid nature of RAD leaves little time to learn
and integrate new technologies smoothly.
Prot
otyping models are super useful for refining ideas and testing concepts
early, but they’re not without their downsides. Here are some key
drawbacks:
- **Time and Cost**: While prototyping can save costs in the long run,
developing multiple iterations requires time and resources upfront.
- **Misleading Perception**: Stakeholders may mistake a rough prototype
for the final product and judge its flaws too harshly.
- **Scope Creep**: It’s easy to keep refining the prototype endlessly,
leading to delays in actual product development.
- **Over-Reliance on User Feedback**: While user input is valuable,
excessive reliance might result in design decisions that cater too much to
short-term opinions rather than long-term usability.
- **Technical Constraints**: Some elements might work well in a prototype
but become difficult or expensive to implement in the final version.
Prototyping is still incredibly powerful, but balancing creativity with
practicality is key! Are you working on a project where this might be
relevant?