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, 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, 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, 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.