COCOMO II

The Constructive Cost Model II (COCOMO II) is a software cost estimation model developed by Dr. Barry Boehm. It's used to predict the effort and cost required to develop a software system. The model takes into account various factors such as the size of the software, the complexity of the project, the capabilities of the development team, and other project characteristics.

COCOMO II is divided into three sub-models, depending on the accuracy required and the information available:

  1. Applications Composition Model: This model is used for projects that use modern programming practices such as prototyping, component assembly, and rapid application development. The estimation is based on the number of "application points," which are similar to function points.

  2. Early Design Model: This model is used during the early stages of software design, when only high-level software requirements are available. The estimation is based on a combination of "unadjusted function points" and a set of cost drivers such as product complexity, personnel capabilities, and hardware constraints.

  3. Post-Architecture Model: This model is used after the detailed software design has been completed, and more information about the software's structure and the development process is available. The estimation uses the same cost drivers as the early design model but also includes additional factors related to the software architecture.

The main formula used in COCOMO II is:

Effort = A * (Size)^E * ∏(Cost Drivers)

where A and E are constants determined through calibration of historical project data, Size is the size of the software (in Kilo Delivered Source Instructions or Function Points), and Cost Drivers are various project and product attributes that affect productivity.

COCOMO II provides a more detailed and flexible framework for software cost estimation than its predecessor, COCOMO 81, but it also requires more detailed information about the software and the development process. As with all estimation models, it's not perfect and should be used alongside other techniques and expert judgement.