Software Development Life Cycle

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Software Development Life Cycle (SDLC)

A software life cycle model (also termed process model) is a pictorial and diagrammatic
representation of the software life cycle. A life cycle model represents all the methods
required to make a software product transit through its life cycle stages. It also
captures the structure in which these methods are to be undertaken.

In other words, a life cycle model maps the various activities performed on a software
product from its inception to retirement. Different life cycle models may plan the
necessary development activities to phases in different ways. Thus, no element which
life cycle model is followed, the essential activities are contained in all life cycle models
though the action may be carried out in distinct orders in different life cycle models.
During any life cycle stage, more than one activity may also be carried out.

Need of SDLC
The development team must determine a suitable life cycle model for a particular plan
and then observe to it.

Without using an exact life cycle model, the development of a software product would
not be in a systematic and disciplined manner. When a team is developing a software
product, there must be a clear understanding among team representative about when
and what to do. Otherwise, it would point to chaos and project failure. This problem
can be defined by using an example. Suppose a software development issue is divided
into various parts and the parts are assigned to the team members. From then on,
suppose the team representative is allowed the freedom to develop the roles assigned
to them in whatever way they like. It is possible that one representative might start
writing the code for his part, another might choose to prepare the test documents first,
and some other engineer might begin with the design phase of the roles assigned to
him. This would be one of the perfect methods for project failure.

SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC framework includes
the following steps:
The stages of SDLC are as follows:
Stage1: Planning and requirement analysis

→Requirement Analysis is the most important and necessary stage in SDLC.

→The senior members of the team perform it with inputs from all the stakeholders
and domain experts or SMEs in the industry.

→Planning for the quality assurance requirements and identifications of the risks
associated with the projects is also done at this stage.

→Business analyst and Project organizer set up a meeting with the client to gather all
the data like what the customer wants to build, who will be the end user, what is the
objective of the product. Before creating a product, a core understanding or
knowledge of the product is very necessary.
Stage2: Defining Requirements

-->Once the requirement analysis is done, the next stage is to certainly represent and
document the software requirements and get them accepted from the project
stakeholders.

→This is accomplished through "SRS"- Software Requirement Specification


document which contains all the product requirements to be constructed and
developed during the project life cycle.

Stage3: Designing the Software

→The next phase is about to bring down all the knowledge of requirements, analysis,
and design of the software project. This phase is the product of the last two, like inputs
from the customer and requirement gathering.

Stage4: Developing the project

→ In this phase of SDLC, the actual development begins, and the programming is built.
The implementation of design begins concerning writing code. Developers have to
follow the coding guidelines described by their management and programming tools
like compilers, interpreters, debuggers, etc. are used to develop and implement the
code.

Stage5: Testing

→After the code is generated, it is tested against the requirements to make sure that
the products are solving the needs addressed and gathered during the requirements
stage.

→During this stage, unit testing, integration testing, system testing, acceptance testing
are done.
Stage6: Deployment

→Once the software is certified, and no bugs or errors are stated, then it is deployed.

→Then based on the assessment, the software may be released as it is or with


suggested enhancement in the object segment.

→After the software is deployed, then its maintenance begins.

Stage7: Maintenance

→Once when the client starts using the developed systems, then the real issues come
up and requirements to be solved from time to time.

→This procedure where the care is taken for the developed product is known as
maintenance.

Here, are some important phases of SDLC life cycle:


Waterfall Model
→The waterfall is a universally accepted SDLC model. In this method, the whole
process of software development is divided into various phases.

→ The waterfall model is a continuous software development model in which


development is seen as flowing steadily downwards (like a waterfall) through the steps
of requirements analysis, design, implementation, testing (validation), integration, and
maintenance.

The sequential phases in Waterfall model are −


• Requirement Gathering and analysis − All possible requirements of
the system to be developed are captured in this phase and documented
in a requirement specification document.
• System Design − The requirement specifications from first phase are
studied in this phase and the system design is prepared. This system
design helps in specifying hardware and system requirements and helps
in defining the overall system architecture.
• Implementation − With inputs from the system design, the system is
first developed in small programs called units, which are integrated in
the next phase. Each unit is developed and tested for its functionality,
which is referred to as Unit Testing.
• Integration and Testing − All the units developed in the
implementation phase are integrated into a system after testing of each
unit. Post integration the entire system is tested for any faults and
failures.
• Deployment of system − Once the functional and non-functional
testing is done; the product is deployed in the customer environment or
released into the market.
• Maintenance − There are some issues which come up in the client
environment. To fix those issues, patches are released. Also to enhance the
product some better versions are released. Maintenance is done to deliver
these changes in the customer environment.

Waterfall Model – Advantages


• Simple and easy to understand and use
• Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well
understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.

Waterfall Model - Disadvantages


• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to
high risk of changing. So, risk and uncertainty is high with this process
model.
• It is difficult to measure progress within stages.

SDLC - V-Model
→The V-model is an SDLC model where execution of processes happens in a
sequential manner in a V-shape. It is also known as Verification and Validation
model.
→The V-Model is an extension of the waterfall model and is based on the association
of a testing phase for each corresponding development stage. This means that for
every single phase in the development cycle, there is a directly associated testing
phase. This is a highly-disciplined model and the next phase starts only after
completion of the previous phase.

V-Model - Design
Under the V-Model, the corresponding testing phase of the development phase is
planned in parallel. So, there are Verification phases on one side of the ‘V’ and
Validation phases on the other side. The Coding Phase joins the two sides of the V-
Model.
The following illustration depicts the different phases in a V-Model of the SDLC.

Business Requirement Analysis


This is the first phase in the development cycle where the product
requirements are understood from the customer’s perspective. This
phase involves detailed communication with the customer to
understand his expectations and exact requirement. This is a very
important activity and needs to be managed well, as most of the
customers are not sure about what exactly they need. The acceptance
test design planning is done at this stage as business requirements can
be used as an input for acceptance testing.
System Design
Once you have the clear and detailed product requirements, it is time to
design the complete system. The system design will have the
understanding and detailing the complete hardware and
communication setup for the product under development. The system
test plan is developed based on the system design. Doing this at an
earlier stage leaves more time for the actual test execution later.
Architectural Design
Architectural specifications are understood and designed in this phase.
Usually more than one technical approach is proposed and based on the
technical and financial feasibility the final decision is taken. The system
design is broken down further into modules taking up different
functionality. This is also referred to as High Level Design (HLD).
Module Design
In this phase, the detailed internal design for all the system modules is specified,
referred to as Low Level Design (LLD). It is important that the design is compatible
with the other modules in the system architecture and the other external systems.
The unit tests are an essential part of any development process and helps eliminate
the maximum faults and errors at a very early stage. These unit tests can be designed
at this stage based on the internal module designs.

Coding Phase
The actual coding of the system modules designed in the design phase is taken up in
the Coding phase. The best suitable programming language is decided based on the
system and architectural requirements.
The coding is performed based on the coding guidelines and standards. The code
goes through numerous code reviews and is optimized for best performance before
the final build is checked into the repository.

Validation Phases
The different Validation Phases in a V-Model are explained in detail below.

Unit Testing
Unit tests designed in the module design phase are executed on the code during this
validation phase. Unit testing is the testing at code level and helps eliminate bugs at
an early stage, though all defects cannot be uncovered by unit testing.
Integration Testing
Integration testing is associated with the architectural design phase. Integration tests
are performed to test the coexistence and communication of the internal modules
within the system.

System Testing
System testing is directly associated with the system design phase. System tests
check the entire system functionality and the communication of the system under
development with external systems. Most of the software and hardware
compatibility issues can be uncovered during this system test execution.

Acceptance Testing
Acceptance testing is associated with the business requirement analysis phase and
involves testing the product in user environment. Acceptance tests uncover the
compatibility issues with the other systems available in the user environment. It also
discovers the non-functional issues such as load and performance defects in the
actual user environment.
The advantages of the V-Model method are as follows −
• This is a highly-disciplined model and Phases are completed one at a
time.
• Works well for smaller projects where requirements are very well
understood.
• Simple and easy to understand and use.
• Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
The disadvantages of the V-Model method are as follows −
• High risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to
high risk of changing.
• Once an application is in the testing stage, it is difficult to go back and
change a functionality.
• No working software is produced until late during the life cycle.
Prototyping Model
→Prototyping is defined as the process of developing a working replication of
a product or system that has to be engineered. It offers a small scale facsimile
of the end product and is used for obtaining customer feedback as described
below:

The Prototyping Model is one of the most popularly used Software


Development Life Cycle Models (SDLC models). This model is used when the
customers do not know the exact project requirements beforehand. 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.

A) Rapid Throwaway Prototyping –


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
ultimately accepted prototype. Customer feedback helps in
preventing unnecessary design faults and hence, the final
prototype developed is of better quality.
B)EvolutionaryPrototyping-- –
In this method, the prototype developed initially is incrementally
refined on the basis of customer feedback till it finally gets
accepted. In comparison to Rapid Throwaway Prototyping, it
offers a better approach which 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.
C) Incremental Prototyping – In this type of incremental
Prototyping, the final expected product is broken into different
small pieces of prototypes and being 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.
D) Extreme Prototyping – This method is mainly used for web development. It
is consists of three sequential independent phases:

D.1) In this phase a basic prototype with all the existing static pages are
presented in the HTML format.

D.2) In the 2nd phase, Functional screens are made with a simulated data
process using a prototype services layer.

D.3) This is the final step where all the services are implemented and
associated with the final prototype.

Advantages –

• The customers get to see the partial product early in the life cycle.
This ensures a greater level of customer satisfaction and comfort.
• New requirements can be easily accommodated as there is scope
for refinement.
• Missing functionalities can be easily figured out.
• 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.
Disadvantages –

• Costly w.r.t time as well as money.


• There may be too much variation in requirements each time the
prototype is evaluated by the customer.
• Poor Documentation due to continuously changing customer
requirements.
• 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.
• Developers in a hurry to build prototypes may end up with sub-
optimal solutions.
• The customer might lose interest in the product if he/she is not
satisfied with the initial prototype.
Iterative Waterfall Model
→In a practical software development project, the classical waterfall model is
hard to use. So, the Iterative waterfall model can be thought of as
incorporating the necessary changes to the classical waterfall model to make
it usable in practical software development projects. It is almost the same as
the classical waterfall model except some changes are made to increase the
efficiency of the software development.

→The iterative waterfall model provides feedback paths from every phase to
its preceding phases, which is the main difference from the classical waterfall
model.
→Feedback paths introduced by the iterative waterfall model are shown in
the figure below.

PhaseContainmentofErrors: :
The principle of detecting errors as close to their points of commitment as
possible is known as Phase containment of errors.
Advantages of Iterative Waterfall Model :

• Feedback Path –
In the classical waterfall model, there are no feedback paths, so
there is no mechanism for error correction. But in the iterative
waterfall model feedback path from one phase to its preceding
phase allows correcting the errors that are committed and these
changes are reflected in the later phases.
• Simple –
Iterative waterfall model is very simple to understand and use.
That’s why it is one of the most widely used software development
models.
• Cost-Effective –
It is highly cost-effective to change the plan or requirements in the
model. Moreover, it is best suited for agile organizations.
• Well-organized –
In this model, less time is consumed on documenting and the team
can spend more time on development and designing.

Drawbacks of Iterative Waterfall Model :

Difficult to incorporate change requests –The major drawback of the


iterative waterfall model is that all the requirements must be clearly stated
before starting the development phase. Customers may change requirements
after some time but the iterative waterfall model does not leave any scope to
incorporate change requests that are made after the development phase
starts.

Incremental delivery not supported –In the iterative waterfall model, the full
software is completely developed and tested before delivery to the customer.
There is no scope for any intermediate delivery. So, customers have to wait a
long for getting the software.

Overlappingofphasesnotsupported–
Iterative waterfall model assumes that one phase can start after completion of
the previous phase, But in real projects, phases may overlap to reduce the
effort and time needed to complete the project.

Risk handling not supported –

Projects may suffer from various types of risks. But, the Iterative waterfall
model has no mechanism for risk handling.

Limited customer interactions –

Customer interaction occurs at the start of the project at the time of


requirement gathering and at project completion at the time of software
delivery. These fewer interactions with the customers may lead to many
problems as the finally developed software may differ from the customers’
actual requirements.

You might also like