Ch. 3 Software Development Life Cycle
Ch. 3 Software Development Life Cycle
Content:
3.1 Introduction
3.4 SDLC
3.1 Introduction:
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.
A software life cycle model describes entry and exit criteria for each phase. A phase can
begin only if its stage-entry criteria have been fulfilled. So without a software life cycle
model, the entry and exit criteria for a stage cannot be recognized. Without software life
cycle models, it becomes tough for software project managers to monitor the progress of
the project.
3.2 Activities of SDLC:
SDLC provides a series of steps to be followed to design and develop a software product
efficiently. SDLC framework includes the following steps:
Communication:
This is the first step where the user initiates the request for a desired software
product. He contacts the service provider and tries to negotiate the terms. He
submits his request to the service providing organization in writing.
Requirement Gathering
This step onwards the software development team works to carry on the project.
The team holds discussions with various stakeholders from problem domain and
tries to bring out as much information as possible on their requirements. The
requirements are contemplated and segregated into user requirements, system
requirements and functional requirements. The requirements are collected using a
number of practices as given -
Feasibility Study:
After requirement gathering, the team comes up with a rough plan of software
process.
At this step the team analyzes if software can be made to fulfill all requirements of
the user and if there is any possibility of software being no more useful.
It is found out, if the project is financially, practically and technologically feasible for
the organization to take up.
There are many algorithms available, which help the developers to conclude the
feasibility of a software project.
System Analysis:
At this step the developers decide a roadmap of their plan and try to bring up the
best software model suitable for the project.
System analysis includes Understanding of software product limitations, learning
system related problems or changes to be done in existing systems beforehand,
identifying and addressing the impact of project on organization and personnel etc.
The project team analyzes the scope of the project and plans the schedule and
resources accordingly.
Software Design:
Next step is to bring down whole knowledge of requirements and analysis on the
desk and design the software product.
The inputs from users and information gathered in requirement gathering phase are
the inputs of this step.
The output of this step comes in the form of two designs; logical design and physical
design.
Engineers produce meta-data and data dictionaries, logical diagrams, data-flow
diagrams and in some cases pseudo codes.
Coding:
Testing:
An estimate says that 50% of whole software development process should be tested.
Errors may ruin the software from critical level to its own removal.
Software testing is done while coding by the developers and thorough testing is
conducted by testing experts at various levels of code such as module testing,
program testing, product testing, in-house testing and testing the product at user’s
end.
Early discovery of errors and their remedy is the key to reliable software.
Integration:
Software may need to be integrated with the libraries, databases and other
program(s).
This stage of SDLC is involved in the integration of software with outer world
entities.
Implementation:
This means installing the software on user machines. At times, software needs post-
installation configurations at user end.
Software is tested for portability and adaptability and integration related issues are
solved during implementation.
This phase confirms the software operation in terms of more efficiency and less
errors.
If required, the users are trained on, or aided with the documentation on how to
operate the software and how to keep the software operational.
The software is maintained timely by updating the code according to the changes
taking place in user end environment or technology.
This phase may face challenges from hidden bugs and real-world unidentified
problems.
Disposition:
As time elapses, the software may decline on the performance front. It may go
completely obsolete or may need intense upgradation.
Hence a pressing need to eliminate a major portion of the system arises.
This phase includes archiving data and required software components, closing
down the system, planning disposition activity and terminating system at
appropriate end-of-system time.
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
Communication:
In this step, we plan the steps for project development. After completing the final
discussion, we report on the project.
In this step, we create a model to understand the project in the real world. We showcase
the model to all the developers. If changes are required, we implement them in this step.
Construction:
If any code is required for the project development, we implement it in this phase.
We also test the project in this phase.
Deployment:
In this phase, we submit the project to the clients for their feedback and add any missing
requirements.
Once the required function is done, an analysis is complete with auditing the
feasibility of the growth of a product. In case of any ambiguity, a signal is set up for
further discussion.
Once the requirement is understood, the SRS (Software Requirement Specification)
document is created. The developers should thoroughly follow this document and
also should be reviewed by the customer for future reference.
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.
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.
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.
Waterfall model is the pioneer of the SDLC processes. In fact, it was the first model which
was widely used in the software industry. It is divided into phases and the output of one
phase becomes the input of the next phase. It is mandatory for a phase to be completed
before the next phase starts. In short, there is no overlapping in the Waterfall model
In waterfall, the development of one phase starts only when the previous phase is
complete. Because of this nature, each phase of the waterfall model is quite precise and
well-defined. Since the phases fall from a higher level to a lower level, like a waterfall, it’s
named the waterfall model.
1. Feasibility Study
The main goal of this phase is to determine whether it would be financially and technically
feasible to develop the software.
The feasibility study involves understanding the problem and then determining the various
possible strategies to solve the problem. These different identified solutions are analyzed
based on their benefits and drawbacks. The best solution is chosen and all the other phases
are carried out as per this solution strategy.
The aim of the requirement analysis and specification phase is to understand the exact
requirements of the customer and document them properly. This phase consists of two
different activities.
Requirement gathering and analysis: Firstly all the requirements regarding the
software are gathered from the customer and then the gathered requirements are
analyzed. The goal of the analysis part is to remove incompleteness (an incomplete
requirement is one in which some parts of the actual requirements have been
omitted) and inconsistencies (an inconsistent requirement is one in which some
part of the requirement contradicts some other part).
Requirement specification: These analyzed requirements are documented in a
software requirement specification (SRS) document. SRS document serves as a
contract between the development team and customers. Any future dispute
between the customers and the developers can be settled by examining the SRS
document.
3. Design:
The goal of this phase is to convert the requirements acquired in the SRS into a format that
can be coded in a programming language. It includes high-level and detailed design as well
as the overall software architecture. A Software Design Document is used to document all
of this effort (SDD)
In the coding phase software design is translated into source code using any suitable
programming language. Thus each designed module is coded. The aim of the unit testing
phase is to check whether each module is working properly or not.
Integration of different modules is undertaken soon after they have been coded and unit
tested. Integration of various modules is carried out incrementally over a number of steps.
During each integration step, previously planned modules are added to the partially
integrated system and the resultant system is tested. Finally, after all the modules have
been successfully integrated and tested, the full working system is obtained and system
testing is carried out on this.
System testing consists of three different kinds of testing activities as described below.
Alpha testing: Alpha testing is the system testing performed by the development
team.
Beta testing: Beta testing is the system testing performed by a friendly set of
customers.
Acceptance testing: After the software has been delivered, the customer performed
acceptance testing to determine whether to accept the delivered software or reject
it.
6. Maintenance:
Maintenance is the most important phase of a software life cycle. The effort spent on
maintenance is 60% of the total effort spent to develop full software. There are basically
three types of maintenance.
Sequential Approach:
The waterfall model involves a sequential approach to software development,
where each phase of the project is completed before moving on to the next one.
Document-Driven:
The waterfall model relies heavily on documentation to ensure that the project is
well-defined and the project team is working towards a clear set of goals.
Quality Control:
The waterfall model places a high emphasis on quality control and testing at each
phase of the project, to ensure that the final product meets the requirements and
expectations of the stakeholders.
Rigorous Planning:
The waterfall model involves a rigorous planning process, where the project scope,
timelines, and deliverables are carefully defined and monitored throughout the
project lifecycle.
Customer Test –
Drives Mock-up
OR
Prototyping Model has following six SDLC phases as follow:
Incremental Prototyping
In incremental Prototyping, the final product is decimated into different small
prototypes and developed individually.
Eventually, the different prototypes are merged into a single product. This method
is helpful to reduce the feedback time between the user and the application
development team.
Extreme Prototyping:
Extreme prototyping method is mostly used for web development. It is consists of
three sequential phases.
Basic prototype with all the existing page is present in the HTML format.
You can simulate data process using a prototype services layer.
The services are implemented and integrated into the final prototype.