SOFTWARE
ENGINEERING
LECTURE 3
SOFTWARE PROCESS
MODELS
WHAT IS SOFTWARE
PROCESS MODEL?
A software process model is an abstraction of the
software development process. The models
specify the stages and order of a process. So,
think of this as a representation of the order of
activities of the process and the sequence in
which they are performed.
SOFTWARE PROCESS
MODEL
WATERFALL PROTOTYPE V MODEL RAD MODEL
INCREMENTAL ITERATIVE SPIRAL MODEL AGILE
FACTORS OF CHOOSING A
SOFTWARE PROCESS MODEL
Choosing the right software process model for your project can be difficult. If you
know your requirements well, it will be easier to select a model that best
matches your needs. You need to keep the following factors in mind when
selecting your software process model:
Project requirements
Before you choose a model, take some time to go through the project
requirements and clarify them alongside your organization’s or team’s
expectations. Will the user need to specify requirements in detail after each
iterative session? Will the requirements change during the development process?
Project size
Consider the size of the project you will be working on. Larger projects mean
bigger teams, so you’ll need more extensive and elaborate project management
plans.
FACTORS OF CHOOSING A
SOFTWARE PROCESS MODEL
Project complexity
Complex projects may not have clear requirements. The requirements
may change often, and the cost of delay is high. Ask yourself if the
project requires constant monitoring or feedback from the client.
Cost of delay
Is the project highly time-bound with a huge cost of delay, or are the
timelines flexible?
Customer involvement
Do you need to consult the customers during the process? Does the
user need to participate in all phases?
FACTORS OF CHOOSING A
SOFTWARE PROCESS MODEL
Familiarity with technology
This involves the developers’ knowledge and experience with the
project domain, software tools, language, and methods needed
for development.
Project resources
This involves the amount and availability of funds, staff, and
other resources.
WATERFALL
MODEL
WATERFALL MODEL
In this model we start with
requirements gathering phase to
work out what the system should
do.
Then we move on to designing how
the system should do these things.
Then we actually write the
software, then test it to
make sure it all works and
meets our requirements.
Finally the system is deployed and
maintained - often for many
years.
WATERFALL MODEL
Classical waterfall model divides the life cycle
into a set of phases. This model considers that
one phase can be started after completion of the
previous phase. That is the output of one phase
will be the input to the next phase. Thus the
development process can be considered as a
sequential flow in the waterfall.
Here the phases do not overlap with each other.
WATERFALL MODEL
This is one of the oldest models of software
development
In this methodology, development occurred in well-
defined stages where the lifetime of the developed
system goes through a fixed sequence of steps
Once the next phase has begun, the previous
phase is no longer edited .
This method did not respond well to change
WHEN TO USE WATERFALL
MODEL
When the requirements are very well known in advance,
clear and not supposed to change in future.
Product definition is stable.
Technology is understood.
There are no ambiguous requirements.
Ample resources with required expertise are available freely.
The project is short.
ADVANTAGES OF WATERFALL
MODEL
This model is very simple and is easy to understand.
Phases in this model are processed one at a time.
Each stage in the model is clearly defined.
This model has very clear and well understood milestones.
Process, actions and results are very well documented.
Reinforces good habits: define-before- design,
design-before-code.
This model works well for smaller projects and projects
where requirements are well
understood.
DISADVANTAGES OF WATERFALL
MODEL
No feedback path: In classical waterfall model evolution of software
from one phase to another phase is like a waterfall. It assumes that no
error is ever committed by developers during any phases. Therefore, it
does not incorporate any mechanism for error correction.
Difficult to accommodate change requests: This model assumes
that all the customer requirements can be completely and correctly
defined at the beginning of the project, but actually customers’
requirements keep on changing with time. It is difficult to accommodate
any change requests after the requirements specification phase is
complete.
No overlapping of phases: This model recommends that new phase
can start only after the completion of the previous phase. But in real
projects, this can’t be maintained. To increase the efficiency and reduce
the cost, phases may overlap.
PROTOTYPE
MODEL
PROTOTYPE MODEL
Software development model in which prototype
is built, tested, and reworked until an acceptable
prototype is achieved.
PROTOTYPE MODEL
Requirements gathering and analysis
A prototyping model starts with requirement analysis. In this phase, the
requirements of the system are defined in detail. During the process,
the users of the system are interviewed to know what is their
expectation from the system.
Quick design
The second phase is a preliminary design or a quick design. In this
stage, a simple design of the system is created. However, it is not a
complete design. It gives a brief idea of the system to the user.
The quick design helps in developing the prototype.
PROTOTYPE MODEL
Build a Prototype
In this phase, an actual prototype is designed based on the
information gathered from quick design. It is a small working model
of the required system.
Initial user evaluation
In this stage, the proposed system is presented to the client for an
initial evaluation. It helps to find out the strength and weakness of
the working model. Comment and suggestion are collected from the
customer and provided to the developer.
PROTOTYPE MODEL
Refining prototype
If the user is not happy with the current prototype, then the prototype
need’s to refine according to the user's feedback and suggestions. This
phase will not over until all the requirements specified by the user are
met. Once the user is satisfied with the developed prototype, a final
system is developed based on the approved final prototype.
Implement Product and Maintain
Once the final system is developed based on the final prototype, it is
thoroughly tested and deployed to production. The system undergoes
routine maintenance for minimizing downtime and prevent large-scale
failures.
ADVANTAGES OF PROTOTYPE
MODEL
Users are actively involved in development.
Errors are detected in the initial stage of the development
Better understanding of the customer's needs.
Customer satisfaction exists because the customer can feel the
product at a very early stage.
Quicker user feedback helps to achieve better software
development solutions.
Offer early training for future users of the software system.
Improved design quality.
DISADVANTAGES OF PROTOTYPE
MODEL
Excessive change requests.
Prototyping is a slow and time taking process.
The cost of developing a prototype
Some times client may not be willing to participate in the iteration cycle for the
longer time duration.
Poor documentation because the requirements of the customers are changing.
Difficult for software developers to accommodate all the changes After seeing an
early prototype model, the customers may think that the actual product will be
delivered to him soon.
The client may lose interest in the final product
V- MODEL
V MODEL
The V model (Verification and
Validation model) is an extension
of the waterfall model.
All the requirements are gathered
at the start and cannot be
changed.
You have a corresponding testing
activity for each stage.
For every phase in the
development cycle, there is
an associated testing phase.
V MODEL
The V model is highly disciplined, easy to
understand, and makes project management
easier.
But it isn’t good for complex projects or projects
that have unclear or changing requirements. This
makes the V model a good choice for software
where downtimes and failures are unacceptable.
V MODEL
Verification: It involves static analysis technique (review) done
without executing code. It is the process of evaluation of the product
development phase to find whether specified requirements meet.
Validation: It involves dynamic analysis technique (functional, non-
functional), testing done by executing code. Validation is the process
to evaluate the software after the completion of the development
phase to determine whether software meets the customer
expectations and requirements.
So V-Model contains Verification phases on one side of the Validation
phases on the other side. Verification and Validation phases are
joined by coding phase in V-shape. Thus it is called V-Model.
V MODEL DESIGN
PHASE
Requirement Analysis: This phase contains detailed
communication with the customer to understand their
requirements and expectations. This stage is known as
Requirement Gathering.
System Design: This phase contains the system design and the
complete hardware and communication setup for developing
product.
Architectural Design: System design is broken down further
into modules taking up different functionalities. The data transfer
and communication between the internal modules and with the
outside world (other systems) is clearly understood.
Module Design: In this phase the system breaks dowm into
V MODEL TESTING
PHASE
Unit Testing: Unit Test Plans are developed during module design phase.
These Unit Test Plans are executed to eliminate bugs at code or unit level.
Integration testing: After completion of unit testing Integration testing is
performed. In integration testing, the modules are integrated and the system
is tested. Integration testing is performed on the Architecture design phase.
This test verifies the communication of modules among themselves.
System Testing: System testing test the complete application with its
functionality, inter dependency, and communication. It tests the functional
and non-functional requirements of the developed application.
User Acceptance Testing (UAT): UAT is performed in a user environment
that resembles the production environment. UAT verifies that the delivered
system meets user’s requirement and system is ready for use in real world.
ADVANTAGES OF V MODEL
This is a highly disciplined model and Phases are completed
one at a time.
V-Model is used for small projects where project
requirements are clear.
Simple and easy to understand and use.
This model focuses on verification and validation activities
early in the life cycle thereby enhancing the probability of
building an error-free and good quality product.
It enables project management to track progress accurately.
DISADVANTAGES OF V MODEL
High risk and uncertainty.
It is not a good for complex and object-oriented
projects.
It is not suitable for projects where requirements
are not clear and contains high risk of changing.
This model does not support iteration of phases.
It does not easily handle concurrent events.
INCREMENTAL
MODEL
INCREMENTAL MODEL
INCREMENTAL MODEL
The incremental model divides the system’s functionality
into small increments that are delivered one after the
other in quick succession. The most important
functionality is implemented in the initial increments.
The subsequent increments expand on the previous ones
until everything has been updated and implemented.
Incremental development is based on developing an
initial implementation, exposing it to user feedback, and
evolving it through new versions. The process’ activities
are interwoven by feedback.
INCREMENTAL MODEL
The incremental model lets stakeholders and developers
see results with the first increment. If the stakeholders
don’t like anything, everyone finds out a lot sooner.
It is efficient as the developers only focus on what is
important and bugs are fixed as they arise, but you need
a clear and complete definition of the whole system
before you start.
The incremental model is great for projects that have
loosely-coupled parts and projects with complete and
clear requirements.
ADVANTAGES OF
INCREMENTAL MODEL
Some working functionality can be developed quickly and early in the
life cycle.
Scope and requirements can be change easily.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration.
Better suited for large and mission-critical projects.
Customer can evaluate each release.
Progress can be measured.
DISADVANTAGES OF INCREMENTAL
MODEL
More resources may be required.
Although cost of change is lesser, but it is not very suitable for changing
requirements.
More management attention is required.
System architecture or design issues may arise because not all
requirements are gathered in the beginning of the entire life cycle.
Highly skilled resources are required for risk analysis.
Total cost can be higher than waterfall.
Not suitable for smaller project.
ITERATIVE
MODEL
ITERATIVE MODEL
ITERATIVE MODEL
The iterative development model develops a system
through building small portions of all the features. This
helps to meet initial scope quickly and release it for
feedback.
In the iterative model, you start off by implementing a small
set of the software requirements. These are then enhanced
iteratively in the evolving versions until the system is
completed. This process model starts with part of the
software, which is then implemented and reviewed to
identify further requirements.
ITERATIVE MODEL
Like the incremental model, the iterative model allows you
to see the results at the early stages of development. This
makes it easy to identify and fix any functional or
design flaws. It also makes it easier to manage risk and
change requirements.
The deadline and budget may change throughout the
development process, especially for large complex
projects. The iterative model is a good choice for large
software that can be easily broken down into modules.
RAD MODEL
RAD MODEL
RAD full form or RAD stands for: Rapid Application Development
The RAD concept focuses on gathering requirements using focus
groups and workshops, reusing software components, and informal
communication.
RAD MODEL
RAD Model or Rapid Application Development model is a
software development process based on prototyping without any
specific planning. In RAD model, there is less attention paid to the
planning and more priority is given to the development tasks. It
targets at developing software in a short span of time.
It involves the following phases:
Business modeling
Data modeling
Process modeling
Application generation
Testing and turnover
RAD MODEL
The RAD model accommodates changing requirements,
reduces development time, and increases the reusability
of components.
But it can be complex to manage.
Therefore, the RAD model is great for systems that need
to be produced in a short time and have known
requirements.
RAD MODEL
Business modeling
On basis of the flow of information and distribution between
various business channels, the product is designed
Data modeling
The information collected from business modeling is refined
into a set of data objects that are significant for the business
Process modeling
The data object that is declared in the data modeling phase is
transformed to achieve the information flow necessary to
implement a business function
RAD MODEL
Application generation
Automated tools are used for the construction of the
software, to convert process and data models into
prototypes
Testing and turnover
As prototypes are individually tested during every
iteration, the overall testing time is reduced in RAD.
WHEN TO USE RAD MODEL
When a system needs to be produced in a short span of time
(2-3 months)
When the requirements are known
When the user will be involved all through the life cycle
When technical risk is less
When there is a necessity to create a system that can be
modularized in 2-3 months of time
When a budget is high enough to afford designers for
modeling along with the cost of automated tools for code
generation
ADVANTAGES OF RAD MODEL
Flexible and adaptable to changes
It is useful when you have to reduce the overall project risk
It is adaptable and flexible to changes
It is easier to transfer deliverables as scripts, high-level abstractions
and intermediate codes are used
Due to code generators and code reuse, there is a reduction of
manual coding.
Due to prototyping in nature, there is a possibility of lesser defects
Each phase in RAD delivers highest priority functionality to client
With less people, productivity can be increased in short time
DISADVANTAGES OF RAD MODEL
It can’t be used for smaller projects
Not all application is compatible with RAD
When technical risk is high, it is not suitable
If developers are not committed to delivering software on time, RAD
projects can fail
Reduced features due to time boxing, where features are pushed to a later
version to finish a release in short period.
Reduced scalability occurs because a RAD developed application begins as
a prototype and evolves into a finished application
Progress and problems accustomed are hard to track as such there is no
documentation to demonstrate what has been done
With less people, productivity can be increased in short time
SPIRAL MODEL
SPIRAL MODEL
SPIRAL MODEL
The spiral model is a risk driven iterative software
process model. The spiral model delivers projects
in loops. Unlike other process models, its steps
aren’t activities but phases for addressing
whatever problem has the greatest risk of
causing a failure.
It was designed to include the best features from
the waterfall and introduces risk-assessment.
SPIRAL MODEL
You have the following phases for each cycle:
• Address the highest-risk problem and determine
the objective and alternate solutions
• Evaluate the alternatives and identify the risks
involved and possible solutions
• Develop a solution and verify if it’s acceptable
• Plan for the next cycle
SPIRAL MODEL
You develop the concept in the first few cycles,
and then it evolves into an implementation.
Though this model is great for managing
uncertainty, it can be difficult to have stable
documentation. The spiral model can be used for
projects with unclear needs or projects still in
research and development.
SPIRAL MODEL
ADVANTAGES OF SPIRAL
MODEL
Customer can see and review the test and different stages
Projects can be separated into various parts to ease the
management difficulty
Development can be divided into smaller parts
Risky parts can be developed earlier which helps better risk
management.
Project estimate will tend to be more realistic as it progresses.
Customer feedback are taken into consideration
Changes are implemented faster.
DISADVANTAGES OF SPIRAL
MODEL
Expertise is required to run the model
Risk analysis is an important phase so it requires
expert people for risk assessment.
Documentation is more
The end date of the project cannot be calculated at
the early stages of the project