[comp.software-eng] Software Engineering Digest v6n29

nigam@MITRE.MITRE.ORG (Alok C. Nigam) (07/11/89)

           Software Engineering Digest   Monday, 10 Jul 1989

                          Volume 6 : Issue 29

                            Today's Topics:

                          Re: code reviews (3) (U)
                 Code reviews: a suggested approach (U)
                        CompEuro Call for Papers
                        Call for Position Papers
                            Leonardo project (U)

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

Date: 20 Jun 89 16:42:41 GMT
From: Mark Paulk <mcp@sei.cmu.edu>
Organization: Carnegie-Mellon University, SEI, Pgh, Pa
Subject: Re: code reviews (U)

The following references have some interesting data and insights on the
role and power of inspections.  Unfortunately it is difficult to get
hard data on the effectiveness of methods such as inspections, but there
has been some work published which is much more pertinent than my
opinion would be... Pertinent quotes follow each reference.

Let me also emphasize correct definition of terms!  Inspections, reviews,
walkthroughs, etc., are frequently overloaded terms.  For the "official"
definitions, see IEEE Standard 1028 (or Fagan's original paper for that
matter).  There are distinct differences between the concepts; the most
formal is inspection.  I use peer review as the all inclusive term
because it is not defined in 1028, but some people use it in the hierarchy
        desk check
        peer review
        walkthrough
        inspection
as meaning a 1-1 review with A peer (as opposed to a group of peers).

Review, by itself, covers a wide range of sins.  Much of this discussion
has been oriented at technical reviews, i.e., CDR, PDR class reviews,
which are NOT what the original poster was asking about.

@b([ACKE89]) A.F. Ackerman, L.S. Buchwald, and F.H. Lewski,
"Software Inspections: An Effective Verification Process,"
IEEE Software, Vol. 6, No. 3, May, 1989, pp. 31-36.
 Software inspections have been found to be superior to reviews
and walkthroughs, p. 31
 collection and analysis of data for immediate and long-term
process improvement, p. 32
 inspections improve quality and productivity, p. 34
 inspections give project management more definite and more dependable
milestones than less formal review processes, p. 35

@b([GILB88]) T. Gilb,
PRINCIPLES OF SOFTWARE ENGINEERING MANAGEMENT,
Addison-Wesley, Reading, MA, 1988.
 The inspection method is the most effective quality control method for
software specification documentation we know about.  p. 68
 Testing is a maximum of 50 to 55% effective at defect identification and
removal for a single test process.  p. 221
 Inspection is about 80% (+/- 20%) effective in removing existing defects.
p. 221
 The average is five hours saved for every hour invested in inspection.
p. 221
 Inspected programs were ten times cheaper to maintain than ... similar
non-inspected programs.  p. 221
 High level inspections (requirements and design specification) were the
most powerful things they could do.  p. 244

@b([GRAD87]) R.B. Grady and D.L. Caswell,
SOFTWARE METRICS: ESTABLISHING A COMPANY-WIDE PROGRAM,
Prentice-Hall, Englewood Cliffs, NJ, 1987.
 The five "modern programming practices" which had the strongest correlation
with productivity were top-down design, modular design, design reviews, code
inspections, and quality assurance programs.  p. 20
 Projects of highest productivity are among those with the lowest defect
densities.  p. 140

@b([MYER88]) W. Myers,
"Shuttle code achieves very low error rate,"
IEEE Software, Vol. 5, No. 5, September, 1988, pp. 93-95.
 500K Space Shuttle source code with 0.11 errors/KSLOC credited by IBM/FSD
to process definition, rigorous inspection of work products across the
process, independent software verification, defect-cause analysis, knowledge
engineering, expert systems, specialized tools, and "good old value gained
from lessons learned." (Barbara Kolkhorst)  Reduced from 2 errors/KSLOC,
versus 8-10 errors/KSLOC for industry.
 Effort/time spent on software reconfiguration reduced by 50%.
 About 85% of major errors discovered in inspection.

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

Date: 21 Jun 89 20:24:10 GMT
From: Jerry Leichter <leichter@yale-zoo.arpa>
Organization: Yale Computer Science Department, New Haven, Connecticut, USA
Subject: Re: code reviews (U)

Many years ago, in wilder times, I and two friends spent a fair amount of
time, ahem, breaking into our college computer.  We generally worked on hacks
cooperatively.

One day, one of us developed a very simple program.  He decided that it was
simple enough, and so clearly correct, that he could just try it out.

Well, needless to say, the program had a completely obvious bug which one of
us spotted instantly on looking at the code.  The effect of the bug was to
cause a system crash leaving fairly obvious pointers to the culprit.  The
author had run the thing twice...the first crash "must have been a coinci-
dence".  (Back in those days, the average time between crashes was a couple
of hours, so this was not a completely absurd thought.)  We were VERY lucky
not to get caught.

The rule we learned from this was:  Never hack alone.  From there on out, none
of us would run a new hack program unless one of the others had checked it out
first.  We had no further incidents of this particular sort.

Years later, I worked for an organization with a policy of code reviews.  We
actually had multiple levels of review.  There were informal design reviews.
In practice, most people hated those and they were not very useful - they
tended to bring out the worst in those people who insisted on doing things in
particular standard ways which were usually irrelevant.

On the other hand, we also had a very strict CODE review policy - we called it
"releasing".  Any particular implementation project, whether new code or a
patch to existing code, required two people, a coder and a releaser.  The
coder wrote and tested the code, and handed it to the releaser.  The releaser
was responsible for checking that the code met its specs, was written to our
internal standards (which were not very strict; what they required was all
very simple and reasonable), was reasonably documented, and so on.  More gene-
rally, the releaser was expected to understand the code as well as the coder
did.  If he found problems, he could at his disgression fix them himself or
require the coder to fix them.

One very important element of this system was that there were no separate
groups of coders and releasers - everyone did both jobs.  If you released my
code today, I might release yours tomorrow.  This avoided the typical con-
flicts you often see between development and QA groups.  (Yes, it can have
disadvantages, too.)  It also provided some check to ensure that people didn't
try to cut corners on either job - though of course that happened.  (One per-
son who worked for me for a while viewed his releaser's role as one of finding
and fixing all the bugs.  He was known to hand over code that wouldn't com-
pile.  Needless to say, he was seen as a problem....)  However, in my experi-
ence the system worked quite well, and the code quality that resulted was
quite high.  (Sorry, I can't quantify any of that...but I'd certainly use such
a system again.)

What did doing this cost?  It's hard to be exact because people varied.  A
good manager had to adjust for the individuals involved.  For most people, I'd
estimate release time at about half of pure coding time - where pure coding
time did NOT include design or debugging.  For the "problem" person I mention-
ed above, I'd have to drop coding time and increase debugging and (even more
so) release time; the total would end up somewhat higher.  But that rarely
happened.  Since except for small, isolated projects pure coding time wasn't
likely to be more than a third or so of the total time, release time might
add about 15% to the total - and it could often be used to fill in otherwise
dead spots on schedules, so in real terms its contribution to total completion
time might be quite small.  On the other hand, it also provided you with a
second expert on the particular piece of code involved.  The training to do
that would have cost you some time, too.

The group in which I saw this done was not very large (50 people perhaps in
total) and was probably unusually talented, since management made it a point
to hire the brightest people they could, regardless of experience.  How well
this kind of approach would generalize to other groups, I can't really say.
(I also believe that the group eventually stopped doing this when pressure
from above to get stuff done faster became much greater.  There's never time
to do it right, but always time to do it again....)

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

Date: 21 Jun 89 21:04:28 GMT
From: "Thomas.J.Tom.McClory" <hubcap!ncrcae!ncrlnk!emdeng!tmcclory@gatech.edu>
Organization: E&M Dayton, NCR Corporation, Dayton, Ohio
Subject: Re: code reviews (U)

I will throw in references for the "Design & Code Inspection Process",
a specific variation of the general peer review methods.

M. E. Fagan, "Design and Code Inspections to Reduce Errors in
Program Development," _IBM Systems Journal_, Vol. 15, No. 3, 1976,
pp. 182-211.
        Combines both a "how to" of the process as
        with the results of using the process
        several IBM products.

M. E. Fagan, "Advances in Inspection,", _IEEE Transactions on
Software Engineering_, July 1986, pp. 744-751.
        A follow-on work to the paper above that refines
        the process description, and documents additional
        successes using the process.

J. H. Dobbins, "Inspections as an Up-Front Quality Technique," in the
_Handbook of Software Quality Assurance_, G. G. Schulmeyer and J.
I. McManus, eds., Van Nostrand Reinhold, New York, 1987, pp. 137-177.
        A case study of inspections as used by the IBM
        Federal Systems Division.  Describes how the process
        was implemented and the process measurements that
        the Q.A. staff implemented.  Describes how statistical
        process control can be applied to software development.

A. Frank Ackerman, L. S. Buchwald, and F. H. Lewski, "Software
Inspections: An Effective Verification Process," _IEEE Software_,
May, 1989, pp. 31-36.
        A good overview description.  The two Fagan papers are
        better how-to descriptions, but this is a good
        place to start if you don't know about inspections.

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

Date: 26 Jun 89 12:30:34 GMT
From: Charles Weir <mcvax!ukc!stl!idec!marlow!cweir@uunet.uu.net>
Organization: Reuters Ltd PLC, Marlow, Bucks, England
Subject: Code reviews: a suggested approach (U)

              Suggested approach for a Code Walkthrough

Following the discussion about code reviews, here is a document I put
together a little while back.  I should be interested to find out how
it compares with other people's experiences.

We had been using code walkthroughs to find bugs in code where
testing was proving unsuccessful.  Sometimes they were very
successful, sometimes not.   This note attempts do analyse what leads
to a successful review.

Our targets for a walkthrough are:-

  *  No Bugs.
  *  No indeterminate situations.
  *  Maintainable and understandable code (as for as convenient) .

A bug is a straightforward point where under some situation the code
will not work as the programmer intended.   An "indeterminate
situation" is where the code behaviour is unpredictable (technically
this is a bug too).

How we go about it
------------------

We used the following guidelines:-

A code walkthrough is constructive.   The walker needs to avoid
attacking or threatening the programmer either directly or indirectly.

The walker must focus attention on a particular problem, a particular
line of code or element.   We avoid issues of approach and style ("I
wouldn't do it like this..."), or unnecessary performance enhancement
("It'll be faster if...").

We tackle problems using questions rather than statements:-

  *  How Is this function defined?
  *  How does this work?
  *  What parameters are being passed here?
  *  When is this called and by what?
  *  I think I may see a problem here.   Am I right? (N.b.  Quite
     often the answer will be no)

The process of questioning the code is more effective than a straight
challenge.   It is non-threatening.   And it encourages the programmer
to look at his/her code from a different perspective.

The inspections should not last too long.   The mental effort
required is similar to University entrance examinations, so
over-stretching here oneself does nothing for anyone.   A sensible
maximum is two hours for a session or less.   It is much better to
inspect a body of code bit by bit in a number of short inspections
over a week or two, than all at once.

Further Suggestions (particularly for C code reviews)
-----------------------------------------------------

Bug hunting too is partly a matter of habitat.  It is important to
look at the places where bugs live.   We look mostly at:-

  *  Buffer, string, and arrays.   Could there be overruns?   Zero
     termination of strings?   "strlen" etc.

  *  Error Handling:   Is an error ignored?  Does the handling
     mechanism work?

  *  Statuses:  Are there states (combinations of statuses and flags
     etc.) which can occur but are not handled?   Or which are handled
     but could never occur?

  *  Double use:   Same data structure used by conflicting processes.
     Flags and status variables used for two purposes.

  *  Comments:  Misleading or out-of-date?   It is often worth
     covering up comments when inspecting the code.

For the inspection to be effective, it is not necessary for the
reviewer fully to understand the code and the design.   The
questioning process uses the programmer's knowledge to supply that
information.

It is important to keep a sense of perspective.   In C, for example,
it is important to replace magic numbers with "#defines" for
maintenance purposes:  This is not the same as a bug.   Function
headers and comments generally are necessary for future maintenance:
Again these are not bugs.   And we shouldn't treat them as such.

The GOTCHA trap is a classic:    It's easy to communicate the sense
of victory at finding a difficult bug in a way which threatens the
programmer ("GOTCHA").   Again we use questions to communicate,
rather than statements.  A sense of humour is important too.   A laugh
both defuses the tension, and makes the process more fun.

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

Date: Sun, 25 Jun 89 09:32 IDT
From: GIDEON@ILNCRD.BITNET
Subject: CompEuro Call for Papers

                      CompEuro 90 ISRAEL, 7-9 MAY 1990
                               Call for Papers

CompEuro     The goal of CompEuro conferences is to provide an annual
Conferences  international forum for computer experts to discuss latest
-----------  results on computer technologies, systems, applications
             and their interaction. CompEuro conferences are sponsored
             by the IEEE Computer Society and IEEE Region 8 comprising
             Europe, Africa and the Near East.
Theme        CompEuro 90 will focus on the systems engineering aspects
-----        of complex computerized systems and their software. Most
             modern computerized systems are multi-level and
             multi-computer systems including hardware, software and
             communications subsystems. Their engineering requires
             expertise in those basic areas, a wide knowledge and
             analytical insight of the application domains together
             with systems integration skills and experience.
The purpose of the conference is to promote the state of the art of
computerized systems engineering and to present methods, approaches and tools
needed in the development of these complex systems. The presentation of
industrial development case studies will be encouraged. The conference theme
is therefore defined as:

                COMPUTER SYSTEMS AND SOFTWARE ENGINEERING
        Systems Engineering Aspects of Complex Computerized Systems

             This theme will be expanded to discuss the following topics:
 ,           1. Computer Systems Engineering and Embedded Computed Systems
                * Systems analysis
                * System and computer architectures and their evaluation
                * Mutual impact and trade-offs systems and computer
                  architectures and software
                * Computer communications
                * Development and testing methods
                * Integration of large computerized systems
             2. Software Engineering
                * Software system analysis
                * Requirements specification and top-level design
                * Software system architectures and their evaluation
                * Formal methods in software development
                * Development and testing methods
             3. VLSI Systems
                * High performance, multiprocessing systems
                * VLSI impact on performance and on system integration
             4. Rapid Prototyping of Systems and Software
                * Rapid prototyping techniques
                * Rapid prototyping laboratories and tools
             5. Artificial Intelligence Techniques
                * Incorporation of Al techniques in systems implementations
                * Use of Al techniques in the development process
             6. Development Environment
                * Architecture of development environments
                * Tools for systems engineering
                * Tools for software engineering
                * Hardware-Software integration issues
             7. Management of the Development Process and Resources
                * Project management
                * Cost estimating techniques
                * Quality assurance and configuration management
                * Training of industrial personnel in industry and academia

Tutorial     Tutorial seminars to introduce and to provide technical
--------     updata on key topics covered by ComEuro 90 are scheduled
             for Monday May 7, 1990.

Letter of    In order to structure the program early, the program committee
Intent       requests prospective authors for letter of intent giving title,
--------     topic group and address or notification by reply card as soon
             as possible, but no later than June 15, 1989.

Author       1000-1500 word summaries due: September 1, 1989    The conference
Schedules    Notification of acceptance:   November 1, 1989     language is
---------    Camera-ready copies due:      February 1, 1990     is in English

Technical    A technical exhibition is planned to complement the conference
Exhibition   papers, it will include CAS2E - Computer Aided Systems and
----------   Software Engineering Environements and Tools.

Conference   Conference Chairman: J. Raviv, IBM, Israel
Committee    Technical Program Chairmen: J.Z. Lavi, IAI, Israel;
---------                                W.B. Proebster, IBM, W. Germany
             Technical Topics Chairmen:
             Topic 1: A.O. Ward, British Aerospace, England;
                      M. Winokur, IAI, Israel
             Topic 2: K. Jackson, Systems Designers, England;
                      S. Koenig, Tadiran, Israel
             Topic 3: Z. Barzilai, IBM, USA;
                      U. Wieser, Intel, Israel
             Topic 4: H. Zullighoven, GMD, Germany;
                      J. Cohen, Rafael, Israel
             Topic 5: A. van Lambsweerde, University of Namur, Belgium;
                      J. Rosenschein, Hebrew University, Israel
             Topic 6: M. Lehman, Imperial College, England;
                      P. Rogoway, Motorola, Israel
             Topic 7: P. Ein-Dor, Tel-Aviv University, Israel;
                      H.G. Sol, Delft Technical University, Holland

             Tutorial Chairman: A. Yehudai, Tel Aviv University, Israel

             Technical Exhibition Chairman: Y. Zeira, ATL, Israel

Conference Secretariat, c/0 ORTRA Ltd. 2 Koffman St. POB 50432,
Tel-Aviv 61500, ISRAEL. Tel. 972-3-664825, Fax. 972-3-660952, Tlx. 361142 ORTR

Official Carrier El-Al, ISRAEL AIRLINES

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

Date: Fri, 30 Jun 89 15:04:06 EDT
From: rh@mbunix (Rich Hilliard)
Subject: CALL FOR POSITION PAPERS

                       Call for Position Papers
                       ------------------------

   Informal Workshop on Ada Support for Object-Oriented Programming
   ----------------------------------------------------------------

                        September 11-13, 1989

                   Hosted by The MITRE Corporation


Program Committee:      Christine Braun, CONTEL Technology Center
                        Richard F. Hilliard II, The MITRE Corporation
                        Steven D. Litvintchouk, The MITRE Corporation
                        Robert F. Mathis, CONTEL Technology Center


The process is now under way to define requirements for Ada 9X, the
projected revision to the Ada language standard.  This workshop will
focus specifically on whether, and to what extent, Ada 9X should offer
improved support for object-oriented programming and related
development methodologies.


Topics of interest include, but are not limited to:
--------------------------------------------------

1.  Object-oriented development paradigms, programming styles, and
related life cycle issues:

        * Abstract and concrete classes
        * Inheritance
        * Delegation
        * Polymorphism
        * Dynamic binding
        * Object-oriented concurrency
        * Persistent objects
        * Analysis, design, verification and validation
        * Support tools and environments


2.  Support for object-oriented programming to be provided by Ada 9X
language features:

        * Types and subtypes
        * Packages
        * Bodies and subunits
        * Tasking
        * Generics
        * Program library
        * New Ada 9X language features not currently in Ada
        * Related compilation and runtime issues


The workshop will consist of 3 days of analysis of position papers,
and followup discussions.  The workshop will be held at:

        The Ramada Inn
        15 Middlesex Canal Park Road
        Woburn, MA  01801
        617-935-8760

(Arrangements at the Ramada can be made for a special workshop rate of
$72/night which includes taxes, gratuities and full American
breakfast.  When making reservations, mention that this is a MITRE
hosted function.)

The workshop will be limited to 25 participants.  Prospective
participants should submit a position paper of no more than 3000 words
to:

        Richard F. Hilliard II
        The MITRE Corporation
        Mail Stop A156
        Burlington Road
        Bedford, MA  01730

        rh@mbunix.mitre.org
        ...{att,decvax,genrad,ll-xn,philabs,utzoo}!linus!rh


If possible, actual programming examples should be included as part of
the position paper.  Electronic mail submission of position papers is
preferred.  Because of limited accommodation, it is preferred that
only the principal author of a selected position paper attend the
workshop.  For co-authored papers the principal author should
therefore be designated.  A collection of selected position papers
will be prepared.  The results of the workshop will be reported at a
future SIGAda meeting.  Participants are encouraged to publish
expanded versions of their position papers elsewhere.

There will be a workshop fee of $150 per participant, to cover expenses.


Important Dates:  July 21, 1989:                Position papers due.
                  August 15, 1989:              Notification of acceptance
                                                and distribution of position
                                                papers.
                  September 11-13, 1989:        Workshop


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

Date: 29 Jun 89 19:02:29 GMT
From: David Lamb <jarvis.csri.toronto.edu!qucis!dalamb@rutgers.edu>
Organization: Queen's University, Kingston Ontario
Subject: Leonardo project (U)

Can anyone point me to articles in the open literature on the Leonardo
software design assistance project at MCC (Microelectronics and
Computer Technology Corporation)?  I have a brief summary that seems to
say most information is restricted to shareholders, and would like to
know what (if any) material is available to the general public.

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

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