SOFTWARE METRICS USING CONSTRUCTIVE COST MODEL Prepared By KONDAM GOPAL REDDY TABLE OF CONTENTS 1. 2. 3. 4. ABSTRACT INTRODUTION CONSTRUCTIVE COST MODEL COCOMO MODELS Basic COCOMO CLASSES OF COCOMO INTERMEDIATE COCOMO ADVANCED COCOMO 5. LIMITATIONS OF COCOMO 6. COST ESTIMATION ACCURACY 7. COCOMO II 8. COCOMO II CALCULATION 9. COCOMO II USES 10.CONCLUSION 11.REFERENCES 1 1 2 2 2 3 4 4 4 5 5 6 6 6 7 ABSTRACT: Software products are said to be feasible if they are developed within the budget constraints. The cost estimation models are used to predict the effort and cost required to develop a project .These models give a base to predict the cost for developing a software project. The cost estimation can be used to develop a product utilizing optimum resources. In this paper we will be discussing Constructive Cost Model as the cost estimation model. INTODUCTION: Software cost estimation model is an indirect measure, which is used by software personnel to predict the cost of a project. The development of software product varies depending upon the environment in which it is being developed. For projects with familiar environment it is easy to predict the cost of the project. The estimation model is useful for trade off between the developer and customer. Organization can realize of what is achievable and deliverable to the customer.[1] For the organization to develop a cost estimation model the following things are required. List important or critical cost drivers. Prepare a scaling model for each cost driver. Find projects with similar environments. Compare the project with previous familiar projects. Evaluate the project whether it is feasible within the budget constraints. Incorporate the critical features in an iterative manner.[1] Cost drivers are those critical features which have an impact on the project. The cost drivers may vary the cost of building a project. The most important cost driver is size of the project. Size of the project is measured in Kilo lines of code (KLOC). Function points are the empirical measurement to measure size of the project. Function points may vary the size of the project due to the variation in Number of inputs Number of outputs Number of inquires Number of files Number of interfaces[1] CONSTRUCTIVE COST MODEL (COCOMO): Constructive Cost model was developed by Barry W Boehm in 1981[3]. It is an algorithmic cost model. Algorithmic cost model is developed based on relating the current project to previous projects. It is based on historical information. [2] Cocomo is based on size of the project. The size of the project may vary depending upon the function points. [1] COCOMO MODELS: BASIC COCOMO It is used for relatively small project. Only a few cost drivers are associated. Cost drivers depend upon project size mainly. Useful when the team size is small, i.e. small staff. The effort (E) and schedule (S) of the project are calculated as follows Effort E = a * (KDSI) b * EAF Where KDSI is number of thousands of delivered source instructions a and b are constants, may vary depending on size of the project .[2] Schedule S= c * (E) d where E is the Effort and c, d are constants. [1] EAF is called Effort Adjustment Factor which is 1 for basic cocomo , this value may vary from 1 to 15.[3] Constants Project modes a b c d Organic project mode 2.4 1.05 2.5 0.38 Semi-detached project mode 3.0 1.12 2.5 0.35 Embedded project mode 3.6 1.20 2.5 0.32 Table 1 [3] The above table 1 shows typical constant values that have been calculated from various projects. The basic cocomo gives the magnitude of cost of the project. It varies depending upon size of the project. The various classes of software projects are Organic mode projects : Used for relatively smaller teams. Project is developed in familiar environment. There is a proper interaction among the team members and they coordinate their work. Bohem observed E=2.4(KDSI)1.05 E in person-months. And S=2.5(E)0.38. [2] Semi-detached mode projects : It lies between organic mode and embedded mode in terms of team size. It consists of experienced and inexperienced staff. Team members are unfamiliar with the system under development. Bohem observed E=3(KDSI)1.12 E in person-months. And S=2.5(E)0.35.[2] Embedded mode projects : The project environment is complex. Team members are highly skilled. Team members are familiar with the system under development. Bohem observed E=3.6(KDSI)1.20 E in person-months. And S=2.5(E)0.32.[2] Intermediate COCOMO It is used for medium sized projects. The cost drivers are intermediate to basic and advanced cocomo. Cost drivers depend upon product reliability, database size, execution and storage.[2] Team size is medium. Advanced COCOMO It is used for large sized projects. The cost drivers depend upon requirements, analysis, design, testing and maintenance. Team size is large. LIMITATIONS OF COCOMO COCOMO is used to estimate the cost and schedule of the project, starting from the design phase and till the end of integration phase. For the remaining phases a separate estimation model should be used. COCOMO is not a perfect realistic model. Assumptions made at the beginning may vary as time progresses in developing the project. When need arises to revise the cost of the project. A new estimate may show over budget or under budget for the project. This may lead to a partial development of the system, excluding certain requirements. COCOMO assumes that the requirements are constant throughout the development of the project; any changes in the requirements are not accommodated for calculation of cost of the project. There is not much difference between basic and intermediate COCOMO, except during the maintenance and development of the software project.[1] COCOMO is not suitable for non-sequential ,rapid development, reengineering ,reuse cases models.[3] COST ESTIMATION ACCURACY The cost estimation may vary due to changes in the requirements, staff size, and environment in which the software is being developed. The calculation for cost estimation accuracy is given as follows Absolute error= (Epred - Eactual) Percentage error= (Epred - Eactual)/Eactual Relative error= 1/n ∑ (Epred - Eactual)/Eactual The above results give a more accurate estimation of costs for future projects.[3] The cost estimation model now becomes more realistic . COCOMO II COCOMOII was developed in 1995 It could overcome the limitations of calculating the costs for nonsequential, rapid development, reengineering and reuse models of software. It has 3 modules Application composition: - good for projects with GUI interface for rapid development of project. Early design: - Prepare a rough picture of what is to be designed. Done before the architecture is designed. Post architecture: - Prepared after the architecture has been designed. [3] COCOMO II calculation In COCOMO II the constant value b is replaced by 5 scale factors. [3] Effort (E) is calculated as follows E = a * (KDSI) sf * π (EM) Where a is constant, sf is scaling factor, EM is Effort Multiplier (7 for Early design, 17 for Post architecture). [4] COCOMO II USES Helps in making decisions based on business and financial calculations of the project. Establishes the cost and schedule of the project under development, this provides a plan for the project. Provides a more reliable cost and schedule, hence the risk mitigation is easy to accomplish. It overcomes the problem of reengineering and reuse of software modules. Develops a process at each level . Hence takes care of the capability maturity model.[5] CONCLUSION: Constructive Cost Model developed by Barry W Boehm, is the most common and widely used cost estimation models for most software projects. The effort and schedule calculated by the model is based on two things, historical information and experience. Thus the reliability on cocomo has been increased. The website provided by NASA on cocomo, provides a cocomo calculator with cost drivers for a complex project. Cost drivers directly have an impact on the development of the project. References: [1] Farshad Faghih,” Software Effort and Schedule Estimation”, http://www2.enel.ucalgary.ca/People/Smith/619.94/prev689/1997.94/reports/fa rshad.htm [2]IAN SOMMERVILLE,” Software Engineering”, published by addision wesley, pg 514521. [3]Seth Bowen, Samuel Lee, Lance Titchkosky,”Software cost estimation”, http://www.computing.dcu.ie/~renaat/ca421/BLTCostEst.ppt [4]Barry Boehm, “Cost Estimation With COCOMO II”, http://sunset.usc.edu/classes/cs577a_2002/lectures/19/ec19.pdf [5]Center for Systems and Software engineering, “COCOMO II”, http://sunset.usc.edu/csse/research/COCOMOII/cocomo_main.html.