Cost Estimation Tutorial
Cost is s strategic concept in software development for the following reasons:
- Project management: Estimating cost is extremely crucial in carrying out project management activities such as scheduling, planning and control.
- Feasibility Study: Making investment decisions regarding software projects requires full cost breakdown and analysis .Consequently, identified recurring and one-time costs are then incorporated in a financial feasibility study in terms of cost-benefit analysis.
- Cost reduction: Since software engineering aims to provide cost-effective software solutions to business problems, many process and project related activities are designed or re-engineered to achieve the goal of cost minimization.
- Evaluating business performance: Cost is an essential ingredient to calculate many of the financial ratios – explained above- uses to evaluate the financial performance for business firm
- Leverage: Cost plays a significant role in both e the operating and the financial leverage in respect of risk and return. Relying on fixed costs as opposed to variable costs can boost the operating leverage while financing with high percentage on debt- based costs may boost the financial leverage.
Cost Estimation
Every year more projects are doomed by poor cost and schedule estimates than by technical, political or organizational problems. It‘s no wonder that so few companies realize that software cost estimating can be a science, not just an art. It has been proven that it is quite applicable to accurately and consistently predict development life cycle costs and schedules for a broad array of software projects.
Though a vast body of knowledge exists today in respect to cost estimation techniques, most of these estimation techniques view cost as a function of complexity whether explicitly or implicitly. In early models, complexity means the project size or the program volume, which can be estimated merely via kilo lines of codes KSLOC. In late models, complexity is determined firstly by inputs, outputs, interfaces, files and queries that the software system needs. Then this complexity is further adjusted via up to 14 different added-complexity factors. Eventually, the final result is converted, through a standard conversion table to KLOC.
In basic cost estimation model the calculation is straightforward. By determining the value of only two variables, total efforts in person-months can be easily calculated. These two variables are :
- How many thousands of lines of code (KSLOC) your programmers must develop?
- The effort required per KSLOC (i.e.: Linear Productivity Factor)
Accordingly, multiplying these two variables together will result in the person months of effort required for the project provided that the project is relatively small. Otherwise, another exponential size penalty factor has to be incorporated for larger project sizes. Person-months implies the number of months required to complete the entire project if only one person was to carry out this mission. This underlying concept is the foundation of all of the software cost estimating models especially those originated from Barry Boehm‘s famous COCOMO models.
COCOMO Sample Example
Suppose it is required to build a Web Development system consisting of 25,000 lines of code. How many person months of effort would this take using just this equation if:
- The project size was relatively small
- The project size was considered large
Answer:
- For a relatively small project:
Efforts = Productivity x KSLOC
= 3.3 x 25 = 82.5 Person-Months
- For a large project :
Efforts = Productivity x KSLOCPenalty
= 3.3 x 251.030 = 90.86 Person-Months
It should be noted , however . that COCOMO formulas have also different modes , models and versions up to COCOMOII and the new COCOTS.
Estimating software costs typically involves the following drivers:
- Complexity of the software project
- Size of the software project 3- Efforts needed to complete the project 4- Time needed to complete the project
5- Risks and uncertainties involved .Yet , the risk driver is still not clearly incorporated in the majority of cost estimation models for software systems .
Despite of several differences, most cost estimation models are more or less based on the following rule:
Complexity size
(Complexity determines software size in terms of KLOC)
Size efforts
(KLOC determines efforts in person-months with a given level of productivity and exponential size penalty factor)
Efforts time
(Effort determines time at a given mode and/or model )
Time Number of people required
(Time determines people ―well-trained full time software development team‖)
Four standard conversion tables are widely adopted in cost estimation. These tables are shown below.
Table 1. Common Values for the Linear Productivity Factor
Project Type | Linear Productivity Factor |
COCOMO II Default | 2.94 |
Embedded Development | 2.58 |
E-commerce Development | 3.60 |
Web Development | 3.30 |
Military Development | 2.77 |
Table 2. Typical Size Penalty Factors for Various Project Types
Project Type | Exponential Size Penalty Factor |
COCOMO II Default | 1.052 |
Embedded development | 1.110 |
E-Commerce development | 1.030 |
Web development | 1.030 |
Military development | 1.072 |

Table 4. Lines of Code Per Function Point by Programming Language

Function Points Estimations
An alternative to direct KSLOC estimating is through function points, then use a the above standard table called ―Lines of Code Per Function Point by Programming Language” to convert them to KSLOC. Function points was used for the first time by IBM to capture the complexity of the software system in terms of its SRS functionality and the way it interacts with its users.
How Function Points Work?
- Estimate the number of external inputs, external interface files, external outputs, external queries and logical internal tables (files).
- Use the Function Point Conversion Factor table to get total initial function points .
- Initial function points are adjusted via 14 complexity factors to obtain final (adjusted) function points.
- Use adjusted function points to obtain KSLOC.
- Use KSLOC to estimate efforts as explained in COCOMO examples above



FP Sample Example
Suppose the requirement specification for the Blood Bank Website Development of the blood bank project has been carefully analyzed and the following estimates have been obtained. There is a need for 11 inputs, 11 outputs, 7 inquiries, 22 files, and 6 external interfaces. Also, assume outputs, queries , files function point attributes are of low complexity and all other function points attributes are of medium complexity.
The complexity adjustment value for factor is significant which is 4.
Make the following calculations showing the full procedure in details:
- What is the FUNCTION POINTS (FP) for the blood bank project
- What is the ADJUSTED FUNCTION POINTS (AFP) for the blood bank project?
- 3- What is the approximate number of LOC in the following languages:
- “C++” programming language
- “Java” Programming language
- Calculate the estimated schedule time in person-months assuming that Java is used as the implementation language
Answer
1- Calculating Function Points
FUNCTION POINTS ESTIMATION (1) | ||||
DESCRIPTION | LOW | MEDIUM | HIGH | TOTAL |
INPUTS | X3 | 11X4 | X6 | 44 |
OUTPUTS | 11X4 | X5 | X7 | 44 |
QUERIES | 7X3 | X4 | X6 | 21 |
FILES | 22X7 | X10 | X15 | 154 |
PROGRAM INTERFACES | X5 | 6X7 | X10 | 42 |
Total Unadjusted Function Points | 305 |
2- Calculating Adjusted Function Points
FUNCTION POINT ESTIMATION (3) | |
PROCESSING COMPLEXITY(PC): | 04 |
ADJUSTED PROCESSING COMPLEXITY (PCA) | 0.65+(0.01 *04)= 0.69 |
TOTAL ADJUSTED FUNCTION POINTS | 305 * .69 = 210.45 |
- Approximate number of LOC for the following languages:
- “C++” programming language :
LOC = 210.45 x 53 = 11153.85 ~ 11.15 KSLOC
- “Java” Programming language
LOC = 210.45 x 46 = 9680.7 ~ 9.68 KSLOC
- Estimated efforts calculation
Efforts = Productivity x KSLOCPenalty = 3.3 x 9.68.030 = 3.532 Person-Months