1.3 Estimation Techniques
1.3.1 Expert judgement
- One or more experts in both software development and the application
domain use their experience to predict software costs. Process iterates
until some consensus is reached.
- Advantages: Relatively cheap estimation method. Can be accurate if
experts have direct experience of similar systems
- Disadvantages: Very inaccurate if there are no experts!
1.3.2 Estimation by analogy
- The cost of a project is computed by comparing the project to a similar
project in the same application domain
- Advantages: Accurate if project data available
- Disadvantages: Impossible if no comparable project has been tackled.
Needs systematically maintained cost database
1.3.3 Parkinson's Law
- The project costs whatever resources are available
- Advantages: No overspend
- Disadvantages: System is usually unfinished
1.3.4 Pricing to win
- The project costs whatever the customer has to spend on it
- Advantages: You get the contract
- Disadvantages: The probability that the customer gets the system he
or she wants is small. Costs do not accurately reflect the work required
1.3.4.0 Estimation methods
- Each method has strengths and weaknesses
- Estimation should be based on several methods
- If these do not return approximately the same result, there is
insufficient information available
- Some action should be taken to find out more in order to make more
accurate estimates
- Pricing to win is sometimes the only applicable method
1.3.5 Algorithmic cost modelling
- Cost is estimated as a mathematical function of product, project and
process attributes whose values are estimated by project managers
- The function is derived from a study of historical costing data
- Most commonly used product attribute for cost estimation is LOC
(code size)
- Most models are basically similar but with different attribute values
1.3.5.0 The COCOMO model
- Developed at TRW, a US defense contractor
- Based on a cost database of more than 60 different projects
- Exists in three stages
- Basic - Gives a 'ball-park' estimate based on product attributes
- Intermediate - modifies basic estimate using project and process
attributes
- Advanced - Estimates project phases and parts separately
1.3.5.0 Project classes
- Organic mode small teams, familiar environment, well-understood
applications, no difficult non-functional requirements (EASY)
- Semi-detached mode Project team may have experience mixture,
system may have more significant non-functional constraints,
organization may have less familiarity with application (MODERATE)
- Embedded Hardware/software systems, tight constraints, unusual for
team to have deep application experience (HARD)
1.3.5.0 Basic COCOMO Formula
- Organic mode: PM = 2.4(KDSI )1.05
- Semi-detached mode: PM = 3(KDSI )1.12
- Embedded mode: PM = 3.6(KDSI )1.2
KDSI: thousands of delivered source instructions
M: project complexity multipler -- initially 1.0
PM: person-months
1.3.5.0 Effort estimates
1.3.5.0 COCOMO -- Time to Develop
- Organic mode: TDEV = 2.5(PM )0.38
- Semi-detached mode: TDEV = 2.5(PM )0.35
- Embedded mode: TDEV = 2.5(PM )0.32
TDEV: time (months) to develop
Note that TDEV does not depend on number of people assigned.
1.3.5.0 COCOMO examples
- Organic mode project, 32KLOC
- PM = 2.4(32)1.05 = 91 person months
- TDEV = 2.5(91)0.38 = 14 months
- N = 91/14 = 6.5 people
- Embedded mode project, 128KLOC
- PM = 3.6(128)1.2 = 1216 person-months
- TDEV = 2.5(1216)0.32 = 24 months
- N = 1216/24 = 51 peoples
1.3.5.0 COCOMO assumptions
- Implicit productivity estimate
- Organic mode = 16 LOC/day
- Embedded mode = 4 LOC/day
- Time required is a function of total effort NOT team size
- Not clear how to adapt model to personnel availability
1.3.5.0 Intermediate COCOMO
- Takes basic COCOMO as starting point
- Identifies personnel, product, computer and project attributes which
affect cost
- Multiplies basic cost by attribute multipliers which may increase or
decrease costs
1.3.5.0 Personnel attributes
- Personnel attributes
- Analyst capability
- Virtual machine experience
- Programmer capability
- Programming language experience
- Application experience
- Product attributes
- Reliability requirement
- Database size
- Product complexity
1.3.5.0 Computer attributes
- Computer attributes
- Execution time constraints
- Storage constraints
- Virtual machine volatility
- Computer turnaround time
- Project attributes
- Modern programming practices
- Software tools
- Required development schedule
1.3.5.0 Attribute choice
- These are attributes which were found to be significant in one
organization with a limited size of project history database
- Other attributes may be more significant for other projects
- Each organization must identify its own attributes and associated
multiplier values
1.3.5.0 Model tuning
- All numbers in cost model are organization specific. The parameters of
the model must be modified to adapt it to local needs
- A statistically significant database of detailed cost information is
necessary
- Fitting to database used to set attribute multipliers
- [SJZ: In practice, fitting to such a large number of inter-dependent
variables is unreliable.]
- Different attributes may be combined into aggregate multipliers.
1.3.5.0 Example
- Embedded software system on microcomputer hardware.
- Basic COCOMO predicts a 45 person-month effort requirement
- Attributes = RELY (1.15), STOR (1.21), TIME (1.10), TOOL (1.10)
- Intermediate COCOMO predicts
- 45 × 1.15 × 1.21 × 1.10 × 1.10 = 76 person-months.
- Total cost = 76 × $7000 = $532, 000
1.3.5.0 Project planning example
- Algorithmic cost models provide a basis for project planning as they
allow alternative strategies to be compared.
- Alternative 1: Use more powerful hardware to reduce TIME and STOR
attribute multipliers
- Alternative 2: Invest in support environment
1.3.5.0 Alternative 1: Hardware investment
- Processor capacity and store doubled
- TIME and STOR multipliers = 1
- Extra investment of $30, 000 required
- Fewer tools available
- Total cost = 45 × 1.24 × 1.15 × $7000 = $449, 190
- Cost saving = $83, 000
1.3.5.0 Alternative 2: Environment investment
- In addition to hardware costs
- Reduces turnaround, tool multipliers. Increases experience multiplier
- C = 45 × 0.91 × 0.87 × 1.1 × 1.15 × 7000 = $315, 472
- Saving from investment = $133, 718
1.3.5.0 Cost Estimation -- Summary
- Estimate the project cost to the supplier then decide on the price to
the customer
- Factors affecting productivity include individual aptitude, domain
experience, the development project, the project size, tool support and
the working environment
- Prepare cost estimates using different techniques. Estimates should be
comparable
1.3.5.0 Summary (cont.)
- Algorithmic cost estimation is difficult because of the need to estimate
attributes of the finished product
- Algorithmic cost models are a useful aid to project managers as a means
of comparing different development options
- The time required to complete a project is not simply proportional to
the number of people working on the project