Software Development Life Cycle(SDLC)
By: V.N.Soni
SDLC - Overview
• Software Development Life Cycle (SDLC) is a process used by the software
industry to design, develop and test high quality softwares. The SDLC aims to
produce a high-quality software that meets or exceeds customer expectations,
reaches completion within times and cost estimates.
• SDLC is the acronym of Software Development Life Cycle.
• It is also called as Software Development Process.
• SDLC is a framework defining tasks performed at each step in the software
development process.
• ISO/IEC 12207 is an international standard for software life-cycle processes. It
aims to be the standard that defines all the tasks required for developing and
maintaining software.
What is SDLC?
• SDLC is a process followed for a software project, within a software
organization. It consists of a detailed plan describing how to develop, maintain,
replace and alter or enhance specific software.
Stage 1: Planning and Requirement Analysis
• Requirement analysis is the most important and fundamental stage in SDLC. It
is performed by the senior members of the team with inputs from the
customer, the sales department, market surveys and domain experts in the
industry. This information is then used to plan the basic project approach and
to conduct product feasibility study in the economical, operational and
technical areas.
• Planning for the quality assurance requirements and identification of the risks
associated with the project is also done in the planning stage. The outcome of
the technical feasibility study is to define the various technical approaches that
can be followed to implement the project successfully with minimum risks.
Stage 2: Defining Requirements
• Once the requirement analysis is done the next step is to clearly define and
document the product requirements and get them approved from the
customer or the market analysts. This is done through an SRS (Software
Requirement Specification) document which consists of all the product
requirements to be designed and developed during the project life cycle.
Stage 3: Designing the Product Architecture
• SRS is the reference for product architects to come out with the best
architecture for the product to be developed. Based on the requirements
specified in SRS, usually more than one design approach for the product
architecture is proposed and documented in a DDS - Design Document
Specification.
• A design approach clearly defines all the architectural modules of the product
along with its communication and data flow representation with the external
and third party modules
Stage 4: Building or Developing the Product
• In this stage of SDLC the actual development starts and the product is built. The
programming code is generated as per DDS during this stage. If the design is
performed in a detailed and organized manner, code generation can be
accomplished without much hassle.
• Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to
generate the code. Different high level programming languages such as C, C++,
Pascal, Java and PHP are used for coding. The programming language is chosen
with respect to the type of software being developed.
Stage 5: Testing the Product
• This stage is usually a subset of all the stages as in the modern SDLC models,
the testing activities are mostly involved in all the stages of SDLC. However, this
stage refers to the testing only stage of the product where product defects are
reported, tracked, fixed and retested, until the product reaches the quality
standards defined in the SRS.
Stage 6: Deployment in the Market and Maintenance
• Once the product is tested and ready to be deployed it is released formally in
the appropriate market. Sometimes product deployment happens in stages as
per the business strategy of that organization. The product may first be
released in a limited segment and tested in the real business environment
(UAT- User acceptance testing).
SDLC Models
• There are various software development life cycle models defined and designed
which are followed during the software development process. These models
are also referred as Software Development Process Models". Each process
model follows a Series of steps unique to its type to ensure success in the
process of software development.
• Following are the most important and popular SDLC models followed in the
industry :
1. Sequential / Linear Model
2. Iterative model
3. Evolutionary model
SDLC - Waterfall Model
• It is also referred to as a linear-sequential life cycle model.
• each phase must be completed before the next phase can begin and there is no
overlapping in the phases.
• In "The Waterfall" approach, the whole process of software development is
divided into separate phases.
• the outcome of one phase acts as the input for the next phase sequentially.
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.
The sequential phases in Waterfall model are −
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 - Application
Every software developed is different and requires a suitable SDLC approach to
be followed based on the internal and external factors. Some situations where
the use of Waterfall model is most appropriate are −
• Requirements are very well documented, clear and fixed.
• Product definition is stable.
• Technology is understood and is not dynamic.
• There are no ambiguous requirements.
• Ample resources with required expertise are available to support the
product.
• The project is short.
Waterfall Model - Advantages
Some of the major advantages of the Waterfall Model are as follows −
• 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
The major disadvantages of the Waterfall Model are as follows −
• 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.
• Cannot accommodate changing requirements.
• Adjusting scope during the life cycle can end a project.
SDLC - Iterative Model
• In the Iterative model, iterative process starts with a simple implementation
of a small set of the software requirements and iteratively enhances the
evolving versions until the complete system is implemented and ready to be
deployed.
• An iterative life cycle model does not attempt to start with a full
specification of requirements
• Instead, development begins by specifying and implementing just part of
the software, which is then reviewed to identify further requirements.
• This process is then repeated, producing a new version of the software at
the end of each iteration of the model.
Iterative Model - Design
Iterative and Incremental development is a combination of both iterative
design or iterative method and incremental build model for development.
Iterative Model - Design
• "During software development, more than one iteration of the software
development cycle may be in progress at the same time." This process may
be described as an "evolutionary acquisition" or "incremental build"
approach.“
• In this incremental model, the whole requirement is divided into various
builds. During each iteration, the development module goes through the
requirements, design, implementation and testing phases. Each subsequent
release of the module adds function to the previous release. The process
continues till the complete system is ready as per the requirement.
Iterative Model - Application
Like other SDLC models, Iterative and incremental development has some
specific applications in the software industry. This model is most often used in
the following scenarios −
• Requirements of the complete system are clearly defined and understood.
• Major requirements must be defined; however, some functionalities or
requested enhancements may evolve with time.
• There is a time to the market constraint.
• A new technology is being used and is being learnt by the development
team while working on the project.
• Resources with needed skill sets are not available and are planned to be
used on contract basis for specific iterations.
• There are some high-risk features and goals which may change in the future.
Iterative Model - Advantages
The advantages of the Iterative and Incremental SDLC Model are as follows −
• Some working functionality can be developed quickly and early in the life
cycle.
• Results are obtained early and periodically.
• Parallel development can be planned.
• Progress can be measured.
• Less costly to change the scope/requirements.
• Testing and debugging during smaller iteration is easy.
• Risks are identified and resolved during iteration; and each iteration is an
easily managed milestone.
• Easier to manage risk - High risk part is done first.
• With every increment, operational product is delivered.
Iterative Model - Advantages
• Issues, challenges and risks identified from each increment can be
utilized/applied to the next increment.
• Risk analysis is better.
• It supports changing requirements.
• Initial Operating time is less.
• Better suited for large and mission-critical projects.
• During the life cycle, software is produced early which facilitates customer
evaluation and feedback.
Iterative Model - Disadvantages
The disadvantages of the Iterative and Incremental SDLC Model are as follows −
More resources may be required.
• Although cost of change is lesser, but it is not very suitable for changing
requirements.
• More management attention is required.
• System architecture or design issues may arise because not all requirements are
gathered in the beginning of the entire life cycle.
• Defining increments may require definition of the complete system.
• Not suitable for smaller projects.
• Management complexity is more.
• End of project may not be known which is a risk.
• Highly skilled resources are required for risk analysis.
• Projects progress is highly dependent upon the risk analysis phase.
Spiral Model
• The spiral model combines the idea of iterative development with the
systematic, controlled aspects of the waterfall model.
• This Spiral model is a combination of iterative development process model
and sequential linear development model i.e. the waterfall model with a
very high emphasis on risk analysis.
• It allows incremental releases of the product or incremental refinement
through each iteration around the spiral.
Spiral Model - Design
Spiral Model - Phases
• The spiral model has four phases. A software project repeatedly passes
through these phases in iterations called Spirals.
1. Identification
• This phase starts with gathering the business requirements in the baseline
spiral. In the subsequent spirals as the product matures, identification of
system requirements, subsystem requirements and unit requirements are all
done in this phase.
• This phase also includes understanding the system requirements by
continuous communication between the customer and the system analyst.
At the end of the spiral, the product is deployed in the identified market.
Spiral Model - Phases
Design
• The Design phase starts with the conceptual design in the baseline spiral
and involves architectural design, logical design of modules, physical
product design and the final design in the subsequent spirals.
Construct or Build
• The Construct phase refers to production of the actual software product at
every spiral. In the baseline spiral, when the product is just thought of and
the design is being developed a POC (Proof of Concept) is developed in this
phase to get customer feedback.
• Then in the subsequent spirals with higher clarity on requirements and
design details a working model of the software called build is produced with
a version number. These builds are sent to the customer for feedback.
Spiral Model - Phases
Evaluation and Risk Analysis
• Risk Analysis includes identifying, estimating and monitoring the technical
feasibility and management risks, such as schedule slippage and cost
overrun. After testing the build, at the end of first iteration, the customer
evaluates the software and provides feedback.
• Based on the customer evaluation, the software development process
enters the next iteration and subsequently follows the linear approach to
implement the feedback suggested by the customer. The process of
iterations along the spiral continues throughout the life of the software.
Spiral Model Application
The following pointers explain the typical uses of a Spiral Model −
• When there is a budget constraint and risk evaluation is important.
• For medium to high-risk projects.
• Long-term project commitment because of potential changes to economic
priorities as the requirements change with time.
• Customer is not sure of their requirements which is usually the case.
• Requirements are complex and need evaluation to get clarity.
• New product line which should be released in phases to get enough
customer feedback.
• Significant changes are expected in the product during the development
cycle.
Spiral Model - Advantages
The advantages of the Spiral SDLC Model are as follows −
• Changing requirements can be accommodated.
• Allows extensive use of prototypes.
• Requirements can be captured more accurately.
• Users see the system early.
• Development can be divided into smaller parts and the risky parts can be
developed earlier which helps in better risk management.
Spiral Model - Disadvantages
The disadvantages of the Spiral SDLC Model are as follows −
• Management is more complex.
• End of the project may not be known early.
• Not suitable for small or low risk projects and could be expensive for small
projects.
• Process is complex
• Spiral may go on indefinitely.
• Large number of intermediate stages requires excessive documentation.
SDLC - RAD Model
• The RAD (Rapid Application Development) model is based on prototyping
and iterative development with no specific planning involved.
• The process of writing the software itself involves the planning required for
developing the product.
• Rapid Application Development focuses on gathering customer
requirements through workshops or focus groups, early testing of the
prototypes by the customer using iterative concept, reuse of the existing
prototypes (components), continuous integration and rapid delivery.\
• Rapid application development is a software development methodology
that uses minimal planning in favor of rapid prototyping. A prototype is a
working model that is functionally equivalent to a component of the
product.
RAD Model Design
RAD Model Design
RAD Model Design
RAD model distributes the analysis, design, build and test phases into a series
of short, iterative development cycles.
Following are the various phases of the RAD Model −
1. Business Modeling
The business model for the product under development is designed in terms of
flow of information and the distribution of information between various
business channels. A complete business analysis is performed to find the vital
information for business, how it can be obtained, how and when is the
information processed and what are the factors driving successful flow of
information.
RAD Model Design
2. Data Modeling
The information gathered in the Business Modeling phase is reviewed and
analyzed to form sets of data objects vital for the business. The attributes of all
data sets is identified and defined. The relation between these data objects are
established and defined in detail in relevance to the business model.
3. Process Modeling
The data object sets defined in the Data Modeling phase are converted to
establish the business information flow needed to achieve specific business
objectives as per the business model. The process model for any changes or
enhancements to the data object sets is defined in this phase. Process
descriptions for adding, deleting, retrieving or modifying a data object are
given.
RAD Model Design
4. Application Generation
The actual system is built and coding is done by using automation tools to
convert process and data models into actual prototypes.
5. Testing and Turnover
The overall testing time is reduced in the RAD model as the prototypes are
independently tested during every iteration. However, the data flow and the
interfaces between all the components need to be thoroughly tested with
complete test coverage. Since most of the programming components have
already been tested, it reduces the risk of any major issues.
RAD Model - Application
The following pointers describe the typical scenarios where RAD can be used −
• RAD should be used only when a system can be modularized to be delivered
in an incremental manner.
• It should be used if there is a high availability of designers for modeling.
• It should be used only if the budget permits use of automated code
generating tools.
• RAD SDLC model should be chosen only if domain experts are available with
relevant business knowledge.
• Should be used where the requirements change during the project and
working prototypes are to be presented to customer in small iterations of 2-
3 months.
RAD Model - Advantages
The advantages of the RAD Model are as follows −
• Changing requirements can be accommodated.
• Progress can be measured.
• Iteration time can be short with use of powerful RAD tools.
• Productivity with fewer people in a short time.
• Reduced development time.
• Increases reusability of components.
• Quick initial reviews occur.
• Encourages customer feedback.
• Integration from very beginning solves a lot of integration issues.
RAD Model - Disadvantages
The disadvantages of the RAD Model are as follows −
• Dependency on technically strong team members for identifying business
requirements.
• Only system that can be modularized can be built using RAD.
• Requires highly skilled developers/designers.
• High dependency on modeling skills.
• Inapplicable to cheaper projects as cost of modeling and automated code
generation is very high.
• Management complexity is more.
• Suitable for systems that are component based and scalable.
• Requires user involvement throughout the life cycle.
• Suitable for project requiring shorter development times.