×

Constructive Cost Model (COCOMO)

The constructive cost model (COCOMO) is one of the most widely used software cost estimation models. This model is developed by B.W.Boehm in 1981. COCOMO model is based on LOC, i.e., the number of lines of code. This model can be classified into three categories basic, intermediate, and detailed sub-models.

These are the essential parameter of COCOMO which is responsible for the quality of any software product:

Effort: The number of labor required to complete the work. It is measured in person-months units.

Schedule: The amount of time required to complete the work is directly proportional to the effort. It is measured in the unit of time, for example, months, and weeks. 

Various models of COCOMO have been introduced to predict cost estimates at different levels. All the models are applied to different projects according to the requirements. 

Software projects are classified into three categories:

  • Organic
  • Semi-detached
  • Embedded

Organic: In the organic type, the project deals with developing a well-understood application program; the team size is generally small. This category is for the small to medium size software product. In this type, team members have good experience and knowledge. 

Semi-detached: In the semi-detached type, the essential elements are team-size, experience, knowledge of the multiple programming languages. The projects that come under the semi-detached are less familiar and hard to develop. It also requires better guidance, more experienced developers.

Embedded: In the embedded type, a software project requires the highest level of complexity, creativity, and experience. In this category, the larger team size is needed as compared to the previous models. 

Basic COCOMO Model

This model is based on Lines of code. The basic COCOMO model helps to calculate a quick estimation of software development costs. The accuracy of this model is considerably restricted because of the insufficient factor considerations. The Basic COCOMO model’s expression is given as:

 Effort (E) = a*(KLOC)b 
Development Time (Tdev) = c*(E)d 

Where,

KLOC is Kilo's lines of code.

E is the Effort applied in person-month.

Tdev is the development time in months.

The coefficient a,b,c & d are constant and can be calculated using the given table:

Project A b c d
Organic 2.4 1.05 2.5 0.38
Semi-detached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32

When we calculate effort and development time, then the average staff size to complete the project should be calculated as:

Average staff size (SS)  = E/Tdev persons

When the project size is calculated, then we will have to calculate productivity level

Productivity (P) = KLOC/E

Intermediate Model

The basic COCOMO model assumes that effort is the only factor, which calculates the number of lines of code and constants with respect to the multiple software systems. The intermediate COCOMO model refines the initial estimate. This estimate is obtained through the basic COCOMO expressions with the help of a set of fifteen cost drivers, based on various attributes of software development. Boehm requires the project manager to rate these fifteen different parameters for a particular project on a scale of one to three. Then based on these three ratings, he suggests an appropriate cost driver value to be multiplied with the initial estimate that was obtained from the basic COCOMO model.

In general, cost drivers can be grouped into four categories:

Product attributes

  • Required software reliability extent (RELY)
  • Size of the application database (DATA)
  • The complexity of the product (CPLX)

Hardware attributes

  • Run-time performance constraints (TIME)
  • Memory constraints (STOR)
  • The volatility of the virtual machine environment (VIRT)
  • Required turnaround time (TIME)

 Personnel attributes

  • Analyst capability (ACAP)
  • Programmer capability (PCAP)
  • Applications experience (AEXP)
  • Virtual machine experience (VEXP)
  • Programming language experience (LEXP)

Project attributes

  • Use of software tools (TOOL)
  • Modern programming practices (MODP)
  • Required development schedule (SCED)
Cost Drivers Ratings
Very low Low Nominal High Very High Extra-High
Product Attributes            
RELY DATA
CPLX
0.75 - 0.70 0.88 0.94 0.85 1.00 1.00 1.00 1,15 1.08 1.15 1.40 1.16 1.30 - - 1.65
Computer Attributes            
TIME
STOR
VIRT
TURN
- - - - - - 0.87 0.87 1.00 1.00 1.00 1.00 1.11 1.06 1.15 1.07 1.30 1.21 1.30 1.15 1.66 1.56 - -
Personnel Attributes            
ACAP AEXP PCAP VEXP LEXP 1.46 1.29 1.42 1.21 1.14 1.19 1.13 1.17 1.10 1.07 1.00 1.00 1.00 1.00 1.00 0.86 0.91 0.86 0.90 0.95 0.71 0.82 0.70 - -   - - - - -
Project Attribute            
MODP TOOL SCED 1.24 1.24 1.23 1.10 1.10 1.08 1.00 1.00 1.00 0.91 0.91 1.04 0.82 0.83 1.10 - - -

Detailed Model

In detailed COCOMO, a large amount of work has been done by Boehm to cover all essential aspects of software development. It offers a medium to process all the project characteristics for calculating the software estimation. The detailed model introduces two more capabilities that are as follows:

Phase-sensitive effort multiplier:

Some phases (like design, programming, integration/test) are more affected than others by factors defined by the cost drivers. The detailed model provides a set of phase-sensitive effort multipliers for each cost driver. This helps in determining the workforce allocation for each phase of the project.

Three-level product hierarchy: 

In the three-level product hierarchy, there are a module, subsystem, and system levels. The ratings of the cost driver are done at an appropriate level, i.e., the level at which it is most affected by the variation.

Development phase

Software development is done in four phases:

Plans/requirements:

This is the first phase of the software development life cycle. In this phase, the requirements are analyzed, the product plan is set up, and a full product specification is generated for software development. The developers have to give 6% to 8% of the effort and 10% to 40% of the development time.

Product design:

In this phase, a software developer starts thinking about "how." How a software UI look like?  How do they function? The software requirements required by the customers are kept in the mind of the designer while designing software. There are two types of designs that are designed by the designer; conceptual design and technical design. Conceptual design tells the customer what the system will exactly do. When the customer approves the design, this process is called validation. Then the conceptual design is converted into a more detailed form of technical design, which helps the developer to understand the hardware and software needs to fulfill the customer's requirement.    

Programming:

This is the phase where development starts. This phase is divided into two sub-phases: detailed design and code/unit test. This phase requires an effort from 48% to 68% and necessitate 24% to 64% of the development time to finish the coding.

Integration/Test:

In the integration testing, individual units are combined and tested as a whole. The purpose of this level of testing is to expose faults in the interaction between integrated units.


Related Topics

Routing Requests through Load Balancers

Let us first understand what load balancers are Assume a system works with multiple machines or servers, and as the requests arrive, they need to be routed to any one of...

3 minutes read.

Overall Equipment Effectiveness

Overall Equipment Effectiveness (OEE) Overall equipment effectiveness is a software development metric used to diagnose a product or machinery's manufacturing productivity and effeteness. The term OEE was introduced by Seiichi Nakajima San...

4 minutes read.

Software Engineering Tutorial

The software has become critical to advancement in almost all areas of human endeavor. The art of programming is no longer enough to construct large programs. There are serious problems with the...

8 minutes read.

Agile Model in Software Engineering

The Agile method acquires the features of the iterative or incremental process model. More focus on process adaptability and customer satisfaction through the timely delivery of working software. The agile method split the...

2 minutes read.

Project Management Tools

Project Management Tools Risk and uncertainty increase in the size of the project, even when the project is developed according to the prescribed methods. We use project management tools to manage project management systems properly...

3 minutes read.

Software Project Planning

Project planning is a management process that focuses on the activities required to complete a project successfully. Project planning helps to prevent problems that occur during the project development, such as a...

2 minutes read.

Dropbox - System Design

While trying to upload or share any file, whether images, pdfs or documents, you would have come across the dropbox file posting service. Dropbox keeps all your data secure and...

9 minutes read.

Object Oriented Metrices in Software Engineering

Metrics are used to measure the quality of software on different parameters. It provides acomputed accurate estimation of projects that help in developing software with minimal fault. “Metric is a set...

7 minutes read.

Twitter - System Design

You might have heard of Twitter, a widely used social media platform. Everybody tends to check it every few minutes. Imagine what you would do if you were asked to...

8 minutes read.

What is System Design

System design is simply the systematic process used to design the basic architecture of an electronic control system by defining essential elements like modules or components and their interfaces. This...

3 minutes read.

Data Structure Metrics

In the size metric, we have learned to measure/ determine the size of a program by various software metrics such as line of code, Function count, and Token Count. A program...

6 minutes read.

SDLC in Software Engineering

SDLC SDLC stands for the Software Development life cycle. It is a pictorial and diagrammatic representation of the software life cycle. A life cycle model represents all the techniques required to integrate software into the...

3 minutes read.

Project Monitoring and Control

Project Monitoring and Control Project monitoring and control process includes procedures which are performed to observe project performance so that potential problems are identified, and appropriate action can be taken to meet the desired performance...

3 minutes read.

Information Flow Metrics

This metric is purely based on information. Information flow metric is different from size metric, and data structure metric as size metric is based on the final size of program...

4 minutes read.

Metrics for testing

There are different types of metrics used in software testing to measure different parameters. So, for different purposes, different metrics are used by the developer. For example: The type of metrics...

3 minutes read.

Big-Bang Model in Software Engineering

In the Big-Bang Model, developers do not adopt any specific process. Development begins only with the necessary funds and efforts as input, and output is developed software that may or may not be...

1 minute read.

Spiral Model

The problem with traditional software process models is that they do not adequately deal with uncertainty, which is inherent to software projects. Major software projects had failed because project risks were neglected, and...

3 minutes read.

Online Library Management System ER Diagram in Software Engineering

Description of an ER Diagram The relationship between entity sets that are kept in a database is depicted in a diagram known as an entity relationship diagram, or ER Diagram. Alternatively,...

10 minutes read.

Object Oriented Analysis and Design in Software Engineering

Using object-oriented programming, object-oriented analysis and design (OOAD) is a technical way for evaluating and organising an application, system, or business. It also uses visual modelling to direct stakeholder interaction...

9 minutes read.

Scope of software metrics

Scope, Benefit, and Cycle of Software Metrics Software metrics have tremendous scope in software development to understand and fulfill various aspects of the project process. Software metrics help in estimation of...

6 minutes read.