[comp.software-eng] FAQ: Software engineering readings

dalamb@umiacs.umd.edu (David Lamb) (06/04/91)

This is the monthly "frequently asked questions" (FAQ) posting on
reading materials for software engineers.
    Textbooks
    General reading for software engineers
    Metrics
    User Interface Design
Look for lines starting with "Topic:" ("g Topic" command in rn).

Be warned: the only mechanism we use to compose this list is to gather
information submitted by people around the net, post it regularly, and
incorporate feedback.  All evaluations are the opinions of those who
submitted them; your mileage may vary.  Send comments to
dalamb@qucis.queensu.ca (David Alex Lamb), or dalamb@umiacs.umd.edu.

Topic: Textbooks
Originally collected by: hsrender@happy.colorado.edu
Last updated: 23 March 1991

    Numbers 1-8 are Hal Render's original list in his rough order of preference.
    1. _Software Engineering: The Production of Quality Software_
       by Shari Pfleeger, 2nd Edition, Macmillan, 1991, ISBN 0-02-395115-X
       hsrender@happy.colorado.edu: Like #2&#3, had the best explanations of
	    what I want to cover (different engineering lifecycles, methods,
	    and tools).
    2. _Software Engineering: A Practitioner's Approach_ by Roger Pressman,
       2nd Edition, McGraw-Hill, 1987, ISBN 0-07-050783-X
       hsrender@happy.colorado.edu: Like #1&#3, had the best explanations of
	    what I want to cover (different engineering lifecycles, methods,
	    and tools).
       robb@iotek.uucp (Robb Swanson): the definitive book on the subject as far
	    as I'm concerned.
       johnson@aplcen.apl.jhu.edu (Michelle Johnson): a good text book as well
	    as reference
    3. _Software Systems Engineering_ by Andrew Sage and James D. Palmer
       hsrender@happy.colorado.edu: Like #1&#3, had the best explanations of
	    what I want to cover (different engineering lifecycles, methods,
	    and tools).
    4. _Fundamentals of Software Engineering_ by Ghezzi, Jayazeri and Mandrioli
       Prentice-Hall, 1991
       hsrender@happy.colorado.edu: Like #5, good, and covered the issue of
	    specifications and verification better, but at the expense of
	    other aspects of the development process.  I may use one of them
	    for a graduate course in software engineering.
       Nancy Leveson <nancy@murphy.ICS.UCI.EDU>:  Better than Sommerville,
	    although I like much of Sommerville.
    5. _Software Engineering with Abstractions_ by Valdis Berzins and Luqi
       Addison Wesley, 1991, 624 pages.
       hsrender@happy.colorado.edu: Like #4, good, and covered the issue of
	    specifications and verification better, but at the expense of
	    other aspects of the development process.  I may use one of them
	    for a graduate course in software engineering.
       straub@cs.UMD.EDU (Pablo A. Straub): Both this and #9 have a good
	    emphasis on using formal techinques (i.e.,  doing engineering
	    properly), but they do not disregard informal methods; chapters
	    are roughly organized around the traditional lifecycle.
	    #5 is longer and can be used in a two-term sequence or for
	    graduate students (it's  possible  to  use  it in a one-term
	    undergrad course by covering only part of the material). One
	    thing I like is that management and validation is given in all
	    chapters, so that these activities are integrated into the
	    development process.  Emphasizes the use of formally specified
	    abstractions.  Uses the authors' specification language (Spec)
	    to develop a project in Ada.
    6. _Software Engineering_ by Ian Sommerville
       hsrender@happy.colorado.edu: Our current text, and my basic problem
	    with it is the vague way it covers many of the topics.
    7. _Software Engineering with Student Project Guidance_ by Barbara Mynatt
       hsrender@happy.colorado.edu: Like #8, not bad, but fairly low-level
	    and doesn't cover many tools and techniques I consider valuable.
    8. _Software Engineering_ by Roger Jones
       hsrender@happy.colorado.edu: Like #8, not bad, butfairly low-level
	    and doesn't cover many tools and techniques I consider valuable.
    9. _Software Engineering: Planning for Change by David Alex Lamb,
       Prentice-Hall, 1988, 298 pages
       straub@cs.UMD.EDU (Pablo A. Straub): Both this and #5 have a good
	    emphasis on using formal techinques (i.e.,  doing engineering
	    properly), but they do not disregard informal methods; chapters
	    are roughly organized around the traditional lifecycle.
	    #9 has the advantage of being shorter, yet covering most relevant
	    topics (lifecycle phases, formal specs, v&v, configurations,
	    management, etc.).  It is very appropriate for an undergrad course.
	    It emphasizes that maintenance is a given and should be taken into
	    account (hence the title).  Several specification techniques are
	    covered and used to develop a project in Pascal.
    10._A Practical Handbook for Software Development_ by N.D. Birrell and
       M.A. Ould, Cambridge University Press, 1985/88. ISBN 0-521-34792-0
	    (Paper cover); ISBN 0-521-25462-0 (Hard cover)
       ewoods@hemel.bull.co.uk (Eoin Woods)

Topic: General reading for software engineers
Originally collected by: cml@cs.UMD.EDU (Christopher Lott)
Last updated: 29 May 1991
Note: responses to "what should every software engineering have read?"

    1. General
       a. Read about 100 pages of comp.risks
       b. Frederick P. Brooks, Jr., The Mythical Man-Month, Addison Wesley,
          1978. ISBN 0-201-00650-2
       c. The anecdotal books of Robert L. Glass, from Computing Trends,
          P.O.Box 213, State College, PA 16804, including: "Tales of Comput-
          ing Folk: Hot Dogs and Mixed Nuts", "The Universal Elixir and
          other Computing Projects Which Failed", "The Second Coming: More
          Computing Projects Which Failed", "The Power of Peonage", "Comput-
          ing Catastrophes", "Computing Shakeout", "Software Folklore"
       d. Paul W. Oman & Ted G. Lewis, Milestones in Software Evolution,
          IEEE Computing Society, ISBN 0-8186-9033-X.
    2. Programming in the large
       a. Grady Booch, Software Engineering with Ada, second edition,
          Benjamin/Cummings, 1987
       b. Bertrand Meyer, Object-Oriented Software Construction, Prentice-
          Hall, 1988.
       c. David L. Parnas, On the Criteria to be Used in Decomposing Systems
          into Modules, Communications of the ACM 15,2 (December 1972).
    3. Programming in the small
       a. Jon Louis Bentley, Writing Efficient Programs, Prentice-Hall,
          1982.
       b. Jon Bentley, Programming Pearls, Addison-Wesley, 1986.
       c. Jon Bentley, More Programming Pearls, Addison-Wesley, 1988.
       d. O.-J. Dahl, E.W. Dijkstra, C.A.R. Hoare, Structured Programming,
          Academic Press, 1972.
       e. Brian W. Kernighan, and P.J. Plauger, Software Tools, Addison-
          Wesley, 1976.
       f. Brian W. Kernighan & P.J. Plauger, The Elements of Programming
          Style, Second Edition, McGraw-Hill, 1978. ISBN 0-07-034207-5.
    4. Mathematical Approaches
       a. Edsger W. Dijkstra, A Discipline of Programming, Prentice-Hall,
          1976.
       b. E.W.Dijkstra.  Selected writings on computing: a personal perspec-
          tive.  Springer Verlag, 1982.
       c. David Gries (editor), Programming methodology. A collection of
          articles by members of IFIP Working Group 2.3. Springer Verlag,
          1978.
    5. Other
       a. Barry W. Boehm, Software Engineering Economics, Prentice-Hall,
          1981.
       b. Glenford J. Myers, The Art of Software Testing, Wiley, 1979.
       c. Herb Simon, The Sciences of the Artificial, Second Edition, MIT
          Press, 1981
       d. Gerald M. Weinberg, The Psychology of Computer Programming, Van
          Nostrand Reinhold, 1971. ISBN 0-442-29264-3


Topic: Metrics
Last updated: 21 May 1991
   a. N.E. Fenton, (Editor) Software Metrics: A Rigorous Approach, 1991
      United Kingdom: Chapman & Hall, 2-6 Boundary Row, London SE1 8HN,
      ISBN 0-412-40440-0.  United States: Van Nostrand Reinhold, 115 5th
      Avenue, New York NY 10003, ISBN 0-442-31355-1.
   b. M. Shepperd, Software Engineering Metrics, McGraw-Hill, for publi-
      cation 1991.  ISBN 0-07-707410-6 (UK) McGraw-Hill Book Company
      (UK) Limited, Shoppenhangers Road, Maidenhead, Berkshire, SL6 2QL.
      Tel: +44 (0)698 23431/2 Fax: +44 (0)698 770224
   c. Horst Zuse, Software Complexity: Measures and Methods, de Gruyer
      (200 Saw Mill River Road, Hawthorne, NY 10532 - 914/747-0110)

Topic: User Interface Design
Last updated: 19 May 1991
   a. John M. Carroll (editor).  Interfacing Thought: Cognitive Aspects
      of Human-Computer Interaction, MIT press, 1987.  This book has
      several good theoretical papers.
   b. Donald A. Norman, The Psychology of Everyday Things.  Basic Books,
      1988.  ISBN 0-465-06709-3 (hardback).  Trade paperback version is
      called "The Design of Everyday Things"
   c. Donald A. Norman & Stephen W. Draper (editors), User Centered Sys-
      tem Design: New Perspectives on Human-Computer Interaction,
      Lawrence Erlbaum Associates, 1986.
   d. Ben Shneiderman, Designing the User Interface: Strategies for
      Effective Human-Computer Interaction, Addison-Wesley, 1987.  Seems
      to be aimed at the practitioner.