The great challenge of reverse engineering is recovering design information from legacy code: the concept recovery problem. This monograph describes our research effort in attacking this problem. It discusses our theory of how a constraint-based approach to program plan recognition can efficiently extract design concepts from source code, and it details experiments in concept recovery that support our claims of scalability. Importantly, we present our models and experiments in sufficient detail so that they can be easily replicated. This book is intended for researchers or software developers concerned with reverse engineering or reengineering legacy systems. However, it may also interest those researchers who are interested using plan recognition techniques or constraint-based reasoning. We expect the reader to have a reasonable computer science background (i.e., familiarity with the basics of programming and algorithm analysis), but we do not require familiarity with the fields of reverse engineering or artificial intelligence (AI). To this end, we carefully explain all the AI techniques we use. This book is designed as a reference for advanced undergraduate or graduate seminar courses in software engineering, reverse engineering, or reengineering. It can also serve as a supplementary textbook for software engineering-related courses, such as those on program understanding or design recovery, for AI-related courses, such as those on plan recognition or constraint satisfaction, and for courses that cover both topics, such as those on AI applications to software engineering. ORGANIZATION The book comprises eight chapters.
Steven Woods is a Member of the Technical Staff at the Software Engineering Institute, Carnegie Mellon University in Pittsburgh, PA. His Ph.D. research on software reengineering was nominated for a Canadian National Sciences and Engineering Research Council Dissertation Award, and his ongoing collaborative contributions to the area have been acknowledged by the 1996 IEEE Working Conference on Reverse Engineering's Outstanding Contribution Award.
Alex Quilici is an Associate Professor of Electrical Engineering at the University of Hawaii at Manoa in Honolulu, HI. He is a leading researcher in the field of program understanding, and has been Principal Investigator on several different NSF, DARPA and US Air Force funded projects. He is co-chair of the 1997 IEEE Working Conference on Reverse Engineering. In addition, he is author or co-author of several widely-used programming textbooks.
Qiang Yang is the EBCO/EPIC NSERC Industry Chair in Intelligent Software Systems and an Associate Professor in the School of Computing Science of Simon Fraser University, BC, Canada. He is currently Principal Investigator on several Canadian NSERC research programs in AI planning and scheduling, case-based reasoning and decision-support systems, intelligent help desk problem resolution, trouble-shooting systems and software engineering in industrial applications. He is author of a recent book on AI Planning (Intelligent-Planning, Springer-Verlag).