Software Management 45.4 Cost Estimation 791
•
Metrics support for function points and/or LOC
•
Support for maintenance and enhancement.
More advanced features available in some estimat-
ing systems include quality and reliability estimates,
risk and value analysis, return on investment (ROI),
models to collect historical data, statistical analysis,
and currency conversion for overseas development. Ta-
ble 45.1 summarizes Jones experience with six different
application genres. While he styles the table as merely
illustrative it certainly fits one of the author’s more than
50years developing software in all six of these genres.
The new class of automatic software estimating
tools may not be perfect but they are very good and
may prompt the user to include factors he or she might
otherwise overlook. As always in any complex human
endeavor, there is no substitute for experience.
45.4.3 Requirements-Based
a priori Estimates
Of course it is easier to estimate a large software project
if this is the tenth one you have done just like it, but
that is rarely the case. Developers who managed to do
two or three projects fairly well are often promoted
to chief software architect or director of MIS.What
can be done when you need to create a requirements-
based estimate and the requirements are not completely
known yet? Amazing as it may seem to an engineer, this
case occurs very often in software development, and
can be tolerated because software is not manufactured
like other systems and products designed by engineers.
A software development project is the result of a nego-
tiation and, like any other negotiated decision, can be
renegotiated. Software is simply designed, redesigned,
and redesigned again as it is implemented. The only
software implementation analog to hard goods manu-
facturing is the almost completely error-free process of
copying a computer file on to one or more CD-ROMs.
The hardware designer would think that the soft-
ware engineer would follow the logical process of
requirements discovery, functional design, technical
design, implementation, testing, documentation, and
delivery; however, the more common case in software
development is thatthe first truly known and understood
parameter is the delivery date to the customer. Hence,
the software developer’s commonly employed process,
known as date-driven estimation [45.11]. So at this
point we now when the project is to be completed but
as yet do not know what is to be delivered. In traditional
engineering one makes the estimate after design but in
software engineering one must makethe estimatebefore
design since, for software, design replaces manufactur-
ing. This places a tremendous burden on requirements
discovery [45.12] and on the subsequent specifica-
tion process. It has long been conventional wisdom in
software development that one could write a precise
functional specification (i.e., precise to both the im-
plementers and the end users). Efforts to do so have
greatly improved in the current era of object-oriented
programming analysis and design, and have given new
hope for the decades-long search for the holy grail
of software development: specification-based program-
ming [45.3, p. 502–506]. New technologies coming on
to the market today such as Lawson Software’s Land-
mark and Wescraft’s Java refactoring system, inter alia
promise a high degree of programming automation for
Java-based software [45.3, p. 501]. Moreover, since the
precise functional specification is written by domain
specialist(s) and the Java code produced automatically
by a metacompiler, what you as domain expert or al-
lele for the end-user specify is truly what you get. This
innovation in programming will dramatically change
the way software is designed, implemented, and main-
tained, but it also will put even more burden on the
requirements discovery and specification part of the
project, which according to Dekkers are already the
source of 60–99% of the defects delivered into imple-
mentation [45.12]. We have long known that defects are
written into software, just like villains are written into
melodramas, and with similar high drama and anxiety
we see as we approach the end of the project, i.e., the
well-known and very precise date of delivery.
In our opinion the best way to deal with this
commonly occurring situation is the analytic hier-
archy process (AHP) developed by Saaty [45.13],
which naturally prioritizes the user requirements as
they are identified. Clearly, the most critical and time-
consuming requirements come first to the user’s mind
and are the most important to the user’s ultimate satis-
faction with the end result of the software development
project. A description and overview of AHP together
with examples of its application is given in [45.3,
Chap. 8].
45.4.4 Training Developers
to Make Good Estimates
The need to train developers to make precise estimates
is an artifact of the conventional software design pro-
cess, in which requirements and functional designers
write in one language, technical or detail designers in
Part E 45.4