Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Principles of program analysis
Nielson F., Nielson H., Hankin C., Springer-Verlag New York, Inc., Secaucus, NJ, 1999. 464 pp. Type: Book (9783540654100)
Date Reviewed: Nov 23 2005

According to the back cover of this book, it is “aimed at M.Sc. and Ph.D. students but will be valuable also for experienced researchers and professionals.” Though it is true for any book that a reader or reviewer should keep the book’s intended audience in mind, this is most emphatically the case with this book. This statement should not be taken in a negative way, as this book is an excellent, recommended work.

The authors’ goals, as stated in their preface, are, first, to provide an advanced textbook for their own courses in program analysis, so as to mitigate the necessity to gather “conference papers supplemented with the occasional journal paper or chapter from a text book out of print,” and, second, to “increase the awareness in the field about the many similarities between the various approaches [to program analysis].” The program analysis that the authors address encompasses “static compile-time techniques for predicting safe and computable approximations to the set of values or behaviours arising at run-time.” The four major types of program analysis that the book addresses are: data flow (chapter 2); constraint-based (chapter 3); abstract interpretation (chapter 4); and type and effect (chapter 5). Chapter 6 covers program analysis algorithms. I repeat here for completeness the authors’ statement that the book omits denotationally based program analysis, projection analysis, Stone dualities, and other topics “dear to the heart of the authors.”

The book is made up of six well-written and tightly-woven chapters, and three appendices: “Partially Ordered Sets,” which supplies the reader with prerequisite notions of posets and lattices, including Tarski’s fixed-point theorem; “Induction and Coinduction,”; and “Graphs and Regular Expressions.” The book is excellently organized. Chapter 1 is a faithful preview of chapters 2 through 5, and contains very thorough and well-done “navigation aids” (including the table of contents, lists of tables and figures, and an index). The writing is clear and to the point, and there are very few typographical errors. The mathematical style is economical and austere, as is proper for the book’s advanced level and implicit prerequisites.

That “the book is relatively self-contained, although the reader will benefit from previous exposure to discrete mathematics and compilers” is accurately stated in the preface, as long as “previous exposure” is not read as “nodding acquaintance.” The authors have tested the book at various times, levels, and places, and it has evolved accordingly.

Chapter 1, which “is intended to be read quickly,” promises, and delivers, “an overview of the main approaches to program analysis.” This first chapter gives concrete examples of the major abstractions that are addressed in the book, using the authors’ small sequence selection iteration language, WHILE, to illustrate analyses of imperative languages, and basing other examples on functional language constructs that are subsequently captured in the authors’ small FUNctional language. (The book does not discuss the analysis of logic programs.) Chapter 1 succeeds both in differentiating the four major analyses at a high level, and in showing their common points or unifying themes. The authors’ encouragement to read chapter 1 rapidly is well taken, as both notations and notions become clearer in the detailed chapters that follow. I recommend, moreover, in an admittedly easier-said-than-done spirit, that readers first perform a quick reading of the entire book, while paying particular attention to each chapter’s “Concluding Remarks” (which summarize the chapter’s motivation and enhance intuition, often via apposite real-life, noncomputing analogies).

It is clear that this work is written by experts, for professionals and advanced students, and that it is based on a broad and deep study of the program analysis literature, including the authors’ own contributions. The authors are, moreover, quite meticulous in giving credit where it is due, while keeping the list of references complete but focused. I recommend this book highly to the serious student, instructor, or program analysis specialist, and also to the professional nonspecialist; the latter’s thinking will certainly be jogged with very useful ideas and techniques.

Reviewer:  George Hacken Review #: CR132067 (0610-0998)
Bookmark and Share
  Featured Reviewer  
 
Code Inspections And Walk-Throughs (D.2.5 ... )
 
 
Formal Methods (D.2.4 ... )
 
 
Type Structure (F.3.3 ... )
 
 
Software/ Program Verification (D.2.4 )
 
Would you recommend this review?
yes
no
Other reviews under "Code Inspections And Walk-Throughs": Date
Limitations of empirical testing technique knowledge
Juristo N., Moreno A., Vegas S. In Lecture notes on empirical software engineering. River Edge, NJ: World Scientific Publishing Co, Inc., 2003. Type: Book Chapter
Oct 28 2003
Combining data from reading experiments in software inspections
Wohlin C., Petersson H., Aurum A. In Lecture notes on empirical software engineering. River Edge, NJ: World Scientific Publishing Co, Inc., 2003. Type: Book Chapter
Dec 2 2003
Using multiple adaptive regression splines to support decision making in code inspections
Briand L., Freimut B., Vollei F. Journal of Systems and Software 73(2): 205-217, 2004. Type: Article
Feb 23 2005
more...

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