CS 435 - Week 8 Lecture 2 - 2014-03-15

playing a little with COCOMO 81:

*   say that we estimate that an auction system
    would take about 2000 lines of code,
    or 2 KLOC

    3.9 * 2^.91 ~= 7.33 person-months <-- the initial/	
                                              nominal estimate

    *  let's say you look over the 15 cost drivers,
       and decide all are nominal (multipliers of 1)
       except:

       complexity - high             --> 1.15
       programmer capability - low   --> 1.17
       application experience - low  --> 1.13

       7.33 * 1.15 * 1.17 * 1.13 = 11.14 person-months

*   THEN -- you can take this effort estimate
    and use it to estimate relative effort needed
    for the different phases;

*   bottom-up estimation:
    one example approach:
    1. identify the modules in the system and classify
       them as simple, medium, or complex

    2. determine the average coding effort for
       a simple, a medium, a complex module;

    3. get the total coding effort using the coding
       efforts of the different types of
       modules and the counts for them --

       (avg coding effort for simple) * (# of simple modules) +
       (avg coding effort for medium) * (# of medium modules) +
       (avg coding effort for complex) * (# of complex modules)

    4. using the effort distribution for similar
       projects, estimate the effort for other
       project tasks and add that in

    5. refine the estimates based on project-specific factors

SAY you indeed now have an effort estimate --
NOW you want to determine the amount of time,
    amount of people that are needed;

*   remember: people and months are NOT interchangeable
    (what pieces depend on other pieces?
    how much communication is necessary? for example)

...but there is SOME wiggle room;

*   and there's  no simple equation between effort and
    schedule that fits really well;

*   that IBM Federal Systems Study came up with
    for M in calendar months

    M = 4.1 E ^ .36

*   COCOMO 81 -- for an "organic" type of software --
    
    M = 2.5 E ^ .38

*   playing with these:

    50 PM project
    IBM Fed -> 4.1 * (50 ** .36) ~= 16.8 months
    COCOMO 81 -> 2.5 * (50 ** .38) ~= 11.1 months

    *   NOT a hard-and-fast estimate,
        but maybe a useful reality check;

*   another approach (for medium-sized?)
    ... a rule of thumb called the square root check,
    that the proposed schedule CAN be around the square root
    of the total effort in person-months
    IF SUITABLE RESOURCES are assigned to the project;