presented in Section 4 to demonstrate the application
and feasibility of the proposed model transformation
approach. Finally, Section 5 concludes and suggests
future work.
2 REFACTORING MISUSE CASE
MODELS BASED ON
ANTIPATTERNS
This section provides necessary background on the
misuse case modeling notation and the use of
antipatterns to drive misuse case diagram
refactorings.
2.1 Misuse Case Diagrams Notation
Misuse case diagrams subsumes the entire notational
set of use case diagrams (Sindre and Opdahl, 2005).
A misuse case describes harmful behaviour in the
form of step-based scenarios, similar to how use
cases describe business related functional behaviour.
A misuse case is depicted as a black oval, to signify
its inverse relationship with use cases. Misuse cases
can share original relationships such as the include,
extend and generalization relationships. In addition,
misuse case diagrams introduce the concept of a
misuser. A misuser is analogous to an actor. A
misuse case can only be associated with misuse
cases similar to how actor can only be associated
with a use case. A misuser is an external entity that
accessed a misuse case to execute behaviour that can
compromise a system. A misuse case can access the
misuse case with malicious intentions or
unintentionally. A misuser is depicted as a black
stickman figure, to signify its inverse relationship
with an actor. Finally, misuse case diagrams
introduce the concepts of the threatens and mitigates
relationship. A threatens relationship can only be
directed from a misuse case to a use case to indicate
that the harmful behaviour contain in the misuse
case can be executed to negatively affect the
business related behaviour contained in the use case.
A mitigates relationship can only be directed from a
use case to a misuse case to indicate that the security
related behaviour in the given use case can be
executed to mitigate the threated posed be the given
misuse case.
2.2 Refactoring Misuse Case Diagrams
based on Antipatterns
An antipattern is defined as a “literary form that
describes a commonly occurring solution to a
problem that generates decidedly negative
consequences”. In the context of software
engineering requirement-oriented and design-
oriented diagrams, an antipattern will describe an
unsound structure and its potential harmful
consequences downstream in the development
process. An antipattern also provides key
information on how it can be detected within a
diagram and how the diagram should be altered to
remedy the faulty design. Altering a diagram is
performed by applying one or more refactorings.
It should be noted that a detected antipattern
does not definitively prove the existence of a detect.
An antipattern detection will only prompt modellers
to re-evaluate their design. While assessing their
diagrams due to an antipattern detection, the
modellers will reference key information provided in
the antipattern description itself to determine if an
error indeed exists, prompting the application of one
or more refactorings.
An approach to improve the quality use case
diagrams based on antipatterns was presented in (El-
Attar and Miller, 2006, 2010, 2012; Khan and El-
Attar, 2016). The approach was then extended to
improve the quality of misuse case diagrams in (El-
Attar, 2012). A summary of the taxonomy of
antipatterns presented in (El-Attar, 2012) is shown
below in Table 1. Table 1 also presents the
corresponding refactorings for each antipattern. Due
to space restrictions, only antipatterns “a1.” and
“a2.” only will discussed in more details.
A1. Accessing a Generalized Concrete Misuse Case
This antipattern is concerned with the case that a
misuser is associated directed with a generalized
misuse case in order to enable one of its specializing
misuse cases. A generalized misuse case would
normally contain abstract and incomplete behaviour
that is common amongst all of its specializing
misuse cases. However, a direct association with a
concrete generalized misuse case may result in
executing this generalized misuse case without
executing any of its specializing misuse cases
resulting in incomplete meaningless behaviour being
executed.
This antipattern can be remedied by applying
one of two refactorings. Refactoring “r1.” entails
the concrete generalized misuse case to be set as an
abstract misuse case, forcing the execution of one of
its specializing misuse cases. The second refactoring
“r2.” requires that the direct association between the
misuser an the concrete generalized misuse case to
be dropped and replaced with direct associations
ENASE 2019 - 14th International Conference on Evaluation of Novel Approaches to Software Engineering
250