You are on page 1of 63

Daily status!

1.
2.
3.
4.

What did you accomplish yesterday?


What will you accomplish today?
Are there any road-blocks standing in
your way of understanding?
Questions

Software Project Lifecycle


Srinivas

Todays session - Agenda


Software

Life cycle
Various types of life cycles
Variant life cycles
Pros and Cons

Life cycle Definition


The

phases a software product goes


through between when it is conceived
and when it is no longer available for
use forms a cycle
The various phases are requirements
analysis,design, construction, testing,
installation, operation, maintenance and
retirement

Software life cycle model


A framework

containing the processes,


activities and tasks involved in the
development, operation and maintenance of a
software product, spanning the life of the
system from the definition of its requirements
to the closure of its use

Process Model
To

solve the actual problem in the


software industry
Incorporate a development strategy
which encompasses processes, tools
and methods

Process Model
Nature

of the project and application


Methods and tools
Controls and deliverables

Characteristics of software
development
Problem

solving loop

Status quo
Problem definition
Technical development
Solution Integration

Types
Build

and Fix model


Waterfall model
V Shaped model
Spiral model
Rapid application development
(RAD)/ Prototype model
Staged delivery / Incremental /
Iterative model

Build and Fix model

Build and Fix model


No

agreed specification
No design
Directly code
Rework as many times as required till
customer is satisfied
Immature companies use this

Are you aware of Scrum model?

Build and Fix model


Quality

cannot be expected
Maintenance would be very costly
Illusion of low cost
It will lack integrity

Waterfall model
Analysis

Req. Specs

Analysis
Design

DEV - CODING
Imppl
team

SYSTEM
TEST

Version
control
tool

Imppl
team

INTEGRATION
TESTING

PROD

Imppl
team

Operations
Maintain..

Waterfall model
It is also called as
SDLC

model
Linear sequential model
Classical life cycle model

Waterfall model
Software

projects are generally broken down


into 6 stages

Project planning
Requirements definition
Design
Development
Integration and testing
Installation and acceptance

Waterfall model
Linear

and sequential
Distinct goal for each stage
Once a stage is completed, you proceed
to the next stage without turning back
Each stage is separate
There is no overlap or iteration between
the stages
Each stage has an exit criteria which
should be met before next stage can
begin

Waterfall model - principles


Freeze

requirements before design


Avoid coding prior to detailed design
review
Use higher order programming language
Complete unit testing before integration
Maintain detailed traceability among all
artifacts
Document and maintain the design
Assess quality with an independent team
Inspect everything.
Plan everything early with high fidelity
Control source code baselines rigorously

Waterfall model - Advantage


Departmentalization

and managerial

control
Could be implemented for all size
projects where requirements do not
change
At the end of every stage,there is an
output deliverable

Waterfall model Disadvantage


It

does not allow any revision


The customer gets to see the working
version only at the end. Undetected
problems at initial stages could lead to a
major disaster
As testing is done at the end, fixing
bugs are very expensive in this model

Spiral model

Spiral model
Preferred

for large, expensive, complicated

projects
Waterfall model with risk analysis factor
Phases

Planning
Risk Analysis
Engineering
Evaluation

Spiral model
-

Initially define high priority features


Using the initial subset of
requirements, develop a prototype
Evaluate the first prototype in terms of
strength, weakness and risk
Define and implement these features
Get feedback from the user / customer
With this knowledge, again define and
implement more features, in smaller
chunks

Spiral model
Each

cycle produces something to be


evaluated but not necessarily a usable
system
Each cycle ends with a question should
we continue?

Spiral model

Defers elaboration of low risk software


elements
Incorporates prototyping as risk reduction
strategy
Focus is on early error detection and design
flaws
Can be used for hardware software system
development
The angular component represents the
progress and the radius of the spiral
represents the cost

Prototype model
Disposable

model used to learn more


about requirements and expose any
technical risks

Prototype model

Prototype model
gather requirements
developer & customer

define overall
objectives, identify areas needing more
investigation risky requiremnets
quick design focusing on what will be
visible to user input & output formats
use existing program fragments,
program generators to throw
together working version
prototype evaluated and requirements
refined

Prototype model
process

iterated until customer &


developer satisfied

then throw away prototype and rebuild


system to high quality
alternatively can have evolutionary
prototyping start with well understood
requirements

Prototype
customer

may want to hang onto


first version, may want a few fixes
rather than rebuild. First version will
have compromises
developer may make implementation
compromises to get prototype
working quickly. Later on developer
may become comfortable with
compromises and forget why they
are inappropriate

Iterative model
Concept
Requirements
Architectural

design
Iteration 1,2,3,4.,n
Detailed

design

Code
Unit

test
System test
Release
Maintenance

Iterative model
Each

release is is developed in a
specific, fixed time period called
iteration
Each iteration will focus on set of
requirements
Take all high priority risks in the first
iteration so that risk at the end of the
project is minimal

Iterative model
Mini

waterfall model in each iteration


Each cycle ends with a usable system
Each iteration results in an executable
release
Enable early user feedback
Resolve major risks at initial iterations

V - model

Courtesy: Wikipedia

V - model
Extension

of waterfall model
The process step bent upwards after
coding phase to form V shape
Verification and validation at each
stage
Test design starts before coding

Rapid application
development
Extremely

short development life

cycle
Variant of prototype model
Iterative in nature
Useful for short term projects where
completion of projects on time is
important
Time constraint on each phase for
quick development of project
Rapid development is achieved by
using a component-based
construction approach

Rapid application
development
Selection

criteria

Extremely short time to market


Good component library exists
Costs are below cost for new development
Requirements are well understood
Risks are known to be low

What model, the company


use for DW?

Is consistency needed?
Typical

organization contains many


development groups. Do we need a
consistent software development life cycle
model ?

Consistency - considerations
Easier

to audit
Templates available for all aspects
Status reports are similar and hence easy
to compare
All planning and control activities would be
the same across projects
Managers and team members get a
comfortable feeling

Consistency - drawbacks
When

there is a better way of doing


something, it is frustrating to do the same
traditional way
It would be just a process initiative and not
a project initiative

Agile
Agile

method considers software as the


most important entity and accepts user
requirement changes
Accept changes and deliver small
releases
Encourages constant feedback from the
end user

Agile Traditional
comparison
Team

interaction Process & Tools


Working software Heavy
documentation
Custom interaction Contract with
customer
Respond to change Stick to plan

Agile
Collection

of best practices for software


modelling in light-weight manner
Do only what is needed and nothing
more than that

Agile principles
Welcome

change and adapt to change


in requirements
Working software is the main measure
of progress
By delivering rapid continuous software
in short cycles, customer satisfaction
could be achieved

Agile principles
Day

to day stand up meetings


Frequent delivery cycles
Design and execution must be simple
Team organization is important

Agile methodologies
Agile

Extreme programming
Feature driven development
Dynamic system development method
Adaptive Software development
Scrum

Extreme Programming
Communication,

Feedback, Simplicity

and courage
Rapid feedback, Simple design and
process
Small incremental release, Embrace
change
Deliver Quality, Start small and grow big
Light weight, Play to win
Honest communication, testing, metrics
Adapt to situation, Accept responsibility
Motivated team

User stories in XP
End

user requirement
Use index cards 3 * 5 inches
Each user story may contain title, short
description and estimation
Story is valid if it can be estimated

Extreme Programming
Development

life cycle

Release planning
Which

requirements should be delivered

first?

Iteration planning
How

do the team deliver the requirement?


Consists of design, execution, testing and
deployment

Extreme Programming
Phases

Release planning
Exploration User Story and estimation
Commitment Prioritize the story
Steering Change handling

Iteration planning
Exploration Translate user story to task,
estimate task
Commitment Assign task to developer
Steering Design, Code, Test, Refact

Feature driven development


Feature

is a process which adds value to


the end customer and it can be planned
Characteristics

We can plan and schedule a feature


It should be something that delivers value
to the end user

FDD - Structure
Identify

the features
Prioritize the features
Define iterations and time boxes
Plan iteration
Create releases

Deciding on the length of the timelines for


every iteration is termed as time boxing

XP and FDD
Iteration

is XP is small usually weeks


where as in FDD it is months or years

SCRUM
SCRUM

believes problem cannot be


understood or defined
Rather concentrate on teams ability to
the emerging requirements

Terms in SCRUM
Product

owner End customer or user


Product backlog list of priority items to
be developed for a software project
Sprint task breakup of product backlog

Create customer could be an item in


Product backlog; Code business logic,
Design UI, Prepare test plans could be
sprints

Development flow
Product

owner creates a list of


product log
We discuss with the customer and
prioritize the product catalog
Break down product catalog into
tasks called as sprint backlog
Execute and monitor sprint activity
Take the next sprint / task
Complete the product log one by one

Roles in SCRUM
Pig

holes People committed to


the project like developer,
customer, PM
Product owner End customer
Scrum master People who
monitor scrum process
Scrum team People with cross
functional expertise
Chicken roles People working
indirectly on the project

Dynamic System
development method
It

is based on RAD (Rapid application


development)
It is suited for products having tight
schedule and budget
It is iterative and incremental

Phases in DSDM
Feasibility

study
Business study
Functional model iteration
Design and build iteration
Implementation

Lean software development


Eliminate

waste Only deliver what


is needed to the user
Decide as late as possible Delay
decisions so that they can be based
on facts rather than assumptions
Deliver as fast as possible
Motivate team
Integrity - Component or module can
function individually and when
integrated with the project

Adaptive software
development
Based

on the fact that mistakes can


happen and it is important to learn from
mistakes

ASD
Speculate

Maps to Plan
Collaborate Maps to Execute
Learn Maps to Review

ASD
Speculate
Define

project scope
Set time for scope
Decide on number of iterations
Break scope to tasks
Assign task to developer
Collaborate
Learn review and provide feedback

You might also like