Software organizations and those supporting the cost estimation process should maintain a historical record of the data used to generate the cost estimates as well as the actual costs associated with those projects. Comparing the actual costs to the estimated costs and determining the basis for the differences allows for improved accuracy in future estimations. Additionally, data in cost repositories can help determine project cost growth over time and deviation between estimates and actuals.
Cost repositories are useful during all levels of planning: proposals, concept studies, feasibility studies, detailed task planning, as well as independent cost assessments. Cost repositories should be populated during the cost estimation process and updated throughout the process so that the data in the repository accurately reflects the data used as the basis for the cost estimate. The data need to be “sufficient to break them down to the lower levels needed to estimate various [work breakdown structure] (WBS) elements.” Additionally, cost model inputs should have a pedigree associated with them. (Information on cost model input pedigree can be found in NASA-STD-7009 and NASA-HDBK-7009 .)
Cost repositories should contain technical, schedule, program, and cost data in a format that allows meaningful data roll-up and comparison across multiple projects. The recommended minimum data set includes:
- Planned and actual effort.
- Planned and actual schedule dates (e.g., start, major milestones, completion).
- Planned and actual cost.
- Planned and actual values for key cost parameters such as:
- Software size (e.g., lines of new, reused, and modified-reused code).
- Requirements count.
- Defects count for maintenance or sustaining engineering projects.
- Cost model inputs (e.g., complexity, requirements volatility).
- Project descriptors or metadata that typically includes software class, software domain/type, and requirements volatility.
Additional repository data could include:
- Project name, organization.
- Software language.
- Software classification.
- Constraints (e.g., resources, budget, schedule).
A cost repository could be a simple spreadsheet or a database depending on the amount data to be stored and maintained for the organization as well as the number of stakeholders who need to access, use, and maintain the data. The implementation tool could also depend upon the type of analysis that will be performed on the data and whether there is benefit to having the tool perform some of that analysis.
Data in cost repositories should be reported to or accessible by organizational and Center-level data systems for organizational or Center-level analysis, measurements, and process improvements.
NASA-specific software cost estimation process information is available in Software Processes Across NASA (SPAN), accessible to NASA users from the SPAN tab in this Handbook.
Additional guidance related to software cost repositories may be found in the following related requirements in this Handbook: