28-04-2014, 12:05 PM
Cost Estimation
Cost Estimation .ppt (Size: 99 KB / Downloads: 80)
Cost estimates: when and why
When does a contractor estimate costs for building
a house?
Before construction begins, let alone payment
Takes into account subcontracts for foundation, framing, plumbing, electrical, etc.
Hierarchy, modularity and abstraction support estimates
Who benefits from these cost estimates?
Can cost estimates have similar advantages
for software projects?
On the other hand, can cost estimates for software projects be as accurate as for house contracts?
Why or why not?
LOC/KLOC
LOC: lines of code
KLOC: kilo lines of code, or (lines of code) / 1000
Still regarded as most accurate way to measure labor costs
What are some uncertainties about measuring LOC?
Should comment lines count? Or blank lines for formatting?
How do we compare lines of assembly language vs. high-level language like C++ or Java?
How do you know how many LOC the system will contain when it’s not implemented or even designed yet?
How do you account for reuse of code?
Bottom up estimates
Estimate the cost for each module or unit of code
Sum the cost of the modules
Add an estimate of integration costs
Assumes that design is far enough along that all modules are defined
Another bottom-up estimate:
Break the work into subtasks small enough to estimate
Person responsible for performing the subtask estimates the effort required
Software architectural design work must be done before such an estimate is possible
COCOMO
(1981)
COCOMO – COnstructive COst Model
Basic formula is: Effort = bKLOCc
where b, c are constants whose values depend on the project characteristics
Basic COCOMO distinguishes three classes of projects:
Organic: small teams develops software in known environment, so developers can contribute early: b=2.4, c=1.05
Embedded: Environment is inflexible and constrained, i.e., air traffic control or embedded weapons systems, b=3.6, c=1.20
Semidetached: Team members have varying levels of experience working on larger projects, b=3.0, c=1.12
Intermediate COCOMO – factors in 15 additional cost drivers, i.e., complexity of software, documentation needs, etc.
E.g., if complexity is low, adjust this factor by 0.85 (40*0.84=34 months) What do you think of measuring cost factors this way?
Detailed COCOMO – phase sensitive, uses separate multipliers for each project phase, from requirements through integration
Function Point analysis
(1979, 1983)
Rather than counting LOC, count data structures (“function points”)
Intended to be a user-oriented measure of system function
Particularly suitable for business applications
Less well suited for systems such as compilers, real-time systems, etc.
Key inputs are number of:
Input types, output types, inquiry types, logical internal files, interfaces
May also apply corrections for differences in complexity of data types
After computing the function points, map them to LOC
Formula depends on the particular programming language to be used
Based on older, batch-oriented systems
Object Point analysis may be more suitable for interactive,
screen-oriented systems
Note: objects are screens, reports and 3GL modules, not OOP classes