Software Engineering Unit
Software Engineering Unit
UNIT NO. 02
SOFTWARE DEVELOPMENT PROCESS MODELS
TOPICS TO BE COVERED
➢ Sequential model
➢ Incremental model
➢ Spiral model
➢ Agile model
• The software development process is nothing but the process of developing software.
This process might include improving design and product management by splitting the
work into smaller steps or processes.
• Software is nothing but a set of programs having specific functions that are designed to
work according to human needs. The Software Development Process includes different
steps in an organized way to form a software product
• There are different software development life cycle models specify and design, which
are followed during the software development phase. These models are also called
"Software Development Process Models." Each process model follows a series of phase
unique to its type to ensure success in the step of software development
• The waterfall model is also called as linear sequential model or classic cycle model. It
is the oldest software paradigm. This model suggests a systematic approach to software
development.
• The Waterfall Model was first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model. It is very simple to understand and use. In a
waterfall model, each phase must be completed fully before the next phase can begin.
This type of software development model is basically used for the project which is small
and there are no uncertain requirements.
• At the end of each phase, a review takes place to determine if the project is on the right
path and whether or not to continue or discard the project.
• In this model software testing starts only after the development is complete. The steps
always follow in this order and do not overlap. The developer must complete every
phase before the next phase begins. This model is named "Waterfall Model", because
its diagrammatic representation resembles a cascade of waterfalls.
• Winston Royce introduced the Waterfall Model in 1970.This model has five phases:
• The aim of this phase is to understand the exact requirements of the customer and
to document them properly. Both the customer and the software developer work
together so as to document all the functions, performance, and interfacing
requirement of the software. It describes the "what" of the system to be produced
and not "how. “In this phase, a large document called Software Requirement
Specification (SRS) document is created which contained a detailed description of
what the system will do in the common language.
2. System Design:
• This phase aims to transform the requirements gathered in the SRS into a suitable
form which permits further coding in a programming language. It defines the overall
software architecture together with high level and low-level detailed design. All this
work is documented as a Software Design Document (SDD).
3. Implementation:
4. Testing:
• This phase is highly crucial as the quality of the end product is determined by the
effectiveness of the testing carried out. The better output will lead to satisfied
customers, lower maintenance costs, and accurate results. Unit testing determines
the efficiency of individual modules. However, in this phase, the modules are tested
for their interactions with each other and with the system.
5. Deployment:
6. Maintenance:
• When software is deployed, there can be many bugs, faults or new modification is
needed or not? Maintenance includes debugging and new feature addition.
• Some Circumstances where the use of the Waterfall model is most suited are:
• This model is simple to implement also the number of resources that are required for it
is minimal.
• The requirements are simple and explicitly declared; they remain unchanged during the
entire project development.
• The start and end points for each phase is fixed, which makes it easy to cover progress.
• The release date for the complete product, as well as its final cost, can be determined
before development.
• It gives easy to control and clarity for the customer due to a strict reporting system.
• In this model, the risk factor is higher, so this model is not suitable for more significant
and complex projects.
• This model cannot accept the changes in requirements during development.
• It becomes tough to go back to the phase. For example, if the application has now
shifted to the coding phase, and there is a change in requirement, It becomes tough to
go back and change it.
• Since the testing done at a later stage, it does not allow identifying the challenges and
risks in the earlier phase, so the risk reduction strategy is difficult to prepare.
Incremental Model
• When any component is ready, then the component is delivered to the customer and
when remaining components become ready than delivered to the customer one by one
by integrating new components with old once.
• In this daily life example, we want to draw a picture, first, we draw the first part of the
picture as shown in increment 1, Similarly after completing the first part of the picture
we have to add one another part of the picture labeled as increment 2 in the above
picture. Similarly, we complete this picture in four increments.
1. Requirement analysis
2. Design & Development
3. Testing
4. Implementation
1. Requirement analysis: In the first phase of the incremental model, the product analysis
expertise identifies the requirements. And the system functional requirements are
understood by the requirement analysis team. To develop the software under the
incremental model, this phase performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the design
of the system functionality and the development method are finished with success.
When software develops new practicality, the incremental model uses style and
development phase.
3. Testing: In the incremental model, the testing phase checks the performance of each
existing function as well as additional functionality. In the testing phase, the various
methods are used to test the behavior of each task.
Spiral Model
• The Spiral Model is one of the most important Software Development Life Cycle
models. The Spiral Model is a combination of the waterfall model and the iterative
model. It provides support for Risk Handling. The Spiral Model was first proposed by
Barry Boehm.
• The Spiral Model is a Software Development Life Cycle (SDLC) model that provides
a systematic and iterative approach to software development. In its diagrammatic
representation, looks like a spiral with many loops. The exact number of loops of the
spiral is unknown and can vary from project to project. Each loop of the spiral is called
a phase of the software development process.
• The Spiral Model is often used for complex and large software development projects,
as it allows for a more flexible and adaptable approach to software development. It is
also well-suited to projects with significant uncertainty or high levels of risk.
• The spiral model is similar to the incremental model, with more emphasis placed on
risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering
and Evaluation. A software project repeatedly passes through these phases in iterations
(called Spirals in this model). The baseline spiral, starting in the planning phase,
requirements are gathered and risk is assessed. Each subsequent spiral build on the
baseline spiral. It’s one of the software development models like Waterfall, Agile, V-
Model.
1. Planning Phase
2. Risk Analysis
3. Engineering Phase
4. Evaluation phase
1. Planning Phase: Requirements are gathered during the planning phase. Requirements
like ‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System
Requirement specifications.
2. Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and
alternate solutions. A prototype is produced at the end of the risk analysis phase. If any
risk is found during the risk analysis then alternate solutions are suggested and
implemented.
3. Engineering Phase: In this phase software is developed, along with testing at the end
of the phase. Hence in this phase the development and testing is done.
4. Evaluation phase: This phase allows the customer to evaluate the output of the project
to date before the project continues to the next spiral.
• The Rapid Application Development Model was first proposed by IBM in the 1980s.
The RAD model is a type of incremental process model in which there is an extremely
short development cycle. When the requirements are fully understood and the
component-based construction approach is adopted then the RAD model is used.
Various phases in RAD are Requirements Gathering, Analysis and Planning, Design,
Build or Construction, and finally Deployment.
• A software project can be implemented using this model if the project can be broken
down into small modules wherein each module can be assigned independently to
separate teams. These modules can finally be combined to form the final product.
Development of each module involves the various basic steps as in the waterfall model
i.e. analyzing, designing, coding, and then testing, etc. as shown in the figure. Another
striking feature of this model is a short period i.e. the time frame for delivery(time-box)
is generally 60-90 days.
• Multiple teams work on developing the software system using the RAD model
parallelly.
• The process involves building a rapid prototype, delivering it to the customer, and
taking feedback. After validation by the customer, the SRS document is developed and
the design is finalized.
• The use of powerful developer tools such as JAVA, C++, Visual BASIC, XML, etc. is
also an integral part of the projects. This model consists of 4 basic phases:
1. Requirements Planning.
2. User Description
3. Construction
4. Cutover
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.
• Time-sensitive Projects: Suitable for projects that need to be developed and delivered
quickly due to tight deadlines.
• High User Involvement: Fits where ongoing input and interaction from users are
essential.
• Innovation and Creativity: Helpful for tasks requiring creative inquiry and
innovation.
1. Speedy Development
2. Adaptability and Flexibility
3. Stakeholder Participation
4. Improved Interaction
5. Improved Quality via Prototyping
6. Customer Satisfaction
1. Speedy Development
• Accelerating the software development process is RAD’s main goal. RAD prioritizes
rapid prototyping and iterations to produce a working system as soon as possible. This
is especially helpful for projects when deadlines must be met.
• RAD places a strong emphasis on adapting quickly to changing needs. Due to the
model’s flexibility, stakeholders can modify and improve the system in response to
changing requirements and user input.
3. Stakeholder Participation
• Throughout the development cycle, RAD promotes end users and stakeholders’ active
participation. Collaboration and frequent feedback make it possible to make sure that
the changing system satisfies both user and corporate needs.
4. Improved Interaction
6. Customer Satisfaction
• Delivering a system that closely satisfies user expectations and needs is the goal of
RAD. Through rapid delivery of functioning prototypes and user involvement
throughout the development process, Rapid Application Development (RAD) enhances
the probability of customer satisfaction with the final product.
• The use of reusable components helps to reduce the cycle time of the project.
• Feedback from the customer is available at the initial stages.
• 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
• 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.
Agile Model
• Agile SDLC model is a combination of iterative and incremental process models with
focus on process adaptability and customer satisfaction by rapid delivery of working
software product. Agile Methods break the product into small incremental builds. These
builds are provided in iterations. Each iteration typically lasts from about one to three
weeks.
• The software is divided into small components. Each component is developed and
validated by the customer if there is any problem in the software component then
another iteration is performed on the component. Here iteration means that design,
coding, and testing are performed again and again until accurate the development of
accurate software components.
• When the first component is ready and fulfills the customer requirements then another
component of the same software is developed in increment 2. Similarly, different
iterations of design, code, and test are possible for component 2 of the software in
increment 2
1. Planning
2. Requirements Analysis
3. Design
4. Coding
5. Unit Testing and
6. Acceptance Testing.
• At the end of the iteration, a working product is displayed to the customer and
important stakeholders.
What is Agile?
• Agile model believes that every project needs to be handled differently and the existing
methods need to be tailored to best suit the project requirements. In Agile, the tasks are
divided to time boxes (small time frames) to deliver specific features for a release.
• Iterative approach is taken and working software build is delivered after each iteration.
Each build is incremental in terms of features; the final build holds all the features
required by the customer.
• The Agile thought process had started early in the software development and started
becoming popular with time due to its flexibility and adaptability.
• The most popular Agile methods include Rational Unified Process (1994), Scrum
(1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development,
Feature Driven Development, and Dynamic Systems Development Method (DSDM)
(1995). These are now collectively referred to as Agile Methodologies, after the Agile
Manifesto was published in 2001.