This introduction to software engineering and practice addresses both procedural and object-oriented development. Is thoroughly updated to reflect significant changes in software engineering, including modeling and agile methods. Emphasizes essential role of modeling design in software engineering. Applies concepts consistently to two common examples—a typical information system and a real-time system. Combines theory with real, practical applications by providing an abundance of case studies and examples from the current literature. A useful reference for software engineers.
Review By: Noel LeJeune 03/12/2010If you are involved in any aspect of software development, you should read this book. Here's why: This book covers all the standard concepts of software engineering with a real-world perspective that will make sense to practitioners as well as software engineering students. This book provides the right balance of principles and practices. The authors speak from experience and write with an engaging relevancy that makes for an enjoyable and reasonably easy read. Practitioner or student, this is an excellent book.
The broad range of must-know topics for anyone involved with software development is more than adequately covered. One of the strengths of this book is the synthesis and summarization of complex topics. For example, someone wanting to understand the important concepts in the area of software design and design patterns could read the many significant works and detailed treatises on the topic and extract the salient points. However reading Pfleeger's book provides an outstanding summary with just the right amount of detail to provide real substance. (By the way, the discussion of design patterns provides the best summary I have read.) Too many software engineering texts treat such a topic superficially. Another example of broad coverage with sufficient detail is the chapters on software testing. Overall this book provides much more detail than the so-called "manager's guide" books, but the amount of information and the well-written style strike the right balance to make the reader knowledgeable in nearly all areas of software engineering.
The book opens with the whys of software engineering followed by the requisite chapter on modeling the process and life cycle. The third chapter sets the overall context with discussion of planning and managing the project. Many other texts tend to offer this late and more as an afterthought. This book provides a needed context for the real world in which we develop software. The next eight chapters follow the typical activities of software development from capturing the requirements, designing the architecture, designing modules, writing programs, testing, delivery, to maintenance. The book concludes with chapters on evaluating products, processes, and resources, improving the practice, and the future of software engineering.
An interesting feature is the information systems projects examined in each chapter. Each chapter closes with a discussion on what the contents mean to you, your development team, and the researcher. For those in a formal course, there's also the term project assignment for each chapter.
The only potential weakness I found is the lack of abundant discussion about agile methods for software development. It would have been nice to include more discussion about this while maintaining their objective viewpoint. If you are fanatic about agile methods, this book will not excite you but will still provide grounding in software engineering.
While the body of knowledge on any single topic within the realm of software engineering has been represented with a multitude of books and articles, this book gives such a solid summary of the field. It's worth reading and adding to your library.