您在這裡

Cost

8 九月, 2015 - 15:20

The first and most apparent issue with systems development is one of cost. From the earliest days, systems development has been seen as a high-cost investment with uncertain returns. It has always been difficult to isolate the impact of a new business information system on the bottom line – too many other factors change at the same time.

There are two components to total cost: unit cost and volume. Unit cost can be addressed by productivity increases. Volume can only be reduced by doing less unnecessary work.

System developer productivity was the earliest point of emphasis, as evidenced by counting lines of code as a measurement of output. (Lines of code is still a useful measure, but not the most critical one.) Both better computer languages and better development tools were developed, to a point where productivity is no longer the central issue of systems development. It is generally assumed that a development team is well trained and has an adequate set of tools.

Reducing the amount of unnecessary work is a more recent trend. Unnecessary work arises from two main sources: “gold plating” and rework.

Gold plating refers to the tendency of users to demand extras – features that they would like to have but that don’t add value to the system. What is worse, developers have tended to accept these demands, mostly because each one seems small and easy to implement. The truth is that every time you add a feature, you add to the complexity of the system and beyond a certain point the cost grows exponentially.

Rework becomes necessary when you make an error and have to correct it. If you catch the error and correct it right away, no great damage is done. But if the error is left in and you don’t discover it until later, other work will have been done that depends on the erroneous decision: this work then has to be scrapped and redone. Barry Boehm has estimated that a requirements or architecture error caught in system testing can cost 1000 times more to fix than if it had been caught right away 1. Another way of estimating the cost of rework is to view that testing takes up an average of 50% of the total initial development cost on most projects, and most of that time is spent, not in finding errors, but correcting them. Add the extra cost of errors caught during production, and the cost of rework is certainly over one-third and may approach one-half of total development and maintenance costs.

And this is for systems that actually get off the ground. A notorious study in the 1970s concluded that 29% of systems projects failed before implementation and had to be scrapped (although the sample was small – less than 200 projects). These failures wind up with a total rework cost of 100%! 2 More recently, Bob Glass has authored an instructive series of books on large systems project failures 3.