Speaker
Steven Heep-Dong She
Title
Feature Model Synthesis
Abstract
Variability is a software system's ability to adapt and customize itself for a particular context. While variability enables code reuse, it is often tangled within a software artifact and scattered over multiple artifacts. This makes the system harder to maintain for developers, and harder to understand for users that configure the software.
Feature
models
provide
a
centralized
source
for
describing
the
variability
in
a
software
system.
A
feature
model
consists
of
a
hierarchy
of
features-the
common
and
variable
system
characteristics-with
constraints
between
features.
While
feature
models
are
beneficial
for
both
developers
and
users,
manually
synthesizing
a
feature
model
is
an
arduous
and
time-consuming
process
requiring
in-depth
analysis
by
a
domain
expert.
We
developed
two
techniques
for
feature
model
synthesis.
The
first,
FEATURE-GRAPH-EXTRACTION,
is
an
automated
algorithm
for
recovering
a
feature
graph
that
describes
all
possible
feature
diagrams
given
the
input
features
and
propositional
constraints
in
either
conjunctive
normal
form
(CNF),
or
disjunctive
normal
form
(DNF).
The
second
technique,
FEATURE-TREE-SYNTHESIS,
is
a
semi-automated
algorithm
for
building
a
feature
model
given
a
feature
graph.
This
technique
uses
both
logical
constraints
and
text
to
address
the
most
challenging
part
of
feature
model
synthesis-
constructing
the
feature
hierarchy-by
ranking
potential
parents
of
a
feature
with
a
natural
language
similarity
heuristic.
We
found
that
the
procedure
effectively
reduced
a
modeler's
choices
from
thousands,
to
five
or
less
when
synthesizing
the
Linux
and
eCos
variability
models.
Our
third
contribution
is
the
analysis
of
Kconfig-a
language
similar
to
feature
model
used
to
specify
the
variability
model
of
the
Linux
kernel
with
over
6000
features.
While
large
feature
models
are
reportedly
used
in
industry,
these
models
have
not
been
available
to
the
research
community.
Kconfig
models
make
excellent
large-scale
benchmarks
for
feature
model
analysis
and
synthesis
techniques.
We
compare
Kconfig
with
feature
modeling,
reverse
engineer
formal
semantics
for
the
language,
and
translate
the
Linux
model
to
propositional
logic.
Supervisor
Professor Krzysztof Czarnecki