Software Project Estimation Methods
Software Project Estimation Methods
The combination of Function Point Analysis and COCOMO can enhance project estimation accuracy by integrating their different focuses: Function Point Analysis provides a user-oriented view of software complexity based on functionalities, while COCOMO utilizes project size in LOC and defined modes (Organic, Semi-Detached, Embedded) to calculate effort. The functional decomposition of Function Points captures user needs irrespective of technical implementations, which is complemented by COCOMO's attention to code volume and project constraints. Together, they offer a holistic view by addressing both functional and technical dimensions, allowing for refined estimation adjustments to the project's unique characteristics .
The calculation of effort in Basic COCOMO primarily relies on the size of the project measured in Kilo-Lines of Code (KLOC) and utilizes a mathematical formula with mode-specific constants, demonstrated as Effort = a * (KLOC)^b. For example, in Semi-Detached mode, a = 3.0 and b = 1.12, indicating effort scales based on project size and mode-determined factors. In contrast, Function Point Analysis bases effort calculation on function points adjusted by system characteristics, reflecting user-centric functional aspects rather than raw code size alone .
The 14 General System Characteristics influence the Value Adjustment Factor in Function Point Analysis by providing a nuanced adjustment to the Unadjusted Function Points through their respective degrees of influence on a scale of 0 to 5. These characteristics, which include aspects like data communication and operational ease, cumulatively determine the Total Degree of Influence (TDI) that modifies the UFP. The influence scores are aggregated, and the VAF is calculated using the formula VAF = 0.65 + (0.01 * TDI), thus translating these general system features into a tangible impact on the function point estimation .
Function Point Analysis is advantageous over Lines of Code (LOC) based estimation in diverse project environments because it is independent of programming languages, technologies, or development methodologies, thus making it more applicable across varied contexts. It measures software size based on user-visible functionality and complexity factors, capturing the user-centric aspects of the system and not just the dimensions of technical implementation. This method accommodates variations in coding practices and promotes clearer communication of software functionality, making it more adaptable for projects involving multiple teams or varying domains .
Using historical data for cost and effort estimation in Function Point Analysis is effective because it allows organizations to calibrate their estimates based on past experiences, leading to more accurate predictions. This method leverages previous project results to establish benchmarks like effort per function point or cost per function point, enabling improved planning and allocation. However, the approach may have limitations if past projects do not reflect the current project's technological or contextual circumstances, potentially misleading without continual revision and update of historical data .
The cost estimation process in the Basic COCOMO model assumes a constant average cost per person-month, which varies significantly based on location, team experience, and overhead. For instance, the example estimation assumes $8,000 per person-month, which provides a standardized base for calculating total project cost by multiplying it with the estimated effort in person-months. This process inherently assumes stability in cost variables and does not explicitly account for on-the-fly changes in team dynamics or external economic factors that may alter the real cost .
The steps in Function Point Analysis begin with determining the Unadjusted Function Points (UFP) by identifying and categorizing system functions into five types: External Inputs, External Outputs, External Inquiries, Internal Logical Files, and External Interface Files, each classified by complexity levels with assigned weights. Once UFP is calculated, the Value Adjustment Factor (VAF) is determined by assessing 14 General System Characteristics using influence scores ranging from 0 to 5. This TDI results in VAF = 0.65 + (0.01 * TDI). Finally, the Final Function Points (FP) are calculated as FP = UFP * VAF, offering a comprehensive, adjusted functional size of the software project .
The Complexity Adjustment Factor (CAF) in Function Point Analysis differentiates various function types by assigning different weights based on their complexity levels—Low, Average, and High. For example, External Inputs (EI) have weights of 3, 4, and 6 for Low, Average, and High complexities, respectively, while Internal Logical Files (ILF) have corresponding weights of 7, 10, and 15. This system ensures that the importance and effort required by each functional type is appropriately captured whether it's an input, output, or internal file .
Choosing a Semi-Detached mode in the COCOMO model implies a project with moderate complexity involving a mix of experienced and inexperienced staff, typically medium-sized and with familiar objectives—striking a balance between the flexibility of organic projects and the rigidity of embedded ones. This choice affects the constants used in effort estimation equations, as Semi-Detached projects utilize a = 3.0 and b = 1.12, while different coefficients apply for Organic or Embedded modes. This choice can lead to a more adaptable and moderate estimation reflecting the balance between strict requirements and flexible settings .
The Value Adjustment Factor (VAF) in calculating Final Function Points plays a critical role in fine-tuning the unadjusted function point count (UFP) by considering the specific technical and environmental factors of the project. It accounts for 14 General System Characteristics like data communications, performance, and end-user efficiency by assigning influence scores, which are summed to calculate the Total Degree of Influence (TDI). This sum adjusts the UFP through the formula VAF = 0.65 + (0.01 * TDI), thus reflecting complexities that standard function count might overlook .