Newsgroups: comp.software-eng
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!casbah.acns.nwu.edu!andersen!tsarver
From: tsarver@andersen.uucp (Tom Sarver)
Subject: Re: Art vs. Engineering
Message-ID: <1991May16.231300.13345@casbah.acns.nwu.edu>
Summary: Look it up in IEEE Software, Nov. 1990
Keywords: Engineering, Art, science, software
Sender: tsarver
Nntp-Posting-Host: 192.42.140.1
Organization: Andersen Consulting
References: <1991May13.181826.18832@hellgate.utah.edu> <1336@grapevine.EBay.Sun.COM>
Date: Thu, 16 May 1991 23:13:00 GMT
Lines: 60

Hey guys,
This thread is getting a little tiresome.  Everyone is simply reacting
based on their own experience.  Like good scientists that we are, let's
try to find some good references on the subject.  Below I offer two
references which deal directly with the debate, and I attempt to
summarize them here.

The conclusion of this posting is that software engineering is still
pre-paradigm as evidenced by the lack of a generally agreed upon way
of looking at software, AND the weakness of the supporting science,
computer science.  HOWEVER, software is such a gosh-dern useful thing,
people are willing to shell out big bucks for sub-otpimal solutions.

My first suggested reference is Thomas Kuhn's _The Structure of
Scientific Revolutions_.  This excellent book describes the life-cycle
of a scientific discipline.  The second reference is an article by
Mary Shaw of Carnegie Mellon University, "Propsects for an Engineering
Discipline of Software."  This article examines a definition of
engineering and relates it to software development and deployment.
This article, BTW, received IEEE's award for best article of 1990.

In _...Scientific Revolutions_, Kuhn describes a period called "pre-
paradigm in which participants are attempting to model the results of
emperical studies (formal and informal) into a paradigm.  This paradigm
enables them to discuss findings in a common arena of terms.  The
discipline matures when the paradigm is found to account for a large
percentage of phenomena.  The discipline then enters an "engineering"
phase in which people use the results of the discipline to advance
someone's external goals (society's, an evil genius', etc.)  Mary Shaw
implies, and I agree with her, that "software engineering" is in the
pre-paradigm stage.

Mary Shaw's article, "...Engineering Discipline of Software," Explains
how a discipline develops from a craft, to production, and finally a
professional engineering discipline.  After showing the phases of
software development (prog. any-which-way, prog-in-the-small, prog-in-
the-large), she explains how inadequate computer science is to the way
that software is currently developed.

The conclusion is that we are in the "production" phase of the discipline.
There are successful and unsuccessful examples of software development.
But the science is not mature enough to move from requirements to
code with unerring steps.  Everyone who does it is drawing on knowledge,
rules of thumb, experience, and intuition to pull it off.

Whoever does software engineering is a craftsman with different freedoms
and constraints.  No one can determine unequivocally that a piece of
software is "right" or "wrong."

I'd like to see folks' opinions of these references and their applicability.
Try to imagine what software engineering would be like if it were truly
engineering.

--Tom Sarver
tsarver@andersen.com
-- 
/----------------------------------->>*<<-------------------------------------+
|                                                                     ____    |
| Tom Sarver: tsarver@andersen.com | Only Amiga makes it possible!   / / /    |
| "A real computer has a linear address space. NO 386's!!"          / / /     |
