Glossary of Reengineering Terms


This page contains proposed definitions of terms commonly used in reengineering and related disciplines.

Architectural style: a family of architectures constrained bycomponent/connector vocabulary, topology, semantic constraints. (Source: Garland and Shaw tutorial)

Architecture: a system description, including system components and how they interact.

Cliche: (1) (French) a pattern describing salient features of a concept that supports recognition of that concept in some specified context by application of some specified comparison algorithm; (2) a collection of related features or characteristics that provide a shared technical vocabulary, including inter-feature relationships. (Source: Programmer's Apprentice, 1990)

Concept hierarchy: a hierarchically organized collection of domain concepts. The organizing relationship is "part-of".

Delocalization: The phenomenon where "programming plans [are] realized by lines scattered in different parts of the program." [Letovsky86]

Delocalized plan: "pieces of code that are conceptually related [that] are physically located in non-contiguous parts of a program." (Source: Soloway, et al. CACM 11/88)

Design decision: An explicit refinement of a program design. Each decision reflects the elaboration of a design or programming plan into a more concrete realization.

Domain: A problem area. Typically, many application programs exist to solve the problems in a single domain. The following prerequisites indicate the presence of a domain: the existence of comprehensive relationships among objects in the domain, a community interested in solutions to the problems in the domain, a recognition that software solutions are appropriate to the problems in the domain, and a store of knowledge or collected wisdom to address the problems in the domain. Once recognized, a domain can be characterized by its vocabulary, common assumptions, architectural approach, and literature. [Arango Prieto-Diaz 1991]

Domain model: "The domain model should serve as a unified, definitive source of reference when ambiguities arise in the analysis of problems or later during the implementation of reusable components, a repository of the shared knowledge for teaching and communications, and a specification to the implementer of reusable components." "A model of a domain should include information on at least three aspects of a problem domain: concepts to enable the specification of systems in the domain; plans describing how to map specifications into code; and rationales for the specification concepts, their relations, and their relation to the implementation plans." [Arango]

Domain Specific Software Architecture: - an architecture that denotes how problems in a specific domain are typically solved.

Interleaving: "The merging of two or more distinct plans within some contiguous textual area of a program." [icsm95]

Model: - a cognitive abstraction of a software system.

Program comprehension: (synonym: Software understanding) - "the process of acquiring knowledge about a computer program." (Source: Rugaber, Encyclopedia article)

Program plan: A description or representation of a computational structure that the designers have proposed as a way of achieving some purpose or goal in a program. [Letovsky86,PA]

Rationale: A record of the reasoning used to produce a software artifact from a design specification.

Reengineering: "the examination and alteration of a subject system to reconstitute it in a new form and the subsequent implementation of the new form." (Source: Chikofsky and Cross, IEEE Sofware, Jan. 1990)

Representation: tangible (non-cognitive) abstraction of a software system.

Reverse engineering: "the process of analyzing a subject system to identify the system's components and their interrelationships and create representations of the system in another form or at a higher level of abstraction." [Chikofsky and Cross]

Signature: The set of features (e.g., syntax, semantic, graphical) that together signal the occurrence of a specific concept. (Source: Biggerstaff, CACM)

Software evolution: A continuous change from a lesser, simpler, or worse state to a higher or better state [for a software system]. [Arthur]

Software understanding: (synonym: Program comprehension) - "the process of acquiring knowledge about a computer program." (Source: Rugaber, Encyclopedia article)

Synchronized Refinement: a method for reverse engineering software system comprising both bottom-up program analysis and top-down application domain synthesis.

Back to Georgia Tech's Reverse Engineering Group web page.