When Will My Feature Be Ready?

download When Will My Feature Be Ready?

of 23

Transcript of 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?