Software productivity is defined as hours/function points or function points/hours. This is the average cost to develop software or the unit cost of software. One thing to keep in mind is the unit cost of software is not fixed with size. What industry data shows is the unit cost of software goes up with size.
As the size of software development project becomes larger the cost per function point actually rises. As can be seen from the graph and data, the effort per unit does not remain constant as the size of the software project increases. This is self-evident because the tasks are not the same for software projects as the size increases.
As some of you remember Marginal Cost is an economic term and is different from average cost.
Average cost is the total cost of producing a particular quantity of output divided by that quantity. In this case to Total Cost/Function Points.
Marginal cost is the change in total cost attributable to a one-unit change in output. In our case, how does per unit cost change as the software project size change? How does the cost of software change as the product becomes larger and larger?
Imagine the average cost per square foot of a one-story building compared to the cost per square foot of a 100-story building. No doubt the construction costs (per unit cost) for the 100-story building are much higher than a one-story building. This same concept is true for a software project.
Function Points are the output of the software development process. Function points are the unit of software. It is very important to understand that Function Points remain constant regardless who develops the software or what language the software is develop in. Unit costs need to be examined very closely. To calculate average unit cost all items (units) are combined and divided by the total cost. On the other hand, to estimate the total cost each item is examined.
Notice the variation in the unit cost for each item. One of the biggest problems with estimating software projects is understanding unit cost. Software managers fail to break down items into similar components or like areas. They assume all units cost the same.
There are different costs for each of the function point components. The unit cost for external inputs is not the same as the unit cost of external outputs for example. The online external inputs and the batch external inputs do not have the same unit cost (or cost per function point). The cost per unit to build and implement internal logical files is not the same per unit cost as the building and implementing of online reports.
To accurately estimate the cost of an application each component cost needs to be estimated. The same is true for the mousepad problem above.