Algorithmic Cost Modeling A mathematical function is used to estimate the cost Inputs: Project, Process, Product Decided by project managers Historical data are studied to derive the function Commonly used product attribute is LOC (code size)
Software Productivity The rate at which individual software engineers involve in development process is known as software productivity Although quality assurance is a factor in productivity assessment, the productivity is not quality oriented The useful functionality produced per time unit should be measured
Productivity Measures Size related measures: Lines of delivered source code Object code instructions Etc Function related measures: Functionality of the delivered software E.g. Function points
Lines of Code What programs should be considered as part of the system? Assumption of the model: The relationship between system size and volume of documentation is linear Key thing to remember: Uncertainty is more important than the initial line Seek justifiable bounds
Productivity Comparison Low level language verses high level language Verbose code verses compact code
Function Points Program characteristics are considered External inputs and outputs User interactions External interfaces Files used by the system Corresponding weights are assigned to each characteristic
FPs and LOC FPs can be used to estimate LOC LOC = AVC * (Number of FPs) AVC is a factor which depends on the programming language Assembly language: AVC = 200 to 300 4 GL language: AVC = 2 to 40 FPs are subjective and dependent on the estimator FP automation is impossible
Productivity Estimates Real time embedded systems 40 to 60 LOC per month Systems programs 150 to 400 LOC per month Commercial applications 200 to 900 LOC per month
Productivity Factors Application domain experience Process quality Product size Technology support Working environment
Changing Technologies Previous estimating experience does not carry over to new systems due to changes in technology Use of web services Use of CASE tools and program generators Development for and with reuse Using scripting languages
COCOMO Constructive Cost Model (COCOMO) Estimates are derived as functions of variables Data of past projects must be available First published by Dr. Barry Boehm in 1981 Derived through statistical regression of data from 63 past projects
Basic Effort Equation (Effort) = A * (Size) ^ (Exponent) (Effort) = (EAF) * A * (Size) ^ (Exponent) Estimates the man-months (MM) of effort for software development project 1 MM = 152 hours of development Size is the source lines of code (SLOC)
Modes and Models of COCOMO Three modes Organic mode Semidetached mode Embedded mode Three models Basic model Intermediate model Detailed model
Modes of COCOMO Organic mode Similar to an earlier project Familiar and stable environment E.g. Accounting system Semidetached mode Between Organic and Embedded modes Embedded mode New project involving new inventions E.g. Real-time systems
Models of COCOMO Basic model Roughly estimates project cost, performance and schedule Intermediate model EAF (Effort Adjustment Factor) is used from 15 cost drivers Detailed model Different Effort Multipliers are used for each phase of project
Effort Equation : Basic (Effort) = A * (Size) ^ (Exponent) A is a constant which depends on the mode of development Organic: 2.4, Semidetached: 3.0, Embedded: 3.6 (Exponent) is also a constant which depends on the mode of development Organic: 1.05, Semidetached: 1.12, Embedded: 1.20 Size should be in KSLOC (1000 SLOC)
Schedule Equation : Basic Minimum time to develop (MTDEV) (MTDEV) = 2.5 * (Effort) ^ (Exponent) Exponent is a constant which depends on the mode Organic: 0.38, Semidetached: 0.35, Embedded: 0.32 2.5 is constant for all modes MTDEV is independent from the number of people assigned
Effort Equation : Intermediate (Effort) = (EAF) * A * (Size) ^ (Exponent) A is a constant which depends on the mode of development Organic: 3.2, Semidetached: 3.0, Embedded: 2.8 (Exponent) is also a constant which depends on the mode of development Organic: 1.05, Semidetached: 1.12, Embedded: 1.20 Size should be in KSLOC (1000 SLOC)
EAF (Effort Adjustment Factor) EAF = Product of effort multipliers
Schedule Equation : Intermediate Minimum time to develop (MTDEV) (MTDEV) = 2.5 * (Effort) ^ (Exponent) Exponent is a constant which depends on the mode Organic: 0.38, Semidetached: 0.35, Embedded: 0.32 2.5 is constant for all modes MTDEV is independent from the number of people assigned