Cost Estimation using COCOMO model

by Ashish Chaudhary under the Software Maintenance KA.

The Constructive Cost Model (COCOMO) is an algorithmic, parametric, software project cost estimation model. It uses regression analysis in which the independent variables (parameters) are derived from (1) historical software project data, and (2) current software project characteristics.

Classification of the Skill


Skills required for cost estimating vary as widely as the types of work activities and work outputs being estimated.

Being a technical/hard skill , Cost estimating group is usually formed consisting of individuals with the appropriate technical, business , financial, marketing, and mathematical skills.
Cost estimation is used to predict the quantity, cost and price of the resources required by the scope of a project
moreover, it is Knowledge-based skill, which is acquired through education, training, and on-the-job experience.

Pre-requisites of the Skill


COCOMO is not only capable of estimating the cost and schedule for a development started from "scratch", but it is also able to estimate the cost and schedule for products that are building upon already existing code

For the organization to develop a cost estimation model[3] 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.
Also
Before estimating cost with Cocomo model ,
  • A deep understanding of the Type of project[1] is necessary, which includes classifying projects as Organic , semi-detached, and embedded
  • There are three modes of development:
  • Organic Mode:
    "Small" teams with "Good" experience working with "Less than rigid" requirements
  • Semi-detached Mode:
    "Medium" teams with mixed experience working with a mix of rigid and less than rigid requirement
  • Embedded Mode:
    Developed within a "tight" constrains (hardware , software ,operational...), may require new technology , unfamiliar algorithm or new problem-solving method.
  • KDSI (software size in Kilo Delivered Source Instructions)
  • Data Analysis : The data from past projects is to be collected, and relationships among the attributes should be measured and examined.



One of the hardest things to do in software development is to determine how long and how much it will take to deliver a new software product. Should it be so hard? The answer is not straightforward.

  • Cost estimation is an important phase done throughout the software life cycle to allow for refinement.
  • Estimating costs correctly is important because it help make the right commitment of dollars to a business activity.
  • Software costs estimation is inherently difficult, and humans are terribly bad at predicting absolute outcomes.
  • No two projects are the same; each is unique in what it sets out to achieve and unique in the myriad of parameters that form its existence.
  • Cost estimations are proved to be very vital in the software engineering
  • COCOMO assist in the budgetary planning[4] and schedule estimation of a software project prior to any work beginning.
  • In addition, COCOMO also assists in the budgetary planning of the maintenance effort after delivery of the software package up to a maximum of a five-year period.
  • COCOMO is mathematical equation that can be fit to measurements of effort for different-sized completed projects, providing estimates for future projects.

Roles for skill


  • Software Project manager.
  • Team Leader.

They can develop a model (or multiple models) of projects in order to identify potential problems in resources, personnel, budgets, and schedules both before and after the potential software package has been completed.



Set of activities performed and artifacts related to the skills are as follow:
  • projects are to be classified based on their complexity : Organic , Semi-detached, Embedded, Cloud comp.
  • As Cocomo(I)[1] consist of a hierarchy of three increasingly detailed and accurate forms: I.e. Basic COCOMO, Intermediate COCOMO, and Detailed COCOMO.
  • Choosing out the Basic Cocomo for cost and effort estimation as it is intended for quick, early, and rough order of magnitude estimates of software costs.
  • Used from the beginning when little knowledge is available.
  • Effort is estimated using the equation
Effort Estimation = a(S)^bF
  • Where E = effort in person-months
  • a, b = Depends on type of software project
  • S = software size in Kilo Delivered Source Instructions (KDSI)
  • F = adjustment factor of 1
  • Duration of project is calculated using the equation :
D = c(E)^d
  • Where D = development time in months
  • c, d = Depends on type of software project
  • E = Effort estimated.
  • Cost is estimated out using the equation :
P = E/D
  • Where P = Number of people required

Real-World Example/Scenario of Skill


The constructive cost model was developed by Barry W. Boehm in the late 1970s
  • Drew on a study of 63 projects at TRW Aerospace
  • The website provided by NASA on Cocomo, provides a Cocomo calculator with cost drivers for a complex project.
P = E/D
  • COCOMO I has been extended for use in cloud computing[2], specifically by adding a development mode called cloud computing platform.
  • Tim Berners-Lee's vision of the Semantic Web or Web 3.0 is to transform the World Wide Web into an intelligent Web system of structured, linked data which can be queried and inferred as a whole by the computers themselves.
  • Business model is the cloud computing platform, where hardware, software, tools, and applications will be leased out as services to tenants across the globe over the Internet.
  • There are many advantages of this business model, like no capital expenditure, speed of application deployment, shorter time to market, lower cost of operation, and easier maintenance of resources, for the tenants.
  • The project followed Waterfall SDLC.
graph Extended COCOMO for SW effort estimation
graph Extended COCOMO for SW dev. time
graph Effort Vs Product Size
  • A case study of the COCOMO II[4] method applied in a safety-critical level, A software development project of an aeronautical company.

Role of Academia or Industry in Cultivating the Skill


Research collaboration between industry and academia supports improvement and innovation in industry and helps ensure the industrial relevance of academic research.
Academia and industry have played a significant role in the upliftment and cultivating of this respected skill
Having a coup d'oeil over the prerequisite, Academia is a major factor contributing to not only theoretical knowledge of a skill but also giving a practical glance over it.
Significant projects contributed towards the skill, as cost and effort estimating is a prime factor for the success of a project
universities project allowed to implement Cocomo in projects of small size and have a practical result of it.

  • Implemented a real time "Descriptive Statistics" project where the Cost and effort estimation of a project was calculated out using COCOMO and compared to actual effort.

Where

Effort Calculation graph

Considering it an organic project and using basic COCOMO on it We got

Effort Calculation graph
  • And after implementing the project we were able to conclude that actual effort was closer to it and we ended up around 50hours in total as team.

Tools Supporting the Skill

  • The calculations of estimates based on COCOMO become increasingly intricate and lengthy as the fidelity of the model increases.
  • For small projects, calculations can be carried out manually for COCOMO I, but not for COCOMO II
  • Basic COCOMO Calculators
  • Some tools for Cocomo II are :

Skill Self-Assessment


On a Scale of 10 , I would give a mark of 8.0 for my skill
  • Indeed, a [programmer] "who knows how to code well does not necessarily know how to estimate", or how to communicate the estimate convincingly.
  • As even after applied practical knowledge on the skill by implementing it on my project, so there is still always scope for polishing this skill further by going further deep with different types of project involved in cost estimation and involving various Cost Drivers (product, hardware, personnel, and project attributes) with it, as they are always not independent
  • As any estimate, including a cost estimate, is exactly that -an estimate, not an assurance---and should therefore be treated with caution

References


  1. Kamthan, P. (n.d.).Introduction to Software Project Cost Estimation. Retrieved ConcordiaENCS:https:// users.encs.concordia.ca/~kamthan/courses/soen-6611/software_project_cost_estimation_introduction.pdf
  2. .[Guha, 2013] Impact of Semantic Web and Cloud Computing Platform on Software Engineering. By R. Guha. In: Software Engineering Frameworks for the Cloud Computing Paradigm. Z. Mahmood, S. Saeed (Editors). Springer-Verlag. 2013. Pages 3-24.
  3. https://www.grin.com/document/457410#:~:text=Constructive%20Cost%20Model%20developed%20by,on%20cocomo%20has%20been%20increased.
  4. https://www.scielo.br/pdf/jatm/v11/2175-9146-jatm-11-e1819.pdf
  5. https://en.wikipedia.org/wiki/COCOMO#cite_note-1