Journal of Software Engineering and Applications, 2013, 6, 73-77
doi:10.4236/jsea.2013.63b016 Published Online March 2013 (http://www.scirp.org/journal/jsea)
Copyright © 2013 SciRes. JSEA
73
Identification and Check of Inconsistencies between UML
Diagrams
Xianhong Liu
School of Management, Henan University of Science and Technology, Luoyang, China.
Email: Lxh2072@163.com
Received 2013
ABSTRACT
Relationships between Unified Modeling Language (UML) diagrams are complex. The complexity leads to inconsis-
tencies between UML diagrams easily. This paper focus on how to identify and check inconsistencies between UML
diagrams. 13 consistency rules are given to identify inconsistencies between the most frequent 6 types of UML dia-
grams in the domain of information systems analysis and design. These diagrams are as follows: Use Case Diagrams,
Class Diagrams, Activity Diagrams, State Machine Diagrams, Sequence Diagrams and Communication Diagrams. 4
methods are given to check inconsistencies between UML diagrams as follows: manual check, compulsory restriction,
automatic maintenance, dynamic check. These rules and methods are helpful for developers to model information sys-
tems.
Keywords: UML; Inconsistency; Identify; Check
1. Introduction
Unified Modeling Language (UML) defines 13 types of
diagrams which support developers to model information
systems from different angles and levels. This kind of
multi-view modeling way, on the one hand is useful to
reduce complexity of models, on the other hand leads to
inconsistencies between diagrams easily. Even though
there are some researches on inconsistencies between
UML diagrams, some of them are not perfect. Firstly,
some researches don’t discuses this issue completely. For
example, Licong Tian argues that “Activity Diagrams is
a kind of State Machine Diagrams. Consistency rules
between Activity Diagrams and other Diagrams are the
same as State Machine Diagrams. So I will don’t dis-
cuses it in detail.” [1]. In fact, there are some consistency
rules between Activity Diagrams and other Diagrams. In
addition, inconsistencies between Use Case Diagrams
and other Diagrams are discussed rarely. Secondly, some
conclusions are inaccurate. Xiaojian Liu argues that “if
an operation of a class can call an operation of another
class, there must be an association relationship between
the two classes.” [2]. This thought actually misunder-
stands the association relationship. This paper discuses
how to identify and check inconsistencies between UML
diagrams. But only 6 types of diagrams used frequently
in the domain of information systems analysis and design
are discussed as follows: Use Case Diagrams, Class Dia-
grams, Activity Diagrams, State Machine Diagrams, Se-
quence Diagrams, and Communication Diagrams.
2. Identification of Inconsistencies between
UML Diagrams
How can we judge UML diagrams are consistent or not?
Rules are needed. Some consistency rules that help de-
velopers to find out inconsistencies are illustrated bellow.
2.1. Consistency Rules between Class Diagrams
and Sequence Diagrams
Class Diagrams describe classes, interfaces and relation-
ships between them. A sequence diagram is a form of
interaction diagram which shows objects as lifelines run-
ning down the page, with their interactions over time
represented as messages drawn as arrows from the source
lifeline to the target lifeline. Let’s take the diagrams in
Figure 1 as an example to explain consistency rules be-
tween the two diagrams.
Rule 01: an object in Sequence Diagrams must be an
instance of a normal class in Class Diagrams.
An object can not be created by itself, only be created
by a class. In Figure 1, object “a” is an instance of class
“A”, object “b” is an instance of class “B”, but the class
that object “c’ belongs to doesn’t exist. It is obvious that
the existence of object “c” breaks Rule 01. How to solve
this problem? If object ‘c” can not be deleted and it
doesn’t belong to neither class “A” nor class ‘B”, class
Identification and Check of Inconsistencies between UML Diagrams
Copyright © 2013 SciRes. JSEA
74
“C” must be added to the Class Diagram. Conversely, we
need to adjust the class that object “c” belongs to or de-
lete it in the Sequence Diagram. In addition, because we
can’t create an instance from an abstract class, the class
an object belongs to must be a normal class.
Rule 02: when the name of a class is modified in Class
Diagrams, the name of the corresponding class must be
updated synchronously in Sequence Diagrams.
In Sequence Diagrams, an object should be given an
appropriate name, and set an appropriate type which is a
class from Class Diagrams. So rule 02 is obviously right.
A class may be used in multiple Sequence Diagrams,
therefore please note that the class should be updated in
all Sequence Diagrams.
Rule 03: if an object sends a message to another object
in Sequence Diagrams, there must be a dependency rela-
tionship between the two classes that the two objects
belong to respectively. Contrariwise, if there is a de-
pendency relationship between two classes, there must be
at least one message interaction between the correspond-
ing objects.
A dependency relationship means that a class depends
on another one. In program code, a dependency relation-
ship often represents that an object is used in an opera-
tion of another object. Specifically, an object is used as a
parameter or a local variable of an operation of another
object. Let’s simulate the dependency relationship in
Figure 1 by a section of program code below. The op-
eration “operation7” of class ”B” is called by the opera-
tion “operation2” of class ”A", which decides that object
“a” must send a message named “operation7” to object
“b” in the Sequence Diagram. So rule 03 is right.
public class A
{
……
public void operation2( )
{
B b=new B( );
b.operation7( );
}
……
}
Licong Tian argues that “if there is a message interac-
tion between two objects in Sequence Diagrams, there
must be an association relationship between the corre-
sponding two classes.” [1]. Many scholars also agree
with this viewpoint. According to rule 03, it is obvious
wrong. The correct relationship should be dependency.
Rule 04: a message of Sequence Diagrams must cor-
respond to an operation of the receiver (an object), and
the operation is visible to the sender (an object).
A message in Sequence Diagrams is an order that an
object sends to another object. The order must be an ac-
tion that the receiver can complete. The action ultimately
is represented as an operation of the receiver. As shown
in Figure 1, the message operation7” matches the
operation “operation7” of class “B”. But there is not an
operation matching the message “operationx” in class
“B”. It is obvious that an inconsistency exists between
the Class Diagram and the Sequence Diagram. In terms
of the visibility, class “A” must had the authority to call
“B”, which depends on the visibility of class “B” and the
package (namespace) that class “B” belongs to. In addi-
tion, object “b” must have the authority to call “opera-
tion7”, which depends on the visibility of “operation7”.
Rule 05: if a class is deleted in Class Diagrams, the
corresponding objects and messages (corresponding to
operations) of the class should be deleted synchronously
in Sequence Diagrams.
Objects and messages in Sequence Diagrams derive
from classes in Class Diagrams. Therefore, correlative
objects and messages should be deleted when a class is
deleted.
2.2. Consistency rules between Sequence
Diagrams and Communication Diagrams
Communication Diagrams show interactions through an
architectural view where the arc between the communi-
cating Lifelines are decorated with description of the
passed Messages and their sequencing. Sequence Dia-
grams and Communication Diagrams are kinds of vari-
ants of Interaction Diagram. Communication Diagrams
correspond to simple Sequence Diagrams that use none
of the structuring mechanisms such as Interaction Uses
and Combined Fragments. They are on a par with each
other, and can be transformed from one variant to anther
one. So the consistency rules related to Sequence Dia-
grams mentioned above apply to Communication Dia-
grams. It is needless to discuses the consistency rules
Figure 1. An example of Class Diagrams and Sequence Dia-
grams.
Identification and Check of Inconsistencies between UML Diagrams
Copyright © 2013 SciRes. JSEA
75
between Communication Diagrams and other diagrams.
Let’s take the diagrams in Figure 2 as an example to
explain consistency rules between Sequence Diagrams
and Communication Diagrams.
Rule 06: the same object in Sequence Diagrams and
Communication Diagrams must belong to the same class
in Class Diagrams.
An object can only be created by a unique class.
Therefore, when an object appears in more than one In-
teraction Diagrams, it should belong to the same class.
As shown in Figure 2, object “c” is an instance of class
“C” in the Sequence Diagram, but it is a instance of class
“D” in the Communication Diagram. It is obvious that
inconsistency exists between the two interaction dia-
grams.
Licong Tian argues one rule as follow: “If an object is
created, deleted or modified in Sequence Diagrams, it
should be created, deleted or modified in Communication
Diagrams” [1]. This rule is meaningful when the two
diagrams are used to describe the same use case or other
object. But it is worthless to use them at one time. When
a Sequence Diagram and a Communication Diagram
describe different use case or other objects, objects and
messages are different, so this rule argued by Licong
Tian are worthless.
2.3. Consistency Rules between Class Diagrams
and State Machine Diagrams
A State Machine diagram can show the different states of
an object also how an object responds to various events
by changing from one state to another. The elements of
objects and states in State Machine Diagrams have rela-
tion to Class Diagrams. Therefore, there are some con-
sistency rules between Class Diagrams and State Ma-
chine Diagrams.
Figure 2. An example of Sequence Diagrams and Commu-
nication Diagrams.
Rule 07: an object that State Machine Diagrams de-
scribes must correspond to an instance of a normal class
in Class Diagrams.
An object is created by a class. If an object that a State
Machine Diagram describes doesn’t belong to any class
in a Class Diagram, the State Machine Diagram is
worthless. In this situation, it is need to delete the State
Machine Diagram, or add a new class to the Class Dia-
gram.
Rule 08: if a class is deleted in Class Diagram com-
pletely (not hid only), all the corresponding State Ma-
chine Diagrams should be deleted.
An object in State Machine Diagram depends on a
class in Class Diagrams. If a class is deleted, the states of
its object lose its significance, and corresponding State
Machine diagrams are not need any more.
Rule 09: a state in State Machine Diagrams must be a
legitimate value of one or more attribute of a class in
Class Diagrams.
A state is a situation or status that an object is doing
something or waiting for something to happen [3]. States
are essentially represented by the values of the attributes
of an object. A change of states is just the change of at-
tribute values. If a state doesn’t accord with the range of
attributes, it is obvious that State Machine Diagrams
contradict Class Diagrams.
Rule 10: if an action in State Machine Diagrams is to
call an operation of a class, the operation should keep
consistent with the definition of the operation in Class
Diagrams, including the name, parameters, etc.
An action represents what an object should do in the
course of changing from one state to another. It is divisi-
ble or indivisible. It may be a simple calculation, or call
an operation of an object. If an action calls an operation,
the operation deserves to keep consistent with the defini-
tion of the operation in Class Diagrams.
Yun Wang argues that “an action of State Machine
Diagrams should be defined in the class that a State Ma-
chine Diagram belongs to.” [4]. This viewpoint is not
accurate. It equates an action with an operation. Actually,
operations are only one kind variety of actions.
Weizhong Shao argues that “as for a transition of states
of an object, a trigger is just to call an operation the ob-
ject.” [5]. This thought is also not accurate. A trigger is
the reason to cause the transition. There is no inevitable
relation between the two things.
2.4. Consistency Rules between Sequence
Diagrams and State Machine Diagrams
When an object sends a message to another, the state of
the receiver may be changed. Therefore, there are some
consistency rules between Sequence Diagrams and State
Machine Diagrams.
Identification and Check of Inconsistencies between UML Diagrams
Copyright © 2013 SciRes. JSEA
76
Rule 11: if an activity in State Machine Diagrams is to
call an operation, the operation should be a message in
Sequence Diagrams.
As mentioned above, a message in Sequence Diagrams
corresponds to an operation of a class in Class Diagrams.
If an activity in a State Machine Diagram is to call an
operation, the operation must correspond to a message in
Sequence Diagrams.
2.5. Consistency Rules between Use Case
Diagrams and Class Diagrams
Use Case Diagrams describe Use cases, actors and rela-
tionships between them. It helps developers to capture
and represent behaviors of information systems. Because
behaviors of information systems finally are undertook
by operations of classes. Therefore, there are some con-
sistency rules between Use Case Diagrams and Class
Diagrams.
Rule 12: use cases in Use Case Diagrams must be as-
signed to operations of classes in Class Diagrams.
Use cases represent functions or services of informa-
tion systems. Operations of Classes are ultimate under-
takers of these functions or services. So use cases in Use
Case Diagrams must be assigned to operations of classes.
Because the granularity of a use case is not of uniform
size, it is possible that one use case doesn’t just corre-
spond to one operation.
2.6. Consistency Rules between Activity
Diagrams and Class Diagrams
Activity Diagrams are often used to describe use cases in
Use Case Diagrams or operations in Class Diagrams. The
main elements of Activity Diagrams include activities,
decisions, synchronizations, swimlanes and so on. Activ-
ity Diagrams are often used to describe use cases which
must be assigned to operations of classes, so there are
some consistency rules between Activity Diagrams and
Class Diagrams.
Rule 13: if an Activity Diagram is used to describe a
use case, activities and swimlanes in the Activity Dia-
gram correspond to operations and classes in Class Dia-
grams respectively.
When an Activity Diagram is used to describe a use
case, an activity is concrete behavior which corresponds
to operations of classes. Because swimlanes represent
activities are assigned to which person or organization, it
should corresponds to classes. Because the granularity of
an activity or swimlane is not of uniform size, it is possi-
ble that a use case doesn’t just correspond to an operation,
a swimlane doesn’t just correspond to a class.
3. Check of Inconsistencies between UML
Diagrams
Table 1. Check methods of inconsistencies between UML
diagrams.
consistency
rules manual
check compulsory
restriction automatic
maintenance dynamic
check
rule 01
rule 02
rule 03
rule 04
rule 05
rule 06
rule 07
rule 08
rule 09
rule 10
rule 11
rule 12
rule 13
How to check the consistency rules mentioned above are
obeyed or violated? There are three approaches: checking
by hand, checking by UML modeling tools, checking by
formalization method [6]. It is difficult to transform
UML diagrams into formalization language completely,
so the feasible approaches are the former two at present.
UML modeling tools can help us to check inconsisten-
cies through three methods: compulsory restriction,
automatic maintenancedynamic check. Compulsory
restriction means that UML modeling tools provide cor-
rect information for users to choose, avoid inputting
wrong information. Automatic maintenance means when
an element is modified, UML modeling tools automati-
cally update corresponding elements. Dynamic check
means that UML modeling tools capture users’ opera-
tions that may cause inconsistencies and tell users what
the reasons are and how they should do. Unfortunately,
UML modeling tools can not find all the inconsistencies
using the three methods. So the method of manual check
is indispensable. Some inconsistencies can find only by
hand. In Table 1, optimum methods are given to check
each consistency rule. Please note that each consistency
rule can be checked using multiple methods, but only one
or two optimum methods are listed in the table.
REFERENCES
[1] Licong Tian,Besheng Zhou, ”Research on model consis-
Identification and Check of Inconsistencies between UML Diagrams
Copyright © 2013 SciRes. JSEA
77
tency checking mechanism in UML visual modeling
tools”, Computer Applications and Software, vol. 22,
Jan.2005, pp.24-26. (in Chinese)
[2] Xiaojian Liu, Zhanhuai Li, “Checking consistency of
UML class diagram with relational model”, Computer
Engineering and Applications, vol.26, Sep.2006, pp.13-16.
(in Chinese)
[3] Grady Booch,James Rumbaugh,Ivar Jacobson, The Uni-
fied Modeling Language User Guide. New Jersey: Addi-
son-Wesley Professional,2005
[4] Yun Wang, Youcheng, Liu, “Model consistency checking
mechanism in UML visual system”, Journal of Computer
Research & Development, Vol.37, Jan.2000, pp.1-8. (in
Chinese)
[5] Weizhong Shao, Fuqing Yang, Object-Oriented System
Analysis and Design. beijing: Tsinghua University
Press,2006
[6] Xi Chen, QingChun Wang. “Research on UML consis-
tency”, SoftWare Guide, vol.8, Apr.2009, pp.26-27. (in
Chinese).