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.