amanda@visix.com (Amanda Walker) (04/16/91)
In article <jls.671514765@rutabaga> jls@rutabaga.Rational.COM (Jim Showalter) writes: I'm a bit confused. Is it your belief that software engineers do NOT work on problems directly related to the real world? Precisely. Hardware engineers, or electrical engineers, and so on work on problems directly related to the real world. So-called "software engineers" work on problems with symbolic systems that may happen to model aspects of the real world, or may not. In fact, some of the most popular applications of computer technology (and some of the most in need of the techniques often called "software engineering") are problems that are quite explicitly *not* part of the real world: simulation and modelling, statistical and numerical analysis, user interfaces, Usenet... These are all purely symbolic. They involve manipulating symbols and information. I like engineering. Put simply, I like building stuff. Creating a piece of software, though, is a lot more like writing something than building something. You just have a real literal-minded audience :)... I thought that satellites, dishwashers, dialysis machines, airplanes, telecommunications equipment, laptop computers, relational databases, finite element analysis models, and, well, actually, every OTHER thing I've seen software used for was part of the real world. What? You mean I can wash my dishes with software? Wow. What a concept. A relational database is part of the real world? I thought it was a symbolic framework for organizing information (which is about as abstract as it can get). I've seen *hardware* used in the real world, but not software. All I've ever seen software is manipulate symbols. Even low-level stuff like device drivers and barcode scanning software... I think I'd ask them to solve some problems. Probably have them rig up an interface to some device, write some queries for a database, reverse engineer a design from some legacy code, etc etc etc. You know--do some software engineering. In most engineering disciplines, tests are done by testing knowledge, not by testing performance. What you describe sounds more like an exam in art, music, or writing (usually called a "practical" or "recital" exam). Hmm... I wonder how that could be? Think of it as the kind of thing lawyers have to do to pass the bar, or doctors have to do to become doctors. Are lawyers and doctors engineers? Wow, learn something new every day :). -- Amanda Walker amanda@visix.com Visix Software Inc. ...!uunet!visix!amanda -- Entropy requires no maintenance.
dan@ece.arizona.edu (Dan Filiberti) (04/16/91)
In article <1991Apr15.205218.6914@visix.com>, amanda@visix.com (Amanda Walker) writes: |> In article <jls.671514765@rutabaga> jls@rutabaga.Rational.COM (Jim |> Showalter) writes: |> |> I'm a bit confused. Is it your belief that software engineers do NOT |> work on problems directly related to the real world? |> |> Precisely. Hardware engineers, or electrical engineers, and so on work |> on problems directly related to the real world. So-called "software |> engineers" work on problems with symbolic systems that may happen to model |> aspects of the real world, or may not. In fact, some of the most popular |> applications of computer technology (and some of the most in need of the |> techniques often called "software engineering") are problems that are quite |> explicitly *not* part of the real world: simulation and modelling, |> statistical and numerical analysis, user interfaces, Usenet... Uh, I don't think you live in the real world...people in the real world use user interfaces...people in the real world use numerical analysis and statistics...and electrical engineers use simulation and modelling...I can't think of anything more directly related to the real world than a user interface...maybe you don't live in the same world that I do... |> These are all purely symbolic. They involve manipulating symbols and |> information. |> |> I like engineering. Put simply, I like building stuff. Creating a piece |> of software, though, is a lot more like writing something than building |> something. You just have a real literal-minded audience :)... What? How can you compare literature with software...their purpose is completely different. Software is the bridge between hardware and the user, not a piece of poetry... |> I thought that |> satellites, dishwashers, dialysis machines, airplanes, telecommunications |> equipment, laptop computers, relational databases, finite element analysis |> models, and, well, actually, every OTHER thing I've seen software |> used for was part of the real world. |> |> What? You mean I can wash my dishes with software? Wow. What a |> concept. A relational database is part of the real world? I thought |> it was a symbolic framework for organizing information (which is about |> as abstract as it can get). I've seen *hardware* used in the real |> world, but not software. All I've ever seen software is manipulate |> symbols. Even low-level stuff like device drivers and barcode |> scanning software... I don't see your point...if software didn't exist, we'd still be back in the 60's waiting for hardware that could do something for people...without software, hardware is moot. Why do you think microprocessors use microcode? Because building the logic isn't feasible...software allows hardware to reach its highest potential, and without it hardware development would virtually stop. |> I think I'd ask them to solve some problems. Probably have them rig |> up an interface to some device, write some queries for a database, |> reverse engineer a design from some legacy code, etc etc etc. You |> know--do some software engineering. |> |> In most engineering disciplines, tests are done by testing knowledge, |> not by testing performance. What you describe sounds more like an |> exam in art, music, or writing (usually called a "practical" or |> "recital" exam). Hmm... I wonder how that could be? |> |> Think of it as the kind of thing lawyers have to do to pass the bar, |> or doctors have to do to become doctors. |> |> Are lawyers and doctors engineers? Wow, learn something new every day :). Well let me teach you something more...an engineer is someone who builds things for people...whether software, hardware, toys, dishwashers or whatever... I'm a computer engineer, and as such a design both hardware and software. These are just tools of the trade. As for the real world, it needs both hardware and software just as I do...whether their is such a thing as hardware engineering or software engineering, it doesn't matter. Ultimately, both are done by people for people, and are used by people...Thus, whether you build software or hardware, you are still engineering...:) Daniel Filiberti dan@ece.arizona.edu [:)} ------------------------------------------------------------------------ ------- "If the world ended with a big-bang, I'd ride the waves to the edge of the universe, and fall flat on my face." +++ Big, bad, and ugly. +++ ------------------------------------------------------------------------ -------
amanda@visix.com (Amanda Walker) (04/17/91)
dan@ece.arizona.edu (Dan Filiberti) writes:
Uh, I don't think you live in the real world...people in the real
world use user interfaces...people in the real world use numerical
analysis and statistics...and electrical engineers use simulation
and modelling...I can't think of anything more directly related to
the real world than a user interface...maybe you don't live in the
same world that I do...
However, building a user interface (as the term is generally applied in
the computer industry) does not entail building something that a person
interacts with. It involves constructing a metaphor for, or a depiction
of, something that does not exist; the user then interacts with this
symbolic construct instead of interacting with the "real world". The
screen in front of me is a hunk of glass--nonetheless I interact with
it as if it were composed of several sheets of paper, terminal screens,
a mailbox, and several other things. It is this virtual quality which,
to my mind, makes software more of an art than a science. Books are
virtual reality. Music is virtual reality. A painting is virtual
reality. A tractor is not virtual reality. Now, is software more like
a book or a tractor?
What? How can you compare literature with software...their purpose
is completely different.
I disagree. The purpose of both is to allow a person to interact with
something that has no concrete existence.
without software, hardware is moot.
No, just special purpose, since its design must embody what it will be
used for.
Why do you think microprocessors use microcode? Because building
the logic isn't feasible...
What about RISC designs, which tend to explicitly avoid microcode?
Software can often gain you many of the benefits of a physical
device without some of the costs of building such a device. This is
one of the main reasons it is useful. Again, it lets a person work
*as if* they had a particular tool. Emacs lets me work to large
extent as if I had the world's best typewriter, without requiring me
to actually have one.
software allows hardware to reach its highest potential,
and without it hardware development would virtually stop.
I think of it the other way around: Hardware is simply the medium through
which people can use software... In an important respect, my workstation
is the interface between me (and the real world I live in) and the software
I use. My tools are virtual, not physical. I can replace all of the
hardware that I use in the course of a day, and still be using the same
tools and materials, because those tools and materials are software and
data, not physical things.
Well let me teach you something more...an engineer is someone who
builds things for people...
This seems to be a much wider definition than I am used to.
Ultimately, both are done by people for people, and are used by
people...Thus, whether you build software or hardware, you are
still engineering...:)
But if building things for people defines engineering, I think that
we've wandered quite a bit from Jim's version of "engineering," or
the definitions that seem prevalent in industry. By your definition,
a sculptor is an engineer, as is a composer, or manager, or a politician.
Now, I very much agree that all of these share characteristics and
techniques with engineering, but I would nonetheless hestitate to call
all of them "engineers." To do so would make the term almost
meaningless.
--
Amanda Walker amanda@visix.com
Visix Software Inc. ...!uunet!visix!amanda
--
"I used to be Snow White, but I drifted." ---Mae West
dan@ece.arizona.edu (Dan Filiberti) (04/17/91)
In article <1991Apr16.171011.14050@visix.com>, amanda@visix.com (Amanda Walker) writes: |> However, building a user interface (as the term is generally applied in |> the computer industry) does not entail building something that a person |> interacts with. It involves constructing a metaphor for, or a depiction |> of, something that does not exist; the user then interacts with this |> symbolic construct instead of interacting with the "real world". The |> screen in front of me is a hunk of glass--nonetheless I interact with |> it as if it were composed of several sheets of paper, terminal screens, |> a mailbox, and several other things. It is this virtual quality which, |> to my mind, makes software more of an art than a science. Books are |> virtual reality. Music is virtual reality. A painting is virtual |> reality. A tractor is not virtual reality. Now, is software more like |> a book or a tractor? Wrong. I have a problem with people not interacting with a user interface, since that is the sole purpose of a user interface. And, you continue to say that the user does interact with the symbolic construct (user interface) which is it, yes or no? At its lowest level, software is not virtual. Have you ever microcoded? Microcode essentialy describes hardware connections (registers to bus, bus to memory, etc...), this is not virtual reality, unless hardware is virtual reality. At its lowest level, a file system at some point writes its data to hardware, is that virtual reality, no. Software is definitely more like the tractor. Literature only affects the mind of the reader, while software directly affects hardware. Please, give me an example of one computer system that didn't benefit in some way from a software generated user interface...just one. |> What? How can you compare literature with software...their purpose |> is completely different. |> |> I disagree. The purpose of both is to allow a person to interact with |> something that has no concrete existence. Computer hardware has no concrete existence, boy you really don't understand, do you? |> without software, hardware is moot. |> |> No, just special purpose, since its design must embody what it will be |> used for. Is a computer system special purpose? Please, show me a computer that was designed without the aid of software along the way... |> Why do you think microprocessors use microcode? Because building |> the logic isn't feasible... |> |> What about RISC designs, which tend to explicitly avoid microcode? At the expense of a reduced instruction set, meaning more software to make it do anything. |> I think of it the other way around: Hardware is simply the medium through |> which people can use software... In an important respect, my workstation |> is the interface between me (and the real world I live in) and the software |> I use. My tools are virtual, not physical. I can replace all of the |> hardware that I use in the course of a day, and still be using the same |> tools and materials, because those tools and materials are software and |> data, not physical things. Since when is data not physical. Have you ever heard of RAM? How about registers? I`d really like to see you swap hardware while using exactly the same software on the new machine, and get anything to run. As soon as you change some of the hardware, the software changes with it. It might be at a low level, such as the operating system, compilers, file system, and other low level code, but its software just the same. |> Well let me teach you something more...an engineer is someone who |> builds things for people... |> |> This seems to be a much wider definition than I am used to. Well, maybe you'll be used to this definition. Software engineering - the application of knowledge obtained through study and practice of writing software. How's that? Daniel Filiberti dan@helios.ece.arizona.edu [:)} ------------------------------- "I sing the body electric...what a shock!" -------------------------------
amanda@visix.com (Amanda Walker) (04/18/91)
In article <1991Apr16.133304@ece.arizona.edu> dan@ece.arizona.edu (Dan
Filiberti) writes in annoyingly poorly word-wrapped fashion:
Wrong. I have a problem with people not interacting with a user
interface, since that is the sole purpose of a user interface.
You are missing my point. I am distinguishing between a physical
construct and a symbolic one. What I think of as "engineering" is the
application of the physical sciences (principally physics and chemistry,
but not exclusively) to the construction of physical devices (or "engines,"
hence the term "engineer"). This interpretation is supported by the
dictionary definition you yourself cited.
By this definition, designing and building a computer is engineering.
Writing a program is not; it does not involve the application of the
physical sciences, although it may sometimes involve application of
mathematics.
A user interface is not a physical device, like an automobile is. It is
a symbolic construct that has no meaning beyond that assigned to it by
a person observing or interacting with it. Think about it.
Have you ever microcoded?
Yup. Hands-on experience with AMD 2901 and 2903 bit slice machines, as
well as familiarity with other microcoded architectures.
Microcode essentialy describes hardware connections (registers to
bus, bus to memory, etc...), this is not virtual reality, unless
hardware is virtual reality.
Microcode is nothing *but* the creation of virtual reality. The whole
idea of it is that you can build a processor with a specific virtual
architecture without having to design and build it in hardware. A microcoded
control unit lets you act as if you had a hardwired control unit without
incurring some of the costs of building one. Look at a 68000 and a 68040.
The 68000 is mostly done in microcode, which lets the hardware be a lot
simpler. That hardware can instatiate many other virtual architectures,
depending on the microcode. It can be a 68000, or part of an IBM 370,
or whatever. A 68040 is mostly hardwired. It's faster, but the hardware
is a lot more complex and a lot more dedicated to a particular architecture.
Software conveys a virtual reality in terms of physical reality. I view
this as directly analogous to the way a novel, or a play, or a movie
implements a virtual experience in terms of an actual experience. When
I went to see "She Stoops To Conquer" last week, I didn't *actually* visit
the 18th century British Isles, but I nonetheless had some of the experience
of them. Likewise, my screen doesn't *actually* have a sheet of paper upon
which I am typing this article, but I nonetheless have some of the experience
of it.
At its lowest level, a file system at some point writes its data to
hardware, is that virtual reality, no.
Yes. Do you tell your computer how to orient the magnetic domains in the
media on your disk? No. You interact with a symbolic construct
called a "file system" which creates a virtual reality in terms of those
magnetic domains.
Please, give me an example of one computer system that
didn't benefit in some way from a software generated user
interface...just one.
An analog guidance system. A step-by-step telephone switch. I could go
on...
Computer hardware has no concrete existence, boy you really don't
understand, do you?
Nope, you don't understand. I've tried to ex
Is a computer system special purpose?
Some, yes.
Please, show me a computer
that was designed without the aid of software along the way...
Any analog or pre-Von Neumann computer. I gave a couple of examples
above. An old-fashioned electronic calculator chip.
However, how it was designed is immaterial--very few things are
designed without the aid of software these days :).
At the expense of a reduced instruction set, meaning more software to
make it do anything.
OK, take a non-microcoded processor, like the Z80 or the 6502. My point
stands. You can always trade off special-purpose hardware for software.
Since when is data not physical. Have you ever heard of RAM? How
about registers?
Since when are RAM and registers data? Sigh.
I`d really like to see you swap hardware while using exactly
the same software on the new machine, and get anything to run.
I did it Monday. Same Emacs, same window manager, same Usenet, ...
Software engineering - the application of knowledge obtained through
study and practice of writing software.
How's that?
Not bad, but it violates your own definition of engineering. It is, however,
what I use as a colloquial definition, and why my business card says
"software engineer."
Actually, my colloquial definition is closer to:
Software engineering - the application of formalized knowledge obtained
through study and practice of writing software.
I still think it's a misnomer.
--
Amanda Walker amanda@visix.com
Visix Software Inc. ...!uunet!visix!amanda
--
"There are two ways to write bug-free code; only the third way works."
--unknown consultant
dan@ece.arizona.edu (Dan Filiberti) (04/18/91)
In article <1991Apr17.172806.23036@visix.com>, amanda@visix.com (Amanda Walker) writes: >In article <1991Apr16.133304@ece.arizona.edu> dan@ece.arizona.edu (Dan> Filiberti) writes in annoyingly poorly word-wrapped fashion: I'll try to fix that, damn editors... :) >>Wrong. I have a problem with people not interacting with a user >>interface, since that is the sole purpose of a user interface. >You are missing my point. I am distinguishing between a physical >construct and a symbolic one. What I think of as "engineering" is the >application of the physical sciences (principally physics and chemistry, >but not exclusively) to the construction of physical devices (or "engines," >hence the term "engineer"). This interpretation is supported by the >dictionary definition you yourself cited. >By this definition, designing and building a computer is engineering. >Writing a program is not; it does not involve the application of the >physical sciences, although it may sometimes involve application of >mathematics. Unfortunately, while your defn is supported, its not the only one. I'll admit that writing a program does not necessarily apply natural science (which I think is what you mean by physical sciences, etc), but the primary defn of science is the following: science - knowledge attained through study or practice Also, you're wrong. By your defn, designing a computer is NOT engineering. Sorry. Hardware designers hardly ever deal with the construction of devices on a physical science level. They symbollically represent the internal architecture of a computer, using CAD. Please point out the difference between working with symbols of "and" gates, etc...and microcode. That's right, the only difference is a difference in symbols and terms. In fact, by your defn, you could prob eliminate over half the fields in electrical engineering... >A user interface is not a physical device, like an automobile is. It is >a symbolic construct that has no meaning beyond that assigned to it by >a person observing or interacting with it. Think about it. Sure, I'll think about it. No matter who chooses "save" from the Mac file menu, a file gets saved to disk. That's the meaning of "save", whether the user thinks the computer is a brain and remembers his information, or thinks the computer etches the information in stone. The meaning doesn't change from the hardware's point of view...and that's all that counts. >>Have you ever microcoded? >Yup. Hands-on experience with AMD 2901 and 2903 bit slice machines, as >well as familiarity with other microcoded architectures. >>Microcode essentialy describes hardware connections (registers to >>bus, bus to memory, etc...), this is not virtual reality, unless >>hardware is virtual reality. >Microcode is nothing *but* the creation of virtual reality. The whole >idea of it is that you can build a processor with a specific virtual >architecture without having to design and build it in hardware. A microcoded >control unit lets you act as if you had a hardwired control unit without >incurring some of the costs of building one. How do you build a processor with "virtual architecture", and then not build it in hardware? Whether microcoded or hardwired, a control unit is a control unit is a control unit. You are trying to define a microcoded control unit as an abstraction from a hardwired control unit. Wrong! They are just different implementations of the SAME THING. The microcoded unit uses a ROM (hardware) and addressing to send the control signals. The hardwired unit uses digital logic...but they both accomplish the same thing, through hardware. And, the microcode you write is stored in the ROM as a physical reality... >Software conveys a virtual reality in terms of physical reality. I view >this as directly analogous to the way a novel, or a play, or a movie >implements a virtual experience in terms of an actual experience. When >I went to see "She Stoops To Conquer" last week, I didn't *actually* visit >the 18th century British Isles, but I nonetheless had some of the experience >of them. Likewise, my screen doesn't *actually* have a sheet of paper upon >which I am typing this article, but I nonetheless have some of the experience >of it. And, a civil engineer doesn't actually pound the nails, but is still an engineer. What's your point? How many engineers actually solder the parts of a computer together? *laugh* >>At its lowest level, a file system at some point writes its data to >>hardware, is that virtual reality, no. > Yes. Do you tell your computer how to orient the magnetic domains in the > media on your disk? No. You interact with a symbolic construct > called a "file system" which creates a virtual reality in terms of those > magnetic domains. Wrong. At its lowest level, there is always some software that controls the writing of the data onto the media. Sure, its probably embedded in the disk drives controller. >>Please, give me an example of one computer system that >>didn't benefit in some way from a software generated user >>interface...just one. >An analog guidance system. A step-by-step telephone switch. I could go > on... Please do, since neither one of these examples is a computer. Since when can a telephone switch be programmed and store, retrieve and process data? >> Is a computer system special purpose? > Some, yes. Although computers can be programmed for a special purpose, they are not usually specifically designed with only one purpose in mind. >> Please, show me a computer >> that was designed without the aid of software along the way... >Any analog or pre-Von Neumann computer. I gave a couple of examples >above. An old-fashioned electronic calculator chip. That's pretty good. Now, please show me a computer built within the last decade that was designed without the aid of software. We would still be using that old-fashioned stuff if it wasn't for the idea of programmability. >However, how it was designed is immaterial--very few things are >designed without the aid of software these days :). I agree. Hence the term "software engineering". >>At the expense of a reduced instruction set, meaning more software to >>make it do anything. >OK, take a non-microcoded processor, like the Z80 or the 6502. My point >stands. You can always trade off special-purpose hardware for software. Yes, its theoretically possible. But, as the number of instructions increase, the ability to design the hardware is stressed. And, like I said, special-purpose hardware increases the amount of software required to do the same stuff, in most cases. >>I`d really like to see you swap hardware while using exactly >>the same software on the new machine, and get anything to run. >I did it Monday. Same Emacs, same window manager, same Usenet, ... Oh? And, there was no software differences between the two machines. I like how you conveniently left the two machines you used out, so I couldn't point out the differences in software that allowed you to run Emacs, window manager, and Usenet. If the microprocessors are different, you can start with the kernel... >>Software engineering - the application of knowledge obtained through >> study and practice of writing software. >>How's that? > Not bad, but it violates your own definition of engineering. No it doesn't. My previous defn was general, I didn't feel like pulling out the old dictionary. It violates nothing, because you can't possibly build anything for people without using learned knowledge. > I still think it's a misnomer. Well, I have no problem with it. It fits with how engineering is defined in our society today. And, that's all that counts... Daniel Filiberti dan@helios.ece.arizona.edu [:)}
jls@rutabaga.Rational.COM (Jim Showalter) (04/18/91)
>I like engineering. Put simply, I like building stuff. Creating a piece >of software, though, is a lot more like writing something than building >something. I'm a software architect. I build stuff. The actual coding part of the process is about as creative and interesting to me as driving in nails would be to a construction engineer. Interestingly, Bertrand Meyer called his book "Object-oriented Software CONSTRUCTION", not "Object-oriented Sofware Composing". Perhaps there was a reason for this?... The company I work for is essentially in the business (and successfully so) of converting software shops from artists' studios to construction sites. Why? Because construction is a pretty well understood pursuit, whereas artists tend to be rather flaky and temperamental (sp?). >In most engineering disciplines, tests are done by testing knowledge, >not by testing performance. What you describe sounds more like an >exam in art, music, or writing (usually called a "practical" or >"recital" exam). Hmm... I wonder how that could be? Would you test a hardware engineer's competence by having him answer multiple choice questions about this or that chip's gate delay? I wouldn't: I'd ask him/her to design me up a fine circuit or two. This is ALSO a practical test, and the only kind I can think of that would give me any real understanding of that engineer's competence. I see no difference between this and testing a software engineer. If the professional tests given to engineers in other disciplines are NOT practical in nature, I'm inclined to view this as a bug in the tests. -- * The opinions expressed herein are my own, except in the realm of software * * engineering, in which case I borrowed them from incredibly smart people. * * * * Rational: cutting-edge software engineering technology and services. *
ewoods@hemel.bull.co.uk (Eoin Woods) (04/18/91)
amanda@visix.com (Amanda Walker) writes: [ ... deleted ... ] >Software conveys a virtual reality in terms of physical reality. I view >this as directly analogous to the way a novel, or a play, or a movie >implements a virtual experience in terms of an actual experience. When >I went to see "She Stoops To Conquer" last week, I didn't *actually* visit >the 18th century British Isles, but I nonetheless had some of the experience >of them. Likewise, my screen doesn't *actually* have a sheet of paper upon >which I am typing this article, but I nonetheless have some of the experience >of it. [ ... deleted ...] Tell you what - why don't we call it Software Virtual Engineering !! :-) Eoin. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ Eoin Woods, Software Development Group, Bull HN Information Systems, ~ ~ Maxted Road, Hemel Hempstead, Herts HP2 7DZ, UK. ~ ~ Tel : +44 442 232222 x4823 Fax : +44 442 236072 ~ ~ < Eoin.Woods@hemel.bull.co.uk or ...!uunet!ukc!brno!ewoods> ~ ~ < When do we start news group comp.os.emacs ? :-) > ~ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ Eoin Woods, Software Development Group, Bull HN Information Systems, ~ ~ Maxted Road, Hemel Hempstead, Herts HP2 7DZ, UK. ~ ~ Tel : +44 442 232222 x4823 Fax : +44 442 236072 ~ ~ < Eoin.Woods@hemel.bull.co.uk or ...!uunet!ukc!brno!ewoods> ~ ~ < When do we start news group comp.os.emacs ? :-) > ~
amanda@visix.com (Amanda Walker) (04/19/91)
In article <1991Apr17.170635@ece.arizona.edu> dan@ece.arizona.edu (Dan Filiberti) writes: but the primary defn of science is the following: science - knowledge attained through study or practice That's an awfully general definition. I myself like it from a philosophical standpoint, but it covers most human activity. There are many things which I have studied and practiced, but which I would hesitate to call "science." For example: - Playing baroque music on the 'cello - Cooking Szechuan food - Speaking French or Japanese - Mediaeval manuscript illumination And so on. The word "science" usually carries some connotations which restrict its applicability. In particular, it usually signifies the acquisition of formalized knowledge through observation and experimentation. Now, I have taken scientific approaches to aspects of all of the above-metioned subjects, but I would still not call them scientific endeavors. Also, you're wrong. By your defn, designing a computer is NOT engineering. Sorry. Hardware designers hardly ever deal with the construction of devices on a physical science level. Funny, the hardware engineers I have worked with seem to do wire wrapping, figure out where to put decoupling caps, use oscilloscopes to look at signal levels and quality, etc. Seems pretty close to the physical level to me. Granted, there's always *some* level of abstraction involved in any activity that involves humans beings :), but I think you'll agree that, say, a silicon compiler or simulator is a higher level of abstraction than a 100MHz oscilloscope... They symbolically represent the internal architecture of a computer, using CAD. Seems to me that's design, not construction, but point taken. Design is a common aspect of many different kinds of activity. Please point out the difference between working with symbols of "and" gates, etc...and microcode. That's right, the only difference is a difference in symbols and terms. Not entirely. At the microcode level, a whole set of factors is abstracted out, such as propogation delay, fanout and fanin, signal decoupling, etc. How do you build a processor with "virtual architecture", and then not build it in hardware? Simulation. Software. Microcode and something like SoftPC (which implements a virtual IBM AT on machines ranging from a Mac to a Sparcstation) are doing basically the same thing. They are implementing a virtual architecture in terms of a physical one that is quite different. I can microprogram a handful of 2900 chips so that they act like, say, a Z80, even though the actual hardware involved is completely different. How many engineers actually solder the parts of a computer together? *laugh* I've done it... Please do, since neither one of these examples is a computer. Since when can a telephone switch be programmed and store, retrieve and process data? That's what happens when you place a call, after all... If you are now claiming that "computer" can only mean "stored program computer," I beg to differ. Software was invented after computers were. Von Neumann's innovation was important, but it is not what constitutes "computing." That's pretty good. Now, please show me a computer built within the last decade that was designed without the aid of software. How is this relevant? I can't even show you an *automobile* built within the last decade that was designed without the aid of software. All this says is that software is extremely useful, not whether or not its construction is "engineering..." >However, how it was designed is immaterial--very few things are >designed without the aid of software these days :). I agree. Hence the term "software engineering". Wouldn't that be "engineering software?" 1/2 :-) Oh? And, there was no software differences between the two machines. Very few. None from an operational point of view... I like how you conveniently left the two machines you used out, Sparcstation IPC and a DECstation 3100. so I couldn't point out the differences in software that allowed you to run Emacs, window manager, and Usenet. These differences are invisible at the level at which I interacted with the software--the software presents me with the same virtual reality (well, OK, modulo a small difference in screen size). This is part of my point: for at least a large set of actions, the hardware architecture is irrelevant. No it doesn't. My previous defn was general, I didn't feel like pulling out the old dictionary. It violates nothing, because you can't possibly build anything for people without using learned knowledge. Well, OK, if "applying learned knowledge" constitutes engineering, then I'll cede the point: just about everything I do is engineering, then. Well, I have no problem with it. It fits with how engineering is defined in our society today. And, that's all that counts... Must be a different society. Maybe is a coastal thing :)... -- Amanda Walker amanda@visix.com Visix Software Inc. ...!uunet!visix!amanda -- "I wouldn't be surprised if the architecture of Intel's microprocessors were eventually linked to the eventual fall of mankind." --Steve Gibson
cole@farmhand.rtp.dg.com (Bill Cole) (04/20/91)
|> David Hanslip replies to the world: |> |> Sometimes the quality of postings to this newsgroup severely detract from its |> value. This thread, and a couple of others that have diverged, started a few |> weeks ago with my request for information on documenting OO systems. I was |> looking for "system" level tools. |> |> I saw no useful USENET responses though I did receive some useful snail. |> USENET responses degenerated into language wars and to the final nadir of |> "I'm proud not to be a software engineer". |> But that's the value of the group, David. You can't control the responses. If you ask a question which seems perfectly straightforward and somehow the responses don't seem to have anything to do with the question, then you've obviously struck a nerve. I'll apologize for not sticking to your point, but I don't think an apology for wandering off into an important discussion is needed. /Bill
jjc@aeg.dsto.oz.au (John Cranwell) (04/20/91)
jls@rutabaga.Rational.COM (Jim Showalter) writes: >body not relevant Sometimes the quality of postings to this newsgroup severely detract from its value. This thread, and a couple of others that have diverged, started a few weeks ago with my request for information on documenting OO systems. I was looking for "system" level tools. I saw no useful USENET responses though I did receive some useful snail. USENET responses degenerated into language wars and to the final nadir of "I'm proud not to be a software engineer". I'm beginning to wonder whether those who may be able to make an intelligent and useful response are too busy engineering software to waste their time with eletronic news. Software engineering is the application of sound engineering principles and engineering rigor and discipline to the development of software. Anyone who doesn't consider him or herself to be a software engineer is playing with toy software and should keep right away from any software that my life or fortunes may have to depend on - aerospace applications, medical applications, financial applications, defense applications etc. David C. Hanslip E-mail: dch@aeg.dsto.oz.au Aeronautical Research Laboratory Phone: +61 8 259 5792 DSTO Salisbury, South Australia Fax: +61 8 259 5507
jeff@hilbert.uucp (Jeff Freedman) (04/23/91)
In article <jls.671952600@rutabaga> jls@rutabaga.Rational.COM (Jim Showalter) writes: >The company I work for is essentially in the business (and successfully >so) of converting software shops from artists' studios to construction >sites. Why? Because construction is a pretty well understood pursuit, >whereas artists tend to be rather flaky and temperamental (sp?). ^^^^^^^^^^^^^^^^^^^^^^^ Here we see the real reason why so many employers want their software developers to be "engineers". Engineering is more predictable than art; and the people involved are more comparable in their abilities, and easier to manage. Of course, wishing for something doesn't make it so. -- Jeff
jeff@hilbert.uucp (Jeff Freedman) (04/23/91)
In article <jls.671952600@rutabaga> jls@rutabaga.Rational.COM (Jim Showalter) writes: > >I'm a software architect. I build stuff. The actual coding part of >the process is about as creative and interesting to me as driving in >nails would be to a construction engineer. Architects don't pound nails; they draw things, either using pencil-and-paper, or a CAD program. And they think of themselves, at least in part, as artists. Construction engineering is an entirely different field. BTW, I don't dispute that software development has some aspects of engineering. Most programmers are happy to use an existing block of code that does what they need, or a new tool that will help them organize their designs. But much of what we do involves the creation of something new: a friendlier interface, a new language, perhaps a whole new use for a computer. Otherwise, our employers wouldn't be willing to spend so much money on us! And it is this creative process that goes beyond engineering, and that becomes art. You compare "pounding nails" to writing code. But building is a lot more than hammering nails. It can involve the design and creation of custom mouldings, windows and doors. If not an art, it certainly can be considered a craft. I think of software the same way; I love writing it, and enjoy finding ways to make the code faster, or shorter, or easier to understand. Note that Fischer and LeBlanc named their book "Crafting a Compiler". -- Jeff
mjl@cs.rit.edu (Michael J Lutz) (04/23/91)
[My initial posting does not seem to have made it outside of Western NY. My apologies if you've seen this already - mjl ] This is from an ongoing debate in comp.object, but I thought it might be of interest to comp.software-eng readers as well - mjl In article <1991Apr17.172806.23036@visix.com>, amanda@visix.com (Amanda Walker) writes: |> ... I am distinguishing between a physical |>construct and a symbolic one. What I think of as "engineering" is the |>application of the physical sciences (principally physics and chemistry, |>but not exclusively) to the construction of physical devices (or "engines," |>hence the term "engineer"). This interpretation is supported by the |>dictionary definition you [a previous writer] cited. Dictionarys aren't always the best source of information when it comes to technical terms. In particular, if we buy the notion that engineering is concerned with the construction of physical devices, what is to become of the Industrial Engineer? As far as ABET is concerned, this is an ``engineering discipline'', but IE's are not directly involved in the design or manufacture of physical devices; instead, they are most concerned with the processes underlying these activities -- and this is at least as abstract as software development. As I am not an engineer by education, I decided that the best way to find out what engineering is all about was to find out what *engineers* say engineering is all about. This is a meta-question -- we have to separate what an engineer does from the specific tools he or she uses in addressing engineering problems. The problem is compounded by the fact that engineering typically attracts goal-oriented, precise, quantitative persons who are not particularly introspective about what they do and where engineering fits in the grand scheme of things. However, there are some exceptions (thank God). I strongly recommend each of the following to those who want to join debate over what engineering is and whether software development is, can be, or should be an engineering discipline: Shaw, Mary "Prospects for an Engineering Discipline of Software", IEEE Software, Vol. 7 No. 6 (Nov. 1990). Florman, Samuel C. Existential Pleasures of Engineering. St. Martin Press, 1976. Petroski, Henry. To Engineer is Human : The Role of Failure in Successful Design. St. Martin's Press, 1985 Koen, Billy Vaughn. Definition of the Engineering Method. American Society for Engineering Education, 1985 For the record: Mary Shaw is on the computer science faculty at Carnegie-Mellon; she also is involved with at the Software Engineering Institute. Florman is a civil engineer, and I believe Petroski is as well (if not, Petroski is a mechanical engineer). Koen is a chemical engineer by training, but also has held positions in mechanical engineering departments. I believe he is still at U.T. Austin. Koen's book (actually a pamphlet, costing about $7.00) has influenced me greatly because: a) he writes lucidly and persuasively, b) the publication is from the ASEE, and I'm an educator, c) the fact that the ASEE publishes and actively promotes the pamphlet in its magazines indicates that at least a few engineers in positions of influence believe Koen has something important to say. --------- Mike Lutz Rochester Institute of Technology Rochester, NY 14623-0887 mjl@cs.rit.edu
philbo@dhw68k.cts.com (Phil Lindsay) (04/24/91)
> >Software engineering is the application of sound engineering principles and >engineering rigor and discipline to the development of software. Anyone who >doesn't consider him or herself to be a software engineer is playing with toy >software and should keep right away from any software that my life or >fortunes may have to depend on - aerospace applications, medical applications, >financial applications, defense applications etc. > >David C. Hanslip E-mail: dch@aeg.dsto.oz.au >Aeronautical Research Laboratory Phone: +61 8 259 5792 >DSTO Salisbury, South Australia Fax: +61 8 259 5507 I hope Mr. Hanslip can elaborate on what "sound engineering principles" are in respect to Computer Science. Why must software metrics be tied to something called "software engineering?" David's remarks seem a little egocentric and presumptuous; I hope this is not the norm for people who choose to call themselves "software engineers." Most people would like to see software development legitimatized. The industry is using the term "software engineering" for this means. The truth is that there is no such thing as "software engineering." Of course, when there is money to be made and people to impress...Anything is possible. -- Phil Lindsay - "Patents threaten future technology" Internet: philbo@dhw68k.cts.com Phone: Wrk7143852311 Hm7142891201 UUCP: {spsd,zardox,felix}!dhw68k!philbo USMAIL: 152A S. Cross Creek Rd, Orange, Ca. 92669
dan@ece.arizona.edu (Dan Filiberti) (04/24/91)
In article <1991Apr18.230252.3299@visix.com> amanda@visix.com (Amanda Walker) writes: >> but the primary defn of science is the following: >> science - knowledge attained through study or practice >That's an awfully general definition. I myself like it from a philosophical >standpoint, but it covers most human activity. There are many things >which I have studied and practiced, but which I would hesitate to call >"science." For example: > - Playing baroque music on the 'cello > - Cooking Szechuan food > - Speaking French or Japanese > - Mediaeval manuscript illumination HaHaHa! [:)} Sorry, I just can't let these "examples" sneak by... I really doubt that anyone would argue that music doesn't involve both art (skill) and science (theory). Same with food preparation, unless you always eat fast food. Maybe you are confusing "art" with "science". Speaking a foreign language is an "art", it involves skill, it is the product of a "science", learning the grammar, etc, of the language. I don't know about the last one, never heard of it, but it probably involves science also. >And so on. The word "science" usually carries some connotations which >restrict its applicability. In particular, it usually signifies the >acquisition of formalized knowledge through observation and >experimentation. Now, I have taken scientific approaches to aspects >of all of the above-metioned subjects, but I would still not call them >scientific endeavors. "observation and experimentation" sounds a lot like "study and practice" to me. How can you take a "scientific approach" and not call what you learn "science"? >>Also, you're wrong. By your defn, designing a computer is NOT >>engineering. Sorry. Hardware designers hardly ever deal with the >>construction of devices on a physical science level. >Funny, the hardware engineers I have worked with seem to do wire wrapping, >figure out where to put decoupling caps, use oscilloscopes to look at >signal levels and quality, etc. Seems pretty close to the physical >level to me. >>They symbolically represent the internal architecture of a computer, >>using CAD. >Seems to me that's design, not construction, but point taken. Design is >a common aspect of many different kinds of activity. I'm getting tire of this runaround stuff. Is a hardware designer an engineer or not? Is someone who spends 5 yrs in college earning an electrical engineering degree, and then designs logic using CAD (with no physical level involvement) known as an "engineer"? My answer is yes... >>Please point out the difference between working with >>symbols of "and" gates, etc...and microcode. That's right, the >>only difference is a difference in symbols and terms. >Not entirely. At the microcode level, a whole set of factors is abstracted >out, such as propogation delay, fanout and fanin, signal decoupling, etc. These factors are not "abstracted out". They don't exist. Abstraction involves "information hiding", you can't hide what doesn't exist. The difference at a low level is implementation, the difference at a high level is in symbols and terms. Digital logic designers worry about "fan out", etc.. but they don't create the IC's that implement their logic. >Microcode is nothing *but* the creation of virtual reality. The whole >idea of it is that you can build a processor with a specific virtual >architecture without having to design and build it in hardware. A >>How do you build a processor with "virtual architecture", and then not >>build it in hardware? >Simulation. Software. Microcode and something like SoftPC (which >implements a virtual IBM AT on machines ranging from a Mac to a >Sparcstation) are doing basically the same thing. They are implementing >a virtual architecture in terms of a physical one that is quite different. >I can microprogram a handful of 2900 chips so that they act like, say, >a Z80, even though the actual hardware involved is completely different. Why do you twist everything around, and put my statements out of context? I agree that you can program virtual architecture, in fact I've used some, but the issue is not microprogramming. The issue is microcode! Microcode is not the creation of virtual reality. I'd like to see you microcode a 6502 processor to act like a 68000. You can't, because microcode is intimately tied to the hardware implementation. Can you microcode the 6502 to accept the 68000 instruction set? No. >That's what happens when you place a call, after all... If you are now >claiming that "computer" can only mean "stored program computer," I beg >to differ. Software was invented after computers were. Von Neumann's >innovation was important, but it is not what constitutes "computing." Give me a break. Talking about general defns. I guess I am a computer! >>That's pretty good. Now, please show me a computer built within the >>last decade that was designed without the aid of software. >How is this relevant? I can't even show you an *automobile* built within >the last decade that was designed without the aid of software. All this >says is that software is extremely useful, not whether or not its >construction is "engineering..." It is very relevant. I'm trying to point out the importance of software, and its rapid increase of design complexity. This is what makes "software engineering". >Wouldn't that be "engineering software?" 1/2 :-) mmmmmmmm, ok 1/2. >These differences are invisible at the level at which I interacted with >the software--the software presents me with the same virtual reality (well, The fact is, a "software engineer" had to create that virtual reality. Are the people who write SunOS and VMS "software engineers" while those who write Emacs, etc not? The OS is not virtual reality, but it is still software, isn't it? Are you trying to make a distinction between levels of programming, like applications, operating systems, compilers, etc... or what? >Well, OK, if "applying learned knowledge" constitutes engineering, then >I'll cede the point: just about everything I do is engineering, then. That's right, but that isn't what makes you an engineer. It's the quality and quantity of knowledge that you possess. People make you an "engineer" by the way they observe you applying your knowledge. If I design and build a shed, I am essentially civil engineering, but people don't call me a "civil engineer". Who knows, but like I said, I have no problem with someone putting the label "software engineer" on their card. I'm not going to hire them for their title, but for experience, reputation, etc... Daniel Filiberti dan@helios.ece.arizona.edu [:)} ------------- Sorry, this reply is late. I was on vacation... -------------