Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)
(SDLC)
SDLC Model
A framework that describes the activities
performed at each stage of a software
development project.
Waterfall Model
Requirements defines needed
information, function, behavior,
performance and interfaces.
Design data structures, software
architecture, interface
representations, algorithmic
details.
Implementation source code,
database, user documentation,
testing.
Waterfall Strengths
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
Works well when quality is more important than cost
or schedule
Waterfall Deficiencies
All requirements must be known upfront
Deliverables created for each phase are considered
frozen inhibits flexibility
Can give a false impression of progress
Does not reflect problem-solving nature of software
development iterations of phases
Integration is one big bang at the end
Little opportunity for customer to preview the
system (until it may be too late)
When to use the Waterfall Model
Requirements are very well known
Product definition is stable
Technology is understood
New version of an existing product
Porting an existing product to a new platform.
Structured Evolutionary Prototyping Model
Developers build a prototype during the
requirements phase
Prototype is evaluated by end users
Users give corrective feedback
Developers further refine the prototype
When the user is satisfied, the prototype code
is brought up to the standards needed for a
final product.
Structured Evolutionary Prototyping Steps
A preliminary project plan is developed
An partial high-level paper model is created
The model is source for a partial requirements specification
A prototype is built with basic and critical attributes
The designer builds
the database
user interface
algorithmic functions
The designer demonstrates the prototype, the user evaluates
for problems and suggests improvements.
This loop continues until the user is satisfied
Structured Evolutionary Prototyping
Strengths
Customers can see the system requirements as
they are being gathered
Developers learn from customers
A more accurate end product
Unexpected requirements accommodated
Allows for flexible design and development
Steady, visible signs of progress produced
Interaction with the prototype stimulates awareness
of additional needed functionality
Structured Evolutionary Prototyping
Weaknesses
Tendency to abandon structured program
development for code-and-fix development
Bad reputation for quick-and-dirty methods
Overall maintainability may be overlooked
The customer may want the prototype delivered.
Process may continue forever (scope creep)
When to use
Structured Evolutionary Prototyping
Requirements are unstable or have to be clarified
As the requirements clarification stage of a waterfall
model
Develop user interfaces
Short-lived demonstrations
New, original development
With the analysis and design portions of object-
oriented development.
Rapid Application Model (RAD)
Requirements planning phase (a workshop utilizing
structured discussion of business problems)
User description phase automated tools capture
information from users
Construction phase productivity tools, such as code
generators, screen generators, etc. inside a time-box.
(Do until done)
Cutover phase -- installation of the system, user
acceptance testing and user training
RAD Strengths
Reduced cycle time and improved productivity with
fewer people means lower costs
Time-box approach mitigates cost and schedule risk
Customer involved throughout the complete cycle
minimizes risk of not achieving customer satisfaction
and business needs
Focus moves from documentation to code
(WYSIWYG).
Uses modeling concepts to capture information
about business, data, and processes.
RAD Weaknesses
Accelerated development process must give quick
responses to the user
Risk of never achieving closure
Hard to use with legacy systems
Requires a system that can be modularized
Developers and customers must be committed to
rapid-fire activities in an abbreviated time frame.
When to use RAD
Reasonably well-known requirements
User involved throughout the life cycle
Project can be time-boxed
Functionality delivered in increments
High performance not required
Low technical risks
System can be modularized