Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Fundamentals of software engineering
Ghezzi C., Jazayeri M., Mandrioli D., Prentice-Hall, Inc., Upper Saddle River, NJ, 1991. Type: Book (013820432)
Date Reviewed: Jul 1 1992

As the authors point out in the preface, this is an engineering textbook; it emphasizes engineering principles and techniques, not how to write programs. It is intended for third- and fourth-year undergraduates, beginning graduate students, and professionals wishing to study independently. It serves this audience well.

Chapter 1, “Software Engineering: A Preview,” introduces the subject matter and shows how it makes up a component of computer science. Chapter 2, “Software: Its Nature and Qualities,” discusses engineering quality. The authors cover the nature of quality, kinds of quality and ways to measure it, and altering quality requirements to fit the application area of the software.

Chapter 3, “Software Engineering Principles,” introduces the fundamental concepts of engineering as applied to software, including rigor, formality, separation of concerns, modularity, abstraction, anticipation of change, generality, and incrementality. Chapter 4, “Software Design,” covers the objectives of design, modularization techniques (including modules, interfaces, hiding, notations, and bottom-up versus top-down design), object-oriented design, handling anomalies, and concurrency.

Chapter 5, “Software Specification,” covers the formal specification of software. The uses of specifications, desired qualities, styles, and verification are discussed. The authors give examples of various styles, including operational and descriptive forms such as dataflow diagrams, Petri nets, entity-relationship diagrams, and logic specifications, and compare and contrast them.

Chapter 6, “Software Verification,” covers goals, requirements, and problems of verifying software. Testing, analysis, symbolic execution, and debugging are discussed along with problems and approaches to verifying performance and reliability requirements.

Chapter 7, “The Software Production Process,” looks at several life cycle models and shows how the process of producing software is organized. It discusses software methodologies, configuration management, and software standards.

Chapter 8, “Management of Software Engineering,” covers the usual topics of managing an engineering project, with particular emphasis on software projects and their peculiarities. It discusses the functions of management; project planning, control, and organization; and risk management.

Chapter 9, “Software Engineering Tools and Environments,” is an introduction to the tools of the software engineer. It talks about editors, linkers, code generators, debuggers, testing tools, configuration managers, and so on. This chapter discusses programming languages as they affect the design and engineering of projects. It covers such issues as programming in the small versus in the large and procedural versus non-procedural programming. The implications the selection of a language has for both ease of design and ease of implementation and maintenance are discussed. The age of “environments” is also addressed. The authors describe Teamwork, UNIX, Smalltalk80, KEE, and PCTE.

Chapter 10, “Epilogue,” attempts to predict the future of software engineering and to instill a concern for (or at least make the reader think about) ethics and social responsibility in software engineering. While many students will be required to take a course in professional ethics and social responsibility, I would welcome the expansion of this section to a full chapter in the first third of the book; it is too often an afterthought, a last-chapter item.

The remainder of the work consists of three excellent case studies, references, and an index. The references are plentiful and cover the requisite historical material as well as more recent works (1988–1990). The index is adequate with no major items missing. The text is clearly written, and the typeface is acceptable.

I found only a few errors in the text, and they are obvious to any knowledgeable person. I hope they will be corrected in future printings. The end-of-chapter exercises cause the student to demonstrate understanding of principles rather than rote application of techniques or tools. The book also includes sufficient applied exercises. The few suggested answers are usually adequate, but more could be provided. The text is not geared toward a laboratory or project-oriented course. It is designed to teach the foundations (theory) and then be followed by a laboratory course. In software engineering and other theory-intensive courses I have too often found myself explaining something out of order to keep current with the lab exercises, while the theory course was several days or weeks behind. I like it better this way.

I am sure that each adopter will find that the book should have paid more attention to some favorite topic or that their mentor’s works are not adequately referenced. This work is not, however, intended as a handbook or for advanced study as is, for example, Sage and Palmer [1]. It does compare favorably with other introductory software engineering texts with which I am familiar.

I have not seen the instructor’s manual. If it is as well thought out as the book, it should prove of great use. Aside from the few errors noted above and some minor esthetic problems--perhaps more personal quirks than true defects--I have no hesitation in recommending this book for classroom adoption.

Reviewer:  C. A. Wolfe Review #: CR115194
1) Sage, A. P. and Palmer, J. D. Software systems engineering. Wiley-Interscience, New York, 1990.
Bookmark and Share
General (D.2.0 )
Computer Science Education (K.3.2 ... )
Metrics (D.2.8 )
Software Management (K.6.3 )
Would you recommend this review?
Other reviews under "General": Date
Development of distributed software
Shatz S. (ed), Macmillan Publishing Co., Inc., Indianapolis, IN, 1993. Type: Book (9780024096111)
Aug 1 1994
Software engineering
Sodhi J., TAB Books, Blue Ridge Summit, PA, 1991. Type: Book (9780830633425)
Feb 1 1992
Software engineering
Schach S., Aksen Associates, Pacific Palisades, CA, 1990. Type: Book (9780256085150)
Mar 1 1992

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2023 ThinkLoud®
Terms of Use
| Privacy Policy