Global Consistency Checking of Distributed Models with TReMer+ ABSTRACT

advertisement
Global Consistency Checking of Distributed Models with
TReMer+
Mehrdad Sabetzadeh Shiva Nejati Steve Easterbrook Marsha Chechik
Department of Computer Science
University of Toronto
{mehrdad,shiva,sme,chechik}@cs.toronto.edu
ABSTRACT
We present TReMer+, a tool for consistency checking of distributed
models (i.e., models developed by distributed teams). TReMer+
works by first constructing a merged model before checking consistency. This enables a flexible way of verifying global consistency
properties that is not possible with other existing tools.
Categories and Subject Descriptors
Panel
Canvas
Container
Component
M1
UIObject
R
M2
Figure 1: Consistency checking of pairs of model.
Design, Verification
veloped models, heuristic model matching has been proposed [6].
Regardless of how the relationship R is defined, it is important to
be able to check whether it respects the consistency properties of
interest. For example, we may want to verify that R does not imply
cyclic inheritance. This is done using a rule like the following:
Keywords
¬∃x, y, z, t · R(x, y) ∧ R(z, t) ∧ Descends(x, z) ∧ Descends(t, y)
D.2.1 [Software Engineering]: Requirements/Specifications
General Terms
Distributed Development, Consistency Checking, Model Merging
1.
INTRODUCTION
Models play a key role in many aspects of software engineering. Analysts build models of a problem domain to understand the
stakeholders’ goals and needs, and they build models of a system
under development to reason about its structure and behaviour. For
large-scale projects, modelling is a collaborative effort that may
involve distributed teams of people. These teams often build several inter-related models representing information from different
perspectives, or information relevant to different development concerns. Model Management is concerned with describing the relationships between these models, and providing systematic ways to
analyze and manipulate the models and their relationships [2].
An important activity in model management is checking the consistency of a set of models with respect to known or hypothesized
relationships between them. For example, suppose that the class
diagrams M1 and M2 in Figure 1 are two different perspectives on
a GUI domain, and that the relationship R in the figure expresses
the overlaps between the two models.
In this example, R was defined by hand. Larger problems require automation, usually achieved through conventions for establishing correspondence between object pairs, e.g., name equivalence if models have a common vocabulary, or identifier equivalence if models have common ancestors. For independently de-
Copyright is held by the author/owner(s).
ICSE’08, May 10–18, 2008, Leipzig, Germany.
ACM 978-1-60558-079-1/08/05.
(C1 )
Obviously, the relationship in Figure 1 violates C1 , as witnessed
by x = “Component”, y = “UIObject”, z = “Canvas”, and t = “Panel”. This
indicates either that we misunderstood the nature of the overlaps
between M1 and M2 , or that there is a real disagreement between
the models.
The example in Figure 1 only considers pairwise consistency,
i.e., consistency of a pair of models with respect to a single relationship between them. In practice, we are often faced with systems that have many models inter-related by many relationships.
Therefore, we not only need to check pairwise consistency, but also
the consistency of a system as a whole. This is known as global
consistency checking. Global consistency checking cannot be done
through pairwise checking [14, 8]. To illustrate, consider the system in Figure 2.
R1
M2
Panel
Container
Container
Canvas
UIObject
Component
M1
R2
R3
M3
Figure 2: Consistency checking of systems of models.
The models in the figure are pairwise consistent when checked
against C1 . But the system is globally inconsistent because the
combination of the information provided by R1 , R2 , R3 implies a
loop in the inheritance chain. Specifically, Component inherits from
Canvas =R1 Panel which inherits from Container (in M2 ) =R2 Container (in M3 ) which inherits from UIObject =R3 Component.
Existing tools for consistency checking of distributed models,
e.g., xlinkit [7], focus on pairwise checking using rules similar to
C1 . Unfortunately, such rules are coupled with explicit references
to a relationship (e.g., R in C1 ). Hence, generalizing a pairwise rule
to a global one involves referring to all of the relationships between
Merged Model
Merge
+
Source System
<traceinfo model="ex" diagram="Threeway">
<element uid="645">
<lineage view="Rob" uid="25"/>
</element>
<element uid="644">
<lineage view="Rob" uid="21"/>
</element>
<element uid="646">
<lineage view="Rob" uid="32"/>
<lineage view="Connector1" uid="343"/>
<lineage view="Sue" uid="12"/>
<unifier name="C1-To-Sue" srcuid="343" tgtuid="12"/>
<unifier name="C1-To-Rob" srcuid="343" tgtuid="32"/>
</element>
<element uid="647">
<lineage view="Sue" uid="2"/>
</element>
<element uid="643">
<lineage view="Rob" uid="19"/>
<lineage view="Connector1" uid="341"/>
<lineage view="Sue" uid="6"/>
<unifier name="C1-To-Sue" srcuid="341" tgtuid="6"/>
<unifier name="C1-To-Rob" srcuid="341" tgtuid="19"/>
</element>
</traceinfo>
Traceability
Data
Consistency
Checking
(Intra-Model)
<html>
<head>
</head>
<body>
<h2>
Diagnostics for <a href="view://merge/none">merge</a>
</h2>
<em><font color="#FF0000">(note the filters
applied)</font></em><hr><strong>Objects with multiple parents:</strong>
<ul>
<li>
<a
href="view://merge/258">merge/258</a> <em><font
color="#FF00FF">  ( Parents: <a
href="view://merge/257">merge/257</a>  <a
href="view://merge/260">merge/260</a>  )</font></
em>
</li>
</ul>
<hr>
</body>
</html>
Diagnostics
future, we plan to extend TReMer+ to support other notations, such
as goal models and detailed class diagrams.
TReMer+ provides a convenient way for describing relationships.
For this purpose, model pairs are shown side-by-side. A correspondence is established by first clicking on an element of the model in
the left pane and then on an element of the model in the right pane.
Figure 4 illustrates this for the relationship R1 of Figure 2.
Inconsistency
Navigation
Figure 3: Global Consistency Checking with TReMer+.
the models within the scope of an individual rule, which makes the
rules too complex to be practical.
In [11], we propose a technique for decoupling consistency rules
from relationships when models are assumed to be homogeneous
(i.e., specified in the same notation). The idea behind the technique
is to employ model merging to reduce the problem of checking
inter-model consistency to checking intra-model consistency of a
merged model. For example, rather than trying to directly check
the acyclic inheritance constraint on the system in Figure 2, we
construct a merge, shown in Figure 6, and interpret the constraint
over it. By keeping proper traceability data, we project the diagnostics obtained from consistency checking of this merge back to
the source models and relationships.
In this paper, we describe a prototype tool, TReMer+, that supports the consistency checking approach in [11]. In addition to
addressing the problem of global consistency checking for homogeneous models, TReMer+ offers practical insights on how to combine independent model management operators, in this case, merge
and (intra-model) consistency checking, in order to perform more
complex model management tasks.
2.
TReMer+ uses an abstraction, called interconnection diagram,
for specifying the set of models and relationships that should be
included in the analysis. For example, Figure 5(a) shows the interconnection diagram for the system in Figure 2. Being explicit about
the participating models and relationships is important for two reasons: (1) It allows developers to narrow down the scope of their
analysis to a desired subsystem. For example, if we were interested in pairwise checking of M1 and M2 (with respect to R1 ), we
would use the interconnection diagram in Figure 5(b). (2) A modelling project may include outdated or competing versions of the
models and relationships. In such a case, one needs to be explicit
about the versions to be used.
TOOL OVERVIEW
Figure 3 shows an overview of the consistency checking use case
in TReMer+: Having defined a system of inter-related models, we
begin by applying a merge operator to the system. This yields a (potentially inconsistent) merged model along with traceability links
from it to the source system. In the next step, we check the consistency of this merged model against the (intra-model) constraints
of interest, and generate appropriate diagnostics for any violations
found. By utilizing the traceability data for the merge, the tool
enables navigation from the diagnostics to the source models and
relationships involved in every inconsistency instance.
TReMer+ offers end-to-end support for the process in Figure 3.
Specifically, it provides (1) an environment for building models,
relationships, and systems of inter-related models, (2) a library of
merge operators, (3) a platform for constraint checking and diagnostics generation, and (4) utilities for computation and navigation
of traceability links. Of these, (3) and (4) are new in TReMer+;
and (1) and (2) are from an earlier conception of the tool, TReMer
(Tool for Relationship Driven Model Merging) [10].
In this paper, we describe the use of TReMer+ for consistency
checking, concentrating on relevant parts of the model merging
process (Section 2.2), specifying consistency rules (Section 2.3),
and understanding the results of the analysis (Section 2.4).
2.1
Figure 4: Building relationships between models.
Models, Relationships, and Systems
TReMer+ has a visual interface that allows users to edit their
models, build relationships between these models, and define different systems by choosing subsets of the models and relationships
in a project. TReMer+ currently supports entity-relationship diagrams, state machines, and simple UML domain models. In the
(a)
(b)
Figure 5: Interconnection diagrams.
2.2
Model Merging
Our consistency checking approach relies on the ability to merge
a set of related models into a single model. The way this merge
is carried out ultimately depends on the formalism being used, and
the assumptions made about the semantics of the models and their
relationships. To enable the implementation of different merge algorithms, TReMer+ defines a plugin interface for the merge operation. Currently, TReMer+ provides implementations for two merge
algorithms, described in [9] and [6], respectively.
[9] is a generic algorithm suited to graph-based models in early
stages of development (e.g., requirement elicitation), where models
are typically incomplete and have informal or semi-formal semantics. The algorithm supports a range of ontological relationships
between concepts in different models, e.g., exact matches (equivalence), specialization (isA), aggregation (hasA), and overriding
(refutation of a concept in favour of another). Merges are computed
based on a category-theoretic concept called colimit. Colimits can
merge several models at a time; hence, they can be applied directly
to interconnection diagrams with arbitrary numbers of models and
relationships. Further, colimits are universal, i.e., unique (up to
isomorphism) for a given interconnection diagram. Figure 6 shows
Panel (M2)
Component,UIObject
Canvas (M1)
Container
→ Panel
R1:Canvas
Canvas,Panel
Figure 6: Merging the system in Figure 2, checking its global consistency, and projecting back the resulting diagnostics.
the colimit of the system in Figure 2. For simplicity, our example in Figure 2 only uses equivalence mappings. See [9] for more
complex examples.
The second algorithm, [6], which is not illustrated here due to
space restrictions, concentrates on state machine models with formal
execution semantics. Unlike [9], it is assumed that models are complete. Relationships between model pairs are based on a notion
of behavioural similarity between states. This notion is flexible
enough to relate models that may be at different levels of abstraction. A merge is defined as a common refinement [13] of a pair
of models with respect to a relationship between them. The approach generalizes to arbitrary interconnection diagrams by iteratively merging a new input model with the result of a previous
merge. Since the merge operator in this approach is associative, the
order in which binary merges are applied does not affect the final
result. For examples and further details, consult [6].
2.3
(Intra-Model) Consistency Checking
TReMer+ uses CrocoPat [1] –a first order relational manipulation tool– for consistency checking of individual models. While
our approach is not tied specifically to CrocoPat, there are two major considerations that make CrocoPat an appealing choice: (1) Expressiveness – CrocoPat provides the full expressive power of first
order logic with counting and transitive closure. This offers great
flexibility for specifying complex structural constraints. (2) Efficiency – CrocoPat uses symbolic encoding for relational structures,
leading to high efficiency in terms of both time and memory.
Figure 7 depicts the process for consistency checking with CrocoPat. In the first step, the model to be checked is translated into a
set of first order predicates using the translation algorithm given in
[11]. The result, along with a user-selected set of consistency rules,
is then passed to CrocoPat for consistency checking and generation
of diagnostics. The diagnostics obtained, which are in hypertext
format, are then sent to TReMer+ for presentation to the user.
Figure 6 shows the diagnostics generated when the merge in our
running example is checked for cyclic inheritance. The diagnostics
include a list of offending classes, and for each such class, a counterexample path1 . All model elements appearing in the diagnostics
1
Currently, we ignore symmetries between inconsistencies; hence,
the tool reports three distinct errors for the same cycle in Figure 6.
Model (visual)
Model (relational)
Translation
Node("256");
Label("256", "Canvas");
Type("256", "Entity");
Certainty("256", "proposed");
Node("257");
Label("257", "Component");
Type("257", "Entity");
Certainty("257", "proposed");
Node("258");
Label("258", "Widget");
Type("258", "Entity");
Certainty("258", "proposed");
Edge("259");
Type("259", "Generalization");
Certainty("259", "proposed");
Src("259", "258");
Tgt("259", "257");
Edge("260");
Type("260", "Generalization");
Certainty("260", "proposed");
Src("260", "257");
Tgt("260", "256");
Edge("261");
Type("261", "Generalization");
Certainty("261", "proposed");
Src("261", "256");
Tgt("261", "258");
<rule domain = "Entity Relationship Diagrams" default="on">
<short-description>Cyclic inheritance</short-description>
<long-description>
Checks for cycles in the generalization hierarchy.
</long-description>
<rml>
<![CDATA[
R(x, y) := Node(x) & Node(y) & EX(e, Head(e, x) & Tail(e, y) & Type(e,
"Generalization"));
Cycles(x, y) := TCFAST(R(x, y)) & (x = y);
OnCycle(x) := Cycles(x, x);
didPrint := 0;
PRINT "<strong>Objects on cyclic inheritance paths</strong> (<em>Only one cycle per
object is shown</em>):<br>", ENDL;
PRINT "<ul>", ENDL;
FOR t IN Title(v) {
FOR n IN OnCycle(x) {
didPrint := 1;
CurrentR(x,y) := R(x,y);
z:=n;
PRINT "<li><a href=''view://", t, "/", n, "''>" , t, "/", n, "</a> ",
"<font color=''#FF00FF''><em>  (Cycle: ";
WHILE (!R(z, n)) {
ReachVia(x, y, u) := TCFAST(CurrentR(x, y)) & TCFAST(CurrentR(y, u));
T(v) := CurrentR(z, v) & ReachVia(z, v, n);
FIRST() := TRUE();
FOR m IN (T(v)) {
IF (FIRST()) {
PRINT "<a href=''view://", t, "/", m, "''>" , t, "/", m, "</a>→";
next := m;
}
FIRST() := FALSE();
}
CurrentR(x,y) := (x != z) & (y != next) & CurrentR(x,y);
z := next;
}
PRINT "<a href=''view://", t, "/", n, "''>self</a>)</em></font></li>", ENDL;
}
}
IF (didPrint = 0) {
PRINT "<font color=''006600''>None</font>", ENDL;
}
PRINT "</ul><hr>", ENDL;
]]>
</rml>
</rule>
CrocoPat
<html>
<head>
</head>
<body>
<h2>
Diagnostics for <a href="view://merge/none">merge</a>
</h2>
<em><font color="#FF0000">(note the filters
applied)</font></em><hr><strong>Objects with multiple parents:</strong>
<ul>
<li>
<a
href="view://merge/258">merge/258</a> <em><font
color="#FF00FF">  ( Parents: <a
href="view://merge/257">merge/257</a>  <a
href="view://merge/260">merge/260</a>  )</font></
em>
</li>
</ul>
<hr>
</body>
</html>
Diagnostics
Consistency
Rules
Figure 7: Consistency checking with CrocoPat [1].
are hyperlinked to the corresponding visual elements, allowing for
more user-friendly navigation. The diagnostics refer to model elements through their unique identifiers (uids) rather than their names,
as shown by the screenshot in Figure 6.
Omitting the hypertext formatting instructions, the rule for checking non-circularity of the inheritance relation is as follows:
1:
Inherits(x, y) := EX(e, Src(e, x) & Tgt(e, y) & Type(e, "inheritance"));
2:
3:
Descends(x, y) := TC(Inherits(x, y));
OnCycle(x) := Descends(x, x);
4:
FOR n IN OnCycle(v) {
// v is a dummy free variable
5:
PRINT "* ", n, " (Cycle: ";
6:
7:
R(x,y) := Inherits(x,y);
Current(x) := (x = n);
8:
WHILE (!(Current(z) & Inherits(z, n))) { // z is a dummy free variable
9:
ReachVia(x, y, u) := TC(R(x, y)) & TC(R(y, u));
10:
11:
Admissible(x) := EX(z, Current(z) & R(z, x) & ReachVia(z, x, n));
Previous(x) := Current(x);
12:
Current(x) := Admissible(x) & FA(y, Admissible(y) –> (x <= y));
13:
PRINT Current(x), "→";
14:
15:
}
R(x,y) := !Previous(x) & !Current(y) & R(x,y);
16:
PRINT "self)", ENDL;
17: }
In the above rule, we first compute a relation Inherits(x,y) that
holds if x inherits from y, i.e., if there exists an arc e of type "inheritance" whose source is x and whose target is y (line 1). We then
take the transitive closure (TC) of Inherits(x,y). This yields a relation
Descends(x, y) that holds if x is a descendant of y (line 2). Finally,
we compute a set OnCycle(x) of classes lying on cyclic inheritance
paths, i.e. classes that are descendants of themselves (line 3).
For diagnostics (lines 4–17), we iterate over the classes in OnCycle and print a cycle for each. Specifically, for every n ∈ OnCycle,
we compute a set Admissible of n’s successors that have a path back
to n (line 10). We choose an arbitrary element from Admissible (line
12) – in our code, the element with the smallest identifier (uid).
After printing this successor (line 13), the process continues recursively, having removed from the inheritance relation the arc from
n to the printed successor (line 14). The process ends when a full
cycle is printed.
TReMer+ currently has rules for checking well-formedness of
ER diagrams, UML domain models, and state machines. All these
rules are specified in a single XML file which can be easily modified or extended by end-users. To simplify the specification of new
consistency rules, TReMer+ provides a set of generic and reusable
expressions capturing recurrent patterns in the structural constraints
of graph-based models. These expressions are discussed in [11].
2.4
Inconsistency Navigation
To support projecting the inconsistencies found over a merge
back to the source models and relationships, TReMer+ implements
the traceability approach described in [9]. Specifically, for each
element of the merge, traceability links are stored on the source elements and relationships relevant to that element. For example, the
Projections pane in Figure 6 shows the links for Canvas,Panel in the
merge. These include a link to Canvas in M1 , a link to Panel in M2 ,
and further, a link to relationship R1 so that we know why Canvas
and Panel were unified.
In a typical inconsistency exploration scenario, the user starts
from the diagnostics. Clicking a link in the diagnostics causes the
corresponding element in the merged model to be highlighted and,
at the same time, the traceability data for that element to be displayed in the Projections pane. The traceability data, like the diagnostics, are in a hyperlinked format, allowing the user to navigate
to the source models and relationships relevant to the element in
question. Figure 6 shows the setting immediately after the user has
clicked Merge/47 (i.e., Canvas,Panel) in the Diagnostics pane. If the
user goes on to click R1/(uid:15, uid:19) in the Projections pane, she
will be taken to the screen in Figure 4.
Our tool further provides traceability at the level of interconnection diagrams. For example, clicking on R1/(uid:15, uid:19) takes the
user to the interconnection diagram in Figure 5(a) with R1 highlighted. This is useful when the user does not want to zoom into
the details of the source models and relationships, and only wants
to get a bird’s eye view of the models and relationships involved in
a particular inconsistency instance.
3.
EVALUATION
We have evaluated the practical utility of TReMer+ through two
case studies. In the first study [11], we used a set of domain models
for a health care system developed by the students of an advanced
object-oriented modelling course. In the second study [6], we used
variant specifications of telecom features from AT&T.
Both studies deal with independently developed models. For
these models, relationship building is an exploratory process because one can never be entirely sure how the vocabularies of different models relate to one another. Each study begins by hypothesizing a set of relationships between the models, done manually
in [11], and using a heuristic model matcher in [6]. TReMer+ is
then employed for checking the structural consistency of these relationships, and the resulting diagnostics are used by the analysts
to refine the relationships. Throughout the studies, we demonstrate
that constructing merged models and checking global consistency
enables various types of analysis that would be either expensive or
impossible to do by pairwise consistency checking.
To ensure that global consistency checking scales, we have done
a number of performance tests on models with 500 to 10,000 elements checking for such violations as dangling and parallel edges,
multiple inheritance, and cyclic inheritance. The most computationally expensive of these checks ran in less than 3 minutes. Detailed results are available from [11]. From these results, we anticipate that our approach should be applicable to larger systems.
4.
IMPLEMENTATION & AVAILABILITY
TReMer+ is written entirely in Java. It is roughly 15K lines
of code, of which 8.5K implement the user interface, 5.5K implement the tool’s core functionality (model merging, traceability,
and serialization), and 1K implement the glue code for interacting with CrocoPat. The tool uses JGraph [5] for editing and visualizing models, and EPS Graphics2D [4] for exporting models to
PostScript vector graphics. TReMer+ was publicly released in May
2007. The tool and our case studies are freely available at
http://www.cs.toronto.edu/~mehrdad/tremer/
5.
CONCLUSION
We presented a tool, TReMer+, for detecting global inconsistencies in distributed models. The tool enables checking inter-model
properties of a set of models via checking intra-model properties of
their merge. TReMer+ is currently limited to homogeneous model
only. Generalization to heterogeneous models presents a challenge
because merge cannot be defined at a notational level. In future
work, we plan to develop ways to merge models at a logical level
and provide support for heterogeneous consistency checking [7,
3]. Another natural follow-on to our current work is resolution of
global inconsistencies.
TReMer+ is part of a larger research effort to build usable model
manipulation tools. A complementary part is a project aimed at
developing a customizable Eclipse-based platform for model management. An outline of this project is given in [12].
Acknowledgments. We thank everyone who provided feedback
on TReMer+, particularly Dirk Beyer, Renée Miller, Rick Salay,
and Pete McCormick. Funding for this work was provided by OGS,
NSERC, and Bell Canada (through the Bell University Labs).
6.
REFERENCES
[1] D. Beyer. Relational programming with CrocoPat. In ICSE, pages
807–810, 2006. Tool Paper.
[2] G. Brunet, M. Chechik, S. Easterbrook, S. Nejati, N. Niu, and
M. Sabetzadeh. A manifesto for model merging. In ICSE Wrkshp on
Global Integrated Model Mgmt., 2006.
[3] A. Egyed. Instant consistency checking for the UML. In ICSE, pages
381–390, 2006.
[4] EPS Graphics2D. http://www.jibble.org/epsgraphics/.
[5] Java Graph Visualization and Layout. http://www.jgraph.com/.
[6] S. Nejati, M. Sabetzadeh, M. Chechik, S. Easterbrook, and P. Zave.
Matching and merging of Statecharts specifications. In ICSE, pages
54–64, 2007.
[7] C. Nentwich, W. Emmerich, A. Finkelstein, and E. Ellmer. Flexible
consistency checking. ACM TOSEM, 12(1):28–63, 2003.
[8] B. Nuseibeh, S. Easterbrook, and A. Russo. Making inconsistency
respectable in software development. J. of Sys. and Soft., 56(11), 2001.
[9] M. Sabetzadeh and S. Easterbrook. View merging in the presence of
incompleteness and inconsistency. RE J., 11(3):174–193, 2006.
[10] M. Sabetzadeh and S. Nejati. TReMer: A tool for relationship-driven
model merging. In Posters and Research Tools Track of Formal
Methods, 2006. No published proceedings.
[11] M. Sabetzadeh, S. Nejati, S. Liaskos, S. Easterbrook, and M. Chechik.
Consistency checking of conceptual models via model merging. In RE,
pages 221–230, 2007.
[12] R. Salay et. al. An Eclipse-based tool framework for software model
management. In OOPSLA Wrkshp on Eclipse Technology eXchange,
2007.
[13] S. Uchitel and M. Chechik. Merging partial behavioural models. In
FSE, pages 43–52, 2004.
[14] A. van Lamsweerde, R. Darimont, and E. Letier. Managing conflicts in
goal-driven requirements engineering. IEEE TSE, 24(11):908–926,
1998.
APPENDIX
A. PLAN
example of the paper. The demo starts by defining models, relationships, and systems. It then goes on to compute a merge (using the merge operator of [9]), check the
consistency of this merge, and project the resulting diagnostics.
• Our second demo illustrates consistency checking of distributed behavioural models described as Statecharts. The
demo emphasizes TReMer+’s ability to work with different merge operators. The models we use in this demo are
small fragments of the AT&T telecom specifications; and
the merge algorithm we apply is the one described in [6].
There will be four parts to our presentation: (1) motivation and
problem statement, (2) overview of solution and tool architecture,
(3) case study, and (4) wrap-up. To present these parts, we use a
combination of slides, flash demos, and a live demo. In particular:
• Parts (1) and (4) are presented using only slides.
• Part (2) is presented using slides and short flash demos that
illustrate the tool over toy examples. We choose flash demos over a live demo for this part because they more easily
weave into the flow of the slides as we explain the underlying
methodology of the tool. To see examples of the flash demos
we plan to use, visit the tool’s website.
• Part (3) is presented as a live demo based on the case study described in [11]. The demo is preceded by slides that motivate
the case study and accompanied by slides (on the second projector) that highlight the main observations. The focus of the
demo is to let the audience see the interactions with the tool
first-hand, and to explain what TReMer+ offers over existing
consistency checking tools.
Below, we provide further details about our presentation plan.
A.1
Motivation & Problem Statement
Estimated Duration: 5–6 minutes
Delivery: 4 to 5 slides
Motivation:
• With the increasing globalization of software development, management of distributed models has become a
key problem.
• Central to this problem is the issue of checking consistency between different model.
Existing Work:
• Existing techniques focus on checking consistency of individual models and of pairs of models.
• Such strategy cannot verify global consistency.
Example of Global Inconsistency:
• This is going to be similar to the running example of the
paper.
A.2
Overview of Solution & Tool Architecture
Estimated Duration: 6–8 minutes
Delivery: 2 to 3 slides, 2 short flash demos
Overview:
• We explain the consistency checking process in TReMer+
using the diagram in Figure 3. In this context, we also
explain the components of the tool and how they fit together.
TReMer+ in Action:
We present two flash demos.
• The first one provides an end-to-end tour of the tool over
a simple conceptual modelling example, e.g., the running
A.3
Case Study
Estimated Duration: 9–11 minutes
Delivery: 2–3 slides, a live demo
Case Study – Setup and Goals
• Models: Five requirements domain models for a health
care system
– Models were developed independently by five individual students.
– Models are small (with 50-70 elements each) but real.
See Figure 8.
• Goals:
1. Constructing a coherent set of relationships to express the overlaps between the models.
2. Exploring the structural conflicts between the models.
Case Study – Execution
1. Hypothesize a set of preliminary relationships between
the models.
2. Check the consistency of these relationships using TReMer+.
3. Use the resulting diagnostics to address the goals of the
case study.
Live Demo – Scenario
In our demo, we concentrate on the second and third steps of
the execution of the case study. Specifically:
1. We apply merge to an already-prepared interconnection
diagram like the one shown in Figure 9. This results in a
merged model like that in Figure 10.
2. We check this merged model against several structural
constraints to obtain inconsistency diagnostics like those
in Figure 11.
3. We select two or three inconsistencies from the diagnostics and explain how each of them can be used to reason about the source system (e.g., Figure 12). As we
progress through the demo, we also explain our observations about the advantages of global consistency. A
summary of these observations is provided below.
Live Demo – Observations
Collapsing several pairwise checks into one global check
• We can consolidate several checks that have a pairwise nature into a single global check. For example,
suppose we have identically-named concepts in different models but the concepts are not equated by the
relationships defined between the models. This is a
potential anomaly and should raise a warning. One
could do this using pairwise comparison of the models, but a more effective way would be to construct
a merge and report all identically-named elements in
one shot.
Detection of design conflicts
• In our case study, there are concept such as StaffMember and Schedule that appear in several of the source
models; however, different subjects described the associations between these concepts differently. For
example, one said Schedule belongs to StaffMember,
another said StaffMember has a Schedule, a third one
said StaffMember aggregates Schedule, and so on. Global
consistency checking allows us to analyze all these
conflicts within a unified context, i.e., the merged
model. This is much more effective for understanding the conflicts compared to pairwise analysis of the
source models.
Decision impact analysis
• We can use global consistency checking to analyze
the impact of decisions made over one model on other
related models. For example, if we decide to delete
a concept C from some model, we can automatically check all other models which have a concept
C 0 equated with C, to verify that no (non-deleted)
arcs are incident to C 0 – such links would become
dangling if we propagated the deletion of C to C 0 .
Employing pairwise checking for performing such
sanity checks after a change can be costly or even
ineffective when more complex sanity criteria are involved.
An important issue to convey during the demo is that although
merges are often large, they can still be successfully used for exploring inconsistencies. This is because, for every inconsistency,
the user needs to focus only on the (typically small) merge fragment that is relevant to that particular inconsistency. Nevertheless,
we recognize that exploration can be facilitated by showing to the
user only this relevant fragment rather than the entire merge. This
can be achieved by using a model slicing operator [2]. We plan to
incorporate such an operator into our tool in the future.
A.4
Wrap-up
Estimated Duration: 1 minute
Delivery: 1 slide
We conclude with a summary and provide download information
for the tool.
B.
SCREENSHOTS
In the next four pages, we provide representative screenshots for
our live demo.
Screenshots start from the next page.
The remainder of this page is blank.
M1
M3
M2
M4
M5
Figure 8: Source models for the demo.
Figure 9: An interconnection diagram for relating the models in Figure 8. In addition to M1–M5, a helper model, Helper1, appears
in the diagram. This model is used for bridging the information gaps between the original five models. Note that we did not have to
state all relationships between model pairs, because merge automatically results in transitive relationships. For example, having a
relationship that equates x in M1 and y in M2, and another relationship that equates x in M1 and z in M3, automatically equates y
and z.
Figure 10: Merge of the system in Figure 9.
.
Figure 11: A fragment of the diagnostics generated for the merged model of Figure 10. The dialog box for consistency rule selection
is also shown.
Figure 12: Example of reasoning about the source system – the marked diagnostic message is a warning on the existence of parallel
association arcs between the concepts Ward and Nurse. From the projections, we determine the origins of these arcs: one comes from
M2 and the other from M4. If the original arcs turn out to be expressing the same association, we need to declare a correspondence
between them.
Download