Understanding Software Productivity

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.

How does size impact productivity

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.

What is Marginal Cost?

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.

Besides size there are several other factors, which impact the cost of construction
  • Where the building is located
  • Who is the general contractor?
  • Who does the actual labor?

Why increasing Marginal Costs for Software Development?

There are a variety of reasons why marginal costs for software increase as size increases. The following is a list of some of the reasons
  • As size becomes larger complexity increases.
  • As size becomes larger a greater number of tasks need to be completed.
  • As size becomes larger there is a greater number of staff members and they become more difficult to manage.
  • A the numbers of individuals in a project increases the number of communication paths increase also. Communication in large projects can be very difficult.
  • Since fixed costs for software projects is minimal. There are little if any economies of scale for software projects.

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.

For example, assume you are going to manufacture a computer mousepad. The total Cost to manufacture 1,000 mousepad is $2,660. The unit cost is $2.66 (per pad). The cost break down is:
  • Artwork is a fixed cost at $500 (or .50 per unit)
  • Set Up costs are $250 (or .25 per unit)
  • Shipping costs are $10 (or .01 per unit)
  • Papers for production will cost $1.50 per unit.
  • Rubber Pads are $ .15 per unit.
  • Application of paper to pad cost is $.25 per unit

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.