Fundamentals of Software Engineering
Authors : Carlo Ghezzi, Mehdi Jazayeri & Dino Mandrioli
Soft cover : 604 pages, 10 chapters
ISBN : 0-13-099183-X
Publisher : Prentice Hall. 2003
This book is a must have if you are student in software engineering. As a software engineering professional or software project manager, you will benefit from this book as it describes the usefulness of the modern practices of software engineering, and the need to adopt these. From a testing point of view, test analysts and test managers will also benefit from reading this book.
All the authors are professors in computer science. Carlo Ghezzi was named a Fellow of the Association of Computing Machinery in 2000 for his contribution to software engineering research, while Mehdi Jazayeri holds the chair of Distributed Systems at the Technical University of Wien. Dino Mandrioli's interest is the application of formal methods in software engineering.
'Fundamentals for Software Engineering' contains more than 350 exercises for the reader to complete, and more than 20 in-depth case studies to give a broad overview of why the techniques and principles are important. A CD with solutions and sample course syllabi, and websites (the publisher and the authors maintain web-pages to support the book) are available to instructors. Each chapter provides concluding remarks, hints, rough solutions, and bibliographic notes.
The authors start by explaining the nature and qualities of software systems. They concentrate on representative qualities of a software system and give a clear description to the reader about performance, usability, verifiability, maintainability, reusability, portability, understandability, interoperability, productivity, and visibility.
Software Engineering techniques are under the magnifying-glass: abstraction, separation of concerns, modularity, anticipation of change, and incrementality are some of the topics covered.
Various design techniques - like modularisation techniques, object-oriented design techniques, different architectures, and components - are explained in detail. An example of a public library is used to explain operational specifications and cover data flow diagrams, UML diagrams, finite state machines, and Petri nets. Descriptive specifications, such as entity-relationship diagrams, logic specifications, and algebraic specifications are discussed. Ample exercises for each topic are available for the student/reader. More that twenty-five pages explain how to build and use specifications in practice.
Goals and requirements for verification are highlighted, and various verification techniques are described, these include testing, analysis, symbolic execution, and model checking. Although debugging is not a verification technique it is discussed under the topic 'verification' because it is so intimately related to verification. Testing as a verification method explains in detail white-box testing, black-box testing, and testing boundary conditions.
The main activities of a Software Production Process (feasibility study, understanding the requirements, design, coding and module testing, integration and system testing, and deployment) are discussed in detail. A Budget Control System and a Telephone Switching System are two of four case studies that the reader can learn from.
'Management of Software Engineering' (chapter 8) will explain to the student all the activities that form part of managing a software project. The management issues under discussion are:
A Nokia software factory is one of the cases used to discuss team organisations.
To support the Software Engineering Process a number of tools are discussed, these can assist in the software engineering process. These tools include:
In conclusion, this book provides you with the broad spectrum of system engineering activities that are vital to a software project; these include design techniques, managing of software engineering, and tools to use. The use cases will familiarise you with real-life project issues. Do the exercises, and if you still need some assistance you can contact the authors (at http://www.infosys.tuwien.ac.at/se-book/).