[comp.software-eng] Soft-Eng Digest V4 #21

MDAY@XX.LCS.MIT.EDU ("Mark S. Day") (03/15/88)

Soft-Eng Digest             Mon, 14 Mar 88       Volume 4 : Issue  21 

Today's Topics:
                  Why Software is Different (7 msgs)
               Whistleblowing and Responsibility (4 msgs)

----------------------------------------------------------------------

Date: 9 Mar 88 18:01:19 GMT
From: bunker!shap@yale-zoo.arpa  (Joseph D. Shapiro)
Subject: Why Software is Different

As one who advocates carefully planned and controlled software
projects, I offer the following observations on why some projects are
run on a crash basis, and why poor or unstable software is shipped.

     1) Software follows hardware.  People will not push as hard for
	new hardware if there is no software to drive it, but once the
	hardware is ready, WE NEED THAT SOFTWARE NOW.  

	A related issue is that in a hardware/software combined
	project, the end date will often be fixed, and if the hardware
	portion runs so late as to impact software testing, there will
	be greater time pressure on the software team.

     2) Companies know the real cost of shipping defective
	hardware.  You gotta recall the equipment, extract the
	offending piece, replace it, or cut/add traces, etc.  There are
	real identifyable costs involved in shipping, reworking, spare
	parts, etc.  For software, the effects SEEM less costly.  Mail
	another diskette or tape.

     3) There is a perception that everybody ships software before
	its time.  A company has to decide whether to also ship
	prematurely, or take the time to do it right and suffer the
	real/imagined opportunity cost of being the last one to
	announce/deliver the product.  The people who shipped the
	shoddy software months ago may have had to ship several
	updates, BUT THEY GOT THE SALE.

My own feelings are that the carefully planned and controlled project
should produce quality software just as quickly as a rush job could
produce shoddy software.  The problem may be that upper management may
see a schedule that includes X months for planning, designing, and
specifications, X months for CODING, and X months for integration,
testing, etc, and wonder why it should take 3X months to finish the
project when all the "real work" only takes X.

Disclaimer: Anything attibuted to 'management' or 'company' in this 
article does not necessarily reflect the opinion of the management of 
Bunker Ramo or Olivetti.

In fact I know that my management takes software quality as seriously
as I do.  My observations here are based on broad experience of over
ten years.


Joe Shapiro					"My other car is a turbo...
Bunker Ramo Olivetti				 too."
{decvax,yale,philabs,oliveb}!bunker!shap

------------------------------

Date: Thu, 10 Mar 88 08:54:26 EST
From: mangoe@sdag.cs.umd.edu (Charles Wingate)
Subject: Why Software is Different

This "Why can't software people....?" exchange brings to mind a question:

How does software complexity really compare with hardware complexity?  Has anyone done
a real comparison?

My gut feeling is that, when you eliminate the software part of the hardware (i.e.,
microcode or anything of that ilk) the hardware is going to tend to be much less complex.
I also suspect that it's more amenable to analysis.  But these are just feelings.  Any
ideas?

C. Wingate

------------------------------

Date: Thu, 10 Mar 88 16:54:57 PST
From: Eugene Miya <eugene@ames-nas.arpa>
Subject: Why Software is Different

I enjoyed Randy Neff's comments, I would only add one thing:

Hardware has a distinct engineering "advantage:" it either falls apart
(is subject to degradation) or has forces which succeed it.  There are
some advantages toward a forced evolutionary process.  Sure recognize
problems:
	manufacturing or reproduction
	typically prone to single point failure
	etc.
Software on the other hand has given us the million line dusty deck.
(COBOL or FORTRAN take your pick).  It's easily (too easily) reproduced, 
What's scarier: the aging FAA computers or the bad software transported
to newer systems?

Evolution or revolution: did IBM get it right the first time?
Note that this version of evolution implies revisionist evolution
with jumps rather than gradual changes.

--eugene miya
  NASA Ames

------------------------------

Date: Thu, 10 Mar 1988  20:44 EST
From: LIN@XX.LCS.MIT.EDU
Subject: Why Software is Different

It strikes me that another reason that hardware is more sophisticated
than software is that with hardware, production requires design
freezes to a much greater extent than software.  Indeed, recall why
hardware is called hardware -- it is because physical things have to
be made.  By contrast, software is much more akin to thought, and that
can be changed with much greater ease.

Result?  It's easier to tinker with software, and thus the programmer
has much less incentive to think about the real gains from that last
change he's about to make.  

------------------------------

Date: 9 Mar 88 13:32:42 GMT
From: mtune!mtgzz!mtgzy!mtuxo!homxb!houxs!beyer@rutgers.edu  (J.BEYER)
Subject: Why Software is Different

When I used to be in hardware, the term 'maintenance' was used exclusively
for repairing something that broke. 'Enhancements' were not charged to a
maintenance budget, but to future engineering budget. In software, it seems
that Enhancements and continuing engineering are [I believe] mistakenly
charged to maintenance. This seems unfair.

------------------------------

Date: 12 Mar 88 02:54:49 GMT
From: trwrb!aero!venera.isi.edu!raveling@ucbvax.Berkeley.EDU  (Paul Raveling)
Subject: Why Software is Different

>State-of-the-practice in Software:
>"THE PROGRAM IS PROVIDED "AS IS' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
>OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF 
>MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO
>THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM
>PROVE DEFECTIVE, YOU (AND NOT IBM OR AN AUTHORIZED PERSONAL COMPUTER DEALER)
>ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION"
>one paragraph from IBM program Licence Agreement (shrink wrap).

	This is actually state of the art in litigation.  You'll
	find the same wording in limited warranty disclaimers for
	lots of non-computing products because it's clearly defined
	in law.  You're right though that software goes MUCH farther
	than anything else I can think of in invoking the law's
	CYA shelters.  I personally dislike these disclaimers intensely.

>All software is known by version number, both for bug fixes and enhancements:
>Turbo C 1.0, 1.1, 1.2, 1.5, etc.   An Ada compiler 5.0, 5.1, 5.41, 5.5, etc.

	... as is hardware.  I've tailored software to suit boards
	up to Revision M.  If hardware makes it anywhere near that
	level of revision it's almost certainly obsolete and will
	be replaced soon by a new board at Rev A.  I'd LOVE to be
	able to use the same approach with lots of software.

	Economics favors upgrading hardware as technology enables
	producing a new product which can be manufactured for
	less cost than an old product.  The conventional "wisdom"
	is that software should be reused to the hilt to hold down
	costs.  This works for some software, but causes BIG trouble
	when reused components are a poor fit for new requirements.

	Software management seems to be much more aware of the NIH
	(Not Invented Here) syndrome than of the risk of the UWE
	(Use Whatever Exists) syndrome.


Paul Raveling
Raveling@vaxa.isi.edu

------------------------------

Date: 12 Mar 88 04:12:47 GMT
From: trwrb!aero!venera.isi.edu!raveling@ucbvax.Berkeley.EDU  (Paul Raveling)
Subject: Why Software is Different

>All three of these approaches in the software realm fall victim to the same
>concern: efficiency.  This is partly a legacy of the 50s, when the self-taught
>programmers of the time were willing to do *anything* to squeeze out a few
>more cycles or a few words of memory.  It was OK to violate any abstraction
>or to use any quirk of the system.  ...

	There's another side to this coin.  What I see now is lots of
	software being written without regard to performance.

	Squeezing every ounce of speed and size out of the code made
	sense when (for example) my time cost a princely $3.08/hr and
	the machine cost $125/hr.  But those old machines taught us
	that efficient algorithms were a bigger win than efficient code.

	They forced us to learn good habits in both algorithm design
	and optimal coding.  We had to do so much "optimal coding" that
	it was quite painless to abandon it when machines grew
	enough to eliminate the need.


	Now I see lots of software being put together with minimum
	implementation time as its sole goal.  Yes, we have lots
	of uncommented Lisp.  The benchmarks show it runs about
	3 times slower than C, which is about 3 times slower than
	machine language.  All that runs over an operating system,
	Unix, which switches contexts an order of magnitude slower
	than some other systems.

	... and one of us (not me) wonders why his "high-tech"
	workstation has worse response time than his PC at home.


Paul Raveling
Raveling@vaxa.isi.edu

------------------------------


Date: 9 Mar 88 17:05:36 GMT
From: defun.utah.edu!shebs@cs.utah.edu  (Stanley T. Shebs)
Subject: Whistle-blowing and Responsibility

>How
>many incompetent people do you know who will admit to incompetence?

"Incompetence" has several possible meanings.  It might, for instance,
mean that the individual is simply ignorant, perhaps even too ignorant
to realize it.  Education, not punishment, is appropriate; if any punishment
is to be handed out, it should be to the managers that give ignorant persons
too much responsibility.  Another sort of incompetent is one who knows
what should be done, but chooses to take shortcuts.  Lots of punishment,
the more the better; there's ample legal precedent for this sort of thing.
Then there's the person with good intentions but botched results.  Handslaps
and transfers to less responsible positions are the right answer.

>As an
>example, I could (but won't) cite a certain person who, having driven away
>one company's customers, later went on to a more responsible position with
>a much larger firm, where he today is happily convincing many people that
>his employer is completely incompetent, at least with the software he is
>involved in.

Why not name names?  If you have facts to relate, then your moral duty is
to publicize them.  Of course, this is in the same category as whistle
blowing, so I understand if you maybe want to line up another job first!
Perhaps ACM or IEEE could make themselves useful for a change and set up
something to support software whistleblowers...

							stan shebs
							shebs@cs.utah.edu
------------------------------

Date: 10 Mar 88 17:42:31 GMT
From: att-ih!pacbell!ptsfa!well!rmac@gargoyle.uchicago.edu  (Robert J. McIlree)
Subject: Whistle-blowing and Responsibility

Uh, hold the phone here Stan. "Whistleblowing" pertains to those who
are committing crimes, like felonies, against their employers, the
government, etc. "Publicizing the facts", as you describe, would
probably result in one or more of the following (even if the
whistleblower had something else lined up):

	1) To trumpet so-and-so as an incompetent software engineer
	   or manager would probably entail the release of the
	   company's proprietary information (i.e. the "facts, as you
	   put it). This leads to a lawsuit by company involved
	   against whistleblower, for revealing trade secrets and
	   violating the standard employment agreement most of us
	   sign when coming aboard.

	2) In trumpeting so-snd-so as incompetent, so-and-so probably
	   has some very nice legal avenues to persue against the
	   "whistleblower" (I'd use a better term here, how about
	   "fink" or stool pigeon"?). Libel and slander come to
	   mind right away. This scenario can also be closely coupled
	   with scenario #1.

	3) Finally, the "whistleblower/fink/stoolie" must become
	   public along with the target. Probably would get
	   publicized in the trades (after all, we are trying to
	   root out "problem" people, aren't we?) and prof. mags.
	   I, for one, would never hire the fink because, in the
	   absense of criminal activity as defined by law, he
	   could "blow his whistle" on me, for as small a reason
	   as disagreeing with my management or technical styles.
	   As you may suspect, the witch-hunts that start from
	   that type of approach would concievably leave us
	   all unemployed. Finks cannot be trusted.

As to your reference for ACM or IEEE to become policemen over our
profession, I for one do not pay dues to these organizations so
that the profession may be purged of your view of incompetent
individuals. Actually, our profession weeds out people who don't
belong in it  pretty effectively anyway. People leave,
get fired, get promoted (as in the example), or start new careers.
So, equilibrium of "competent" folks is usally maintained accross the 
board.

Finally, individuals compete with each other, companies do the same.
So if you were a competitor against the guy who screwed up, you'd
gloat. Because you'd get your stuff to market faster with higher
quality while he spins his (and the company's) wheels. See what I
mean?

Bob McIlree
{lll-crg,ihnp4,}!well!rmac

------------------------------

Date: 11 Mar 88 04:18:18 GMT
From: defun.utah.edu!shebs@cs.utah.edu  (Stanley T. Shebs)
Subject: Whistleblowing and Responsibility

>[...] "Whistleblowing" pertains to those who
>are committing crimes, like felonies, against their employers, the
>government, etc.

I didn't realize that "whistleblowing" was so narrowly construed.  What do
you call it if only civil statutes apply?  Is a civil engineer who knowingly
specifies cheaper but unsafe materials in a building (which then collapses
as a result) only touchable via lawsuits?  Is someone who publicizes the 
engineer's misdeeds a nasty fink or a public hero?  Would Roger Boisjoly (the
Challenger almost-whistleblower) have been a fink?

>	2) In trumpeting so-snd-so as incompetent, so-and-so probably
>	   has some very nice legal avenues to persue against the
>	   "whistleblower" (I'd use a better term here, how about
>	   "fink" or stool pidgeon"?). [...] Libel and slander
>	   come to mind right away.

If I recall my vague acquaintance with the law correctly, the truth is never
considered libelous.  "X is incompetent" is not a provable statement.  But
"X omitted range checks in critical code" or "Y released product Z 4.0 with
54 known bugs, one of which corrupts a PC's hard disk" are statements whose
truth can be tested objectively.

>	   I, for one, would never hire the fink because, in the
>	   absense of criminal activity as defined by law, he
>	   could "blow his whistle" on me, for as small a reason
>	   as disagreeing with my management or technical styles.

Even as a mere student in the ivory towers of academe, I hear all kinds
of stuff about who screwed up and why.  Some of it is silly stuff about
management style, and some of it is more serious.  I would probably prefer
to hire the "fink", at least if the "finking" was all factual, because I
would know that this person has enough of a sense of responsibility to stand
up to me, if I were to be tempted to do something wrong.  The factualness is
important; witch-hunts come about when rumors are given more weight than
provable allegations.

>As to your reference for ACM or IEEE to become policemen over our
>profession, I for one do not pay dues to these organizations so
>that the profession may be purged of your view of incompetent
>individuals.

Doesn't have to be "my" views - there is plenty of "accepted wisdom"
in the field.  ACM is actually not an appropriate organization anyhow,
since it is "scientific" rather than "professional" like IEEE.  IEEE
could help implement licensing - I think some people have been working
on it (anybody know for sure?).  Is there any reason why software engineers
should be exempt from the sort of licensing requirements found in other fields?

>Actually, our profession weeds out people who don't
>belong in it  pretty effectively anyway. People leave,
>get fired, get promoted (as in the example), or start new careers.

"Getting promoted" is not my idea of effective weeding!  And why would 
programmers who do wrong things tend to start new careers more than those
who do right things?  Come to think of it, why would they even get fired?
Based on my limited "real-world" experience (defense contractor, mostly),
there wasn't even any attempt to determine who (if anybody) was responsible
for mistakes!  Given that, how could there have been any incentive to 
write reliable software?

(Incidentally, my DoD work was for the air-launched cruise missile, and
although the standards for most of the software were pretty lax, the software
relating to nuclear safety was a different matter - there were elaborate
calculations on the probability of accidental detonation, although I don't
recall any sort of formal verification being done on the assembly (!) code
involved.  Now you folks living near SAC bases can sleep easier tonight. :-) )

							stan shebs
							shebs@cs.utah.edu

------------------------------

Date: 12 Mar 88 10:41:38 GMT
From: trwrb!desint!geoff@ucbvax.Berkeley.EDU  (Geoff Kuenning)
Subject: Whistleblowing and Responsibility

> Why not name names?  If you have facts to relate, then your moral duty is
> to publicize them.  Of course, this is in the same category as whistle
> blowing, so I understand if you maybe want to line up another job first!
> Perhaps ACM or IEEE could make themselves useful for a change and set up
> something to support software whistleblowers...

It's got nothing to do with job protection;  in fact one could argue that
I have already cost the person in question one job.  It's just that I don't
want to make enemies, and I know that he reads the net, though perhaps
not this group.  It is quite possible to argue that my position is based
on opinions, not facts, software engineering being a somewhat ill-defined
discipline.  I don't really see how writing that "Joe Blow of Fast
Computers, Inc. is an idiot who is damaging his company" is going to
help anyone.  Certainly Fast Computers would qualify as an idiot company
if they fired Joe based on the word of an essentially anonymous net poster.
And I'd hate to get sued by Joe because he couldn't get a new job based
on my maligning him.

In any case, any competent interviewer would never hire this person for
the job he has.  So why not just let Fast Computers dig their own grave?

	Geoff Kuenning   geoff@ITcorp.com   {uunet,trwrb}!desint!geoff

------------------------------

End of Soft-Eng Digest
******************************

-------