[comp.software-eng] S/W, H/W, Engineers, & Creativity

martin@edwards-tems.af.mil (04/19/91)

Random House College Dictionary, 1985:
> Engineering, 1. the art or science of making practical application of the
> knowledge of pure science, (such) as physics, chemistry, etc., as in the
> construction of engines, buildings, bridges, mines, chemical plants, and the
> like.

Steve Savitzky writes: 
>      Every working definition of ``engineering'' appears to exclude computer
>      science.

     I don't see anything in the definition that excludes software from being
engineered.  Certainly, aircraft flight control software or automotive engine
control software is engineered.  Practical knowledge of information science is
applied in database software, wouldn't that be engineering?  Practical
knowledge of the science of psychology is applied in developing a good user
interface.

     Any given computer hardware/software system could instead be implemented
as an all hardware system.  This would require that same set of skills and
processes be applied in the design of the system.  Only the physical
implementation would be different.  Why would the all-hardware implementation
be "engineered" and the software portion of a hybrid implementation not be?

>
> .... It's possible to treat software as a product
> of engineering only when it's embedded in a non-interactive system.
> As soon as the software has a user interface, artistic considerations
> take over.
>

     An aircraft is clearly an interactive system. "Artistic considerations"
(actually human factors considerations, or the practical application of the
knowledge of the sciences of pschology and human physiology) are certainly
critical  in the design of these systems and are employed by aerospace
engineers, as well as software engineers.

Bill Cole writes:
> .... Programming is a creative endeavor at some level.  If we were strictly
> engineers, we could (run?) down a catalog of routines and, by cleverly
> sticking them together, build a program.  .... The difference is that
> programmers are tasked to build new components if they can't find one in
> the own catalog of program components.  How many CEs build bridges out of
> self-designed components?  

     Engineers don't just open a handbook and pick out a few standard
components and cleverly stick them together when they design something (unless
it's a trivial something).  Designing anything worthwile is a creative process
and an iterative process, whether it involves engineering or not.  Good design
requires the application of knowledge of some subject area (or areas) to the
iteration of the design until the designer decides that it is good enough to
satisfy the design requirements. It doesn't matter whether the thing is a book
to be written (where the design requirements may be only the author's
conception of the story that needs to be told), a bicycle, a bridge, the Pond
Racer, or a piece of software.  No design of any substantial complexity ever
achieves perfection, it just becomes good enough and the designer abandons it
to pursue the next one.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  Gary S. Martin                !  (805)277-4509  DSN 527-4509
  6510th Test Wing/TSWS         !  Martin@Edwards-TEMS.af.mil
  Edwards AFB, CA 93523-5000    !
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

steve@Advansoft.COM (Steve Savitzky) (04/20/91)

In article <1991Apr18.141639.51@edwards-tems.af.mil> martin@edwards-tems.af.mil writes:

 Steve Savitzky writes: 
 >      Every working definition of ``engineering'' appears to exclude computer
 >      science.

Actually, I DON'T write that, I quote it from amanda@visix.com (Amanda
Walker), who in turn was quoting brnstnd@kramden.acf.nyu.edu (Dan
Bernstein).  (I realize that I'm being a bit pedantic here, but I like
to give credit where it's due.  I don't fully agree with that quote,
though I sympathize with it.)

Gary S. Martin goes on to say:
 Random House College Dictionary, 1985:
 > Engineering, 1. the art or science of making practical application of the
 > knowledge of pure science, (such) as physics, chemistry, etc., as in the
 > construction of engines, buildings, bridges, mines, chemical plants, and the
 > like.

      I don't see anything in the definition that excludes software from being
 engineered.  Certainly, aircraft flight control software or automotive engine
 control software is engineered.  

It is possible to question both the extent to which the theory of
computation is really a science, and the degree of its relevance to
the art of programming.  I tend to regard mathematics as a branch of
philosophy.  But, indeed, PARTS OF some software are engineered, and I
don't have any problem with that.

                            Practical knowledge of information science is
 applied in database software, wouldn't that be engineering?  Practical
 knowledge of the science of psychology is applied in developing a good user
 interface.

Well, VERY rarely, and psychology is a pretty fuzzy science.  The fact
that psychological studies were done on it doesn't make an interface
easy or pleasant to use.  More frequently it's the reverse.

      Any given computer hardware/software system could instead be implemented
 as an all hardware system.  This would require that same set of skills and
 processes be applied in the design of the system.  Only the physical
 implementation would be different.  Why would the all-hardware implementation
 be "engineered" and the software portion of a hybrid implementation not be?

I would dispute this.  Even if the workstation on my desk were run
through some kind of silicon compiler and turned into random gates, it
would still *behave as if* it included Unix, and Emacs, and X, which
were *designed* by programming, not by engineering.  Consider the
difference between a steel bridge and a steel sculpture.  I can't
imagine building something with the complexity of Unix directly out of
TTL gates.  (Consider some of the early all-hardware word processors,
for another example.)

Moreover, when a software product is functioning as part of a hardware
system, although there is certainly engineering involved, it is not
clear how much of this is *software* engineering.  The design of the
software controlling my car's engine has more to do with the
differential equations of optimal control and digital filtering than
it does with loops and functions.

Martin goes on to quote me (really me, this time) as saying:

> .... It's possible to treat software as a product
> of engineering only when it's embedded in a non-interactive system.
> As soon as the software has a user interface, artistic considerations
> take over.

      An aircraft is clearly an interactive system. "Artistic considerations"
 (actually human factors considerations, or the practical application of the
 knowledge of the sciences of pschology and human physiology) are certainly
 critical in the design of these systems and are employed by aerospace
 engineers, as well as software engineers.

The passengers who were shot down apparently because the wrong set of
numbers were keyed into their plane's autopilot might dispute this,
too.

      Engineers don't just open a handbook and pick out a few standard
 components and cleverly stick them together when they design something (unless
 it's a trivial something).  Designing anything worthwile is a creative process
 and an iterative process, whether it involves engineering or not.  Good design
 requires the application of knowledge of some subject area (or areas) to the
 iteration of the design until the designer decides that it is good enough to
 satisfy the design requirements. It doesn't matter whether the thing is a book
 to be written (where the design requirements may be only the author's
 conception of the story that needs to be told), a bicycle, a bridge, the Pond
 Racer, or a piece of software.  No design of any substantial complexity ever
 achieves perfection, it just becomes good enough and the designer abandons it
 to pursue the next one.

I fully agree.  I don't think anyone in this thread is suggesting that
software doesn't involve *design*, but as Martin correctly points out,
not all design is engineering.  I suspect that most software is more
like a book than a bridge (though this certainly depends on the field
being addressed; aerospace software has a larger engineering component
than game software, and rightly so).
--
\ --Steve Savitzky--  \ ADVANsoft Research Corp \ REAL hackers use an AXE! \
 \ steve@advansoft.COM \ 4301 Great America Pkwy \ #include<disclaimer.h>   \
  \ arc!steve@apple.COM \ Santa Clara, CA 95954   \        408-727-3357      \
   \__ steve@arc.UUCP _________________________________________________________

jane@latcs2.lat.oz.au (Jane Philcox) (05/02/91)

In article <1991Apr18.141639.51@edwards-tems.af.mil> martin@edwards-tems.af.mil writes:
>No design of any substantial complexity ever achieves perfection, it just 
>becomes good enough and the designer abandons it to pursue the next one.

OR
No design ... ever achieves perfection, the designer just gets sick of it and
abandons it to pursue the next one.

Cynacism aside, all design also has to be a compromise, between ideals and
practical reality, where two or more ideals may conflict when it comes to the
practical realization.  (The perfect characterisation and the length of the
book, high lift/low drag wing, the ability to process large chunks of text and
the ability to do it fast, ...)  You may be better off leaving that compromise
and having a try at a better one.

Regards, Jane. 
-- 
******************************************************************************
*******  REAL PROGRAMMERS CAN WRITE A FORTRAN PROGRAM IN ANY LANGUAGE  *******
******************************************************************************