Tuesday, January 21, 2014

Cocomo/Coqualmo/Sced-Risk Model w/4 Objectives

The Cocomo model class in things/var/darren/coco/cocomo.py has been updated now with four different methods to calculate the desired objective functions of:
  • Effort
  • Months
  • Defects
  • Risks
These are simple in terms of the arguments required (ultimately, none should be needed, although several may be optionally provided so as to preload or precompute values used repeatedly in the calculations).

I have begun filling in jmoo_problems.py with the code to support this model with these functions, but I have not yet begun testing and debugging.  Below is an example output of the cocomo class's new method, xys():

aa 3.68689510262 None
sced 4.33572792066 0.855571095869
cplx 3.54209989659 1.06860375637
site 5.5631077419 0.692430144197
resl 2.04446498018 3.63467420444
acap 3.05879106806 0.990494946701
etat 3.4521618083 None
rely 2.54968439506 0.9382368144
data 3.45688917009 1.02910631533
prec 2.13581832559 2.75739144447
pmat 4.92326222727 0.781801416853
aexp 4.33937647426 0.8933853857
flex 4.38257432283 1.15507418054
pcon 2.2586185885 1.06496698325
tool 1.58649480483 1.13975044162
time 3.00824141435 1.00119768587
stor 4.40652474984 1.10905633167
docu 1.46520028131 0.885081237188
b 5.28636472236 0.801315863421
plex 2.14868867232 1.10609100864
pcap 1.88562765343 1.1577450923
kloc 701.370627289
ltex 2.49317333366 1.07800326396
pr 3.21767023357 None
ruse 3.16205901643 1.01522858174
team 1.35876155009 3.30419154403
pvol 3.73906811314 1.05062941603
(':a', 5.286364722358447, ':b', 0.801315863420666, ':kloc', 701.370627288504, ':exp', 0.917647191324108, ':sum', 11.633132790344202, ':prod', 18.07557850083159, 'effort', 39068.355126207636, 'months', 123.50925817291382, 'defects', 12763.194794326424, 'risks', 1.876675603217158)
({'aa': 3.686895102618872, 'sced': 4.335727920663164, 'cplx': 3.542099896591699, 'site': 5.5631077418981025, 'resl': 2.044464980178878, 'acap': 3.058791068058065, 'etat': 3.4521618082979, 'rely': 2.549684395063621, 'data': 3.4568891700927185, 'prec': 2.135818325586969, 'pmat': 4.923262227274789, 'aexp': 4.339376474260203, 'flex': 4.382574322828805, 'pcon': 2.258618588503664, 'tool': 1.586494804833082, 'time': 3.0082414143526988, 'stor': 4.40652474984347, 'docu': 1.4652002813053215, 'b': 5.286364722358447, 'plex': 2.1486886723249508, 'pcap': 1.8856276534266851, 'kloc': 701.370627288504, 'ltex': 2.493173333655456, 'pr': 3.2176702335725667, 'ruse': 3.1620590164309146, 'team': 1.3587615500910672, 'pvol': 3.7390681131390493}, 39068.355126207636, 123.50925817291382, 12763.194794326424, 1.876675603217158)

------------------------------

One unresolved question I have, which may be evident from the data above, is that while COCOMO calibration values were calculated from a PRNG (calling a y() method on the decision range's subclass), the COQUALMO calibrations here are read in from the hardcoded values provided in the original coco.awk script.  If this is not correct, I am unclear on how exactly these values should be computed, and so far my searches of literature on the subject have not been successful other than to see that it is recommended to use the calculator on the COQUALMO website, which is loaded with the "most current" calibration values.

No comments:

Post a Comment