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.