CSC3209
CSC3209
FACULTY OF COMPUTING
DEPARTMENT OF COMPUTER SCIENCE
Question:
1. Describe the major phases of Software Development Life Cycle (SDLC).
2. Fully explain the following Software development models.
i. Waterfall Model
ii. Iterative Model
iii. Spiral Model
iv. V–model
v. Big Bang Model
Prepared by:
UG23CSC3087
Kano, Nigeria
1
MAJOR PHASES OF THE SOFTWARE DEVELOPMENT LIFE CYCLE
(SDLC)
The SDLC process will look a little different for every team and product. However, these are the
stages that most SDLC frameworks have in common:
2
To properly decide what to make, what not to make, and what to make first, you can use a
feature prioritization framework that takes into account the value of the software/update, the
cost, the time it takes to build, and other factors.
Once it is decided that the software project is in line with business and stakeholder goals,
feasible to create, and addresses user needs, then you can move on to the next phase.
2. Define Requirements
This phase is critical for converting the information gathered during the planning and analysis
phase into clear requirements for the development team. This process guides the development of
several important documents: a software requirement specification (SRS) or product
specification, a Use Case document, and a Requirement Traceability Matrix document.
3. Design
The design phase is where you put pen to paper—so to speak. The original plan and vision are
elaborated into a software design document (SDD) that includes the system design, programming
language, templates, platform to use, and application security measures. This is also where you
can flowchart how the software responds to user actions.
In most cases, the design phase will include the development of a prototype model. Creating a
pre-production version of the product can give the team the opportunity to visualize what the
product will look like and make changes without having to go through the hassle of rewriting
code.
4. Development
The actual development phase is where the development team members divide the project into
software modules and turn the software requirement into code that makes the product.
This SDLC phase can take quite a lot of time and specialized development tools. It’s important
to have a set timeline and milestones so the software developers understand the expectations and
you can keep track of the progress in this stage.
In some cases, the development stage can also merge with the testing stage where certain tests
3
are run to ensure there are no critical bugs.
Keep in mind, different types of product development software will have different specialties so
you’ll want to pick the one that suits you best.
5. Testing
Before getting the software product out the door to the production environment, it’s important to
have your quality assurance team perform validation testing to make sure it is functioning
properly and does what it’s meant to do. The testing process can also help hash out any major
user experience issues and security issues.
In some cases, software testing can be done in a simulated environment. Other simpler tests can
also be automated.
Performance testing: Assesses the software's speed and scalability under different conditions
Functional testing: Verifies that the software meets the requirements
Security testing: Identifies potential vulnerabilities and weaknesses
Unit-testing: Tests individual units or components of the software
Usability testing: Evaluates the software's user interface and overall user experience
Acceptance testing: Also termed end-user testing, beta testing, application testing, or field
testing, this is the final testing stage to test if the software product delivers on what it promises
6. Deployment
During the deployment phase, your final product is delivered to your intended user. You can
automate this process and schedule your deployment depending on the type. For example, if you
are only deploying a feature update, you can do so with a small number of users (canary release).
If you are creating brand-new software, you can learn more about the different stages of the
software release life cycle (SRLC).
7. Maintenance
4
The maintenance phase is the final stage of the SDLC if you’re following the waterfall structure
of the software development process. However, the industry is moving towards a more agile
software development approach where maintenance is only a stage for further improvement.
In the maintenance stage, users may find bugs and errors that were missed in the earlier testing
phase. These bugs need to be fixed for better user experience and retention. In some cases, these
can lead to going back to the first step of the software development life cycle.
The SDLC phases can also restart for any new features you may want to add in your next
release/update.
Let’s look at the each and every model in brief one by one:-
1. Waterfall Model
Waterfall model is a famous and good version of SDLC(System Development Life Cycle) for
software engineering. The waterfall model is a linear and sequential model, which means that a
development phase cannot begin until the previous phase is completed. We cannot overlap
phases in waterfall model.
“Once the water starts flowing over the edge of the cliff, it starts falling down the mountain
and the water cannot go back up.”
Similarly waterfall model also works, once one phase of development is completed then we
move to the next phase but cannot go back to the previous phase.
In the waterfall model, the output of one phase serves as the input for the other phase.
5
Figure 2 - Waterfall Model
1. Requirement phase:- Requirement phase is the first phase of the waterfall model. In
this phase the requirements of the system are collected and documented. This phase is
very crucial because the next phases are based on this phase.
2. Design phase:- Design phase is based on the fact how the software will be built. The
main objective of the design phase is to prepare the blueprint of the software system so
that no problems are faced in the coming phases and solutions to all the requirements in
the requirement phase are found.
3. Implementation phase:- In this phase, hardware, software and application programs are
installed and the database design is implemented. Before the database design can be
implemented, the software has to go through a testing, coding, and debugging process.
This is the longest lasting phase in waterfall.
4. Verification phase:- In this phase the software is verified and it is evaluated that we
have created the right product. In this phase, various types of testing are done and every
area of the software is checked. It is believed that if we do not verify the software
properly and there is any defect in it then no one will use it, hence verification is very
important. One advantage of verification is that it reduces the risk of software failure.
1. Maintenance phase:- This is the last phase of waterfall. When the system is ready
and users start using it, then the problems that arise have to be solved time-to-time.
Taking care of the finished software and maintaining it as per time is called
maintenance.
6
Advantages of Waterfall Model
· In this model, complete and accurate requirements are expected at the beginning of the
development process.
· Working software is not available for very long during the development life cycle.
· We cannot go back to the previous phase due to which it is very difficult to change the
requirements.
· Risk is not assessed in this, hence there is high risk and uncertainty in this model.
· In this the testing period comes very late.
· Due to its sequential nature this model is not realistic in today’s world.
· This is not a good model for large and complex projects.
2. Iterative Model
In Iterative model we start developing the software with some requirements and when it is
developed, it is reviewed. If there are requirements for changes in it, then we develop a new
version of the software based on those requirements. This process repeats itself many times
until we get our final product.
So, in Iterative model a software is developed by following several iterations. Iteration means
that we are repeating the development process again and again. For example, we develop the
first version of the software following the SDLC process with some software requirements. We
can call this Iteration 1.
7
After the first version is developed, if there is a need to change the software , then a new
version is developed with the second iteration. Now again we will see if the new version is
enough, if not then we will make changes in it with the third iteration. The iteration will be
repeated until the complete software is ready.
The basic concept of Iterative model is that the software should be developed through repeated
cycles or what we also call iteration and only a small part of it should be developed at a time.
This model was developed to overcome the drawbacks of the classical waterfall model.
1. Requirement gathering & analysis: In this phase, all the software requirements of the
customer are collected and it is analyzed whether those requirements can be meet or
not. Besides, it is also checked whether this project will not go beyond our budget.
2. Design: In this phase the design of software is prepared. For this, various diagrams like
Data Flow diagram, class diagram, activity diagram, state transition diagram, etc. are
used.
3. Implementation: Now the design of software is implemented in coding through various
programming languages. We also call this coding phase.
4. Testing: After the coding of the software is done, it is now tested so that the bugs and
errors present in it can be identified. To do this, various testing techniques like
performance testing, security testing, requirement testing, stress testing, etc. are done.
5. Deployment: Finally the software is given to the customer. After this the customer starts
8
using that software in his work environment.
6. Review: After the software is deployed in its work environment, it is reviewed. If any
error/bug is found or any new requirements come in front of developer, then again these
phases are repeated with new iteration and a new version is developed.
7. Maintenance: In this phase we look at customer feedback, solve problems, fix errors,
update software, etc.
3. Spiral Model
Spiral model is a software development process model. This model has characteristics of both
iterative and waterfall models. This model is used in projects which are large and complex.
This model was named spiral because if we look at its figure, it looks like a spiral, in which a
long curved line starts from the center point and makes many loops around it. The number of
9
loops in the spiral is not decided in advance but it depends on the size of the project and the
changing requirements of the user. We also call each loop of the spiral a phase of the software
development process.
A software project goes through these loops again and again in iterations. After each iteration a
more and more complete version of the software is developed. The most special thing about
this model is that risks are identified in each phase and they are resolved through prototyping.
This feature is also called Risk Handling.
Since it also includes the approaches of other SDLC models, it is also called Meta Model. It
was first developed by Barry Boehm in 1986.
In Spiral Model the entire process of software development is described in four phases which
are repeated until the project is completed. Those phases are as follows:-
10
are identified. Now the identified risks are resolved through some best strategy.
3. Develop and test: Now the development of software is started. In this phase various
features are implemented, that is, their coding is done. Then those features are verified
through testing.
4. Review and plan for the next phase: In this phase the developed version of the
software is given to the customer and he evaluates it. Gives his feedback and tells new
requirements. Finally planning for the next phase (next spiral) is started.
· If we have to add additional functionality or make any changes to the software, then
through this model we can do so in the later stages also.
· Spiral model is suitable for large and complex projects.
· It is easy to estimate how much the project will cost.
· Risk analysis is done in each phase of this model.
· The customer can see the look of his software only in the early stages of the development
process.
· Since continuous feedback is taken from the customer during the development process,
the chances of customer satisfaction increases.
· This is the most complex model of SDLC, due to which it is quite difficult to manage.
· This model is not suitable for small projects.
· The cost of this model is quite high.
· It requires more documentation than other models.
· Experienced experts are required to evaluate and review the project from time to time.
· Using this model, the success of the project depends greatly on the risk analysis phase.
4. V-Model
V-Model is an SDLC model, it is also called Verification and Validation Model. V-Model is
widely used in the software development process, and it is considered a disciplined model. In
V-Model, the execution of each process is sequential, that is, the new phase starts only after
the previous phase ends.
11
It is based on the association of testing phase with each development phase that is in V-Model
with each development phase, its testing phase is also associated in a V-shape in other words
both software development and testing activities take place at the same time.
So in this model, Verification Phase will be on one side, Validation Phase will be on the other
side that is both the activities run simultaneously and both of them are connected to each other
in V-Shape through Coding Phase, hence it is called V-Model.
V-Design: In V-Design the left side represents the development activity, the right side
represents the testing activity.
Figure 5 - V-Model
Phases of V- Model:
1. Requirements analysis:- This is the first phase of the development cycle, in which the
requirements of the product are analyzed according to the customer’s needs. In this
phase, product related requirements are thoroughly collected from the customer. This is
a very important phase because this phase determines the coming phases. In this phase,
acceptance tests are designed for later use.
2. System design:- When we have the requirements of the product, after that we prepare a
complete design of the system. In this phase, a complete description of the hardware
and all the technical components required to develop the product .
12
3. Architectural design:- In this phase architectural specifications are designed. It contains
the specification of how the software will link internally and externally with all the
components. Therefore this phase is also called high level design (HLD).
4. Module design:- In this phase the internal design of all the modules of the system is
specified. Therefore it is called low level design (LLD). It is very important that the
design of all modules should be according to the system architecture. Unit tests are also
designed in the module design phase.
5. Coding phase:- In the coding phase, coding of the design and specification done in the
previous phases is done. This phase takes the most time.
1. Unit testing:- In the unit testing phase, the unit tests created during the module design
phase are executed. Unit testing is code level testing, it only verifies the technical
design. Therefore it is not able to test all the defects.
2. Integration testing:- In integration testing, the integration tests created in the
architectural design phase are executed. Integration testing ensures that all modules are
working well together.
3. System testing:– In system testing, the system tests created in the system design phase
are executed. System tests check the complete functionality of the system. In this, more
attention is given to performance testing and regression testing.
4. Acceptance testing:- In acceptance testing, the acceptance tests created in the
requirement analysis phase are executed. This testing ensures that the system is
compatible with other systems. And in this, non-functional issues like:- load time,
performance etc. are tested in the user environment.
Advantages of V-Model
13
Disadvantages of V-Model
The Big Bang model requires no or minimal planning. Instead, the development starts with
acquiring the inputs, such as:
· Time.
· Effort.
· Resources.
This model focuses on software development so developers can jump straight to the
implementation to create software as the outcome.
14
Use-cases of Big Bang
The strength of the Big Bang model lies in its simplicity. This model can offer the following
advantages:
The Big Bang model, mainly due to the minimal planning included in it, has the following
disadvantages:
15
Reference:
16