Reference Book For Most of The Slides: Fundamentals of Software Engineering, Fourth Edition by Rajib Mall

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 114

SDLC-Software

Develpoment Life
Cycle Models

Reference Book for Most of the slides: Fundamentals of Software Engineering, Fourth Edition by Rajib Mall, Professor,
Department of Computer Science and Engineering, Indian Inst itut e of Technology Kharagpur, PHI Learning Private Limited, Delhi

1
Inherent Problems
with Software
Development
 Requirements are complex
 The client does not know the functional
requirements in advance
 Requirements may be changing
 Technology enablers introduce new
possibilities to deal with nonfunctional
requirements
 Frequent changes are difficult to manage
 Identifying milestones and cost estimation is
difficult
2
Inherent Problems
with Software
 There isDevelopment
more than one software system
 New system must be backward compatible with
existing system (“legacy system”)
 Phased development: Need to distinguish between
the system under development and already
released systems
 Let’s view these problems as the
nonfunctional requirements for a system that
supports software development!
 This leads us to software life cycle modeling
3
4
Software Development Life
Cycle (SDLC)
 software engineering emphasise
software development through a well-
defined and ordered set of activities.
 These activities are graphically
modelled (represented) as well as
textually described and are variously
called as software life cycle model,
software development life cycle (SDLC)
model, and software development
process model.
5
Software Development Life
Cycle (SDLC)
 software life cycle has been defined to imply
the different stages (or phases) over which a
software evolves from an initial customer
request for it, to a fully developed software,
and finally to a stage where it is no longer
useful to any user, and then it is discarded.
 An SDLC graphically depicts the different
phases through which a software evolves. It is
usually accompanied by a textual description of
the different activities that need to be carried
out during each phase. 6
Software Development Life
Cycle (SDLC)

 Software development organisations have


realised that adherence to a suitable life cycle
model helps to produce good quality
software and that helps minimise the
chances of time and cost overruns.

7
Classical Waterfall Model
 Classical waterfall model divides
life cycle into phases:
 feasibility study,
 requirements analysis and
specification,
 design,
 coding and unit testing,
 integration and system testing,
 maintenance.
8
Classical Waterfall Model

Feasibility Study

Req. Analysis

Design

Coding

Testing

Maintenance

9
Relative Effort for Phases
 Phases between feasibility
study and testing 60
known as development 50
Relative Effort
phases.
40
 Among all life cycle phases 30
 maintenance phase 20
consumes maximum
effort. 10
 Among development 0

Maintnce
Coding
Req. Sp
Design

Test
phases,
 testing phase consumes the
maximum effort.

10
Classical Waterfall Model
(CONT.)

 Most organizations usually define:


 standards on the outputs (deliverables) produced
at the end of every phase
 entry and exit criteria for every phase.
 They also prescribe specific
methodologies for:
 specification,
 design,
 testing,
 project management, etc.

11
Classical Waterfall Model
(CONT.)

 The guidelines and methodologies of


an organization:
 called the organization's software
development methodology.
 Software development
organizations:
 expect fresh engineers to master the
organization's software development
methodology.

12
Classical Waterfall Model
(CONT.)

 This model is easy to understand and reinforces


the notion of “define before design” and
“design before code”.
 The model expects complete & accurate
requirements early in the process, which is
unrealistic

13
Feasibility Study
 Main aim of feasibility study:determine whether
developing the product
 financially worthwhile
 technically feasible.
 First roughly understand what the customer
wants:
 different data which would be input to the system,
 processing needed on these data,
 output data to be produced by the system,
 various constraints on the behavior of the system.

14
Activities during Feasibility
Study
 Work out an overall understanding
of the problem.
 Formulate different solution
strategies.
 Examine alternate solution
strategies in terms of:
 resources required,
 cost of development, and
 development time.
15
Activities during Feasibility
Study
 Perform a cost/benefit analysis:
 to determine which solution is the
best.
 you may determine that none
of the solutions is feasible due
to:
 high cost,
 resource constraints,
 technical reasons.

16
Requirements Analysis and
Specification
 Aim of this phase:
 understand the exact
requirements of the customer,
 document them properly.
 Consists of two distinct
activities:
 requirements gathering and
analysis
 requirements specification. 17
Goals of Requirements
Analysis
 Collect all related data from the
customer:
 analyze the collected data to
clearly understand what the
customer wants,
 find out any inconsistencies and
incompleteness in the
requirements,
 resolve all inconsistencies and
incompleteness. 18
Requirements Gathering

 Gathering relevant data:


 usually collected from the end-
users through interviews and
discussions.
 For example, for a business
accounting software:
 interview all the accountants of the
organization to find out their
requirements.
19
Requirements Analysis (CONT.)

 The data you initially collect


from the users:
would usually contain several
contradictions and
ambiguities:
each user typically has only a
partial and incomplete view of
the system.
20
Requirements Analysis (CONT.)

 Ambiguities and contradictions:


 must be identified
 resolved by discussions with the
customers.
 Next, requirements are organized:
 into a Software Requirements
Specification (SRS) document.

21
Requirements Analysis (CONT.)

 Engineers doing
requirements analysis and
specification:
are designated as analysts.

22
Design
 Design phase transforms
requirements specification:
 into a form suitable for
implementation in some
programming language.

23
Design
 In technical terms:
 during design phase, software
architecture is derived from
the SRS document.
 Two design approaches:
 traditional approach,
 object oriented approach.

24
Traditional Design Approach

 Consists of two
activities:
Structured analysis
Structured design

25
Structured Analysis
Activity
 Identify all the functions to be
performed.
 Identify data flow among the
functions.
 Decompose each function
recursively into sub-functions.
 Identify data flow among the
subfunctions as well.

26
Structured Analysis (CONT.)

 Carried out using Data flow


diagrams (DFDs).
 After structured analysis, carry
out structured design:
 architectural design (or high-level
design)
 detailed design (or low-level
design).
27
Structured 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.
28
Object Oriented Design

 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. 29
Object Oriented Design (CONT.)

 Object structure
 further refined to obtain the
detailed design.
 OOD has several
advantages:
 lower development effort,
 lower development time,
 better maintainability.
30
Implementation

 Purpose of implementation
phase (aka coding and unit
testing phase):
translate software design into
source code.

31
Implementation

 During the implementation


phase:
 each module of the design is
coded,
 each module is unit tested
 tested independently as a stand
alone unit, and debugged,
 each module is documented.
32
Implementation (CONT.)

 The purpose of unit


testing:
 test if individual modules work
correctly.
 The end product of
implementation phase:
 a set of program modules that
have been tested
individually. 33
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 a number of steps.
 During each integration step,
 the partially integrated system is
tested.
34
Integration and System
Testing

M1 M2

M3 M4

35
System Testing

 After all the modules have been


successfully integrated and
tested:
 system testing is carried out.
 Goal of system testing:
 ensure that the developed system
functions according to its
requirements as specified in the
SRS document. 36
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.
37
Maintenance (CONT.)

 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.

38
Problems of classic
waterfall model
 i. It is difficult to define all requirements at the
beginning of a project
 ii. This model is not suitable for accommodating
any change
 iii. A working version of the system is not seen
until late in the project’s life
 iv. It does not scale up well to large projects.
 v. Real projects are rarely sequential.

39
Iterative Enhancement Model

 This model has the same phases as the


waterfall model, but with fewer
restrictions. Generally the phases occur
in the same order as in the waterfall
model, but they may be conducted in
several cycles.
 Useable product is released at the end
of the each cycle, with each release
providing additional functionality. 40
Iterative Enhancement Model
 Customers and developers specify
as many requirements as possible
and prepare a SRS document.
 Developers and customers then
prioritize these requirements
 Developers implement the specified
requirements in one or more cycles of
design, implementation and test based
on the defined priorities. 41
Iterative Waterfall Model
 Classical waterfall model is
idealistic:
 assumes that no defect is
introduced during any
development activity.
 in practice:
 defects do get introduced in almost
every phase of the life cycle.

42
Iterative Waterfall Model
(CONT.)

 Defects usually get detected


much later in the life cycle:
For example, a design defect might
go unnoticed till the coding or
testing phase.

43
Iterative Waterfall Model
(CONT.)

 Once a defect is detected:


 we need to go back to the phase
where it was introduced
 redo some of the work done during
that and all subsequent phases.
 Therefore we need feedback paths
in the classical waterfall model.

44
Iterative Waterfall Model
(CONT.)

Errors should be detected


 in the same phase in which they are
introduced.
For example:
 if a design problem is detected in
the design phase itself,
 the problem can be taken care of much
more easily
 than say if it is identified at the end of
the integration and system testing phase.

45
Phase containment of
errors
 Reason: rework must be carried out not
only to the design but also to code and
test phases.
 The principle of detecting errors as close to
its point of introduction as possible:
 is known as phase containment of errors.
 Iterative waterfall model is by far the most
widely used model.
 Almost every other model is derived from the
waterfall model.
46
Iterative Waterfall Model
(CONT.)

47
Limitations of Iterative
waterfall model
 Incremental delivery not supported
 Phase overlap not supported
 Error correction unduly expensive
 Limited customer interactions
 Heavy weight
 No support for risk handling and code reuse

48
Classical Waterfall Model
(CONT.)

 Irrespective of the life cycle


model actually followed:
 the documents should reflect a
classical waterfall model of
development,
 comprehension of the documents
is facilitated.

49
Classical Waterfall Model
(CONT.)

 Metaphor of mathematical
theorem proving:
 A mathematician presents a proof
as a single chain of deductions,
 even though the proof might have
come from a convoluted set of
partial attempts, blind alleys and
backtracks.

50
Incremental Models
 They are effective in the situations
where requirements are defined
precisely and there is no confusion
about the functionality of the final
product.
 After every cycle a useable product is
given to the customer.
 Popular particularly when we have to
quickly deliver a limited functionality
system.
51
Disadvantages of using
Incremental process
model :
• It requires a good planning designing.
• It is costlier than waterfall model.
• Definition of system should be complete
and clear.
Prototyping Model
 Before starting actual
development,
 a working prototype of the system
should first be built.
 A prototype is a toy implementation
of a system:
 limited functional capabilities,
 low reliability,
 inefficient performance.
53
Reasons for developing a
prototype
 Illustrate to the customer:
 input data formats, messages, reports,
or interactive dialogs.
 Examine technical issues associated
with product development:
 Often major design decisions depend
on issues like:
 efficiency of a sorting algorithm, etc.

54
Prototyping Model (CONT.)

 The third reason for developing a


prototype is:
 it is impossible to ``get it right'' the
first time,
 we must plan to throw away the
first product
 if we want to develop a good product.

55
Prototyping Model (CONT.)

 Start with approximate


requirements.
 Carry out a quick design.
 Prototype model is built using several
short-cuts:
 Short-cuts might involve using inefficient,
inaccurate, or dummy functions.
 A function may use a table look-up rather than
performing the actual computations.
56
Prototyping Model (CONT.)

 The developed prototype is


submitted to the customer for his
evaluation:
 Based on the user feedback, requirements
are refined.
 This cycle continues until the user approves
the prototype.
 The actual system is developed
using the classical waterfall
approach.
57
Prototyping Model (CONT.)

Build Prototype

Requirements Customer of Customer


Quick Design Evaluation satisfied Design
Gathering Prototype

Refine Implement
Requirements

Test

Maintain

58
Steps of Prototype Model
Prototyping Model (CONT.)

Requirement Gathering and Analyst


Quick Decision
Build a Prototype
Assessment or User Evaluation
Prototype Refinement
Engineer Product

59
Prototyping Model (CONT.)

 Even though construction of a working


prototype model involves additional cost --
- overall development cost might be lower
for:
 systems with unclear user requirements,
 systems with unresolved technical issues.

60
Advantage of Prototype
Model
• Reduce the risk of incorrect user
requirement
• Good where requirement are
changing/uncommitted
• Regular visible process aids
management
• Reduce Maintenance cost.
• Errors can be detected much earlier as
the system is made side by side.
Disadvantage of Prototype
Model
An unstable/badly implemented prototype
often becomes the final product.
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.
• Prototyping tools are expensive.
• Special tools & techniques are required
to build a prototype.
• It is a time-consuming process.
Spiral Model
 Proposed by Boehm in 1988.
 Each loop of the spiral represents a
phase of the software process:
 the innermost loop might be concerned with
system feasibility,
 the next loop with system requirements
definition,
 the next one with system design, and so on.
 There are no fixed phases in this model,
the phases shown in the figure are just
examples.
64
Spiral Model (CONT.)

 The team must decide:


 how to structure the project into phases.
 Start work using some generic
model:
 add extra phases
 for specific projects or when problems are
identified during a project.
 Each loop in the spiral is split into
four sectors (quadrants).
65
Spiral Model (CONT.)

Determine Identify &


Resolve Risks
Objectives

Customer
Evaluation of Develop Next
Prototype Level of Product

66
Objective Setting (First
Quadrant)

 Identify objectives of the phase,


 Examine the risks associated with
these objectives.
 Risk:
 any adverse circumstance that might
hamper successful completion of a
software project.

 Find alternate solutions possible.


67
Risk Assessment and Reduction (Second
Quadrant)

For each identified project risk,


 a detailed analysis is carried out.
Steps are taken to reduce the risk.
For example, if there is a risk that the
requirements are inappropriate:
 a prototype system may be developed.

68
Spiral Model (CONT.)

 Development and Validation (Third


quadrant):
 develop and validate the next level of the
product.
 Review and Planning (Fourth quadrant):
 review the results achieved so far with the
customer and plan the next iteration around the
spiral.
 With each iteration around the spiral:
 progressively more complete version of the
software gets built. 69
When to use Spiral Model?

• When deliverance is required to be


frequent.
• When the project is large
• When requirements are unclear and
complex
• When changes may require at any time
• Large and high budget projects

67
Advantages

• High amount of risk


analysis
• Useful for large and
mission-critical projects.
Disadvantages

• Can be a costly model to


use.
• Risk analysis needed highly
particular expertise
• Doesn't work well for smaller
projects.
V model
• V-Model also referred to as the
Verification and Validation Model.
• In this, each phase of SDLC must
complete before the next phase starts.
• It follows a sequential design process
same as the waterfall model.
• Testing of the device is planned in
parallel with a corresponding stage of
development.
Verification: It involves a static analysis
method (review) done without executing
code. It is the process of evaluation of the
product development process to find
whether specified requirements meet.
Validation: It involves dynamic analysis
method (functional, non-functional),
testing is done by executing code.
Validation is the process to classify the
software after the completion of the
development process to determine
whether the software meets the customer
expectations and requirements.
So V-Model contains Verification phases
on one side of the Validation phases on
the other side. Verification and Validation
process is joined by coding phase in V-
shape. Thus it is known as V-Model.
There are the various phases of
Verification Phase of V-model:
Business requirement analysis: This is
the first step where product requirements
understood from the customer's side. This
phase contains detailed communication to
understand customer's expectations and
exact requirements.
System Design: In this stage system
engineers analyze and interpret the
business of the proposed system by
studying the user requirements document.
Architecture Design: The baseline in
selecting the architecture is that it should
understand all which typically consists of
the list of modules, brief functionality of
each module, their interface relationships,
dependencies, database tables,
architecture diagrams, technology detail,
etc. The integration testing model is
carried out in a particular phase.
Module Design: In the module design
phase, the system breaks down into small
modules. The detailed design of the
modules is specified, which is known as
Low-Level Design.
Coding Phase: After designing, the
coding phase is started. Based on the
requirements, a suitable programming
language is decided. There are some
guidelines and standards for coding.
Before checking in the repository, the final
build is optimized for better performance,
and the code goes through many code
reviews to check the performance.
When to use V-Model?

• When the requirement is well defined


and not ambiguous.
• The V-shaped model should be used for
small to medium-sized projects where
requirements are clearly defined and
fixed.
• The V-shaped model should be chosen
when sample technical resources are
available with essential technical
expertise.
Advantage (Pros) of V-
Model:

• Easy to Understand.
• Testing Methods like planning, test
designing happens well before coding.
• This saves a lot of time. Hence a higher
chance of success over the waterfall
model.
• Avoids the downward flow of the
defects.
• Works well for small plans where
requirements are easily understood.
Evolutionary Model
 Evolutionary model (iterative or
incremental model):
 The system is broken down into several
modules which can be incrementally
implemented 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.
83
Evolutionary Model (CONT.)

 Successive version of the


product:
 functioning systems capable of
performing some useful work.
 A new release may include new
functionality:
 also existing functionality in the
current release might have been
enhanced.
84
Evolutionary Model (CONT.)

C
A AB A
B

85
Evolutionary Model with
Iteration
 Many organizations use a
combination of iterative
and incremental
development:
 a new release may include
new functionality
 existing functionality from the
current release may also have
been modified. 86
Evolutionary Model with
iteration
 Several advantages:
 Training can start on an earlier release
 customer feedback taken into account
 Markets can be created:
 for functionality that has never been
offered.
 Frequent releases allow developers to
fix unanticipated problems quickly.

87
Advantages of
Evolutionary Model
 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:
 reduces chances of errors in final product.

88
Disadvantages of
Evolutionary
Model
 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.

89
90
91
Rapid Application
Development (RAD) Model

 Not an appropriate model in the absence


of user participation.
 Reusable components are required to
reduce development time.
 Highly specialized & skilled developers are
required and such developers are not
easily available.

92
Agile model

• The meaning of Agile is swift or


versatile."Agile process model" refers
to a software development approach
based on iterative development.
• Agile methods break tasks into smaller
iterations, or parts do not directly
involve long term planning..
• The project scope and requirements are
laid down at the beginning of the
development process.
• Plans regarding the number of
iterations, the duration and the scope of
each iteration are clearly defined in
advance
• Each iteration is considered as a short
time "frame" in the Agile process
model, which typically lasts from one to
four weeks.
• The division of the entire project into
smaller parts helps to minimize the
project risk and to reduce the overall
project delivery time requirements.
• Each iteration involves a team working
through a full software development life
cycle including planning, requirements
analysis, design, coding, and testing
before a working product is
demonstrated to the client.
Phases of Agile Model:
• Requirements gathering
• Design the requirements
• Construction/ iteration
• Testing/ Quality assurance
• Deployment
• Feedback
Agile Testing Methods:
• Scrum
• Crystal
• Dynamic Software Development
Method(DSDM)
• Feature Driven Development(FDD)
• Lean Software Development
• eXtreme Programming(XP)
• SCRUM is an agile development process
focused primarily on ways to manage
tasks in team-based development
conditions.
• There are three roles in it, and their
responsibilities are:
• Scrum Master: The scrum can set up
the master team, arrange the meeting
and remove obstacles for the process
• Scrum Team: The team manages its
work and organizes the work to
complete the sprint or cycle.
• Product owner: The product owner
makes the prioritizes the delay and is
responsible for the distribution of
functionality on each repetition.
eXtreme Programming(XP)

This type of methodology is used when


customers are constantly changing
demands or requirements, or when they
are not sure about the system's
performance.
Crystal:
• There are three concepts of this
method-
• Chartering: Multi activities are involved
in this phase such as making a
development team, performing
feasibility analysis, developing plans,
etc.
• Cyclic delivery: under this, two more
cycles consist, these are:
– Team updates the release plan.
– Integrated product delivers to the users.
• Wrap up: According to the user
environment, this phase performs
deployment, post-deployment.
Dynamic Software
Development
• DSDMMethod(DSDM):
is a rapid application
development strategy for software
development and gives an agile project
distribution structure. The essential
features of DSDM are that users must
be actively connected, and teams have
been given the right to make decisions.
The techniques used in DSDM are:
• Time Boxing
• MoSCoW Rules
• The DSDM project contains seven
stages:
• Pre-project
• Feasibility Study
• Business Study
• Functional Model Iteration
• Design and build Iteration
• Implementation
• Post-project
Feature Driven
Development(FDD):
• This method focuses on "Designing and
Building" features. In contrast to other
smart methods, FDD describes the small
steps of the work that should be
obtained separately per function.
Lean Software
Development:
• Lean software development
methodology follows the principle "just
in time production." The lean method
indicates the increasing speed of
software development and reducing
costs. Lean development can be
summarized in seven phases.
• Eliminating Waste
• Amplifying learning
• Defer commitment (deciding as late as
possible)
• Early delivery
• Empowering the team
• Building Integrity
• Optimize the whole
When to use the Agile
Model?
• When frequent changes are required.
• When a highly qualified and
experienced team is available.
• When a customer is ready to have a
meeting with a software team all the
time.
• When project size is small.
Advantage(Pros) of Agile
Method:
• Frequent Delivery
• Face-to-Face Communication with
clients.
• Efficient design and fulfils the business
requirement.
• Anytime changes are acceptable.
• It reduces total development time.
Disadvantages(Cons) of
Agile Model:
• Due to the shortage of formal
documents, it creates confusion and
crucial decisions taken throughout
various phases can be misinterpreted at
any time by different team members.
• Due to the lack of proper
documentation, once the project
completes and the developers allotted
to another project, maintenance of the
finished project can become a difficulty.
Comparison of Different Life
Cycle Models
 Iterative waterfall model
 most widely used model.
 But, suitable only for well-understood
problems.
 Prototype model is suitable for
projects not well understood:
 user requirements
 technical aspects

11
3
Comparison of Different Life
Cycle Models (CONT.)

 Evolutionary model is suitable for


large problems:
 can be decomposed into a set of modules that
can be incrementally implemented,
 incremental delivery of the system is
acceptable to the customer.
 The spiral model:
 suitable for development of technically
challenging software products that are
subject to several kinds of risks.
11
4

You might also like