Ch-02 Software Development Life Cycle
Ch-02 Software Development Life Cycle
On
Software Engineering
Chapter-2
Software Development Life Cycle
Prepared By:
Kunal Anand, Asst. Professor
SoCE, KIIT, DU, Bhubaneswar-24
•1
Chapter Outcomes:
After completing this chapter successfully, the
students will be able to:
– Discuss the need of Software Development Life
Cycle (SDLC) model
– Identify phase Entry and Exit Criteria for each
phase in SDLC
– List and describe different SDLC models
– Compare and contrast several SDLC models
– Illustratre advanced SDLC models like RAD,
V-Model, and Agile.
2
Organization of the Chapter:
• Introduction to Software Development Life Cycle
(SDLC)
• Need of SDLC Model
• Phase Entry and Exit Criteria
• Software Development Life Cycle Models
• Comparison of different SDLC models
• Rapid Application Development model
• V-Model
• Agile Methodology
3
Software Development Life Cycle (SDLC)
• A software life cycle model (also called process model) is a
descriptive and diagrammatic representation of the life cycle
of a software product i.e., from the date of inception of idea
till the last useful day of the product.
6
Entry and Exit Criteria
• One of the major problems that arises in almost any software
development project is “99% Complete” syndrome.
• The solution to this syndrome is to ensure a proper mechanism
to track the progress of the development work.
– This can be achieved by defining tangible and measurable
entry and exit criteria for each phase.
• A phase can start only if its phase-entry criteria have been
satisfied. Similarly, a phase can be considered as complete
only if its phase-exit criteria have been satisfied.
• So, without SDLC model the entry and exit criteria for a phase
cannot be recognized.
• Without SDLC models, it becomes difficult for software
project managers to monitor the progress of the project.
7
SDLC Models
• Some of the popular life cycle models have been proposed so
far.
– Classical Waterfall Model
– Iterative Waterfall Model
– Prototyping Model
– Evolutionary Model
– Spiral Model
8
Classical Waterfall Model
9
Fig. 2.2: Classical Waterfall model
Relative Effort for Phases
• Phases between
feasibility study and
testing known as
development phases.
• Among development
phases, testing phase
consumes the
maximum effort. Fig. 2.3: Relative efforts for phases
10
Feasibility Study
• Main aim of feasibility study: determine whether developing the
product will be:
– Financially worthwhile
– Technically feasible
– Operational feasibility
– Legal feasibility
– Scheduling
11
Requirements Analysis and Specification
• Aim of this phase:
– To understand the exact requirements of the customer,
– To document them in proper and formal manner.
12
Requirements Gathering
• One-on-One Interviews: These can be users who interact with the
current or new system, management, project financers or anyone else
that would be involved in the system. Contains open and close ended
questions.
• Group Interviews: Important to note which issues are generally agreed
upon, and on which issues it differs.
• Questionnaires/Surveys: This is especially helpful when stakeholders
are spread out geographically.
• User Observation: For optimal results, the consultant should schedule
three different periods of observation: low, normal, and peak times. This
may prove helpful in because the user may interact with the system
differently during different times.
• Analysing Existing Documents: Reviewing the current process and
documentation can help the analyst understand the business, or system,
and its current situation.
13
Requirements Analysis
• The data you initially collect from the users would usually
contain several contradictions, incompleteness and
ambiguities. These are known as requirement anomalies.
• The SRS document is sent to the client for their approval. The
client goes through the SRS and approve it if they feel satisfied
with the work. However, in case of any modifications or
suggestions, the client sends back the SRS to the development
team.
16
Design: Traditional Approach
• Consists of two activities:
– Structured Analysis
– Structured Design
• Structured Analysis
– Identify all the functions to be performed.
– Identify data flow among the functions.
– Decompose each function recursively into sub-functions and
identify data flow among the subfunctions as well.
– Carried out using Data flow diagrams (DFDs).
17
contd..
• Structured Design: After structured analysis, carry out
structured design: architectural design (or high-level
design), and detailed design (or low-level design).
– High-level design:
• decompose the system into modules,
• represent invocation relationships among the
modules.
– Detailed design:
• different modules designed in greater detail
– data structures and algorithms for each module
are designed.
18
Design: Object Oriented Approach
• First identify various objects (real world entities) occurring in the
problem:
– identify the relationships among the objects.
– For example, the objects in a pay-roll software may be:
• employees,
• managers,
• pay-roll register,
• Departments, etc.
• Object structure is further refined to obtain the detailed design.
• OOD has several advantages:
– lower development effort,
– lower development time,
– better maintainability.
19
Implementation
• Purpose of implementation phase (i.e., coding and unit testing
phase) is to translate software design into source code.
• During the implementation phase:
– each module of the design is coded.
– each module is tested independently as a standalone unit and
debugged.
– each module is documented.
• The purpose of unit testing is to check if the individual modules
work correctly.
• The end product of implementation phase is a set of program
modules that have been tested individually.
20
Integration and System Testing
• Different modules are integrated in a planned manner:
– modules are almost never integrated in one shot.
– Normally integration is carried out through several steps.
• During each integration step, the partially integrated system is
tested.
• After all the modules have been successfully integrated and
tested, system testing is carried out.
• System testing ensures that the developed system functions
according to its requirements as specified in the SRS document.
• Following types of System Testing exist: Alpha Testing, Beta
Testing, Acceptance Testing
21
Maintenance
• Maintenance of any software product
– requires much more effort than the effort to develop the
product itself.
– development effort to maintenance effort is typically 40:60.
• Corrective maintenance
– Correct errors which were not discovered during the product
development phases.
• Perfective maintenance
– Improve implementation of the system
– enhance functionalities of the system.
• Adaptive maintenance
– Port software to a new environment, e.g., to a new computer
or to a new operating system. 22
Limitations of Classical Waterfall Model
• No Error Detection and Correction Mechanism
– The classical waterfall model assumes that everything will
happen as per the expectations and no errors will happen
during the development process. This assumption is flawed
as in practice errors are bound to happen in almost every
phases.
25
Prototyping Model
• Before starting actual development, a working prototype of the
system should first be built.
• A prototype is a fully functional but toy implementation of a
system with low reliability, inefficient performance.
28
Prototyping Model (CONT.)
• Advantages
– Even though construction of a working prototype model
involves additional cost --- overall development cost might
be lower for systems with unclear user requirements, and
systems with unresolved technical issues.
– Many user requirements, that may appear later as change
requests, get properly defined and technical issues get
resolved.
• Disadvantages
– Requirements analysis and specification phase becomes
redundant.
– Design and code for the prototype is usually thrown away.
29
Incremental Model
• In Incremental model, the overall system is broken down into
several modules which can be incrementally developed and
delivered.
• First develop the core modules of the system.
• The initial product skeleton is refined into increasing levels of
capability by adding new functionalities in successive versions.
• Successive version of the product:
– functioning systems capable of performing some new work.
– A new release may include new functionality:
• also, existing functionality in the current release might
have been enhanced.
30
Incremental Model (CONT.)
• Advantages:
– Users get a chance to experiment with a partially developed
system much before the full working version is released.
– Helps finding exact user requirements much before fully
working system is developed.
– Core modules get tested thoroughly that reduces chances of
errors in final product.
• Disadvantages:
– Often, difficult to subdivide problems into functional units
which can be incrementally implemented and delivered.
– evolutionary model is useful for very large problems, where it
is easier to find modules for incremental implementation.
32
Evolutionary Model
• Many organizations use a combination of iterative and
incremental development. This is known as Evolutionary Model.
• In the incremental development model, complete requirements are
first the SRS document prepared and then the development begins
in increments. In contrast, in the evolutionary model, the
requirements, plan, estimates, and solution evolve over the
iterations, rather than fully defined and frozen in a major up-front
specification effort before the development iterations begin.
• Such evolution is consistent with the pattern of unpredictable
feature discovery and feature changes that take place in new
product development.
• Due to obvious reasons, the evolutionary software development
process is sometimes referred to as design a little, build a little,
test a little, deploy a little model.
33
contd..
• Advantages:
– Effective elicitation of actual customer requirements
– Easy handling change requests
• Disadvantages:
– Feature division into incremental parts can be non-trivial
– Ad hoc design
35
Spiral Model
39
Spiral Model as a Meta model
• Subsumes all discussed models:
– a single loop spiral represents waterfall model.
– uses an evolutionary approach --
• iterations through the spiral are evolutionary levels.
– enables understanding and reacting to risks during each
iteration along the spiral.
– uses:
• prototyping as a risk reduction mechanism
• retains the step-wise approach of the waterfall model.
40
Advantages of Spiral Model
• High amount of risk analysis hence, avoidance of risk is
enhanced.
• Good for large and mission-critical projects.
• Strong approval and documentation control.
• Additional Functionality can be added later.
Disadvantages
• Can be a costly model to use.
• Risk analysis requires highly specific expertise.
• Project’s success is highly dependent on the risk analysis
phase.
• Doesn’t work well for smaller projects.
41
Circumstances to use Spiral Model
• The spiral model is called a meta model since it encompasses
all other life cycle models.
42
Comparison of Different Life Cycle Models
• Iterative waterfall model
– most widely used model. But, suitable only for
well-understood problems.
• Prototype model
– suitable for projects not well understood user requirements
or technical aspects
• Evolutionary model
– suitable for large problems that can be decomposed into a
set of modules that can be incrementally implemented,
– incremental delivery of the system is acceptable to the
customer.
• Spiral model:
– suitable for development of technically challenging
software products that are subject to several kinds of risks.
43
Rapid Application Development (RAD) Model
• It is a type of incremental model.
• This can quickly give the customer something to see and use
and to provide feedback regarding the delivery and their
requirements.
44
Fig. 2.9: RAD model 45
• The phases in the rapid application development (RAD) model
are:
– Business Modelling: In this phase of development business
model should be designed based on the information available
from different business activities.
– Data Modelling: Once the business modelling phase over and all
the business analysis completed, all the required and necessary
data based on business analysis are identified in data modelling
phase.
– Process Modelling: All the data identified in data modelling
phase are planned to process or implement the identified data to
achieve the business functionality flow. In this phase all the data
modification process is defined.
– Application Modelling: In this phase application is developed
and coding completed. With help of automation tools all data
implemented and processed to work as real time.
– Testing and turnover: All the testing activities are performed to
test the developed application. 46
• Advantages of RAD Model:
– Fast application development and delivery.
– Visualization of progress.
– Less resources required.
– Review by the client from the very beginning of
development so very less chance to miss the requirements.
– Very flexible if any changes required.
– Cost effective.
– Good for small projects.
47
• Disadvantages of RAD Model:
– High skilled resources required.
– On each development phase client’s feedback required.
– Automated code generation is very costly.
– Difficult to manage.
– Not a good process for long term and big projects.
– Proper modularization of project required.
48
V-Shaped Model
• It is an extension for waterfall model, Instead of moving down
in a linear way, the process steps are bent upwards after the
coding phase, to form the typical V shape.
• The major difference between v-shaped model and waterfall
model is the early test planning in v-shaped model.
• The usage
– Software requirements clearly defined and known
– Software development technologies and tools is
well-known
50
contd..
• Here, in accordance with the requirement analysis and
specification phase, a system test plan is created to meet the
functionality specified in the requirements.
56
Disadvantages
• An overall plan, an agile leader and agile PM practice is a
must without which it will not work.
57
58