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 ******* ******************************************************************************