Software Development Life Cycle
Software Development Life Cycle
Software Development Life Cycle
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
→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.
→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.
→ 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.
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.
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.
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:
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 –
→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.
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.
Projects may suffer from various types of risks. But, the Iterative waterfall
model has no mechanism for risk handling.