user wishes to employ. These ideas are borrowed,
merged, and integrated from previous works, such as
(Ramesh and Edwards 1993; Drivalos et al., 2008;
Anquetil et al., 2010; Paige et al., 2011), though not
all come from a single of these works (we integrate
previous solutions). A Trace represents a sequence
(constraint {ordered} in the model) of chained trace
elements, generated during a sequence of model
transformations (e.g., as modeled by Falleri et al.,
(2006)), or simply to represent the transitive nature
of some traceability links where the target artifact of
a link becomes the source artifact of another link.
We opted for a composite pattern to provide
flexibility to the user of the model in handling a
Trace as a series of either TraceLink or Artifact
instances.
We decided to further specify, under the form of
an OCL constraint (not shown in the paper) that the
chained elements are either all Artifact or all
TraceLink instances, and forbid any mix of Artifact
and TraceLink instances (which is allowed by the
model class diagram) since we do not find it useful
to have such a mix; on the contrary we felt a mix
would hinder reasoning about the Artifact and
TraceLink instances that are involved in a Trace. In
addition to constraining the types being in the
sequence, the OCL constraint specifies that in case
the Trace instance is a sequence of TraceLink
instances, the target Artifact of the i
th
TraceLink
instance is the source Artifact of the (i+1)
th
TraceLink instance. Similarly, in case the Trace
instance is a sequence of Artifact instances, the i
th
and (i+1)
th
Artifact instances are the source and
target of a TraceLink instance.
A TraceLink instance represents a traceability
link between artifact(s): one or many source artifacts
and one or many target artifacts. Note that some
previous works limit those multiplicities to be
strictly 1, though we believe 1..* brings more
flexibility. Its purpose, thanks to (inherited)
associations to Characterization and Constraint, is
to capture information about the relationship
between source and target artifacts. The purpose of
Characterization is to characterize a TraceElement
according to zero or several taxonomies. Indeed, we
felt that different taxonomies characterizing
traceability links according to various dimensions
could be of interest in practice: e.g., the notions of
horizontal and vertical traceability, the categories
and traceability types (Ramesh and Edwards 1993),
categories of traceability types specific to MDE
software development (Paige et al., 2011).
We decided to exclude the specification of
specific taxonomies from our solution. The
advantage is that we are not tied to a specific set of
taxonomies, that we can use several taxonomies
together, and that our solution is therefore not
specific to either taxonomy and can evolve. In short,
the user can decide which taxonomies are important
to their context. The drawback is that our solution
may appear too generic or permissive: i.e., one can
provide meaningless characterization. This can
however be solved by requiring that
Characterization attribute only take allowed values
(in a specific set of taxonomies), which can be
enforced by means of constraints (class Constraint).
Class Artifact represents any traceable unit of
data such as a UML class diagram, a message in a
UML sequence diagram, a block in a block diagram,
a natural language requirement, a PDF document.
The resourceURI attribute specifies the exact
location of a traceable artifact, whether it is within a
model, a file, or a document. One very important
difference with many other attempts at modeling
traceability links, regarding the artifact specification,
is that our artifact specification is not tied to any
language with which the artifact being linked is
modeled: e.g., it is not tied to ECore languages as in
TML (Drivalos et al., 2008).
Artifact and TraceLink instances can be linked to
zero or several Constraint instances in order to
enforce some structural integrity of the model
instance, i.e., of the traceability information
(Drivalos et al., 2008; Paige et al., 2011). For
instance, one can specify that only certain types of
artifacts can be linked together, thereby forbidding
links between other kinds of artifacts; one can
specify that only specific characterizations can be
linked to a TraceLink (e.g., a trace link cannot be at
the same time horizontal and vertical). Since such
constraints are domain specific, they cannot be all
specified in the model and must be specified by the
Engineer. To that end, the Constraint class provides
attribute type to identify the constraint, attribute
value to specify the constraint itself, and attribute
language to specify the language in which the
description is written to then allow an algorithm to
trigger automatically the right constraints evaluation
engine: e.g., the type value could equal “OCL” and
the description could be an OCL expression. Our
traceability model is more generic than previously
published solutions since it can accommodate, by
design, tracing artifacts that come from widely
varying model types (i.e., class Artifact is not tied to
any other metamodel), tracing new kinds of artifacts
(because Artifact is not tied to any other
metamodel), from possibly new kinds of models,
and that those artifacts can be characterized in any
ICSOFT-EA2015-10thInternationalConferenceonSoftwareEngineeringandApplications
360