[comp.software-eng] Software Engineering Digest v6n21

soft-eng@MITRE.MITRE.ORG (Alok Nigam) (05/31/89)

          Software Engineering Digest     Tuesday, 30 May 1989
                          Volume 6 : Issue 21

                     Re: CASE Tools: References (U)
                       Re: software engineers (U)
                          Re: Surface Area (U)
             Summary of Books on Object Oriented Design (U)
                     Re: CASE Tools: References (U)
                       Re: software engineers (U)
                       Re: software engineers (U)
                      Floating Point in COBOL (U)
           Re: "software engineers" -- case study (long) (U)
                    Re: Floating Point in COBOL (U)
                   Error information in various OSes
                       Re: software engineers (U)
                   Re: Surface area for software (U)
            Correction: Books on Object-oriented Design (U)
                       Re: software engineers (U)
                         software engineers (U)

Today's Topics:

------------------------------------------------------------

Date: 2 May 89 21:50:27 GMT
From: Mike Balenger <att!homxb!ho7cad!msb@bloom-beacon.mit.edu>
Organization: AT&T Bell Laboratories
Subject: Re: CASE Tools: References (U)

This book is an intro to CASE, a discussion of a few available tools,
and a list of the major CASE tool vendors.

cn 005.1/F533c
ti CASE : using software development tools / Alan S. Fisher.
au Fisher, Alan S.
pu New York : Wiley, c1988. xv, 287 p. : ill. ; 24 cm.
no Includes index. Bibliography: p. 281-284.
su Computer software--Development.; Software engineering.; Computer
    programs--Design.
b-no 452490M  isbn 0-471-63747-5 (pbk.)  lccn 88-10142   oclc 17807437

------------------------------

Date: 3 May 89 21:43:14 GMT
From: Sean Matthews <mcvax!ukc!etive!lfcs!sean@uunet.uu.net>
Organization: Laboratory for the Foundations of Computer Science, Edinburgh U
Subject: Re: software engineers (U)

In article <855@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes:
>Dr Hubert Matthews at CERNvax has privately sent me the following note.

[point made in favour of Formal methods by the good Doctor (good on two counts:
he shares a surname with me and he is in favour of formal methods - did you
ever run into Jon by the way?)]

>I do not share your faith in formal methods or methodologies.  To me,
>the work of programming consists of weaving order with chaos.  The amount

>Col. G. L. Sicherman
>gls@odyssey.att.COM
     ^^^^^^^

I just what to clear up a point; isn't Odyssey Richard Platek's operation
in Ithaca (sorry about the spelling) which specialises in mathematically
verified software i.e., formal methods?

Or has the good professor gone back to mathematical logic and left the field
to the hackers?

Se\'an

------------------------------

Date: 3 May 89 09:24:50 GMT
From: Keith Richards <mcvax!ukc!axion!krichard@uunet.uu.net>
Subject: Re: Surface Area (U)

>> Can anyone give or point me to a precise definition of "Surface
>> Area?"  Is there a system that allows me to compute the value of the
>> surface area?

A more relevant use of the phrase (considering the newsgroup) is that
of Brad Cox in his `Object Oriented Programming' book for Addison
Wesley.  I think the term is used loosely and is meant to illustrate
the concept by analogy, but an imprecise definition is given as, "the
number of things that must be understood and properly dealt with for one
programmer's code to function correctly in combination with another's"

I haven't seen the expression used elsewhere in this context though.

------------------------------

Date: 3 May 89 18:39:01 GMT
From: Charles Weir <mcvax!ukc!stc!idec!marlow!cweir@uunet.uu.net>
Organization: Reuters Ltd PLC, Marlow, Bucks, England
Subject: Summary of Books on Object Oriented Design (U)

Thank you all out there for a number of replies to my question on
books about object-oriented design.   This is really encouraging.

Far and away the most popular book on the subject is:

Bertrand Meyer
Object-Oriented Software Construction
UK Prentice-Hall 1988

This provides a clear descriptions of the principles of
object-oriented design.  Don't be put off by the emphasis on the
Eiffel language - the examples are easy to understand, and the whole
is a remarkably good read.   It also gives (a somewhat biassed) view
of other OO languages eg. C++, smalltalk etc.  Highly recommended.

Another is:-

Brad J. Cox
Object-oriented Programming - An Evolutionary approach
Addison-Wesley, Reading Massachusetts  1986

This provides an introduction to object oriented programming, with
particular emphasis on C++.   It also discusses (although in very
little detail) the possibility of incorporating existing non-object
code.


Three papers on the subject are:-

Bertrand Meyer
Reusability: The Case for Object-Oriented Design
IEEE Software   April 1987

This gives a very detail analysis between functional approach and
Object-oriented approach.

Roland T. Mittermeir
Object-oriented Software-Design.
Software Engineering Environment - Proceedings of the
international workshop on software engineering environment.
China Academic publishers 1986

This relates OOPs to Software Engineering Design.  It compares the
OOP approach to JSD and Yourdon method. It is very useful for people
who are interested both in OOP and SE.

------------------------------

Date: 4 May 89 18:25:27 GMT
From: David Taylor <voder!cullsj!david@bloom-beacon.mit.edu>
Organization: Cullinet Software, San Jose, CA
Subject: Re: CASE Tools: References (U)

> I am looking into different CASE Tools available in the market for PC as
> well as mainframe environment. Does anybody already have a compiled list
> of such tools?
>
> Is there any book/paper which does a comparative study of the existing
> tools?

In the 4/89 issue of IEEE Computer, there is a review of a book called
"CASE: Using Software Development Tools" that the reviewer feels "offers
a highly readable but somewhat shallow overview of the most popular
commercial CASE tools [10] and their methodologies...It targets practicing
software engineers and managers who need a quick overview of the subject
but are not willing to thoroughly investigate it." It's by Alan S. Fisher
(John Wiley, NY, 1988, 287 pp, $24.95).
In that same issue, under "New Literature" is a blurb for "CASE Analyst
Workbenches: A Detailed Product Evaluation". It is said to "provide
guidelines on choosing, implementing, and using analyst workbenches to
maximum advantage. It reviews 66 workbenches and includes tables
highlighting the available features and conventions." It's by
Rosemary Rock-Evans (2 volumes, 780 pp, #550). Contact Ovum Ltd.,
7 Rathbone St., London W1P 1AF, England.

------------------------------

Date: 4 May 89 00:50:51 GMT
From: The Polymath <apple!versatc!mips!prls!philabs!ttidca!hollombe@bloom-beacon.mit.edu>
Organization: The Cat Factory
Subject: Re: software engineers (U)

>Debugging is something they all should have done on programming
>assignments, but how do you rate debugging skill?  ...

On one job interview I brought along a sample.  I showed them two listings
of a program I'm currently responsible for.  The first was the one I got
when I took over maintenance of the (extremely buggy) code.  The second is
what the code looks like now (bug free, as far as I know).

Don't know if it helped, but they were on the point of hiring me when the
job got moved from Berkeley to Boston.  Oh, well.

------------------------------

Date: 4 May 89 00:57:37 GMT
From: The Polymath <apple!versatc!mips!prls!philabs!ttidca!hollombe@bloom-beacon.mit.edu>
Organization: The Cat Factory
Subject: Re: software engineers (U)

}Indeed, the programmers on my project probably
}don't spend more than 50% of their time testing and debugging.  It
}depends on where we stand in the development cycle.

Perhaps we have a semantic quibble here.  The usual figure quoted is a
system will spend ~70% of its life in maintenance mode.  Maintenance is
much more than debugging.  It includes enhancement and making the program
do what the customer wants it to do, after you've made it do what they
asked for it to do.

Given that, it's not unreasonable to expect most programmers to spend 70%
of their time maintaining existing software, as opposed to creating new
software from scratch.

------------------------------

Date: 5 May 89 01:24:35 GMT
From: Warren Harrison <tektronix!psueea!jove.cs.pdx.edu!warren@bloom-beacon.mit.edu>
Organization: Dept. of Computer Science, Portland State University; Portland OR
Subject: Floating Point in COBOL (U)

Perhaps this is stretching a point since after checking, I found out this
is an IBM extension to the ANSI-78 standard, but COMP-1 and COMP-2 are
single and double word floating point data types, aligned on fullword and
doubleword boundaries, respectively.  Computational is fixed point.   True,
COMP-3 (packed decimal) is limited to 36 characters, but I know of no other
language which provides this much accuracy (remember, this stuff is stored
in base 10, so round off errors are significantly reduced) in a data type.
36 decimal places is: 999999999999999999999999999999999999.

Please note that I didn't suggest COBOL was an all purpose programming
language, but that modular programs could be written at least as easy in
it as in most other langauges, and much easier than in many other languages.

The overhead of a COBOL subprogram call is probably less than the overhead
of a Pascal call since local variables do not have to be generated each time
(data items within the subprogram are static), thus you have less of a performance
ding against subprogram calls than in many other "modular" langauges.

I know of many non-commercial applications that have been written in COBOL.
For example I have been told that Micro Focus COBOL/2 is written in COBOL.
I myself have written a COBOL subset compiler in COBOL (and Pascal
compilers in Pascal - I failed to see much difference once you're familiar
with the language).  So far, no operating systems or flight control software
though :-)

------------------------------

Date: 5 May 89 02:55:48 GMT
From: Scott_Gulland <hpda!hpdslab!hp-ptp!scottg@bloom-beacon.mit.edu>
Organization: HP Indus. Appl. Center, Sunnyvale, CA
Subject: Re: "software engineers" -- case study (long) (U)

>Real programmers spend 90% of their time debugging.  Computer science
>curricula ignore debugging, perhaps because it can never be reduced

I beg your pardon!  YOU may spend 90% of your time debugging, but no one
I have known in the last ten years of software development has spent anything
close to 90%.  Most engineers might spend at most 10% of thier time debugging.
The vast majority of thier time is spent, developing internal and external
documentation, design, coding, testing, and a wide variety of release related
activities.  Besides, if you write high quality code in the first place, you
won't end up spending hardly any time at all debugging.  Although a useful
skill, it is definitely not in my top ten list.

> Separating design from implementation is usually a mistake; ask the DoD.)

Don't you mean to ignore implementation during design?  I'll conceed that
in some classes of applications that this might be true, but it is definitely
not true in the general case (no blanket statements).

> Other skills I would look for:
>
> 2. The ability to "port" software.  This is an acid test for distinguishing
>    able programmers from mere C.S. grads.

The problem is there are just not that many people (compared to the industry
as a whole) performing this kind of work.  In the last four years, the
orginizations I have worked for has interviewed well over 500 canidates.
Almost none of these canidates has had any significant porting experience.

> 3. The ability to maintain somebody else's code.  Most C.S. students have
>    no experience in this.

Almost anyone can maintain someone else's code.  The important question is
how long does it take to become fluent in that code.  Especially if it is
poorly documented and/or poorly written.  The amount of experience in this
area can substantially affect their skills.

> 4. The ability to work from specifications.  This includes getting them
>    changed when they need it, and filling gaps by making inquiries or
>    using your own judgment.

In some jobs this might be very important, but not in a lot of cases.  In
many of the jobs I seen and worked on, the development team itself develops
the specs based on customer requirements or feedback (we spend a lot of time
gathering this).  Of course you orgnization may do things quite differently.

> 5. The ability to write software with clean, convenient user interfaces.
>    A good programmer can "see" his software from the user's viewpoint
>    and write for the user's benefit.

Excellent point!  A very rare comodity indeed!

> 6. The ability to write adequate user documentation.  See 4.

I whole-heartedly agree.

> 7. Experience with a variety of languages, environments, and methods.
>    Not that this experience will necessarily prove useful, but it shows
>    that the programmer is versatile, and probably understands some of
>    the underlying principles of software environments.  By the same token,
>    beware of dogmatism; a programmer with an antipathy to Pascal, COBOL,
>    or VAX/VMS may have a stiff neck.  A programmer who stops learning
>    is technologically obsolete.

AMEN!  You be amazed at the number of people who claim to be engineers
who are unwilling or afraid of learning a new languages, working on a new
OS, etc.  Experience combined with a solid CS background gives an engineer
the confidence to tackle any new language, environment, etc.

------------------------------

Date: 5 May 89 18:20:27 GMT
From: Len Lattanzi <apple!versatc!mips!synthesis!len@bloom-beacon.mit.edu>
Organization: Synthesis Software Solutions Inc, Sunnyvale, CA
Subject: Re: Floating Point in COBOL (U)

>Perhaps this is stretching a point since after checking, I found out this
>is an IBM extension to the ANSI-78 standard, but COMP-1 and COMP-2 are
>single and double word floating point data types, aligned on fullword and
>doubleword boundaries, respectively.  Computational is fixed point.   True,
>COMP-3 (packed decimal) is limited to 36 characters, but I know of no other
>language which provides this much accuracy (remember, this stuff is stored
>in base 10, so round off errors are significantly reduced) in a data type.
>36 decimal places is: 999999999999999999999999999999999999.

As far as I know the COMP-1/COMP-2 are only supported by IBM and
LPI-COBOL, so portable cobol programmers would probably avoid them.

As for extended precision data types, Common Lisp has unlimited size
bignums. I like the ability to work with >32 bit numbers but limiting me
to 64 bits is similar to telling me I can use recursion but only to 6
instantiations.

>Please note that I didn't suggest COBOL was an all purpose programming
>language, but that modular programs could be written at least as easy in
>it as in most other langauges, and much easier than in many other languages.
>
>The overhead of a COBOL subprogram call is probably less than the overhead
>of a Pascal call since local variables do not have to be generated each time
>(data items within the subprogram are static),
>thus you have less of a performance
>ding against subprogram calls than in many other "modular" langauges.

Many FORTRAN implementations work this way (and many non-standard FORTRAN
programs depend on static locals) but often you find that using local stack
variables is faster because the variables have greater locality [parent &
childs locals are less likely to collide in data caches] and can
be referenced relative to the stack pointer rather than building a static
address.

>I know of many non-commercial applications that have been written in COBOL.
>For example I have been told that Micro Focus COBOL/2 is written in COBOL.
>I myself have written a COBOL subset compiler in COBOL (and Pascal
>compilers in Pascal - I failed to see much difference once you're familiar
>with the language).

Well don't try any recursive descent parsers :-)

------------------------------

Date: Fri, 5 May 89 17:17:33 EDT
From: howell@starbase (Chuck Howell)
Subject: Error information in various OSes

In Unix, there is the errno value of the most recent error encountered,
which can be tested to determine at least some indication of what
went wrong.  What are the equivalent facilities on other OSes?
Thanks; I'll forward a summary to the net.

        Chuck Howell
        MITRE, Mail Stop Z645
        7525 Colshire Drive
        McLean, VA 22102-3481
        howell@.mitre.org

------------------------------

Date: 5 May 89 13:29:29 GMT
From: Dave Berry <mcvax!ukc!etive!lfcs!db@uunet.uu.net>
Organization: Laboratory for the Foundations of Computer Science, Edinburgh U
Subject: Re: software engineers (U)

>Unfortunately I believe real debugging skills can only acquired with
>experience.  You can teach techniques for writing relatively bug-free
>code, the hard part is when you have to debug someone else's code (or
>spec/interface, whatever).

I read several books and articles on debugging as background for my thesis.
I would recommend "Debugging C", by Robert Ward, published by Que corporation.
ALthough it focuses on C on micros without sophisticated environments,
Ward has enough useful ideas of a general nature to make this worth reading
by people learning to program in most languages and environments.

Ward does some teaching, and does teach people how to debug.  He claims
that his best pupils are those who can both design well and debug well.

------------------------------

Date: 5 May 89 04:37:00 GMT
From: m.cs.uiuc.edu!render@uxc.cso.uiuc.edu (Hal Render)
Subject: Re: Surface area for software (U)

>Let me try to get it straight this time.
>Cox in his book, "Object Oriented Programming" p. 16, defines the "surface
>area" as "the number of things that must be understood and properly dealt
>with for one programmer's code to function correctly in combination with
>another's."

I'm sorry I misunderstood you.  I don't think Cox chose the term well (if
indeed he did choose the term) given what he intends for it to mean.  I
would've said "object context" or "object interface".  His definition is
so vague (possibly intentionally) that any concrete means of calculating
"surface area" is difficult to specify.  You might take a look at papers
discussing the quantification of module interfaces for more help.  I can
give you a couple of pointers if you want.

------------------------------

Date: 5 May 89 18:43:36 GMT
From: Charles Weir <mcvax!ukc!stl!stc!idec!marlow!cweir@uunet.uu.net>
Organization: Reuters Ltd PLC, Marlow, Bucks, England
Subject: Correction: Books on Object-oriented Design (U)

Brad J. Cox
Object-oriented Programming - An Evolutionary approach
Addison-Wesley, Reading Massachusetts  1986

> This provides an introduction to object oriented programming, with
> particular emphasis on C++.

Brad Cox's book concentrates on Objective-C, not C++.   My apologies
for any confusion I've caused.

------------------------------

Date: 6 May 89 20:52:46 GMT
From: Emuleomo <aramis.rutgers.edu!paul.rutgers.edu!yes.rutgers.edu!emuleomo@rutgers.edu>
Organization: Rutgers Univ., New Brunswick, N.J.
Subject: Re: software engineers (U)

> Real programmers spend 90% of their time debugging.  Computer science
> curricula ignore debugging, perhaps because it can never be reduced
> to a theory.  But debugging skills are what I would look for *first.*
> (By the way, I am using "software engineer" as synonymous with "programmer."
> Separating design from implementation is usually a mistake; ask the DoD.)

I must say that debugging skills, although important, are NOT AS IMPORTANT AS
GOOD **SOFTWARE DESIGN** skills.
In general, the amount of time required to debug a program, is INVERSELY
PROPORTIONAL to the amount of time spent on the drawing board designing the
program properly.
Have you ever seen a civil engineer debugging a bridge after it has been built?
Give me a disciplined designer anyday.  Debugging is usually the result of
haphazard work.

------------------------------

Date: 6 May 89 01:33:55 GMT
From: Warren Harrison <tektronix!psueea!jove.cs.pdx.edu!warren@bloom-beacon.mit.edu>
Organization: Dept. of Computer Science, Portland State University; Portland OR
Subject: software engineers (U)

Sure software engineers spend a great deal of their time debugging,
coding, designing, etc.  I think many of us are missing one VERY
important activity (that software engineers COULD be prepared for
in school) --- communicating.  I find that many of my students (and
many new programmers/software engineers I have worked with) have a
very difficult time of communicating with others, both orally and
in writing.  In most of the projects I have been involved in, this
skill was almost as important as programming since you always end up
describing the system or the code or whatever to others.
I don't necessarily mean you have to be able to write the great
American novel, but when you get up in front of the other 20
people on the project and try and explain your part of the system
(or worse yet, the system as a whole) and can't (or worse yet
describe the *wrong* interface) you're in trouble.

Most posters seem to do a pretty good job of it.  Maybe if I require
my students to post 3 messages to the net each term they'll improve???

------------------------------

End of Software Engineering Digest
**********************************