SDLC Models
SDLC Models
❖ During any phase of a life cycle, one or more than one activities may be carried out.
❖ A software life cycle model defines entry and exit criteria for every phase. A phase can
start only if its phase-entry criteria have been satisfied. So without software life cycle
model the entry and exit criteria for a phase cannot be recognized.
❖ There are different life cycle models and these models represents the basic development
phases in different ways.
ii. When a software product is being developed by a team there must be a clear
understanding among team members about when and what to do.
iii. Without specifying the software life cycle model used, it becomes very difficult for
software project managers to monitor the progress of the project.
iv. Without specifying software life cycle model, the entry and exit criteria for a phase
cannot be recognized.
1) Feasibility Study
2) Requirements Analysis & Specification
3) Design
4) Coding & Module Testing
5) Integration & System Testing
6) Delivery & Maintenance
i. At first project managers or team leaders try to have a rough understanding of what is
required to be done by visiting the client side.
ii. After they have an overall understanding of the problem they investigate the different
solutions that are possible. Then they examine each of the solutions in terms of what kind
of resources required, what would be the cost of development and what would be the
development time for each solution.
iii. Based on this analysis they pick the best solution and determine whether the solution is
feasible financially and technically. They check whether the customer budget would meet
the cost of the product and whether they have sufficient technical expertise in the area of
development.
At the end of this phase, a report called as Feasibility Study Report is prepared.
i. Introduction of Problem
ii. Goals of implementation
iii. Functional Requirements
iv. Non-functional requirements
v. Behavioral Description
3-Design:-
Activities undertaken during S/w Design phase: -
In design phase we transform the requirements specified in the SRS document into a structure
that is suitable for implementation in some programming language.
In technical terms, during the design phase the software architecture is derived from the SRS
document.
In coding phase the design of the system is translated into source code by using a given
programming language. Each component of the design is implemented as a program module.
During Module Testing (or Unit Testing) phase, each module is individually tested to
determine the correct working of each module. It involves testing of each module in isolation
thus it is the most efficient way to debug (remove) the errors from the system.
During this phase, integration of different modules is performed in a planned and step by step
manner. During each integration step, the partially integrated system is tested and a set of
previously planned modules are added to it. Finally, when all the modules have been successfully
integrated and tested, system testing is carried out.
In System Testing we ensure that the developed s/w system conforms the requirements mention
in the SRS document.
System testing usually consists of mainly three different kinds of testing activities:
α–testing: Alpha testing refers to the system testing carried out by the test team within the
developing organization.
β–testing: Beta testing is the system testing performed by a select group of customers.
Acceptance Testing: It is the system testing performed by the customer to determine whether he
should accept the delivery of the system or not.
After System testing S/w product is delivered to the customer and User- training is provided to
the users if required
And finally Maintenance and support is provided by any one or more of the following three
kinds of activities:
i. Corrective Maintenance: is provided by correcting and removing the errors that were
not discovered during the product development phase.
ii. Perfective Maintenance: is provided by improving the implementation of the s/w
system and by enhancing the features & functionalities of the s/w system according to the
customer’s requirements.
iii. Adaptive Maintenance: is provided by porting the software product to work in a new
environment. For example: Porting may be required to get the software to work on a new
computer platform or with a new operating system etc.
Advantages of Classical Waterfall Model:
Iterative Waterfall Model has the same phases as in the Classical Waterfall Model. But in
Iterative Waterfall Model, Feedbacks paths are provided from every phase to its previous phases
as shown in figure. The feedback paths allow the correction of errors find during a phase which
is detected in a later phases.
However in this model, there is no feedback path to the feasibility study phase i.e. errors in the
feasibility study phase cannot be corrected latter.
For example: If during testing a design error is identified, then feedback path allows us to change
and rework the design documents.
Introduction of a Prototype:-
A prototype is a toy implementation of the actual system.
A prototype is a partially developed product.
A prototype is a Dummy Model of the actual product.
A prototype usually contains limited functional capabilities, low reliability, and inefficient
performance compared to the actual software system.
A prototype is usually developed by using several shortcuts.
The shortcuts may involve the inefficient, inaccurate, or dummy functions.
For example: The shortcut implementation of a function may produce the desired results by
using a table look-up instead of performing the actual computations.
After approval of the final prototype, the actual system is developed using the Iterative
Waterfall Model approach.
The following phases of the Iterative Waterfall Model are carried out iteratively in this
development stage as shown in above figure:
➢ Design
➢ Implementation
➢ Testing
➢ Maintenance
(2)-This model is also preferred in situation when technical issues are also not clear:
For example: Suppose a project involves writing a compiler and the development team has never
written a compiler. In such a case, the team can consider a simple language, try to build (or
developed) a compiler in order to check the issues that arise in the process and resolve them. And
after successfully building a small compiler (i.e. Prototype), they can extend it to one that
supports the original language.
(3)-New requirements can be easily added as there is scope for refining the requirements.
(4)-Customer gets a chance to see and use the partially developed product very early in the
development process.
(5)-By developing prototypes, we can control the various risks of the s/w projects.
Disadvantages of Prototyping Model:
(1)-After seeing & using the final prototype, customer can demand the actual system very
soon.
(2)-If not managed properly, the process of approval of prototype continues for very long
time.
(3)-If customer is not satisfied with initial prototype, he may lose the interest from project
development.
(4)-In this model, developers become in hurry for approval of prototype and thus end with
sub-optimal solution.
(5)-Poor documentation
(6)- Many shortcuts are used to develop the prototype then there may be chance of less
quality in the actual system.
❖ In this model developers corrected the initial prototype until the customer is
satisfied and accepted it.
❖ The well understood parts of the actual system are only developed by this
approach.
❖ It is useful when a customer proposes some new features in developing system.
❖ In this model developers firstly develop a new prototype and if this new prototype
is not accepted by the customer then this prototype is thrown-away and then
another new prototype is developed by using some different processes.
❖ The poorly understood parts of the actual system are only developed by this
approach.
❖ The development cost for each new prototype should be kept as minimum as
possible in this approach.
(iv)Evolutionary Model or Incremental Model
The figure 5.2 shows how the modules A, B, C etc. are developed by Iterative Waterfall Model
and different activities undertaken during Iterative Enhancement Model:
➢ The Spiral model is intended for large, expensive, and complicated (i.e in scientific
research type projects) projects.
➢ This model of development combines the features of the Prototyping model and the
Waterfall model.
➢ During early iterations paper model or prototypes are developed and then in later
iterations increasingly more complete versions of the system are produced.
• The new system requirements are defined in as much detail as possible. This is done by
interviewing a number of users and communicating with them.
• A preliminary design is created for the new system.
• A first prototype of the new system is constructed from the preliminary design.
• After that a second prototype is evolved (or released) by completing these tasks:
1. Evaluating the first prototype in terms of its strengths, weaknesses and risks.
2. Defining the requirements of the second prototype.
3. Planning and designing the second prototype.
4. Constructing and testing the second prototype.
• The preceding steps are repeated until the customer is satisfied and a Final Prototype is
developed that represents the desired product.
• Then the desired system is constructed based on the final prototype in the form of
increments (i.e release by release).
• At each iteration around the cycle, the products (increments) are the extension of an
earlier product.
In spiral model there are six task regions or activities and each of the regions is populated by a
set of work task (called as task set).