Lecture 2 - SDLC Models

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

Software Engineering

Lecture 2

Nahida Islam
SDLC Models Lecturer, Department of Computer Science and
Engineering
Email: [email protected]
SDLC

• 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.
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. The life cycle defines a methodology for improving the
quality of software and the overall development process.
Planning and requirement analysis
Each software development life cycle model starts with the
analysis, in which the stakeholders of the process
discuss the requirements for the final product. The goal of this
stage is the detailed definition of the system requirements. Besides,
it is needed to make sure that all the process participants have
clearly understood the tasks and how every requirement is going to
be implemented. Often, the discussion involves the QA specialists
who can interfere the process with additions even during the
development stage if it is necessary.
Designing project architecture
At the second phase of the software development life cycle, the
developers are actually designing the architecture. All the different
technical questions that may appear on this stage are discussed by
all the stakeholders, including the customer. Also, here are defined
the technologies used in the project, team load, limitations, time
frames, and budget. The most appropriate project decisions are
made according to the defined requirements.
Development and programming
• After the requirements approved, the process goes to the next stage
actual development. Programmers start here with the source code
writing while keeping in mind previously defined requirements. The
system administrators adjust the software environment, front-end
programmers develop the user interface of the program and the logics
for its interaction with the server.
The programming by itself assumes four stages
• Algorithm development
• Source code writing
• Compilation
• Testing and debugging
Testing
The testing phase includes the debugging process. All the code
flaws missed during the development are detected here,
documented, and passed back to the developers to fix. The testing
process repeats until all the critical issues are removed and
software workflow is stable.
Deployment
Once the software product is tested and freed from any defects or
bugs, it should be ready for deployment. Deployment, the fifth of the
six SDLC phases, is grooming the product up to be ready for customer
use. The User Acceptance Tests should be checked and the software
should be live in the production environment.
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.
Water Fall Model
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.
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.
Water Fall Model
Advantage
• Simple and easy to understand and use
• 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.
Disadvantage
• The software is ready only after the last stage is over
• High risks and uncertainty
• Not the best choice for complex and object-oriented projects
• Inappropriate for the long-term projects
• The progress of the stage is hard to measure while it is still in the
development
• Integration is done at the very end, which does not give the option of
identifying the problem in advance
Iterative Incremental Model

Incremental Model is a process of software development where


requirements are broken down into multiple standalone modules of
software development cycle. Incremental development is done in steps
from analysis design, implementation, testing/verification,
maintenance.. Feature to be developed in the iteration is decided and
implemented. Each iteration goes through the phases namely
Requirement Analysis, Designing, Coding, and Testing. Detailed
planning is not required in iterations.
Iterative Incremental
Model
Advantage of Iterative Incremental
• It is easily adaptable to the ever changing needs of the project as well as
the client.
• Generates working software quickly and early during the software life
cycle.
• This model is more flexible – less costly to change scope and requirements.
• It is easier to test and debug during a smaller iteration.
• In this model customer can respond to each built.
• Lowers initial delivery cost.
• Easier to manage risk because risky pieces are identified and handled
during it’d iteration.
Disadvantages of Iterative Model:
• Needs good planning and design.
• Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally.
• Although cost of change is lesser but total cost of the complete
system is not lower.
• More management attention is required.
• It is not suitable for smaller projects.
When to use the Iterative Model

1.When requirements are defined clearly and easy to


understand.
2.When the software application is large.
3.When there is a requirement of changes in future.
Prototype Model

Model is a software development model in which prototype is built,


tested, and reworked until an acceptable prototype is achieved. It also
creates base to produce the final system or software. It works best in
scenarios where the project's requirements are not known in detail.
The prototype model requires that before carrying out the
development of actual software, a working prototype of the system
should be built. A prototype is a toy implementation of the system. A
prototype usually turns out to be a very crude version of the actual
system, possible exhibiting limited functional capabilities, low
reliability, and inefficient performance as compared to actual
software.
Prototype Model
Steps of Prototype Model

1.Requirement Gathering and Analyst


2.Quick Decision
3.Build a Prototype
4.Assessment or User Evaluation
5.Prototype Refinement
6.Engineer Product
Advantage of Prototype Model

1.Reduce the risk of incorrect user requirement


2.Good where requirement are changing/uncommitted
3.Regular visible process aids management
4.Support early product marketing
5.Reduce Maintenance cost.
6.Errors can be detected much earlier as the system is
made side by side.
Disadvantage of Prototype Model

• Require extensive customer collaboration


• Costs customer money
• Needs committed customer
• Difficult to finish if customer withdraw
• May be too customer specific, no broad market
• Difficult to know how long the project will last.
• Easy to fall back into the code and fix without proper requirement analysis,
design, customer evaluation, and feedback.
• Prototyping tools are expensive.
• Special tools & techniques are required to build a prototype.
• It is a time-consuming process.
When to Use Prototype model
• Prototype model should be used when the desired system needs
to have a lot of interaction with the end users.
• Typically, online systems, web interfaces have a very high amount
of interaction with end users, are best suited for Prototype
model. It might take a while for a system to be built that allows
ease of use and needs minimal training for the end user.
• Prototyping ensures that the end users constantly work with the
system and provide a feedback which is incorporated in the
prototype to result in a useable system. They are excellent for
designing good human computer interface systems.

You might also like