Module 1
Module 1
Software Process 2
Software Process…
Process: A particular method, generally
involving a number of steps
Software Process: A set of steps, along
with ordering constraints on execution, to
produce software with desired outcome
Software Process 3
Key Processes
Software Process 4
Software Dev Processes
Two major processes
Engineering– “development and quality steps
needed to engineer the software”
Project management – “planning and
controlling the development process”
Key Roles
Developers execute Engineering process
Software architects, lead developers, ...
Software Process 5
Other Processes…
Other processes
Configuration management: manages the
evolution of artifacts
Change management: how changes are
incorporated
Inspection process: how inspections are
conducted on artifacts
Process Improvement Process:
Software Process 6
Process Specification
Software Process 8
ETVX approach
Software Process 9
ETVX Example: Change
management
Software Process 10
Key Dev Process Properties
Provide high Q&P by
1. Early defect removal
2. Execute in a Predictable and repeatable
manner
3. Support Change
Software Process 11
1) Early Defect Removal…
Provide high Q&P
Support testability
testing can consume 30 to 50% of total development
effort
Support maintainability
maintenance can be more expensive than
development;
over life up to 80% of total cost
Software Process 12
1) Early Defect Removal…
Cost of a defect increases with latency
fixing a req defect
During requirements: x
During operation: 100x
Software Process 13
3) Early Defect Removal…
Software Process 14
2) Predictability and
repeatability
Process should repeat its performance when
used on different projects
outcome of using a process should be predictable!
Without predictability,
can’t estimate effectively,
can’t say anything about quality or productivity
With predictability,
past performance can be used to predict future
performance
Software Process 15
2) Predictability…
Software Process 16
2) Predictability…
Predictable process is said to be under
statistical control
Repeatedly using the process produces similar
results
Results – properties of interest like quality,
productivity, …
To consistently develop sw with high Q&P,
process must be in control
Software Process 17
3) Support Change
Software changes for various reasons
Requirements change
Infrastructure changes
Designs change
Changes in Requirements
cannot be wished away or treated as “bad”
must be accommodated in the SW development
process
Software Process 18
Summary
Process – method for doing something
Process typically has stages, each stage
focusing on an identifiable task
Stages have methodologies
Software Process 19
How are we going to go about it?
Software Process 20
Development Process
A set of phases and each phase being a
sequence of steps
For each phase there are
A variety of methodologies
Corresponding to different sequence of steps for a
phase
Software Process 21
Development Process
Commonly has these activities:
1. Requirements analysis,
2. Design
3. Coding,
4. Testing,
5. Delivery
Software Process 22
1. Requirement Analysis
State the problem precisely!
Forms the basis of agreement between user
and developer
Specifies “what” not “how”
Hard task - needs often not understood well
Requirement specifications of even medium
systems can be many hundreds of pages
Output is the SW Requirements Spec (SRS)
document
Software Process 23
2. Design
A major step in moving from problem
domain to solution domain
Three main tasks
1. Architecture design – components and
connectors that should be there in the system
2. High level design – modules and data
structures needed to implement the
architecture
3. Detailed design – logic of modules
Most methodologies focus on architecture
or high level design
Outputs are arch/des/logic design docs
Software Process 24
3) Coding
Converts design into code in specific
language
Goal: Implement the design with simple
and easy to understand code
Software Process 25
4) Testing & Quality Assurance
Defects are introduced in each phase
Must be found and removed to achieve
high quality
Goal: Identify most of defects
Very expensive task; must be properly
planned and executed
Outputs are
Test plans/results, and
the final tested (hopefully reliable) code
Software Process 26
4) Typical Effort Distribution ?
Req. - ?
Design - ?
Coding - ?
Testing - ?
Software Process 27
4) Typical Effort Distribution
Distribution of effort :
Req. - 10-20%
Design - 10-20%
Coding - 20-30%
Testing - 30-50%
Software Process 28
4) Distribution of effort…
How programmers spend their time?
Writing programs ?
Reading programs and manuals ?
Job communication ?
Others ?
Software Process 29
4) Distribution of effort…
How programmers spend their time
Writing programs - 13%
Reading programs and manuals - 16%
Job communication - 32%
Others - 39%
Software Process 32
Defects…
Cost to fix
Error ( log scale)
Time
Cheapest way to detect and remove
defects close to where it is injected.
Software Process 34
Waterfall Model
Linear sequence of stages/phases
Requirements -> HLD –> DD –> Code –> Test
–> Deploy
Software Process 35
Software Process 36
Waterfall…
Linear ordering implies each phase should
have some output
Software Process 38
Waterfall disadvantages
Assumes that requirements can be specified
and frozen early
Software Process 39
Waterfall Usage
Well suited for projects where requirements
can be understood easily and technology
decisions are easy
Software Process 40
Prototyping
Addresses the requirement specification
limitation of waterfall
Software Process 41
Prototyping
Software Process 42
Development of prototype
Starts with initial requirements
Only key features which need better
understanding are included in prototype
No point in including those features that are
well understood
Feedback from users taken to improve the
understanding of the requirements
Software Process 43
Prototyping
Cost can be kept low
Build only features needing clarification
Disadvantages:
Potential hit on cost and schedule
Potential false sense of security if prototype does
not focus on key (high risk) issues
Software Process 45
Prototyping
Applicability:
When req are hard to elicit
When confidence in reqs is low
Where reqs are not well understood
When design is driven by user needs
Variants
Paper Prototypes
UI Prototypes
Technology Proving
Rapid Prototyping environments
Software Process 46
Iterative Development
Counters the “all or nothing” drawback of
the waterfall model
Combines benefit of prototyping and
waterfall
Develop and deliver software in
increments
Each increment is complete in itself
Can be viewed as a sequence of waterfalls
Feedback from one iteration is used in the
future iterations
Software Process 47
Iterative Enhancement
Software Process 48
Iterative Development
Most Software Products follow it
Software Process 49
Iterative Development
Benefits
Get-as-you-pay
feedback for improvement
Drawbacks
Architecture/design may not be optimal
Amount of refactoring may increase
Total cost may increase
Software Process 50
Iterative Development
Applicability
where response time is important,
risk of long projects cannot be taken,
all req not known
Execution
Each iteration is a mini waterfall – decide the
specs, then plan the iteration
Length of iteration driven by amount of new
functionality to be added in an iteration
Software Process 51
Timeboxing
Time boxing is like Iterative development but
fix an iteration duration, then determine the
specs
Software Process 52
Timeboxing Execution
Linear Timeboxing
Requirements Build Deploy
TB1
Software Process 53
Time Boxed Iterations
General iterative development – fix the
functionality for each iteration, then plan and
execute it
Software Process 54
Linear Timeboxing
This itself very useful in many situations
Has predictable delivery times
Overall product release and marketing can be
better planned
Makes time a non-negotiable parameter and
helps focus attention on schedule
Prevents requirements bloating
Overall dev time is still unchanged
Software Process 55
Pipelined Timeboxing
Multiple iterations executing in parallel
Can reduce the average completion time by
exploiting parallelism
For parallel execution, can borrow pipelining
concepts from hardware
This leads to Pipelined Timeboxing Process
Model
Software Process 56
Pipelined Timeboxing Model –
Basics
Development is done iteratively in fixed
duration time boxes
Each time box divided in fixed stages
Each stage performs a clearly defined task
that can be done independently
Each stage approximately equal in duration
There is a dedicated team for each stage
When one stage team finishes, it hands
over the project to the next team
Software Process 57
Example
An iteration with three stages – Analysis,
Build, Deploy
These stages are appx equal in many situations
Can adjust durations by determining the
boudaries suitably
Can adjust duration by adjusting the team size
for each stage
Have separate teams for A, B, and D
Software Process 58
Pipelined Execution
A Team starts executing it-1
A Team finishes, hands over it-1 to B Team,
starts executing it-2
A Team finishes it-2, hands over to B Team; B
Team finishes it-1, hands over to D Team; AT
starts it-3, B Team starts it-2 (and D Team, it-
1)
…
Software Process 59
Timeboxing Execution
Software
Software Process 60
Timeboxing execution
Duration of each iteration still the same
Total work done in a time box is also the
same
Productivity of a time box is same
Yet, average cycle time or delivery time has
reduced to a third
Magic?
Are we getting something for nothing?
Software Process 61
Team Size
No magic, bigger teams
In linear execution of iterations, the same
team performs all stages
If each stage has a team of size S, in linear
execution the total team size is S
In pipelined execution, the total team size is
three times (one for each stage)
Software Process 62
Brook’s Law
“Adding manpower to a late
software project makes it later".
Fred Brooks, The Mythical Man-Month (1975)
http://en.wikipedia.org/wiki/Brooks's_law
Software Process 63
Team Size
Merely by increasing the team size we cannot
reduce cycle time - Brook’s law
Timeboxing allows structured way to add
manpower to reduce cycle time
Note that we cannot change the time of an
iteration – Brook’s law still holds
Work allocation different to allow larger team
to function properly
Software Process 64
Work Allocation of Teams
Build Team Build for TB1 Build for TB2 Build for TB3 Build for TB4
Deployment
Deployment for TB1 Deployment for TB2 Deployment for TB3
Team
Software Process 65
Timeboxing
Advantages:
Shortened delivery times,
other adv of iterative,
distr. Execution
Disadvantages:
Larger teams,
proj mgmt is harder,
high synchronization needed,
CM is harder
Applicability
When short delivery times
When architecture is stable
Flexibility in feature grouping
For larger heavily managed teams
Software Process 66
Summary
Process is a means to achieve project
objectives of high Q&P
Software Process 69
Summary – Iterative
Strength Weakness Types of
Projects
Regular deliveries, Overhead of For businesses
leading to biz planning each where time is imp;
benefit iteration risk of long
Can accommodate Total cost may projects cannot be
changes naturally increase taken; req not
Allows user System arch and known and evolve
feedback design may suffer with time
Avoids req Rework may
bloating increase
Naturally
prioritizes req
Allows reasonable Software Process 70
Summary – Timeboxing
Strength Weakness Types of
Projects
All benefits of PM becomes more Where very short
iterative complex delivery times are
Planning for Team size is larger very important
iterations Complicated – Where flexibility in
somewhat easier lapses can lead to grouping features
Very short losses Arch is stable
delivery times
Software Process 71