SYSTEM DEVELOPMENT LIFE CYCLE (SDLC)
Objectives
After studying this unit, you will be able to:
• Understand the importance of SDLC in MIS
• Learn in detail about the phases of SDLC
• Deep knowledge about Methodologies of System Development Life Cycle
Structure
3.1 Introduction of System Development Life Cycle (SDLC)
3.2 Phases of SDLC
3.3 Methodologies of System Development Life Cycle
3.4 Benefits of System Development Life Cycle
3.5 Possible Drawbacks of SDLC
3.6 Summary
3.7 Self-Assessment Exercises
3.8 Further Readings
3.1 INTRODUCTION OF SYSTEM DEVELOPMENT LIFE CYCLE (SDLC)
SDLC which was introduced in the 1960’s originated from software development efforts and
has since evolved into a well-organized process. It serves as a project management
framework that outlines the stages of developing information systems from feasibility studies
to maintenance. SDLC applies to both technical and non-technical systems which usually
involves IT hardware and software components.
SDLC is a conceptual model that includes rules and procedures for developing or changing
systems throughout their life cycles. SDLC activities include the following:
➢ Planning
➢ Analysis
➢ Design
➢ Development
➢ Testing
➢ Implementation
➢ Maintenance
3.2. PHASES OF SDLC
The Systems Development Life Cycle is an approach that breaks down the work required to
implement a new or modified Information System into phases.
Fig 3.1: System Development Life Cycle (SDLC)
• Planning: The company identifies the need for a new system and defines its objectives and
scope during this stage. A feasibility study is carried out to determine whether or not the
project is feasible and the resources required.
• Analysis: During this stage, the organization collects and analyses the system requirements.
Gathering requirements from stakeholders and developing a detailed system specification are
part of this stage
• Design: The system design is created during this stage, which includes the software and
hardware architecture, database design, user interfaces, and system security.
• Development: This stage entails the actual coding and development of the system based on
the previous stage's design. Developers design, develop, debug, and test the system.
• Integration & Testing: The system is tested during this stage to ensure that it meets the
requirements and functions as expected. To validate the system, various types of testing are
performed, including unit testing, integration testing, and acceptance testing.
• Implementation: The system is installed and deployed in a live environment for end-users to
use at this stage. The system is deployed in a production environment and used by customers
and end users.
• Maintenance: After the system has been deployed, this stage entails providing support for it.
The system may require maintenance and bug fixes, as well as the addition of new features
based on customer feedback.
To summarize, the SDLC is a well-defined approach to system development that ensures
systems are delivered on time, within budget, and with high quality.
Stage #1. Planning – What is/are the Existing Problem(s)?
Planning is one of the SDLC's core phases, covering nearly all of the upcoming steps that
developers must complete for a successful project launch.
• This stage assists in setting up the problem that the software can target and defining
the system's objectives. In other words, the planning process helps in developing an
idea of how a specific problem can be solved using a specific software solution. This
is critical for developers to better understand the project before beginning to build
software.
• The planning stage includes an analysis of the resources and costs required to
complete the project, as well as an estimate of the overall price of the software
developed.
• Finally, the planning process clearly defines the outline of system development,
including setting deadlines and time frames for each of the system development life
cycle phases.
Stage #2. Analysis – What Do We Want?
When the planning phase is complete, the research and analysis phase begins. This step
entails gathering more specific data for your new system, such as initial system prototype,
market research, competition analysis, and so on.
• To complete the analysis and obtain all of the critical information for a specific
project, developers can generate system requirements, prioritize them, draw
alternatives, and determine the existing prototypes' problems and solutions to the
problems. Conducting market research to identify end-user pain points and needs, as
well as developing concrete system goals and features to target.
• Additionally, the SDLC analysis stage includes the creation of the Software
Requirement Specification (SRS) document, which defines the upcoming system
development's software and hardware, functional, and network requirements.
Stage #3. Design – How It Should Look Like?
Design and prototyping are the next stages of a system development project. The design
process also includes the first trial of previously drawn ideas, as well as finding some new
concepts and solutions that fit better - such an approach can significantly reduce the time and
costs required for the actual development of the software. Thus, once the design and
prototyping are completed and the operation plan is in place, the creators can begin
programming!
Stage #4. Development – Let’s Create It
Here, developers write code and build the app following the finalized requirements and
specification documents. In other words, it includes both the frontend and the backend
development processes. Along with the core functions of the software, it includes all of the
basic qualities the product must provide for its end-users.
Developers can use a variety of tools and programming environments written in C++, PHP,
Python, and other languages to fully meet the project specifications and requirements.
Though this phrase may appear to be simple, it is still possible to implement minor changes
and improvements if they exist. However, the efficiency of the finalized version of the
system created can only be evaluated in the following stage - software testing.
Stage #5. Testing – Is It the Exact One We Needed?
The testing stage, like any other system development model, is one of the most critical phases
of SDLC. After the software is built, it is even more critical to ensure that all of its features
work correctly and coherently and that they do not negatively impact the user experience.
This process involves detecting potential bugs, defects, and errors, searching for various
vulnerabilities, and so on, and can sometimes take even longer than the app- building stage.
Finally, developers usually produce a testing report that includes a test case that lists all of the
issues that were discovered and resolved. You can also review the testing criteria to ensure
that the software product meets all of the requirements outlined in the SRS document.
Stage #6. Integration or deployment – How Will We Use It?
When the product is finished, it is time to integrate it into the specific environment, which
usually means installing it. At this point, the software has completed its final testing in the
training environment and is ready for market presentation. As a result, the product is now
available to a much larger audience!
Stage #7. Maintenance – Let’s Make the Improvements
The final but not least important stage of the SDLC process is maintenance, where the
software is already in use by end users. Often, during the first few months, developers will
encounter issues that were not detected in the testimonials, so they should immediately
respond to the reported issues and implement the changes required for the software's stable
and convenient use. This is especially important for large systems, which are typically more
difficult to test during the debugging stage.
3.3 SIX METHODOLOGIES OF SYSTEM DEVELOPMENT LIFE
CYCLE
Now that you understand the fundamental SDLC phases and why they are important, it's
time to look into the core methodologies of the system development life cycle - the
approaches that can assist you in delivering a specific software model based on its major
characteristics and features. Overall, there are six popular SDLC methodologies that you can
use.
A) Waterfall Model
The Waterfall Model was the first to be introduced as a Process Model as shown in Figure
3.2.
Fig 3.2: Waterfall Model
A linear-sequential life cycle model is another name for it. It is extremely simple to
understand and apply. In a waterfall model, each phase must be completed before the next
one can begin, and the phases do not overlap. The Waterfall model was the first SDLC
approach used in software development. The waterfall Model shows the software
development process in a sequential linear flow. This means that any phase of the
development process can start only after the previous phase is finished. The phases in this
waterfall model do not overlap.
The Waterfall model's sequential phases are as follows:
• Gathering and analyzing requirements: In this phase, all possible requirements of the
system to be developed are captured and documented in a requirement specification
document.
• System Design: In this phase, the requirement specifications from the first phase are
studied, and the system design is prepared. This system design aids in the specification
of hardware and system requirements, as well as the definition of the overall system
architecture.
• Implementation: Using system design inputs, the system is first developed in small
programs called units, which are then integrated into the next phase. Unit Testing is the
process of developing and testing each unit for functionality.
• Testing: After testing each unit, all of the units developed during the implementation
phase are integrated into a system. Following integration, the entire system is tested for
flaws and failures.
• System deployment: After functional and non-functional testing is completed, the
product is deployed in the customer environment or released to the market.
• Maintenance: There are a few issues that arise in the client environment. Patches are
released to address these issues. To improve the product, newer versions are released.
Maintenance is performed to implement these changes in the customer environment.
B) Iterative Model
The Iterative model begins with a simple implementation of a small set of software
requirements and iteratively improves the evolving versions until the entire system is
implemented and ready for deployment. An iterative life cycle model does not attempt to
begin with a complete set of requirements. Instead, development begins with specifying and
implementing only a portion of the software, which is then reviewed to identify additional
requirements. This process is then repeated, resulting in a new version of the software at the
end of each model iteration.
This includes a series of smaller "waterfalls" in which small portions of changes are carefully
analyzed, tested, and delivered via repeating development cycles. Receiving early feedback
from end users allows for the elimination of issues and bugs in the early stages of software
development
Fig 3.3: Iterative model
Iterative and incremental development is a development model that combines iterative design
or iterative methods with an incremental build model. "More than one iteration of the
software development cycle may be in progress at the same time during software
development." This method is referred to as "evolutionary acquisition" or "incremental
build." The entire requirement is divided into various builds in this incremental model. The
development module goes through the requirements, design, implementation, and testing
phases during each iteration. Each subsequent module release adds functionality to the
previous release. The process is repeated until the entire system meets the requirements.
The key to using an iterative software development lifecycle successfully is rigorous
requirement validation, as well as verification and testing of each version of the software
against those requirements within each cycle of the model. Tests must be repeated and
extended as the software evolves through successive cycles to verify each version of the
software.
C) Spiral Model
Fig 3.4: Spiral Model
The spiral model combines the idea of iterative development with the waterfall model's systematic,
controlled aspects. This spiral model is a combination of the iterative development process model and
the sequential linear development model, also known as the waterfall model, with a heavy emphasis
on risk analysis. It enables incremental product releases or incremental refinement with each iteration
around the spiral.
The spiral model is best suited for large projects with similar, more customized products, as it
allows for repeated passage through the main phases in a "spiral" motion. It allows for the
simultaneous incorporation of feedback on the first stages of a life cycle, significantly
reducing the time and costs required to implement the changes.
The spiral model is divided into four stages. A software project goes through these phases in
iterations known as Spirals.
• Identification:
This phase begins with gathering the baseline spiral's business requirements. This phase is
used to identify system requirements, subsystem requirements, and unit requirements in
subsequent spirals as the product matures. This phase also includes continuous
communication between the customer and the system analyst to understand the system
requirements. The product is deployed in the identified market at the end of the spiral.
• Design:
The Design phase begins with conceptual design in the baseline spiral and progresses to
architectural design, logical module design, physical product design, and final design in
subsequent spirals.
• Construct or Build:
At each spiral, the Construct phase refers to the production of the actual software product. In
the baseline spiral, when the product is still being thought about and the design is being
developed, a POC (Proof of Concept) is created to solicit customer feedback. Then, in
subsequent spirals with greater clarity on requirements and design details, a working model
of the software known as a build with a version number is produced. These prototypes are
sent to the customer for review.
• Evaluation and Risk Analysis:
Identifying, estimating, and monitoring technical feasibility and managing risks such as
schedule slippage and cost overrun are all part of risk analysis. After testing the build, the
customer evaluates the software and provides feedback at the end of the first iteration.
D) V-Model
The 'V-Model' is a modern version of the traditional software development model. The letter
'V' represents verification and validation and is an extension of the Waterfall model. The
crux of the V model is the connection between each phase of testing and that of
development. The phases of testing are categorized as the "Validation Phase" and that
development as the "Verification Phase". As a result, for each stage of development, a
corresponding test activity is planned ahead of time.
Fig 3.4: V – Model
Verification Phases:
• Requirement Analysis: The first step in software development is to collect requirements.
Requirements are business requirements that must be met during the software development
process. Business requirement analysis is the process of understanding an aspect from a
customer's perspective by putting oneself in their shoes and thoroughly analyzing an
application's functionality from a user's perspective. An acceptance criteria layout is now
being prepared to correlate the tasks completed during the development process with the
overall effort's outcome.
• System Design: It entails creating a layout of the system/application design that will be
created. The goal of system design is to create detailed hardware and software specifications.
System design is further classified into the following subcategories:
i) Architectural Design: Architectural design is concerned with the development of technical
methodologies to be used in the completion of software development objectives.
Architectural design is frequently referred to as 'high-level design,' and it aims to provide an
overview of the solution, platform, system, product, and service.
ii) Module Design: Module design, also known as 'low-level design,' aims to define the logic
upon which the system will be built. We try to depict the relationship between the modules
and the order in which they interact at this stage.
Validation Phases:
• Unit Testing Phase: Unit tests are designed to validate single modules and identify and
eliminate bugs. A unit test is simply running a piece of
code to see if it provides the desired functionality
Integration Testing: Integration testing is the process of collaborating pieces of code to
ensure that they perform as a single entity.
• System Testing: When the entire system is ready, the application is run on the target
environment in which it must operate, and a conclusion is drawn to determine whether the
system is capable of performing efficiently with the shortest response time.
• User Acceptance Testing: The user acceptance test plan is created during the requirement
analysis phase because when the software is ready to be delivered, it is tested against a set of
tests that must be passed to certify that the product met its goal.
E) The Big Bang Model
This model is ideal for clients who do not have a clear idea or vision of how their final
product should look. It is commonly used for creating and delivering a wide range of ideas.
As a result, delivering different system variations that could more accurately define the final
output provides a more concrete vision of specific project completion. While it may be too
expensive to deliver a large project, this SDLC methodology is ideal for small or
experimental projects.
The Big bang model is an SDLC model that begins from scratch. It is the most basic SDLC
(Software Development Life Cycle) model because it requires almost no planning. However,
it requires more funds and coding, as well as more time. The big bang model was named after
the "Great Big Bang," which resulted in the formation of galaxies, stars, planets, and so on.
Similarly, to build a product, this SDLC model combines time, effort, and resources. The
product is gradually built as the customer's requirements arrive; however, the end product
may not meet the actual requirements. The diagram below depicts an overview of the Big
Bang SDLC model.
Fig 3.5: The Big Bang Model
As new product requirements arrive, they are understood and implemented. The entire
module, or at least a portion of it, is integrated and tested. To determine the cause, all
modules are run separately and the defective ones are removed. It is an appropriate model
when the requirements are unclear and the final release date is unknown. Simply put, it can
be phased out in three stages. Specifically,
• Integrate each module to provide a unique integrated overview
• Test each module separately to identify any errors or defects
• If an error is discovered, isolate that module and determine the source of the error
3.4 BENEFITS OF SYSTEM DEVELOPMENT LIFE CYCLE
SDLC has the following advantages:
• Improved Quality: SDLC ensures that software is developed in a systematic and organized
manner, which helps to improve overall software quality. This can result in fewer bugs and
errors, as well as improved overall performance.
• Reduced Costs: By using a structured approach to development, SDLC assists in identifying
and addressing problems early in the process, lowering the cost of resolving issues later on.
• Improved Communication: SDLC encourages collaboration among stakeholders,
developers, and users, ensuring that everyone is on the same page and working towards the
same goals.
• Improved Control: Because SDLC employs a structured approach, it provides greater
control over the development process, making it easier to manage resources, timelines, and
budgets.
• Improved Maintenance: SDLC includes ongoing software maintenance and support, which
helps to ensure that it is up-to-date and functioning properly.
• Reduced Risk: SDLC incorporates risk management into the development process, allowing
potential risks to be identified early and mitigated.
• Improved Scalability: SDLC considers the need for software to be scalable and flexible,
which can assist in ensuring that it can grow and adapt to changing needs over time.
In General, SDLC provides a structured approach to software development that can aid in the
improvement of quality, cost reduction, communication and control, and risk reduction.