Object-Oriented Software Cost Estimation Methodologies Compared

Executive Summary Most commonly available software cost estimation methodologies and tools use either source lines of code (SLOC) or function point (FP) measures as the basis for the estimate. While these methodologies and tools may suffice for software projects that use structured software development techniques, when object-oriented (OO) techniques such as use-case modeling are employed, it is more effective to use a methodology that takes advantage of the information provided by the use cases, scenarios, and more in-depth object-oriented metrics. Furthermore, as an organization becomes proficient in developing object-oriented system software, the traditional metrics of SLOC and FPs become less useful because each individual line of code becomes less likely to be like the others. Using use cases as the basis for effort estimation is a valuable addition to the tools available to a project manager, particularly for those projects where use cases are produced as part of the life-cycle process. Though use cases have a wide range of interpretation, which makes it difficult for them to be used confidently as a sizing metric outside a relatively uniform group of applications and practitioners, with standardization similar to that used for function point analysis, this method has the potential to become a mature and widely accepted estimation tool. More in-depth OO metrics, such as the number of top-level classes, weighted methods per class, average depth of inheritance tree, and number of children per base class, can provide a more accurate estimate of the resulting effort required to build the system, but these metrics are typically not available until a little further along in the system life cycle — the high-level design. Virtually every estimation method is susceptible to error and requires accurate historical data for productivity to be useful within the context of an organization. A critical consideration for any estimation model and tool is the ability to calibrate the results to reflect an individual organization's historical productivity data. Other considerations for an effective estimation model and tool include a relatively minimal amount of formal training to use the tool, well-defined sizing inputs (to include a wizard and/or an automated data import/export mechanism), visibility into the estimating algorithm, and adequate documentation. An effective tool provides early estimates that can be refined as more data and detail are developed, provides accurate estimates, and allows for variation in resource expertise, application languages, platform, and reuse. Research on the effectiveness of using OO metrics to estimate effort and schedule is on-going, and validation is still in its infancy. OO size estimation models are continuing to evolve, along with automated tools to support the model calculations. Key to the effective use of these models and tools is the ability to capture project data from the tools that are used to document and analyze the system requirements. Studies have continued to show that using any structured, automated method for software cost estimation is more accurate than unaided developer ad hoc estimates. An immature OO estimation tool is still a worthwhile complement to existing tools based on SLOC and FPs.