AMERICAN SCIENTIST
AN INTEGRATED APPROACH TO SOFTWARE ENGINEERING
Pankaj Jalote, Springer-Verlag, 1991
The following review of the text book appeared in AMERICAN SCIENTIST, September-October Issue. A review of the book also appeared in ACM Computing Reviews in June 1992 (and reprinted in September 1992), which was also put on the net earlier.
A verbatim copy of the review in American Scientist:
Pankaj Jalote's book is an introductory software engineering text that is distinguished by a running case study designed to illustrate and integrate the discussion of various activities and methods in software development process. The book covers the traditional phases of software development - requirements, design, coding and testing - but for each of these phases it presents contemporary, formal and quantitative techniques for phase execution. For example, there are clear and practical explanations of data-flow diagrams, structured analysis and prototyping embedded in the requirements chapter. The design chapter presents a concise high-level analysis of system and module level design principles, such as problem partitioning, abstraction, and functional and object-oriented system decomposition. The coding chapter includes a rigorous but accessible explanation of correctness validation and program-size and complexity analysis. The final chapter on testing covers newer static testing methods, as well as the more traditional dynamic testing methods.
For each phase of software development, the text integrates discussion of those metric and formal and procedural verification techniques that can be used to evaluate the deliverables of that phase and insure their quality. There is a strong emphasis on analysis and planning, and an entire chapter is devoted to management aspects such as cost estimation, scheduling and staffing. This chapter also covers quality assurance, monitoring plans and the role of risk management. Finally, the text gives explicit guidelins for documentation of each phase of development, and it also illustrates these guidelines by applying them to the case-study example. Indeed, each formal and quantitative method introduced in the text is explicated by demonstrating how it can be applied in the context of the case study, thereby illustrating both its theory and practice.
This book is especially suited for a project-oriented introductory undergraduate course in software engineering because the organization of the book follows the traditional software development process (although nontraditional development models are also described), and because the description of each technique and method related to a particular phase is integrated into the chapter covering that phase. Also, the discussion of project planning comes very early in the text, corresponding to the point where the project plan would would be implemented during actual software development. General emphasis is on quantitative and management techniques used to insure efficient development of correct, maintainable and extensible software systems. In the interst of maintaining an introductory focus and brevity, however, the text does not include discussion of coding tools, such as programming languages, software development environments, debugging aids or simulators. Similarly, advanced topics such as software reuse, reverse engineering and software interoperability, are not included.
Overall, the book is very readable and exceptionally well organized. Although intended as an introductory text for students with no previous training, it nonetheless exposes the reader to many current sophisticated formal and quantitative methods. The explanations are complex but are well illustrated and explicitly related to the running case study. The book should provide students with a foundation for further study and an overview of modern software engineering theory and practice.
Susanna Schwab,
SoftLab Software Systems Laboratory Research, and Computer Science,
University of North Carolina at Chapel Hill.