From: martelli@cadlab.sublink.org (Alex Martelli)
Newsgroups: comp.programming
Subject: Re: Costs per line of code
Date: 14 Oct 92 09:07:05 GMT
Organization: CAD.LAB S.p.A., Bologna, Italia

dmcclory@Chaos.mcs.kent.edu (Daniel McClory) writes:
	...
:If you think that coming up with the "voice specification" for a program will
:be a matter of kicking back at your leisure, you haven't written many 
:specifications.  

That is for sure!  A very good text on the subject has a title similar to
"Quality before design" (sorry, I have no precise reference handy) and
explores the specification problem rather fully.

:A good specification is basically a program, without all
:the messy implementation details included, like how to get a character to show
:up on a screen.  This means that writing a specifiction requires you to answer
:lots of difficult questions, like "what is it that the user wants?"

I think you are mixing together "user requirements' specification" and
"high-level design".  This is often done, indeed many alleged
"specifications" (e.g.  in the Z notation; see comp.specification and
comp.specification.Z newsgroups) are really high-level design; but it is
still incorrect in my view.  User-requirements specification is a
*marketing-level* activity, IMHO, *preliminary* to analysis (by calling
it "marketing" I am probably using a language biased towards
off-the-shelf programs, *custom* programming will no doubt have a far
higher proportion of inevitable mixing between spec and analysis).

:If you did indeed come across a bit of software which would allow "voice
:specification", I don't think it would lower your programming costs more
:than a small fraction, if at all.  Automatic programming is mostly myth.

I think you are seriously wrong here.  User-requirements specification,
depending on the field, can be estimated at between 10% and 30% of the
whole lifecycle programming effort!  The 70% to 90% hypothetical savings
would be far from "a small fraction" of the lifecycle programming costs.
(Note that DEFECTS in user-req specs can be responsible for far higher
costs, as untimely spec changes or ambiguities "ripple down" with
disastrous effects throughout the "waterfall", but that's another
problem; I'm talking about the cost of specifications DONE RIGHT).

If you include analysis/high-level design in your definition of
"specification", the cost of this activity as a fraction of lifecycle
programming costs does go up, but not really THAT dramatically - let's
say that my 10%-30% estimate becomes 20%-40%.  Saving upwards of 50%
would STILL be far from "a small fraction"!  Even assuming that SOME
further costs would have to be incurred anyway (e.g. documentation,
and user-acceptance testing, thus essentially removing only the costs
attributable to design, coding, and most testing, as well as the
maintenance costs reflecting on these stages), a rule-of-thumb
estimation of 50% savings looks reasonable.

If you ever had to make a business case for a make-or-buy decision
regarding some customized software, you should recognize these figures.


:But, as previous posters have pointed out, software production is not so
:easy as digging post holes, and specifying programs is not as easy as
:giving directions to the corner market, so I doubt my job is threatened
:any time soon.

Of this, there is little doubt.  Still, this discussion is not really
fully academical, as it pertains, for example, to very real-life make
or buy decisions, as I hinted above...
-- 
Email: martelli@cadlab.sublink.org                   Phone: ++39 (51) 6130360
CAD.LAB s.p.a., v. Ronzani 7/29, Casalecchio, Italia   Fax: ++39 (51) 6130294