Software Engineering: Theory and Practice
This introduction to software engineering and practice addresses both procedural and object-oriented development. The book applies concepts consistently to two common examples—a typical information system and a real-time system. It combines theory with real, practical applications by providing an abundance of case studies and examples from the current literature. Expanded coverage of object-oriented development — a programming perspective being implemented by many companies. Chapter 14, The Future of Software Engineering, provides expanded coverage of elements of software engineering that are becoming increasingly important such as risk management, technology transfer, and the role of decision-making in software engineering.
Covers concepts such as reuse, risk management, and quality engineering—embedded in the software engineering activities that are affected by them, instead of treating them as separate issues. Discusses measurement issues as an integral part of software engineering strategy, rather than as a separate discipline. Covers legal and ethical issues in software engineering by posing thought-provoking questions at the end of each chapter. Appropriate as a reference tool for software engineers.

Review By: Mary Ann Overbaugh
09/12/2002The book starts with an introduction of the software engineering process to level set understanding of where the industry has been and where we are going. It appears to follow a “plan-do-check-act” sequence, building on what was learned in each phase. Planning involves determining the solution (process), project startup, and management of the project. It then proceeds to analysis: gathering requirements; creation of the application: designing and coding; to checking: reviews and testing. Along the way, pertinent areas of the development process are highlighted such as describing object-oriented development techniques. Acting entails implementation, maintenance, and evaluations of the application. The last chapter discusses the future of software engineering.
The book is very well structured, detailed, and rich in content and could be used as a college-level text. The author is extremely knowledgeable about the subject matter—there are no weak chapters. She states the chapter objectives, tells us what we need to know, summarizes and tests our learning through very thought-provoking exercises that are deep, sophisticated, and mimic real-life situations and experiences. Questions are big picture, broad, and intellectually stimulating. A reference area at the end of each chapter gives the reader an opportunity to delve further into the topic by listing many references for tools, methods, contacts, books, articles, and Web sites (researchers salivate here!). There are also projects that can be used to further learning experiences. The graphics, code examples, and sidebars make the book interesting to read from a visual perspective but also because they contain rich information on related subtopics that broaden the topic under discussion. Each paragraph is packed with information, extended through detail, and tightly structured. I also like that she explains to different audiences, such as developers or researchers, exactly what they should be taking with them from the chapter.
This book belongs on everyone’s shelf. The author has wonderful credentials and knows her topic, giving this reader a sense of confidence that the content is trustworthy and accurate.