Cost Estimation
2 formulas we must memorize (20 pts in exam on COCOMO)
- Predicting the resources required for a software development process
4 ways to measure productivity
Fundamental estimation questions
- How much effort is requried to complete an activtiy?
- How much calendar time isneed to complete an activity
- What is the total cost of an acitvity?
- project estimation and scheduling and interleaved management activities
Goal when setting project estimation with customer, extend the due date as much as possible
- if it takes 4 months to finish extends to a year and haggle for 6 months
Fiscal vs Physical
Fiscal is realistic: i.e. we actually work 5 hours a day not 8
Calendar time is useless
Software cost components (IMPORTANT)
4 things
- Hardware and software costs
- Travel and (entertainment) training costs (TTN / T & E)
- Effort costs (the dominate factor in most projects) (MAJOR IMPORTANT ONE)
- salaries of engineers involved in proj
- Social and insurance costs
- Effort costs must take overheads into account
- cost of building, heating, lighting
- costs of networking and communication
- cost of shared facilities
Software pricing factors
- Market opportunity
- cost estimates
- contractual terms
- Requirements volatility
- Financial Health
Productivity measures (IMPORTANT)
- Size related: (line of code) (COCOMO calls it source line of code // not commented code but runtime code)
- Based on some output from the software process. This may be lines of delievered source code, object code instructions, etc.
- Function related: (you look at functions, Inputs and outputs, screens)
- based on an estimate of the functionality of the delievered software. Function-points are the best known of this type of measure
Measurement problems
- Estimating the size of the measure
- estimating total number of programmerm onths which have elapsed
- Estimating contractor productivity (e.g. documentation team) and incorporating this estimate in overall estimate
Functions points
screens (not lines of code)
Object points
- Number of seperate screens
- number of reports
- number of 3gl modules that must be developed to supplement the 4gl code
Factors affecting productivity
- Application domain experience
- Knowledge of the application domain is essential for effective software devlopment. Engineeers who already understand a domain are likely to be most productive
- Process quality
- Dev process used can hava significant effect on productivty
- project size
- Larger a rpoject the more time required for team communications. less time available for dev. so individual productivity is reduced.
- technology support working environment
- Good support technolgoy such as CASE tools, supportive config. management systems. (can improve productivity)
- Working enviornment
- a quiet working evnironement with private workl areas contributes to improved productivity
Estimation techniques (IMPORTANT)
4 ways we do estimations
what are the 4 estimation tech.
- Algorithmic cost modelling
- expert judgement
- estimation by analogy
- price to win
Algorithmic code modelling
uses formula
Expert judgement
How long does this take to do this or that, oh john knows because he's an expert
advantage: cheap disadvantage: verry inaccurate if theres no experts
Estimation by analogy
Comparison to previous project w/ more or less (if a small took us 4 months big will take 6)
advantages: accurate project data to compare disadvantages: inaccurate if first project
Pricing to win
- The approach may seem unethical and unbuisnesslike
- however, when detail information is lacking it may be the only appropriate strategy
- The project cost is agreed based on an outline proposal and dev. constrained by that cost
- Detailed specification may be negotiated or an evolutionary approach used for system development
Management Options
- Use existing hardware dev system and team.
- Processor and memory upgrade
- Memory upgrade only
- More experienced staff
- New devlopment system
- Staff with hardware experience
Project duration & Staffing
- time required is independent of the number of peoplel working on the project.
- Hiring is a lot like marrying (its difficult to find people)
Staffing requirements
- Staff required cant be computed by diving the dev. time by the req. schedule
- The number of people working on a project varies depending on the phase of the proj.
- more people who work != fast development
COCOMO
Highlights
6 important items (7th item optional)
COCOMO = Constructive Cost model Barry Bohiem (BANE) -> invented COCOMO
- SLOC (Source Line of Code)
- What is definition of SLOC
- Only source line of code delievered to customer count
- Source lines created by project staff not a tool
- 1 line of code == 1 logical line of code
- Declarations are counted
- Comments are not counted
- What is definition of SLOC
- Scale Drivers (MUST REMEMBER THESE)
- 5 scale drivers are (Big picture, MACRO):
- Precendentedness
- Development Flexibility
- Architecture / Risk Resolution
- Team Cohesion
- Process Maturity
- 5 scale drivers are (Big picture, MACRO):
- Cost Drivers (Don't have to remember)
- 17 cost drivers (MICRO)
- Effort Equation (MOST IMPORTANT)
- Effort = 2.94 * EAF * (KSLOC)^E
- Where EAF = effort adjustment factor derived from cost drivers
- E is an exponent derived from the five scale factors
- KSLOC -> KiloSLOC (x10^-3) (given 8000x10-3 SLOC or 8 Kilo SLOC)
- ex. Effort = 2.94 * (1.0) * (8)^1.0997 = 28.9 person months
- Effort = 2.94 * EAF * (KSLOC)^E
- Schedule Equation (MOST MOST IMPORTANT)
- Duration = 3.67 * (EFFORT)^SE
- Where Effort: is the effort from the COCOMO effort equation
- SE is the schedule equation exponent derived from the five scale drivers
- ex. Duration = 3.67 * (42.3)^.3179 = 12.1 month's
- Duration = 3.67 * (EFFORT)^SE
- Average Staffing
- Average staffing = (EFFORT) / (DURRATION)
- ex. Average Staffing = (42.3 Person months) / (12.1 months) = 3.5 people
- Average staffing = (EFFORT) / (DURRATION)
What does cocomo stand for? what are the 6 parts of cocomo?