Factors Affecting Software Cost

Its useful for a Software Practitioner to understand the factors affecting Software Cost in order to arrive at close to perfect cost estimates. Most of these are classical factors and is true all the time as long as human write computer programmer in 0s and 1s. The various factors affecting Software cost estimation are as follows –

1.Product Complexity

Product complexity and its effect on software cost is studied by dividing the software product into 3 general categories – Application, Utility and System level software products/features/components. Generally, system level software is considered to be complex enough to build. If we think in pure academic terms, according to Boehm, the programmer months (PM) is evaluated as –

Application PM = 2.4 * (KLOC)1.05
Utility PM = 3.0 * (KLOC)1.12
System level App. PM = 3.6 * (KLOC)1.2

where KLOC = 1000 lines of code

If we take KLOC as 60 K, then,

aPM : uPM : sPM = 1 : 1.7 : 2.8; i.e., a System Level Software  Product requires 3 times PM, than that of an application level Software Product.

Now, the total development time is evaluated as  –

aTDEV = 2.5*(PM)0.38

uTDEV = 2.5*(PM)0.35

sTDEV = 2.5*(PM)0.32

Interestingly, it is seen that the development time is the same for all the 3 types of software products ~ 18 months, regardless of their complexity level.

Thus for a 60 KDSI software product, the number of programmers is evaluated as –

Application level -> 176.6 PM / 17.85 months = 9.9 developers

Utility level          -> 294 PM / 18.3 months = 16 developers

System level        -> 489.6 PM / 18.1 months = 27 developers

The above values are historically experimental and are based on empirical values and hence will not give desired results in all cases.

2. Product Size

Various experiments shows that the total effort increases at exponential rate slightly greater than 1 when KDSI is increased and thus increases the total cost.

3.Programmer Ability

Individual ability has great influence on the extra effort to be put on software development. On very large projects, the difference in individual programmer ability involving 5 and <5 programmers, the individual differences in ability is significant.

4. Available Time

Total project effort is sensitive to the calendar time available for project completion. Generally if the development time is compressed or expanded from the optimal time, software projects require more total effort. Software projects are generally rewarded is development time is doubled and is constrained  if total development time is compressed. Also, if development time is increased beyond a certain limit, the total effort is increased rather than decreased.

5. Required level of reliability

Software reliability characteristics such as accuracy, robustness, completeness, consistency, user-friendliness, error-free operation etc when built into the software product will required extra effort and cost. The desired level of reliability should be established during the planning phase by considering the cost of software failures such as inconvenience of user or risk to human life (eg: an sensory device that controls Human Heart function) .

6. Level of Technology

The level of technology in a Software development project is reflected by the programming language/platform/frameworks/tools used to analyse, design, develop, test, deploy and monitor Software Product. Ensuring foundational aspects of the technology such as Object Oriented Programming, run-time type checking, strict typing, data abstraction, clean compilation techniques, exception handling, interrupt handling and concurrency mechanisms, support of deployment into multiple OS platforms and cloud, etc will improve developer productivity, software reliability which has potential to significantly cut some major cost and effort in the long run.