System Development Life Cycle Phases:
1- System Planning
The Planning phase is the most crucial step in creating a successful system, during this phase
you decide exactly what you want to do and the problems you’re trying to solve, by:
Defining the problems, the objectives and the resources such as personnel and costs.
Studying the ability of proposing alternative solutions after meeting with clients,
suppliers, consultants and employees.
Studying how to make your product better than your competitors’.
After analyzing this data you will have three choices: develop a new system, improve the
current system or leave the system as it is.
2- System Analysis
The end-user’s requirements should be determined and documented, what their expectations
are for the system, and how it will perform. A feasibility study will be made for the project as
well, involving determining whether it’s organizationally, economically, socially,
technologically feasible. it’s very important to maintain strong communication level with the
clients to make sure you have a clear vision of the finished product and its function.
3- System Design
The design phase comes after a good understanding of customer’s requirements, this phase
defines the elements of a system, the components, the security level, modules, architecture
and the different interfaces and type of data that goes through the system.
A general system design can be done with a pen and a piece of paper to determine how the
system will look like and how it will function, and then a detailed and expanded system
design is produced, and it will meet all functional and technical requirements, logically and
physically.
4- Implementation and Deployment
This phase comes after a complete understanding of system requirements and specifications,
it’s the actual construction process after having a complete and illustrated design for the
requested system.
In the Software Development Life Cycle, the actual code is written here, and if the system
contains hardware, then the implementation phase will contain configuration and fine-tuning
for the hardware to meet certain requirements and functions.
In this phase, the system is ready to be deployed and installed in customer’s premises, ready
to become running, live and productive, training may be required for end users to make sure
they know how to use the system and to get familiar with it, the implementation phase may
take a long time and that depends on the complexity of the system and the solution it
presents.
5- System Testing and Integration
Bringing different components and subsystems together to create the whole integrated
system, and then Introducing the system to different inputs to obtain and analyze its outputs
and behavior and the way it functions. Testing is becoming more and more important to
ensure customer’s satisfaction, and it requires no knowledge in coding, hardware
configuration or design.
Testing can be performed by real users, or by a team of specialized personnel, it can also be
systematic and automated to ensure that the actual outcomes are compared and equal to the
predicted and desired outcomes.
6- System Maintenance
In this phase, periodic maintenance for the system will be carried out to make sure that the
system won’t become obsolete, this will include replacing the old hardware and continuously
evaluating system’s performance, it also includes providing latest updates for certain
components to make sure it meets the right standards and the latest technologies to face
current security threats.
These are the main six phases of the System Development Life Cycle, and it’s an iterative
process for each project. It’s important to mention that excellent communication level should
be maintained with the customer, and Prototypes are very important and helpful when it
comes to meeting the requirements. By building the system in short iterations; we can
guarantee meeting the customer’s requirements before we build the whole system.
Many models of system development life cycle came up from the idea of saving effort,
money and time, in addition to minimizing the risk of not meeting the customer’s
requirement at the end of project, some of theses models are SDLC Iterative Model,
and SDLC Agile Model.
The Waterfall Model was the first Process Model to be introduced. It is also referred to as a
linear-sequential life cycle model. It is very simple to understand and use. In a waterfall
model, each phase must be completed before the next phase can begin and there is no
overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for software development.
The waterfall Model illustrates the software development process in a linear sequential flow.
This means that any phase in the development process begins only if the previous phase is
complete. In this waterfall model, the phases do not overlap.
Waterfall Model - Design
Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases. In this Waterfall model, typically, the outcome
of one phase acts as the input for the next phase sequentially.
The following illustration is a representation of the different phases of the Waterfall Model.
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.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the
defined set of goals are achieved for previous phase and it is signed off, so the name
"Waterfall Model". In this model, phases do not overlap.
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
The advantages of waterfall development are that it allows for departmentalization and
control. A schedule can be set with deadlines for each stage of development and a product
can proceed through the development process model phases one by one.
Development moves from concept, through design, implementation, testing, installation,
troubleshooting, and ends up at operation and maintenance. Each phase of development
proceeds in strict order.
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 disadvantage of waterfall development is that it does not allow much reflection or
revision. Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-documented or thought upon in the concept stage.
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.
Integration is done as a "big-bang. at the very end, which doesn't allow identifying
any technological or business bottleneck or challenges early
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 process starts with a simple implementation of a subset of the software requirements
and iteratively enhances the evolving versions until the full system is implemented. At each
iteration, design modifications are made and new functional capabilities are added. The basic
idea behind this method is to develop a system through repeated cycles (iterative) and in
smaller portions at a time (incremental).
The following illustration is a representation of the Iterative and Incremental model −
Iterative and Incremental development is a combination of both iterative design or iterative
method and incremental build model for development. "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.
The key to a successful use of an iterative software development lifecycle is rigorous
validation of requirements, and verification & testing of each version of the software against
those requirements within each cycle of the model. As the software evolves through
successive cycles, tests must be repeated and extended to verify each version of the software.
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 - Pros and Cons
The advantage of this model is that there is a working model of the system at a very early
stage of development, which makes it easier to find functional or design flaws. Finding issues
at an early stage of development enables to take corrective measures in a limited budget.
The disadvantage with this SDLC model is that it is applicable only to large and bulky
software development projects. This is because it is hard to break a small software system
into further small serviceable increments/modules.
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.
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.
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.