http://www.stsc.hill.af.mil/crosstalk/2004/10/0410Jones.html has examined projects.
They found that projects that used professional software estimation tools were more likely to be on-budget and generally within planned estimates than projects that did not. They list the following planning tools:
- Before You Leap
- CHECKPOINT
- Constructive Cost Model (COCOMO) II
- CostXpert
- KnowledgePlan
- Parametric Review of Information for Costing and Evaluation — Software (PRICE-S)
- Software Evaluation and Estimation of Resources — Software Estimating Model (SEER-SEM)
- Software Life Cycle Management (SLIM)
Using two automated cost estimation tools was not uncommon.
Successful cost estimation involved the following techniques:
- Software estimating tools (COCOMO II, CostXpert, KnowledgePLAN, PRICE-S, SEER-SEM, SLIM, etc.).
- Formal sizing approaches for major deliverables based on function points.
- Comparison of estimates to historical data from similar projects.
- Availability of trained estimating specialists or project managers.
- Inclusion of new and changing requirements in the estimate.
- Inclusion of quality estimation as well as schedule and cost estimation.
They also list project management tools (not specific to software projects):
- Artemis Views
- Microsoft Project
- Primavera
- Project Manager’s Workbench
Successful planning involves:
- Using automated planning tools such as Artemis Views or Microsoft Project.
- Developing complete work breakdown structures.
- Conducting critical path analysis of project development activities.
- Considering staff hiring and turnover during the project.
- Considering subcontractors and international teams.
- Factoring in time for requirements gathering and analysis.
- Factoring in time for handling changing requirements.
- Factoring in time for a full suite of quality control activities.
- Considering multiple releases if requirements growth is significant.
Delayed or canceled projects fail often due to planning failures, such as:
- not dealing effectively with changing requirements
- not anticipating staff hiring and turnover during the project
- not allotting time for detailed requirements analysis
- not allotting sufficient time for inspections, testing, and defect repairs
Quality historical data typically consists of:
- Accumulated effort (in WBS).
- Accumulated costs.
- Development productivity.
- Volume and rate of requirements changes.
- Defects by origin.
- Defect removal efficiency.
Quality measures:
- defect volumes by origin (i.e., requirements, design, code, bad fixes) and severity level
- defect severity levels
- defect repair rates
- defect removal efficiency (accumulating all defects found during development and also after release to customers for a predetermined time period)
The bulk of schedule delays and cost overruns tends to occur during testing and is caused by excessive defect volumes.
Successful project management does milestone tracking. A milestone is achieved at the point of formal completion of key deliverables or a key activity. Typical project milestones are:
- Requirements review.
- Project plan review.
- Cost and quality estimate review.
- External design reviews.
- Database design reviews.
- Internal design reviews.
- Quality plan and test plan reviews.
- Documentation plan review.
- Deployment plan review.
- Training plan review.
- Code inspections.
- Each development test stage.
- Customer acceptance test.
Change control
The number of function points can grow over time in projects, thus change control is critical. Change control for successful projects included the following:
- A joint client/development change control board or designated domain experts.
- Using joint application design (JAD) to minimize downstream changes.
- Using formal prototypes to minimize downstream changes.
- Planned usage of iterative development to accommodate changes.
- Formal review of all change requests.
- Revised cost and schedule estimates for all changes greater than 10 function points.
- Prioritizing change requests in terms of business impact.
- Formal assignment of change requests to specific releases.
- Using automated change control tools with cross-reference capabilities.
Quality control
Defect prevention activities:
- JAD for gathering requirements
- formal design methods
- structured coding techniques
- using libraries of proven reusable material
- Formal test plans
- Formal test case construction
Defect removal activities:
- requirements inspections
- design inspections
- document inspections
- code inspections
- Test-plan and test-case inspections.
- Defect repair inspections.
- Software quality assurance reviews.
- Unit testing.
- Component testing.
- New function testing.
- Regression testing.
- Performance testing.
- System testing.
- Acceptance testing.
Some activities benefit both defect prevention and defect removal:
- participation in design and code inspections
For projects in the 10,000- function point range, the successful ones accumulate development totals of around 4.0 defects per function point and remove about 95 percent of them before customer delivery. Of these, about 10 percent or 200 would be fairly serious defects. The rest would be minor or cosmetic defects.
http://www.codeproject.com/KB/architecture/usecasepoints.aspx lists other measurements that can be basis for estimation are:
- McCabe�s Measurement of complexity.
- Henry and Kafura�s Information Flow.
- Halstead measurement of complexity.
- Lines of Code (LOC).
- Function Points. (My old tutorial on function points.)
- Use Case Points.