Download - When Will My Feature Be Ready?
-
8/7/2019 When Will My Feature Be Ready?
1/23
When will my Feature
be Ready?
A Practical ProbabilisticApproach to Development
Estimation
Leandro Caniglia
Caesar Systems
-
8/7/2019 When Will My Feature Be Ready?
2/23
Awareness
Knownknowns
Unknownknowns
Knownunknowns
Unknownunknowns
-
8/7/2019 When Will My Feature Be Ready?
3/23
0 200
50
100
150
Cumulative number of
tasks
days
tasks
-
8/7/2019 When Will My Feature Be Ready?
4/23
0 200
50
100
150
days
closed
tasks
Cumulative number of
tasks
-
8/7/2019 When Will My Feature Be Ready?
5/23
0 200
50
100
150
Knownknown
Unknownunknown
Knownunknown
days
closed
tasks
Cumulative number of
tasks
-
8/7/2019 When Will My Feature Be Ready?
6/23
0 200
50
100
150
Awareness = Learning
Knownknown
Unknownunknown
Knownunknown
days
closed
tasks
-
8/7/2019 When Will My Feature Be Ready?
7/23
0 200
50
100
150
Generalization
Knownknown
Unknownunknown
Knownunknown
days
closed
tasks
-
8/7/2019 When Will My Feature Be Ready?
8/23
0 200
50
100
150
Expected Learning Pace
days
closed
tasks
-
8/7/2019 When Will My Feature Be Ready?
9/23
Bad and GoodQuestions When will the feature be ready?
What's the probability to have the
feature ready in 1 month?
How long would it take to have
the feature ready with 80% of
certainty?
-
8/7/2019 When Will My Feature Be Ready?
10/23
Measuring
1 PushSelf2 LoadAssoc13 SendSelector1 #on:
4 StoreTemporary15 LoadTemporary16 SendSelector2#messageCount7 Return
CompiledMethod >>#messageCount 1
| reader | 2
reader := ByteCodeReaderon: self. 3
^readermessageCount 4loc
4bytecodes7messageCo
unt
-
8/7/2019 When Will My Feature Be Ready?
11/23
Complexity Metrics
Lines of Code (LOC)
Metho
ds
Classes
# of bytecodes# of sends incursion# of arguments (arity) numberOfSubWords (4 in this case)
# of ivars (slots)# of methods
-
8/7/2019 When Will My Feature Be Ready?
12/23
ProbabilityDistributions
etrics are not number
-
8/7/2019 When Will My Feature Be Ready?
13/23
Demo
-
8/7/2019 When Will My Feature Be Ready?
14/23
Feature Estimation
ProblemHow can we calculate the probability
distribution associated to a feature?
SolutionCreate a probabilistic model of the problem
and run a Monte Carlo simulation on it.
Remember!
Metrics are not numbers but distributions.
-
8/7/2019 When Will My Feature Be Ready?
15/23
Development Metrics
Code
# of methods /class
# of methods
Change set
Dev Team speed additivity
-
8/7/2019 When Will My Feature Be Ready?
16/23
Dev Team Metrics
Speed
# of change sets integrated / dayIntegrated
change sechangeset
holidays
vacations
interruptionsdistractions
illness
hw failures
Delays included
-
8/7/2019 When Will My Feature Be Ready?
17/23
Dev Team Metrics
% of method survival by change set
Additivity
mth1mth2mth3
mthmthmth
original
changeset
currentstatein
memo
ry
refactoring renaming formatting
Actions included
-
8/7/2019 When Will My Feature Be Ready?
18/23
Feature Size
NewClass
New
NewExisting
ExistingClass
1. Sketch a preliminary design of the feature
2. Count classesclasses = C
w(C)
w(C)
1 ; if C isnew0.5 ;otherwise
4.0
3.5
12
30.5 ;otherwise
2
5
7
-
8/7/2019 When Will My Feature Be Ready?
19/23
Dev Team Focus
Focus
% of resources assigned to thefeature
focus % of people * % of time
Other
tasks% of resources assigned to everythingelse other 100% - focus
-
8/7/2019 When Will My Feature Be Ready?
20/23
changeset
changeset
A Stochastic Model
DevTeam
focus =
p
p
1 p
feature related
other tasks
additivity
focused
-
8/7/2019 When Will My Feature Be Ready?
21/23
Monte Carlo Simulation
1 2 3 4 5 6
-
8/7/2019 When Will My Feature Be Ready?
22/23
Demo
-
8/7/2019 When Will My Feature Be Ready?
23/23
Good Questions &AnswersWhen will the feature be ready?What's the probability of having
the feature ready in 1 month?
How long would it take to havethe feature ready with 80% or
certainty?