Let us understand the different types of COCOMO model in software engineering and their applications. The COCOMO Model stands for Constructive Cost Model. Barry W. Boehm developed this model, and it is a procedural software cost estimation model.
What is COCOMO Model in Software Engineering?
This is a cost estimation model in software in software engineering and it allows you to input some parameters and get an estimate of the level of effort associated with a software project.
The initial version was published in 1981 and was known as COCOMO-81. It was developed considering a waterfall process would be used and that all software will be developed from scratch. The COCOMO model is one of the most popular models cost estimating in software engineering domain.
There are a lot of cost estimation techniques in software engineering such as:
- Delphi cost estimation
- COCOMO 1 cost estimation
- COCOMO 2 cost estimation
Barry Boehm’s hierarchy of software estimation models bearing the name COCOMO, for a constructive model is of the following types:
Model 1: The Basic COCOMO Model
If the function of program size can be expressed as estimated LOC (Source Lines of code – SLOC, KLOC) then it can be computed as software development effort.
COCOMO applies to three classes of software projects:
- Organic Mode Mode: It is related to projects with small development teams whose team members are familiar with the project. Eg. Payroll Systems
- Semi-Detached Mode: It is related to the projects that involve the mixture of experienced team members in the project. E.g. Interactive Banking System
- Embedded Mode: It is related to the complex projects that are developed under tight constraints with innovations in it having a high volatility of requirements. E.g. Nuclear Reactor Control Systems.
Model 2: The Intermediate COCOMO Model
If program size includes a set of “cost drivers” with personnel and project attributes, subjective assessments of products and hardware then it can be computed as software development effort. This extension includes a set of four cost drivers.
- Product attributes
- Hardware attributes
- Personnel attributes
- Project attributes
Model 3: The Advanced COCOMO Model:
Along with characteristics of an intermediate model this model also assesses the cost driver’s impact on each step of the software engineering process. There are a total of 6 phases of detailed COCOMO.
- Planning and requirements
- System design
- Detailed design
- Module code and test
- Integration and test
- Cost Constructive model
Let us understand different types of COCOMO model in software engineering in depth now.
The COCOMO 1 model is a regression-based model that considers various historical programs software size and multipliers.
The most important fundamental calculation is the use of effort equation to find the number of Person-Months required in developing a project.
This model estimates the cost by considering the size and other quality aspects of the similar type of historical programs. It calculates the Efforts i.e. estimation of the number of Person-Months required to develop a project.
Estimated Cost = Number of Person Months * Loaded Labour Rate
Estimates of requirements, maintenance are derived from the quantity. COCOMO requires input as the project’s estimated size in Source Lines of Code.
The COCOMO model in software engineering is based on the relationships between the two formulas:
Formula 1: Development Effort is based on system size:
MM = A * KSDI ^ B
- MM is the effort measured in Man per Months
- KDSI is the number of Source Instructions Delivered in a Kilo (Thousands)
Formula 2: Effort (MM) and Development Time
TDEV = C * MM ^ D
- TDEV is the development Time
- Coefficients A, B, C, and D depending upon the mode of development that can be categorized into following 3 distinct classes of software projects defined above.
Steps To Perform A Cost Estimate Using The COCOMO Model Include:
- Determine all sub-systems and modules in the project.
- Calculate the size of each subsystem, each model and also the size of the complete system.
- Determine module level effort multipliers for each module. These multipliers may be product complexity, programmer’s capability, virtual machine experience, and programming language experience.
- Calculate the model effort and development time for each module.
- State the remaining 11 effort multipliers for each subsystem.
- Calculate the total system effort and development time.
- Perform sensitivity analysis to find trade-off benefits.
- Add other development costs also – like planning and analysis that were not included in the estimate.
- Compare the estimation and correct the differences.
Disadvantages of COCOMO 1 Model:
- It is difficult to estimate the exact KDSI in early phases of the project development since most of the effort estimates are still not known.
- The focus is on adjusting the model as required by the organization and this done based upon the historical data which is not available all the time.
Advantages of COCOMO 1 Model:
- The COCOMO model provides a transparent working environment.
- It examines different factors affecting the project costs.
The COCOMO 2 model in Software Engineering is tuned to modern software life cycles. COCOMO 1 model has been very successful. However, it doesn’t apply to newer software development practices as well as it does to traditional practices.
This model targets modern software projects and will continue to evolve over the next few years. The sub-models of COCOMO 2 model are as follows:
- Application Composition Model: Used when software is developed from existing parts.
- Early Design Model: Used when system requirements are collected and concluded but designing has not yet started.
- Reusable Model: Used when software is developed using the reusable components. It is used to compute the efforts taken to integrate these components.
- Post-Architecture Model: Used once the system designing is completed and when further system information is collected.
- Multiplier Affect:
The capability of the developers, functional requirements, familiarity with the development platform, etc.
Cost Driver Attributes:
- Product Attributes: This explains the required characteristics of the software product being developed such as the required reliability, database, and product complexity.
- Hardware attributes: This explains the constraints imposed on the software product by the hardware platform such as execution time constraint, main storage constraint, virtual machine volatility, computer turnaround time.
- Personal Attributes: This describes the experiences and capabilities that are taken into account such as analyst capacity, programmer capability, applications experience, virtual machine experience.
- Project Attributes: This describes the particular characteristics of the project such as the use of modern programming practices, use of software tools and required development schedule.
The COCOMO 2 formula to estimate the calendar time required to complete a project when staff will be required.
TDEV = 3^(PM)(0.33 + 0.2 *(B-1.01))
- PM is the effort computation and B is the exponent (B = 1 for the early prototyping model). This computation predicts the nominal schedule for the project.
- The time required is independent of the number of people working on the project.
How To Improve Software Economics?
The software economics may be improved using a balanced approach as the key. The five key parameters that help to improve the software economics are:
- Reducing the product size (Number of Lines of Code) and the complexity of the software
- Improve the software development process
- Improve the team effectiveness
- Create better environment by improving the automation more suitable tools and technologies
- Achieve required quality by peer inspections.
Here’s the list of the trends on which the Five Key Parameters depend.
- Size: Describes abstraction and component-based development technologies.
Trend: High-level programming languages (C++, Java, Visual Basic), reusability, Object-oriented programming paradigm, Commercial exponents packages
- Process: Involves methods and techniques
Trend: Iterative development, Process maturity models such as CMM, Architecture-first development
- Personnel: Describes the effectiveness of the development team
Trend: Training to develop the personal skills, Teamwork, Win-win culture
- Environment: Involves automated tools and technologies
Trend: Integrated tools such as compilers, editors and debuggers
- Quality: Describes the performance, reliability and accuracy issues
Trend: Hardware platform performance, Peer inspection, Statistical quality control
If you have any doubts or any suggestions about the COCOMO model in software engineering, let us discuss in the comment section below. For more information, check out Wikipedia.
Hi Tushar Soni this article was very informative for me. Thanks for sharing your knowledge with us. I am beginner in programming and your articles are helping me very much. I have made https://www.codingknack.com/ with as much knowledge. Please suggest me some things for my improvement. Thanks.