[comp.software-eng] Towards a definition of software engineering

psc@lznv.ATT.COM (Programmers against Sleepy Computing) (03/17/88)

< If you lined all the news readers up end-to-end, they'd be easier to shoot. >

I was reading TO ENGINEER IS HUMAN (Henry Petroski, St. Martin's Press,
1985; ISBN 0-312-80680-9), and came across the following definition of
structural engineering from THE STRUCTURAL ENGINEER, "the official
journal of the British Institution of Structural Engineers":

> Structural engineering is the science and art of designing and
> making, with economy and elegance, buildings, bridges, frameworks,
> and other similar structures so that they can safely resist the
> forces to which they may be subjected.

Petroski spends a page and a half admiring the language of this
definition.  My immediate reaction was to try and reword it:

Software engineering is the science and art of designing and making,
with economy and elegance, computer programs, so that they can safely
fulfill the requirements of their users, and safely resist the errors
to which the programs may be subjected.

Since the function of a given piece of software is less obvious than
the function of a given bridge, I thought it was important to say
something about requirements.  Note the implication of "appropriate"
["their"] users; a complete novice is not necessarily the appropriate
user of AutoCAD, nor is MacPaint the right tool for an experienced
professional draftsperson.

Comments?

-Paul S. R. Chisholm, {ihnp4,cbosgd,allegra,rutgers}!mtune!lznv!psc
AT&T Mail !psrchisholm, Internet psc@lznv.att.com
Founding member, Programmers against Sleepy Computizzzzzzz

shap@bunker.UUCP (Joseph D. Shapiro) (03/22/88)

In article <1321@lznv.ATT.COM> psc@lznv.ATT.COM (Programmers against Sleepy Computing) writes:
>came across the following definition of structural engineering
>> Structural engineering is the science and art of designing and
>> making, with economy and elegance, buildings, bridges, frameworks,
>> and other similar structures so that they can safely resist the
>> forces to which they may be subjected.
   ******
>
>My immediate reaction was to try and reword it:
>Software engineering is the science and art of designing and making,
>with economy and elegance, computer programs, so that they can safely
>fulfill the requirements of their users, and safely resist the errors
                                                                ******
>to which the programs may be subjected.

I think "forces" is more applicable than you might at first think.  We
occassionally do "stress testing" of our software here.  This has two
purposes:  (1) See how many concurrent users still get good response,
and (2) See if it breaks under load.

I would consider erroneous input just one instance of the forces to
which programs are subjected.  I would not consider all forces to be
errors.
-- 
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Joe Shapiro					"My other car is a turbo...
Bunker Ramo Olivetti				 too."
{decvax,yale,philabs,oliveb}!bunker!shap