Newsgroups: comp.edu,comp.object,comp.lang.c++,comp.lang.smalltalk,comp.software.testing
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!news.mathworks.com!news.kei.com!wang!news
From: e1678223%PROBLEM_WITH_INEWS_DOMAIN_FILE@discus.technion.ac.il (Michael Veksler)
Subject: Re: Software Engineering Doesn't Exist [was: C Hackers]
Organization: Technion - Israel Institute of Technology. SW lab
Date: Sat, 22 Jul 1995 10:03:26 GMT
Message-ID: <DC43xq.AEy@discus.technion.ac.il>
Followup-To: comp.edu,comp.object,comp.lang.c++,comp.lang.smalltalk,comp.software.testing
References: <3tdfsd$nn9@newsbf02.news.aol.com> <3tr9oq$hb2@sernews.raleigh.ibm.com> <3u66as$5jp@sun132.spd.dsccc.com> <3ue75o$n6i@r <3uk6lr$1mv@bmerhc5e.bnr.ca>
Sender: news@wang.com
Lines: 60
Xref: glinda.oz.cs.cmu.edu comp.edu:13489 comp.object:35435 comp.lang.c++:139993 comp.lang.smalltalk:26220 comp.software.testing:5318

Brad Shapcott (dbshapco@bnr.ca) wrote:
: 2) The reason that there is no software engineering is that engineering
: itself is tending towards being applied science, with the computer ironically
: bolstering that trend.

: Imagine an structural engineer trying to engineer (NOT design!) a bridge who
: didn't know the structural properties of the metals being used (because that
: was all low level detail).  In fact, this 'engineer' has never even seen a
: bridge or built one (but perhaps had built some models, but maybe only on
: a computer simulator -- maybe).  Is this person properly described as an
: engineer?  (Or an applied scientist, or designer, or what?)

Do you really think that structural engineers *build* their bridges, they
have workers to do that. They know what the workers should do (more or less),
but they probably can't do it themselves without breaking something.
Software engineers use compilers instead of workers, if they will
try to do the work themselves, they may break something too.

: Now imagine a software 'engineer' who cannot describe the basic execution
: properties of the machine code their compiler is producing.  In fact, has
: never had any expereince using machine code and knows very little about how
: their assembler and linker/loader works, and scoffs at anyone who concerns
: themselves with such details.  Is cultured (and conventially promoted)
: ignorance of the basics of the craft consistent with engineering practise?

Actually, all software engineers I know have some basic knowledge in
assembly and CPU structure (pipelines, superscalar, multiprocessors, etc.).
You must know that so you don't expect too much of your compiler and
write your C code properly (As long as it does not hurt maintainability).
We are taught at our third-fifth semesters about the internals:
  Assembly, computer structure, OS structure, compilation,
Writing 2000 lines of code as a homework is pretty ordinary
(I had written 2 programs 3000 lines of lisp code for an AI course). 
On the other hand we learn much theory (I actually loved this part).
I don't know what other institutes/universities do.

: Frankly, the approach to object oriented technologies has done more to
: exacerbate this problem, because too much emphasis is placed on design.
: This may partially be the direction in which the pendulum has swung from
: early days when too little attention was paid design, and partially because
: in the early days of object technologies it was valuable to gloss over the
: chief liability (performance) as inconsequential and overrated by [err, umm]
: hackers.  (Many real world applications are dominated by their execution
: constants rather than number of iterations/recursions.)

You are wrong, OO design is a great thing. I have been a chacker at school,
written assembly code for my Commodore-64 (That was THE PC of those days).
Optimized every instruction so my program (or interrupt handler)  will fit
into xx Kb. I knew nothing about design, OO-design could have saved
me a lot of time (I had to rewrite things all over after I discovered 
that the data-structure was not good enough for the task in hand).
OO is a great thing, but it can't be applied for every task, some tasks
simply can't be referred to as objects. For those tasks there are other 
analysis techniques like OPD, BFD.
Did you hear of OPD (Object-Process-Design) ?
You should try it. It takes the good things of the two worlds of OO and
process Analysis/Design.

Michael

