SDLC Models
SDLC Models
SDLC Models
SDLC, which stands for Software Development Life Cycle, is like a set of rules
that software companies follow when working on a software project. It's a step-
by-step plan that explains how to develop, maintain, replace and make
improvements to software. The main goal of this process is to make sure the
software is high quality and to make the whole development process better.
The following figure is a graphical representation of the various stages of a typical
SDLC.
Waterfall Model
The Waterfall Model is one of the first and simplest methods for creating
software. It's like a step-by-step approach where each phase of the project must
finish before the next one begins. There's no overlap, and it's very structured. In
the past, it was quite popular for big, well-defined projects, especially in the field
of information technology.
Even though it's not as widely used today, it's still important because it serves as
the foundation for many other software development models. The Waterfall
Model is ideal when you have a clear idea of what your project needs and you
want to be sure about the results. It's best for projects with a long timeline and
little room for mistakes.
Waterfall Model – Design
The Waterfall approach was one of the earliest and widely used models in
Software Engineering to make sure projects went smoothly. It breaks down the
entire software development process into distinct phases. In the Waterfall model,
each phase's results are used as the starting point for the next phase in a step-by-
step sequence.
The picture below shows the various stages of the Waterfall Model.
The Waterfall model is a classic way to develop software, and it's like following
a recipe. It has several phases that need to be completed one after the other.
➢ Requirement Gathering and Analysis: First, we figure out what the
software needs to do by talking to the people who will use it. Everything
we learn is written down in a document.
➢ System Design: Next, we create a detailed plan for how the software will
look and work. This plan includes things like how the different parts of the
software will fit together.
➢ Implementation: After the plan is ready, we start writing the actual code
for the software. We also test each small piece to make sure it works
correctly.
➢ Testing: Once all the pieces are done, we put them together to test the
whole software. We want to be sure it works as expected and doesn't have
any problems.
➢ Deployment: When testing is complete, and we're confident the software
is good to go, we release it for people to use.
➢ Maintenance: Even after releasing the software, we keep an eye on it. If
any issues come up, we fix them, and sometimes we even make the
software better with updates.
The Waterfall model is like a step-by-step journey. Each phase depends on the
one before it, and there's no jumping ahead. It's a simple and structured way to
create software.
Features of the Waterfall Model:
The Waterfall Model has some key features:
➢ Step-by-Step: It's like a series of steps. Each part of the project is finished
before moving on to the next one.
➢ Lots of Documents: This approach relies on a lot of written documents to
make sure everyone understands the project and its goals.
➢ Quality Control: At every step, there's a focus on testing and making sure
the final product matches what the stakeholders want.
➢ Careful Planning: The Waterfall Model involves careful planning. They
figure out exactly what needs to be done, how long it will take, and what
they'll deliver.
The Waterfall Model is great for big, complicated projects where everything
needs to be well-organized. It helps make sure things are done on time, on budget,
and with high quality, which makes customers happy.
➢ Takes a Long Time: It can take a while because each step has to be done
before moving on, leading to delays and higher costs if things change.
➢ Not for Complex Projects: It's not great for complex projects with many
parts and connections."
In real projects, people often choose models that handle these issues better.
Applications of Classical Waterfall Model:
The Waterfall Model is often used in specific situations:
➢ Large-Scale Projects: It's great for big projects where you need a
structured plan to finish on time and on budget.
➢ Safety-Critical Systems: In fields like aerospace and medicine, where
errors can be dangerous, it's a good choice.
➢ Government and Defense: It's commonly used in government and
defense projects to make sure everything is done correctly and on schedule.
➢ Projects with Clear Needs: It works well when you already know exactly
what the project should do because it follows a clear sequence.
➢ Stable Requirements: If the project's requirements won't change, this
model is a good fit because it doesn't allow changes once a phase is
finished.
Iterative Model
In the Iterative Model, you begin with some software specifications and create
the first version of the software. If changes are needed, a new version is made in
the next iteration. Each release in this model has a fixed period called an iteration.
This model lets you go back to previous phases to make improvements. The
project's final output is updated at the end of the Software Development Life
Cycle (SDLC) process.
Prototyping Model
The prototype model involves creating a basic version of the software before the
final development. It's like a rough draft and may have limited features,
reliability, and performance. It's useful when customers don't have all the details
about what they want. The model keeps improving through customer feedback,
and the final product is built based on an approved prototype.
Prototyping is a widely used approach in software development when customers
are uncertain about project requirements. It starts with interviews and a basic
paper model, then evolves based on customer input, repeating until a satisfactory
version is achieved. It allows customers to see progress early in the project and
ensures the final product meets their needs.
Evolutionary Model
The Evolutionary model is like a mix of the Iterative and Incremental models in
software development. Instead of delivering everything at once, it's done in
smaller, gradual steps over time. This model is good for products that might
change due to user feedback. It divides the work into smaller parts, delivers them
one by one, and gathers user feedback for each part. This way, the customer can
verify their requirements and make changes as needed, which makes them more
confident in the project's progress. It's a solution to speed up delivery and adapt
to changing needs.
Disadvantages:
➢ Complex Splitting: Sometimes it's tricky to divide the problem into
acceptable versions for incremental delivery.
Spiral Model
The Spiral Model is a significant Software Development Life Cycle model,
resembling a spiral with multiple loops. The number of loops, or phases, can vary
based on project risks. It provides a systematic and iterative approach to software
development, covering requirements, design, implementation, testing, and
maintenance.
The spiral model combines prototyping's iterative nature with the structured
aspects of the linear sequential model. It allows for the rapid development of
software in incremental releases, starting with models or prototypes and
progressing to complete system versions during later iterations.
V-Model
The V-Model, short for Verification and Validation Model, is a structured
approach to software development. It follows a sequential path similar to the
waterfall model, but it emphasizes testing alongside development. Verification
checks if the development process meets requirements (static analysis), while
validation checks if the software functions properly (dynamic analysis).
In the V-Model, there are Verification phases (on one side) and Validation phases
(on the other), connected by the coding phase, forming a V shape.
Verification Phases:
➢ Business Requirement Analysis: Understand customer needs.
➢ System Design: Analyze the proposed system based on user requirements.
➢ Architecture Design: Select architecture and perform integration testing.
➢ Module Design: Break the system into modules with detailed designs.
➢ Coding Phase: Develop the code, optimize it, and perform code reviews.
Validation Phases:
➢ Unit Testing: Test individual units or modules.
➢ Integration Testing: Verify communication between modules.
➢ System Testing: Ensure the system meets expectations.
➢ Acceptance Testing: Test the software in the user environment.
The V-Model is suitable when requirements are clear, and it works best for small
to medium-sized projects with well-defined requirements. It's a good choice when
you have technical experts available.
Advantages:
➢ Easy to understand.
➢ Testing is planned before coding, saving time.
➢ Less chance of defects.
➢ Ideal for small projects with clear requirements.
Disadvantages:
➢ Very rigid and inflexible.
➢ Not suitable for complex projects.
➢ No early software prototypes.
➢ Changes require updating test and other documents.
Agile Model
Agile, derived from the word "agility," represents a flexible approach to software
development. The Agile process model is about breaking a project into smaller
pieces, using iterations that don't require extensive long-term planning. It starts
with defining the project's scope and requirements. These iterations, lasting one
to four weeks each, involve planning, analyzing, designing, coding, and testing.
They aim to reduce risk and speed up project delivery.
Project Planning
Once a project is found to be possible, computer code project managers undertake
project designing. Project designing is undertaken and completed even before any
development activity starts. Project designing consists of subsequent essential
activities:
Estimating the subsequent attributes of the project:
➢ Project size:
What’s going to be downside quality in terms of the trouble and time
needed to develop the product?
➢ Cost:
What proportion is it reaching to value to develop the project?
➢ Duration:
However long is it reaching to want complete development?
➢ Effort:
What proportion effort would be required?
The effectiveness of the following designing activities relies on the accuracy of
those estimations.
➢ Planning force and alternative resources
➢ Workers organization and staffing plans
➢ Risk identification, analysis, and abatement designing
➢ Miscellaneous arranges like quality assurance plan, configuration,
management arrange, etc.
COCOMO Model
COCOMO (Constructive Cost Model) is a regression model based on LOC, i.e
number of Lines of Code. It is a procedural cost estimate model for software
projects and is often used as a process of reliably predicting the various
parameters associated with making a project such as size, effort, cost, time, and
quality. It was proposed by Barry Boehm in 1981 and is based on the study of 63
projects, which makes it one of the best-documented models.
The key parameters which define the quality of any software products, which are
also an outcome of the COCOMO are primarily Effort & Schedule:
• Effort: Amount of labor that will be required to complete a task. It is
measured in person-months units.
• Schedule: Simply means the amount of time required for the completion
of the job, which is, of course, proportional to the effort put in. It is
measured in the units of time such as weeks, and months.
Different models of COCOMO have been proposed to predict the cost estimation
at different levels, based on the amount of accuracy and correctness required. All
of these models can be applied to a variety of projects, whose characteristics
determine the value of the constant to be used in subsequent calculations.
These characteristics pertaining to different system types are mentioned below.
Boehm’s definition of organic, semidetached, and embedded systems:
➢ Organic – A software project is said to be an organic type if the team size
required is adequately small, the problem is well understood and has been
solved in the past and also the team members have a nominal experience
regarding the problem.
➢ Semi-Detached – A software project is said to be a Semi-detached type if
the vital characteristics such as team size, experience, and knowledge of
the various programming environment lie in between that of organic and
The length of a program is total usage of operators and operands in the program.
Length (N) = N1 + N2
Program Vocabulary:
The Program vocabulary is the number of unique operators and operands used in
the program.
Vocabulary (n) = n1 + n2
Program Volume:
The Program Volume can be defined as minimum number of bits needed to
encode the program.
Volume (V) = N log2 n
Length Estimation:
N = n1 log2 n1 + n2 log2 n2
Guideline For Calculating Operands and Operators:
➢ All the variables and constants are considered as operands.
➢ Local variables with same name, if occurring in different functions are
counted as unique operand.
➢ Function calls are considered as operators.
➢ The looping statements, do … while, while, for, are operators. The
statements if, if … else, are operators. The switch … case statements are
considered as operators.
➢ The reserve worlds, returns, default, continue, break, sizeof are all
operators.
➢ The brackets, commas, semicolons, are operators.
➢ The unary and binary operators are considered as operators. The & is
considered as operator.
➢ In arrays, array name and index are considered as operands and [ ] is
considered as
➢ operator.
➢ All hash directives can be ignored.
➢ Comments are not considered.
➢ In Goto statement, goto is considered as operator and label as operand.