A Decision-Tree Model for Software Evolution Analysis
Yuanfang Cai and Sunny Huynh
Department of Computer Science
Drexel University
Philadelphia, PA
{yfcai, sh84}@cs.drexel.edu
ABSTRACT
A modularization technique, or a refactoring method, ben-
efits a design if the potential changes to the design can be
well encapsulated by the technique. In general, questions
in software evolution, such as which modularization tech-
nique is b etter and whether it is worthwhile to refactor,
should be evaluated against potential changes. In this pa-
per, we present a decision-tree-based framework to generally
assess design mo dularization in terms of its changeability.
In this framework, we formalize design evolution questions
as decision problems, model software designs and potential
changes using augmented constraint networks (ACNs), and
represent design modular structure before and after envi-
sioned changes using design structure matrices (DSMs) de-
rived from ACNs. We formalize change impacts using an
evolution vector to precisely capture well-known informal de-
sign principles. For the purposes of illustration and prelim-
inary evaluation, we use this model to compare the aspect-
oriented and object-oriented observer pattern in terms of
their ability to accommodate envisioned changes. The re-
sults confirm previous results, but in formal and quantita-
tive ways. We also show that this approach can be general-
ized to real designs by applying our approach to the partial
refactoring decision-making problem of the Galileo fault tree
analysis tool.
1. INTRODUCTION
People have long recognized that evolvability, achieved most
fundamentally by appropriate modularity in design, can have
enormous technical, organizational and ultimately economic
value. Howeve r, as a discipline, we still lack the basic sci-
ence needed to analyze fundamental design de cisions such
as whether it is worthwhile to refactor existing system, or
how to best accommodate envisioned changes.
Each modularization technique, s uch as aspect-programming
techniques or a design pattern, provides one way to let some
part of a system change independently of all other parts. A
mo dularization technique, or a refactoring method, benefits
a design when the potential changes to the design can be well
encapsulated by the technique [20, 24, 14, 5]. In this paper,
we present a decision-tree-based framework to generally as-
sess design modularization in terms of its changeability.
Analyzing design modularity in general requires a design
mo deling technique independent of particular mo dularity
techniques and language paradigms. We have developed a
framework to formally model software designs using aug-
mented constraint networks (ACNs) [6, 4], in which design
dimensions and environment conditions are uniformly mod-
eled as variables, possible choices as values of variables, and
the relations among decisions as logical constraints. The
ACN modeling formalizes the key notions of Baldwin and
Clark’s design rule theory and Parnas’s information hiding
criteria [2, 20, 4]. The supporting prototype tool, Simon,
supports basic design impact analysis and the automatic
derivation of design structure matrices (DSMs) [6, 7, 4].
In our framework, we first use ACNs to formally model both
software designs and potential changes, and represent design
mo dular structure using DSMs automatically derived from
ACNs. Second, we formalize design evolution questions as
decision problems, modeling the decision making procedure
as a design tree (DT). Each node of a DT models a evolution
decision, such as the choices of design patterns, a refactoring
mechanism, or a potential change. Each decision is associ-
ated with an ACN modeling the design resulting from the
decision. Finally, the user can compare the design modular
structure before and after envisioned changes using design
structure matrices (DSMs) and ACNs. We formalize the
comparison using a evolution vector to capture well-known
but informal design principles, such as maximizing cohe-
sion, minimize coupling, open to extension, close to mo difi-
cation [21, 12].
People have been analyzing design evolvability and change-
ability in qualitative, intuitive, and heuristic ways. For ex-
ample, Hannemann and Kiczales used a well known and
widely-used Figure Editor (FE) [15, 14, 11] example to com-
pare the evolvability and modularity property of using aspect-
oriented (AO) versus object-oriented (OO) paradigm to im-
plement design patterns. They show the actual code im-
plementing these choices as the evidence of their analysis.
However, designers frequently face questions of the like be-
fore coding. For the purpose of illustration and preliminarily
evaluation, we model the comparison of AO observer pattern
vs. OO observer pattern using our evolution model against