820 likes | 1.72k Views
COCOMO Software Cost Estimating Model. Presentation by Paul T. Bathen For CIS6516 “ Management of Software Projects and Personnel” Summer B, 2008. Outline of Presentation. Brief overview of versions. Summary of email from Kurt Bittner. Cocomo 81; demonstration Cocomo II; demonstration
E N D
COCOMO Software Cost Estimating Model Presentation by Paul T. Bathen For CIS6516 “Management of Software Projects and Personnel” Summer B, 2008
Outline of Presentation • Brief overview of versions. • Summary of email from Kurt Bittner. • Cocomo 81; demonstration • Cocomo II; demonstration • CoStar by SoftStarSystems.com; demo
COCOMO Versions • CO (Constructive) CO (Cost) MO (Model) • First version: 1981 by Dr. Barry Boehm • Now known now as “COCOMO 81” • Second version: ADA Cocomo (ADA 87); parameterized exponent reflecting more modern practices and their economies of scale. • Current Version: Cocomo II (circa 2000) • Commercial take-offs • Costar (Softstarsystems.com) • Cost Xpert (CostXpert.com) • Regression formula, with data taken from historical projects and current project characteristics.
Email from Kurt Bittner • “Is COCOMO II best for iterative process?” • Yes. “(the models are) public, have evolved over almost two decades, and are based on solid, proven research with solid data.” • Caveat: COCOMO II models are “post-architectural” (best for Construction phase). (PTB Note: Cocomo II software allows for calculating and reporting by Early Design and Post Architecture)
Bittner email cont’d • Inception phase: driven by business/exploratory technology issues; generally defies estimation (because so little data exists at the beginning of a project). • Elaboration phase: driven by technical risks and exploration of technology issues. • Transition phase: not largely governed by software economics but is affected by a large number of factors other than software development.
Cocomo 81 Accuracy • Cocomo homepage: “Over 63 data points in the COCOMO 81 calibration database, the Intermediate form demonstrates an accuracy of within 20% of actuals 68% of the time for effort, and within 20% of actuals 58% of the time for a non-incremental development schedule.” • Kemerer 1993: “(estimating in general varies) from as much as 85 - 610 % between predicated and actual values. Calibration of the model can improve these figures, However, models still produce errors of 50-100%.” • Source: http://yunus.hacettepe.edu.tr/~sencer/cocomo.html
Cocomo 81 • Three calculation models: • Basic: single-variable static model • Effort in staff months = C1b * (KDSI) P1 • Schedule in total months= C2 * (Effort)P2 • Intermediate: Two variables. • Effort in man months = C1i * EAF * (KDSI) P1 • Schedule in total months = C2 * (Effort)P2 • EAF = E1 * E2 * … E15 • Detailed: Intermediate + assessed per phase (analysis, design, etc)
Cocomo 81 • C1i * EAF * (KDSI) P1 AND C2 * (Effort)P2 • C1b, C1i: Scaling coefficient for effort • C2: Scaling coefficient for schedule • EAF: Effort Adjustment Factor; 15 parameters covering Product, Personnel, Computer, and Project familiarity. • P1: characterization of economies of scale: ability to avoid rework, bureaucracy, communications overhead. • P2: characterization of inherent inertia and parallelism. • DSI: Delivered Source Instructions
Cocomo 81 • Effort=C1* EAF * (KDSI) P1 and Sched= C2 * (Effort)P2 • * “Organic: in-house, less-complex developments with flexible processes. Features, qualities, cost and schedule are freely changed with minimal • overhead. • * Embedded: typical defense community projects. Complex, requiring high reliability, with real-time issues. Highly rigorous process. Features, • qualities, cost and schedule are tightly controlled. • * Semidetached: somewhere in-between organic and embedded.” From the book Dr. Roggio loaned me
Cocomo 81 demo • See Excel demo of Cocomo 81
Cocomo 81: Limitations as years progressed • Software reuse • Application generation programs • Object oriented approaches • Application engineering (reuse, applications translation) • Rapid development • Follow this link for an interesting IBM Timeline
Calc’s are based on SLOC • SLOC = “Source Lines Of Code” • Only Source lines that are DELIVERED as part of the product are included -- test drivers and other support software is excluded • SOURCE lines are created by the project staff -- code created by applications generators is excluded • One SLOC is one logical line of code (an If-Then-Else is one line of code) • In Cocomo 81, known as Delivered Source Instructions (DSI). One If-Then-Else = X lines of code. • Declarations are counted as SLOC • Comments are not counted as SLOC Text from SoftStarSystems.com
Person Months • Default Value: 152 hours per month • 19 days at 8 hours per day. • Includes development & management time
Cocomo II basic calcs:Effort Equation for Post Architecture Model Caveat: I have seen various versions of this calculation but I believe this one to be basically correct, and good enough for purposes of demonstration.
What the Cocomo II screen looks like upon starting a new Project. Note you start out in the Post Architecture model, and there is no Application Composition model available.
Can’t really do much unless we add a Module, so choose Edit Add Module. A new line shows up in the screen with a default module name.
1. Change the module name to whatever you want. 2. Now double click on the yellow rectangle under Module Size…
This screen will pop up allowing us to choose between Source Lines Of Code (SLOC), Function Points, or Adaptation and Re-Use. Let’s stick with SLOC for this module.
I have indicated my program language is C++ (this is really important to know for Function Points), there is an estimated 10,000 lines of code, and 20% of the code will be discarded due to requirements evolution and volatility. Hit OK…
The main screen is updated with the SLOC and programming language as well as some calculated values we will decipher later. Note that the SLOC is 12,000. Why? {Pertinent portion of calculation on next slide in red boxes} Now add another module and choose Function Points.
Cocomo II basic calcs:Effort Equation for Post Architecture Model
This is the default screen for Function Points. Let’s look deeper at the Function Type descriptions…
External Input (Inputs) Count each unique user data or user control input type that (i) enters the external boundary of the software system being measured and (ii) adds or changes data in a logical internal file. External Output (Outputs) Count each unique user data or control output type that leaves the external boundary of the software system being measured. Internal Logical File (Files) Count each major logical group of user data or control information in the software system as a logical internal file type. Include each logical file (e.g., each logical group of data) that is generated, used, or maintained by the software system. External Interface Files (Interfaces) Files passed or shared between software systems should be counted as external interface file types within each system. External Inquiry (Queries) Count each unique input-output combination, where an input causes and generates an immediate output, as an external inquiry type. From Cocomo II User Manual via software
So let’s go back into this screen and add some entries in the grid. Notice, there are some kind of subtotals per line, but the Equivalent SLOC = 0. Let’s change the Language and see what happens.
By changing the language to C++, we now have an Equivalent Total in SLOC. Also, we can see a value next to the Change Multiplier button. Let’s change the language to Machine Code!
Quite a difference jumping from 10,653 SLOC to 128,640 SLOC. Note the multiplier changed from 53 to 640. Change the language once more to 5’th Generation.
So using a 5’th generation level language would cut our code base by a factor of 285 times according to Cocomo II’s default estimation (not calibrated for your environment, not taking into account other factors). Change the language to C++ and change REVL to 20%…
So now Module2 has F:12783 or, in other words, it’s based on Function points (the F:) and it has an equivalent 12,783 lines of code (10,653 + 20% for volatility). So how did the 12,783 (or even the 10,653) get calc’d? Part 1 of the answer is to click on Parameters Function Points. You will see the following screen…
These are the default values used as weighting factors against the entries you put in. So if you entered 2,3,4 when enter in Function Point information for the first row, the end result would be 2*7 + 3*10 + 4*15. This is then multiplied by The Multiplier…
Cocomo II basic calcs:Effort Equation for Post Architecture Model Again, we have affected the same portion of the effort calculation as when we entered source lines directly.
All of these items are associated with a non-linear re-use model. • Why non-linear? • NASA study of 3000 re-used modules found: • There is a cost of about 5% just to assess, select, and assimilate a project. • Small mods generate disproportionately large costs.
Cocomo II’s non-linear estimation model, according to the Model Manual:
What % of the adapted software’s design will change? … % of code that will change? % of effort required to integrate the adapted software into an overall product and to test the resulting product as compared to the normal amount of integration and test effort for software of comparable size.
Software Understanding (SU): Use the table below to help you come up with a weighted average based on three key areas…
Assessment & Assimilation (AA): 0 to 8. Effort to determine whether a fully-reused software module is appropriate to the application, and to integrate its description into the overall product description
These last two areas have to deal with automatically translating code. The ATPROD figure is in source statements / person month. The Model manual goes into more detail.
Cocomo II basic calcs:Effort Equation for Post Architecture Model So via Adaptation and Reuse we have now addressed the areas of the calculation in this blue color… So now let’s talk about Effort Adjustment Factors (EAF)
This screen will pop-up. As you click on any given button top row button, the button’s title will change (Nom, High,Very High, Very Low, Low, etc) AND you will see the EAF at the bottom of the screen change.
I have changed ONLY the button for RELY to VHI and by doing so, the EAF has changed to 1.26. So we just increased the Effort equation by 26%!!! Click OK to see the result.
So the EAF for Module1 has changed. We also see changes on the results to the right… NOM DEV has stayed the same; EST DEV has gone from 48.6 to 61.6; PROD from 245.6 to 194.9; Staff from 3 to 3.7; and risk from 0.0 to 1.7. What does this all mean?
NOM DEV: Nominal Person Man Months exclusive of EAF. • EST DEV: Median Person Months inclusive of EAF. • PROD: SLOC / EST DEV Effort. So the unit is Source Lines Of Code per Man Month. • Cost: If we had entered a Labor Rate, the cost would be calc’d.
INST COST: calculated most likely cost per instruction. This number is calculated from Cost/SLOC in each module. • Staff: most likely estimate for the number of full-time developers that would be needed to complete a module in the estimated development time. • RISK: total_risk = schedule_risk + product_risk + personnel_risk + process_risk + platform_risk + reuse_risk. Then total risk of a module=total_risk/373.*100.