Software Cost Estimation Flashcards
Software Cost Estimation
Involves predicting the resources required for a software development process.
Fundamental Estimation Questions
- How much effort is required to complete an activity?
- How much calendar time is needed to complete an activity?
- What is the total cost of an activity?
- Project estimation and scheduling and interleaved management activities.
Software Cost Components
- Hardware and software costs.
- Travel and training costs.
- Effort costs (salaries of engineers, social and insurance cost)
- Effort costs must take overheads into account (building, lighting, heating, networking, communications, shared facilities)
Cost and Pricing
Estimates are made to discover of producing a software system.
Software Pricing Factors
- market opportunity
- cost estimate uncertainty
- contractual terms
- requirements volatility
- financial health
Programmer Productivity
A measure of the rate at which individual engineers involved in software development produce software and associated documentation.
We want to measure useful functionality produced per time unit.
Productivity Measures (Size-Related measures)
Based on some output from the software process.
Productivity Measures (Function-related measures)
Based on an estimate of the functionality of the delivered software.
Estimation Problems (for productivity)
- Estimating size of the measure.
- Estimating the total number of programmer months which have elapsed.
- Estimating contractor productivity and incorporating this estimate in overall estimate.
Productivity Comparisons
The lower level the language, the more productive the programmer.
Function Points
Based on combination of program characteristics:
- External inputs and outputs.
- User interactions.
- External interfaces.
- Files used by the system.
A weight is associated with each of these.
Object Points
Alternative function-related measure to function points.
Object points != object classes.
Number of object points in a program is a weighted estimate of:
- Number of separate screens that are displayed.
- Number of reports that are produced by the system.
- Number of modules that must be developed.
Factors Affecting Productivity
- application domain experience
- process quality
- project size
- technology support
- working environment
Quality and Producitivity
Metrics can be based on volume/unit time.
Productivity may be increased as the cost of quality.
Estimation Techniques
There is no simple way to make an accurate estimate of the effort required to develop a software system (initial estimates are based upon inadequate information, unfamiliar computers, unknown amount of people in project).
Self-fulfilling Product Cost
The estimate defines the budget and the product is adjusted to meet the budget.
Estimation Techniques
- Algorithmic cost modelling.
- Expert judgement.
- Estimation by analogy.
- Parkinson’s Law.
- Pricing to win.
Algorithmic Code Modelling
A formulaic approach based on historical cost information and which is generally based on size of software.
Formula - A x (Size^B) X M
A = Organisation-dependent constant
B = disproportionate effort for large projects
M = multiplier reflecting product, process and people attributes.
Expert Judgement
One or more experts in both software development and the application domain use their experience to product software costs.
Expert Judgement Advantages and Disadvantages
Adv: cheap estimation method and can be accurate.
Dis: very inaccurate is there are no experts.
Estimation By Analogy
Cost of project is computed by comparing the project to a similar project in the same application domain.
Estimation By Analogy Advantages and Disadvantages
Adv: accurate if project data available.
Dis: impossible if no comparable project gas been tackled.
Parkinson’s Law
The project costs whatever resources are available.
Adv: no overspend.
Dis: system is usually unfinished.
Parkinson’s Law Advantages and Disadvantages
Adv: no overspend.
Dis: system is usually unfinished.
Pricing To Win
The project costs whatever the customer has to spend on it.
Pricing to win seems unethical and unbusinesslike, but when detailed information is lacking it may be the only appropriate strategy.
Pricing To Win Advantages and Disadvantages
Adv: you get the contract.
Dis: the probability of the customer getting the system they want is small, because costs do not accurately reflect work required.
Top-Down Estimation
Start at system level and assess overall system functionality and how this is delivered through subsystems.
Bottom-Up Estimation
Start as component level and estimate effort required for each component. Add these efforts to reach final estimate.
Experienced-based Estimations
Estimating is mainly based upon experience, however, new methods and technologies may make estimating based on experience inaccurate.
Estimation Accuracy
Size of software system can only be known when finished.
Several factors influence the size:
- Use of COTS and components.
- Programming language.
- Distribution of system.
Size becomes more accurate when development progresses.