<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Reverse Engineering of UML Use Case Model from Website Usage Records</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vaidotas Drungilas</string-name>
          <email>vaidotas.drungilas@ktu.lt</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lina Čeponienė</string-name>
          <email>lina.ceponiene@ktu.lt</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mantas Jurgelaitis</string-name>
          <email>mantas.jurgelaitis@ktu.lt</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Information Systems, Kaunas University of Technology, Informatics faculty</institution>
          ,
          <addr-line>Kaunas</addr-line>
          ,
          <country country="LT">Lithuania</country>
        </aff>
      </contrib-group>
      <fpage>54</fpage>
      <lpage>60</lpage>
      <abstract>
        <p>-Though UML is rather commonly used for modelling various software systems, if not properly maintained, UML models could lose their practical value. Fixing the mismatch between documentation and the current state of software, requires significant effort from development team. This also applies to systems that have no documentation at all or legacy systems, which documentation is not available. Reverse engineering can be used for generating UML diagrams for existing systems. In this paper we present a method for reverse engineering UML Use Case model from websites. This method enables generating UML Use Case and Activity diagrams from the recorded user activity in the website.</p>
      </abstract>
      <kwd-group>
        <kwd>UML</kwd>
        <kwd>reverse engineering</kwd>
        <kwd>website</kwd>
        <kwd>Use Case diagram</kwd>
        <kwd>Activity diagram</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Unified Modelling Language (UML) is rather commonly
used for modelling various software systems [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. UML is
applied not only during development of complex software
systems but also during maintenance of the systems in use. As
for deployed systems that require support and updates, models
help to analyze and understand inner structure and functionality
of a system [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Most of the models and documentation are
usually created during initial software development stages. If
not properly maintained these models lose their practical value.
An example of improper maintenance could be a situation when
the final product receives updates and new features, without
updating documentation and leaving it obsolete. While using
this kind of obsolete documentation, maintenance of software
and introducing new features becomes more difficult. Fixing
the mismatch between documentation and the current state of
software, requires significant effort from development team.
This also applies to systems that have no documentation at all
or legacy systems, which documentation is not available.
      </p>
      <p>
        Websites more than any other type of software demand
constant updates and fixes to meet changing user demand and
to beat harsh competition [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. This demand and competition
puts pressure on web developers to implement changes as fast
as possible, without wasting valuable resources and time. As
demand grows, website developers tend to concentrate on
Copyright held by the author(s).
maintaining created and implementing new software features
rather than spending time for updating the documentation. To
match the tendency of directing most of the effort into
implementation stage, Agile project management
methodologies have a tendency to be rather popular among web
developers. Software products that are built using Agile
methodology, usually do not concentrate on having detailed
documentation. Consequently, in this paper we tackle a
problem of increasing efficiency of modelling process for
websites and suggest reverse engineering as a possible solution.
      </p>
      <p>
        Reverse engineering is the process of analyzing a system to
identify its structure and behavior in order to create its visual
representation [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Reverse engineering can be used to
understand how software works and to transform some kind of
static information, like program code, into models and
documentation [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        Reverse engineering can also be used for generating UML
diagrams [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In this paper we present a method for
reverse engineering UML Use Case model from websites. This
method enables generating UML Use Case and Activity
diagrams from the recorded user activity in the website and
websites’ HTML files.
      </p>
      <p>The rest of the paper is organized as follows. The second
section presents related work in the field of reverse engineering
UML diagrams. The third section is dedicated to describing our
proposed method for generating UML diagrams from registered
user actions. Section four describes the prototype developed for
our proposed method. The fifth section presents the results of
evaluation of the prototype by applying it for a particular
website. The last section summarizes the findings of our
research and discusses the future work.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RELATED WORK</title>
      <p>
        Reverse engineering of UML models is rather common in
the field of software engineering. Reverse engineering can
greatly reduce the effort required to construct UML diagrams.
UML diagrams can be divided into two categories, one
describes structure of the software system, and the other defines
its behavior [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        Structural UML diagrams can be reverse engineered from
code or other static structure. Class diagrams can be easily
transformed from static code [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref11">10</xref>
        ]. Many tools support this
option through plugins or default functionality, e.g. Eclipse [
        <xref ref-type="bibr" rid="ref12">11</xref>
        ]
or Visual Paradigm [
        <xref ref-type="bibr" rid="ref13">12</xref>
        ].
      </p>
      <p>
        On the other hand, reverse engineering of behavioral
diagrams, like Use Case and Activity diagrams, is not so
commonly implemented and used. Nevertheless, there have
been significant effort to create a working method for reverse
engineering of UML behavioral diagrams [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">13</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">14</xref>
        ].
      </p>
      <p>
        El-Attar and Miller proposed a method to reverse engineer
Use Case models from structured Use Case descriptions [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
This method requires structured text as an input which is
analyzed and transformed into the Use Case diagram. This
method if used correctly could greatly improve consistency of
software documentation and would allow creating precise and
unambiguous Use Case models. The best result using this
method could be in early development stages. On the other
hand, while using Agile methodologies this method would not
be the best choice because it requires additional effort for
creating and formatting Use Case specifications.
      </p>
      <p>
        Another method for reverse engineering UML diagrams has
been proposed by Muhairat [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. It uses event table as an input
for generating Use Case diagram. Event table, as defined in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
has four main elements: event, source of event, action and
object. These main elements are later transformed, using the
proposed process, which consists of actor identification,
relation between actors’ identification, use case identification,
relation between use cases identification and integration of all
found elements. Just like [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] method, this method requires a lot
of effort for creating sufficiently detailed event table to generate
informative Use Case model. This method could be the most
useful during requirement analysis phase.
      </p>
      <p>
        Much can be learned not only form reverse engineering Use
Case diagrams, but also from reverse engineering other
behavioral diagrams. An excellent example of reverse
engineering behavioral diagrams is presented in research by
Ziadi, da Silva, Hillah, and Ziane [
        <xref ref-type="bibr" rid="ref14">13</xref>
        ]. They proposed an
approach how to fully dynamically reverse engineer UML
Sequence diagrams. This dynamic method is intended for the
systems where static code analysis is not applicable directly.
Approach also defined how to extract the traces of a working
system. This idea is used as a basis in one of the steps of our
proposed method for extracting website usage information.
      </p>
      <p>
        Di Lucca, Fasolino and Tramontana proposed a specialized
tool specifically intended for website reverse engineering,
called WARE [
        <xref ref-type="bibr" rid="ref15">14</xref>
        ]. This tool is capable to reverse engineer
UML Use Case and Sequence diagrams as well as Class
diagrams. But instead of working with dynamic content, this
tool uses static code as an input for reverse engineering. This
tool is only applicable in situations where the full access to
source code is granted. In contrast, our research focuses on
reverse engineering UML behavioral diagrams independently
of the availability of the websites’ source code.
      </p>
      <p>Most of the research conducted in the area of reverse
engineering Use Case model is not intended particularly for
websites. Our approach focuses on reverse engineering UML
behavioral diagrams from websites, specifically from the
information recorded during website usage. Our proposal is
based on the idea that websites use a common architecture
which can be used to extract information about user activities.
III. PROPOSED METHOD FOR REVERSE ENGINEERING UML USE</p>
      <p>CASE MODEL</p>
      <p>
        As UML Use Case model provides detailed overview of
systems functionality, it is one of the main components of high
quality system documentation [
        <xref ref-type="bibr" rid="ref16">15</xref>
        ]. Our approach in reverse
engineering UML Use Case model should provide ability to
flexibly analyze web applications, and transform analysis
results into UML Use Case model. The created Use Case model
should include Use Case diagram along with each Use Case
specified by an Activity diagram defining the functionality of
that Use Case.
      </p>
      <p>The proposed method consists of two main steps for reverse
engineering UML Use Case model from the selected website
(Fig. 1):
1) registering usage of the analyzed system;
2) transforming registration results into XMI file.</p>
      <p>During the first phase of reverse engineering UML Use
Case model, user opens the system that will be analyzed. He
inputs his role in the system and activity that he will be
performing. User then continues to use system while his activity
is being recorded by reverse engineering system in the
background. User can input as many roles and activities as it is
required to completely represent his usage of the system.
Registering of user actions should be performed by a number of
users that is required to cover all functionality of system. After
all users register their activities, they should be able to export
result files and send them to the system analyst. System analyst
then should be able to merge all the result recordings together,
into one full structure that represents actions performed in the
analyzed system.</p>
      <sec id="sec-2-1">
        <title>A. System usage registration process</title>
        <p>The component that will be used for registering system
usage should not interfere with system functionality by any
way. The recording component should be able to read HTML
files that user is interacting with. It should work as a
background process that captures user input events, such as
clicks and form submits. To describe these events correctly,
recording component should also store information about
HTML elements that user interacts with. These elements should
be uniquely described with an identifying element. Registration
component should allow user to define what kind of role he is
performing in the system and to define what kind of activity he
will be performing. The process of registration consists of
initialization and recording steps as can be seen in Fig. 2</p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Registration result</title>
        <p>Registration results are then provided as an input for the
component that transforms user actions into UML Use Case
model. This input should be stored in a structure that has
elements described in Fig. 3. This structure should store all
Website URLs that user interacted with during time of
recording. In addition, user should provide the name of the
Role, which exists in given Website. Each Role will be
performing some kind of Activity. Each Activity should be
defined by Webpage that it was performed on and events that
were performed in that same Webpage. Each event is described
with detailed information about type of Action, and information
about HTML element that was in use during that event.</p>
      </sec>
      <sec id="sec-2-3">
        <title>C. Transformation process</title>
        <p>Transformation process is defined in Fig. 4. In order to
create a detailed UML model, transformation step should be
performed. During this step, registration input is being analyzed
for detecting relations between actors and use cases, also
between use cases themselves.</p>
        <p>Activity diagram defining the transformation (presented in
Fig. 4) specifies what actions are required to transform
registered results to XMI. The first action removes duplicate
actors, to keep the model concise. The second action is required
to detect and create generalization relations between actors. The
third action performs grouping operations with the registered
data. These grouping operations consist of detecting extend and
include relations between use cases. The final step takes the
results from all relation detection steps and creates XMI file
basing on the structure of metamodels of UML Use Case and
Activity diagrams.</p>
      </sec>
      <sec id="sec-2-4">
        <title>D. Generalization relation detection</title>
        <p>Generalization relation detection starts by scanning all
registered use cases and searching for two or more actors which
have matching use cases. Algorithm also checks whether it
needs to create a new user, in order to display a generalization
correctly. If the user creation is required, the system analyst
should be prompted to input actor name for new actor. After
these steps, the system creates generalization relations between
the actors. As a last step, the system maps all required use cases
to required actors. Generalization relation detection step is the
only step that changes configuration with actors in the model,
so after this step we will have the final number of actors in the
model. The activity diagram describing generalization detection
process is defined in Fig 5.
data that user provides during the recording. The higher amount
of recorded data should transform into a model that is more
detailed and thus more informative.</p>
      </sec>
      <sec id="sec-2-5">
        <title>1) Detection of extend type relations</title>
        <p>To enhance the Use Case model, our proposed approach
detects extend relations. All the actions required to detect
extend relations are represented in Fig. 6. These extend
relations are important in describing alternative scenarios in the
model. Extend relation detection starts with checking all
recorded action sequences and finding partially repeating
actions. From these sequences, the matching parts are extracted,
by comparing them to each other. At the beginning and end of
the extracted sequence, decision and merge points are created
respectively. Afterwards the extracted, remaining and newly
created elements are merged together to create the complete
activity diagram. For each path that is now separated from the
main path of the activity flow by a decision point, a new use
case can be created. User provides the names for these use cases
and the algorithm creates them in a model. The next step in
extension relation detection is creating extension relation
between newly created use cases and the use case they
originated from. Finally the extension points are created for the
use case, which has incoming extend relations.</p>
      </sec>
      <sec id="sec-2-6">
        <title>E. Detecting relations between Use Cases</title>
        <p>Detection of use case relations like extend and include,
depends on a data set provided by the user of proposed method.
Our method does not detect generalization between Use Cases,
only include and extend relationship. To detect extend relations,
the user of a system should record the same activity on a website
twice or more. If these data sets of the same activity will provide
exactly the same information, detection would just discard it.
Otherwise, if some differences would be found in these data
sets, the proposed algorithm can create a more detailed use case
model. Success of relation detection depends on an amount of</p>
        <p>Fig. 6 The process of detecting extend relations</p>
      </sec>
      <sec id="sec-2-7">
        <title>2) Detection of include type relations</title>
        <p>In order to decrease redundancy in use case model, include
relations can be used between use cases. As in our method the
amount of recorded data should be quite big, include relations
help to reduce the number of repeated actions in the model.
Include relation detection starts with finding all repeating action
sequences where repeated sequence length is higher than user
defined number N. For each sequence found, the algorithm
starts use case creation by prompting the user to input a use case
name and creating use case element with that name. These
found sequences are then removed form use cases where they
originated. To finalize, include type relations are created by
joining newly created use cases and use cases that the sequences
originated from. The process of include relation detection is
presented in Fig. 7</p>
      </sec>
      <sec id="sec-2-8">
        <title>F. Transformation to XMI format</title>
        <p>During the transformation to XMI step, all the information
gathered in previous steps is transformed into Use Case and
Activity diagrams. Transformation starts by creating a Use Case
diagram. For each role that the user defined, an actor is created.
For each activity, that the user defined, the use case is created.
Moreover, the use cases that were found during detection of
extension and include relationships are added to the model. All
use cases and actors are joined using the detected relationship.
For each use case, an Activity diagram is created. In this
diagram, the algorithm creates two swimlanes, the first one for
the actor that is interacting with the given use case, and the
second for the system under analysis. For each recorded action
our algorithm creates the action in activity diagram. Actions are
named referring to the action naming rules, selecting the verb
corresponding to the action performed on a HTML element as
well as a noun extracted from HTML element attributes. These
rules define how each action on HTML element should
transform into semantically correct action name. In a systems
swimlane, actions are created describing the opening of new
webpages. Initial and final activity nodes are also created and
all nodes and activities are joined together in a continuous flow.</p>
      </sec>
      <sec id="sec-2-9">
        <title>G. Transformation results.</title>
        <p>
          Results after generation are stored in XMI file. This file
consists of Use Case diagram with elements that are described
by UML Use Case metamodel [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. For each use case, an activity
diagram is created, representing all actions that the user
performs in the system under analysis. Activity diagram is also
based on UML metamodel for Activities and Actions [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. The
main elements that this method detects are roles, use cases, and
actions. Relations join each of these elements: association
relationship joins use cases and actors, generalization is used
between actors, include and extend relations can join two use
cases, and control flow relations connect the actions in activity
diagrams. User can download the generated XMI file and store
it as needed. As most of UML modeling tools support XMI as
their import format, users should just import this file and have
the working version of Use Case model.
        </p>
        <p>IV. THE IMPLEMENTED PROTOTYPE OF THE PROPOSED METHOD</p>
        <p>To test whether the proposed method could be utilized in
practice, a prototype has been implemented. Prototype was
realized as a Chrome plugin using JavaScript. It enables users to
submit information about their role in the website activity they
will be performing. As user continues to use the system that is
being analyzed, his actions are recorded. Recorded actions are
then stored in JSON file. After user indicates that he has ended
registration process, he can start transformation process. The
system transforms registered JSON structure to Use Case and
Activity diagrams. Example of this JSON structure is presented
in Fig. 8.</p>
        <p>Afterwards this JSON file is transformed into XMI file,
which can be imported into MagicDraw CASE tool as a model.
This model can later be viewed, analyzed and modified by the
analyst.</p>
        <p>V. EXAMPLE OF UML DIAGRAMS GENERATED USING THE</p>
        <p>IMPLEMENTED PROTOTYPE</p>
        <p>An experiment was conducted to verify whether the created
prototype is capable of reverse engineering UML Use Case
model. Website selected for this experiment was a virtual
learning environment Moodle, customized for Kaunas
University of Technology. The roles of student and teacher were
analyzed.</p>
        <p>In order to create Use Case model, student and teacher were
asked to perform actions in the analyzed website. Student
performed actions for uploading a file into the system. Teacher
recorded a process in which he downloaded the students’
submitted assignment. Fig. 9 displays the generated Use Case
diagram. For this diagram, users provided two roles but the
system identified one additional actor. In total three use cases
were detected. The first actor was discovered by generalization
relation detection step during registration result transformation.
As both of the actors had to log into the system a new user
named “Guest” was created. This user, as mentioned before,
provides the ability to subtract the amount of excess use cases.
For each of these use cases, the algorithm created an activity
diagram as expected.</p>
        <p>Activity diagram describing Use Case “Login” is presented
in Fig. 10. In this diagram we can see that each
nonauthenticated user had to click login button styled by CSS class
named “btn-login”. After the button is clicked, the system
transfers all non-authenticated users to unified authentication
system where user fills out login fields and submits the form. To
finish login use case, the user clicks Login button and is
transferred to the virtual learning environment. The generated
Activity diagram demonstrates the prototypes ability to specify
common actions, like login and registration.</p>
        <p>An example of generated activity diagram for use case
“Submit assignments” is displayed in Fig. 11. This diagram
displays interactions the user performed and webpages he
opened. The diagram describes algorithms’ ability to record
actions, and to transform them correctly. The action naming
conventions do not convey the performed action information
clearly, it heavily depends on the systems configuration. Most
of the students’ actions in this use case were navigation through
the website. One downside of using just URL changes to
describe the opening of new windows in the system, is that it
cannot record the opening of a modal window. The algorithms’
ability to detect modal windows should be improved in the
future.</p>
        <p>The example use case “Download assignment” is described
in activity diagram presented in Fig. 12. This activity provides
visual feedback, demonstrating that some of the URL naming
rules should be improved. On the other hand, this activity still
provides enough detail to cover all the most important actions of
the use case.</p>
        <p>The results of experiment indicate that created prototype is
capable of creating UML Use Case model. Both Use Case and
Activity diagrams were created describing system usage in great
detail. As current prototype is only capable of detecting
generalization relations, further iterations of this prototype will
only increase the expressivity of generated models. Generation
of activity diagrams describing each use case provide even more
depth to generated UML Use Case model. As semantic value of
these Activity diagrams can still be improved in future releases,
generated Activity diagrams still provide enough information
about system usage.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>VI. CONCLUSIONS AND FUTURE WORK</title>
      <p>Reverse engineering of UML diagrams is utilized in various
areas of software engineering. There are many applications of
reverse engineering, but most of them are for structural UML
diagrams. Behavioral UML diagrams can also be reversed and
in our work we have proposed the methodology for reversing
UML Use Case model from the data recorded during website
usage. Our algorithm analyses recorded user activity and
transforms it into UML Use Case and Activity diagrams. The
prototype of the proposed algorithm was implemented as a
Chrome extension. As this prototype is just the first of its kind,
it generates use case and activity diagrams, but is not yet capable
of detecting extend and include relations.</p>
      <p>The results of experiment indicate that the implemented
prototype is capable of generating UML Use Case model. Both
Use Case and Activity diagrams were successfully generated
using the prototype. The experiment results indicated that our
method could be successfully utilized in practice. The
experiment also provided valuable feedback about required
improvements on action naming rules.</p>
      <p>In the future, we are planning to implement the extended
capability to support other UML modeling tools. The set of
supported tools should include at least one open source tool that
is free to use, so that the proposed method could be more
accessible to wider audience.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Chaudron</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Heijstek</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Nugroho</surname>
          </string-name>
          ,
          <article-title>"How effective is UML modeling?,"</article-title>
          <source>in Software and Systems Modeling (SoSyM)</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Arisholm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. C.</given-names>
            <surname>Briand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. E.</given-names>
            <surname>Hove</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Labiche</surname>
          </string-name>
          ,
          <article-title>"The impact of UML documentation on software maintenance: an experimental evaluation,"</article-title>
          <source>IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>32</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>365</fpage>
          -
          <lpage>381</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          , Ó. Pastor,
          <string-name>
            <given-names>D.</given-names>
            <surname>Schwabe</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Olsina</surname>
          </string-name>
          , Web Engineering: Modelling and Implementing Web Applications, Springer-Verlag London,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E. J.</given-names>
            <surname>Cross</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Chikofsky</surname>
          </string-name>
          ,
          <article-title>"Reverse engineering and design recovery: a taxonomy,"</article-title>
          <source>in IEEE Software</source>
          , vol.
          <volume>7</volume>
          , no.
          <issue>1</issue>
          ,,
          <year>1990</year>
          , pp.
          <fpage>13</fpage>
          -
          <lpage>17</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hibschman</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <article-title>"Unravel: Rapid Web Application Reverse Engineering via Interaction Recording, Source Tracing, and Library Detection,"</article-title>
          <source>in UIST '15 Proceedings of the 28th Annual ACM Symposium on User Interface Software &amp; Technology</source>
          , Daegu, Kyungpook, Republic of Korea,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M. Mohammad I and E. A.-Q.</given-names>
            <surname>Rafa</surname>
          </string-name>
          ,
          <article-title>"An approach to derive the use case diagrams from an event table," in 8th WSEAS International Conference</article-title>
          , Cambridge,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>El-Attar</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <article-title>"Producing robust use case diagrams via reverse engineering,"</article-title>
          <source>Softw Syst Model</source>
          , pp.
          <fpage>7</fpage>
          -
          <lpage>67</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M. I.</given-names>
            <surname>Muhairat</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Abdel</surname>
          </string-name>
          ,
          <article-title>"A New Reverse Engineering Approach to Convert,"</article-title>
          <source>International Journal of Software Engineering &amp; Applications (IJSEA)</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <source>[9] "UML 2.5 Specification," 1 03</source>
          http://www.omg.org/spec/UML/2.5/PDF.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <year>2015</year>
          . [Online]. Available:
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Korshunova</surname>
          </string-name>
          ,
          <string-name>
            <surname>M. P. M.</surname>
          </string-name>
          v. d. Brand and
          <string-name>
            <given-names>M.</given-names>
            <surname>Mousavi</surname>
          </string-name>
          ,
          <article-title>"CPP2XMI: Reverse Engineering of UML Class, Sequence,,"</article-title>
          <source>in Proceedings of the 13th Working Conference on Reverse Engineering (WCRE'06)</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [11]
          <article-title>"eclipse,"</article-title>
          <source>The Eclipse Foundation</source>
          ,
          <volume>2108</volume>
          . [Online]. Available: http://www.eclipse.org.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [12]
          <article-title>"visual-paradigm,"</article-title>
          <source>Visual Paradigm</source>
          ,
          <year>2018</year>
          . [Online]. Available: https://www.visual-paradigm.com/.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Ziadi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A. A. d.</given-names>
            <surname>Silva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Hillah</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Ziane</surname>
          </string-name>
          ,
          <article-title>"A Fully Dynamic Approach to the Reverse Engineering of UML Sequence Diagrams,"</article-title>
          <source>in 16th IEEE International Conference on Engineering of Complex Computer Systems</source>
          , ICECCS,
          <string-name>
            <surname>Las</surname>
            <given-names>Vegas</given-names>
          </string-name>
          , United States,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G. A. D.</given-names>
            <surname>Lucca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. R.</given-names>
            <surname>Fasolino</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Tramontana</surname>
          </string-name>
          ,
          <article-title>"WARE: a tool for the Reverse Engineering of Web Applications,"</article-title>
          <source>Journal of Software Maintenance and Evolution: Research</source>
          and Practice - Special issue: Web site evolution, pp.
          <fpage>71</fpage>
          -
          <lpage>101</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Richard</given-names>
            <surname>Soley</surname>
          </string-name>
          and the OMG Staff Strategy Group,
          <source>Model Driven Architecture</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>B.A.</given-names>
            <surname>Nowak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.K.</given-names>
            <surname>Nowicki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Woźniak</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Napoli</surname>
          </string-name>
          ,.
          <article-title>"Multi-class nearest neighbour classifier for incomplete data handling,"</article-title>
          <source>in International Conference on Artificial Intelligence and Soft Computing</source>
          , pp.
          <fpage>469</fpage>
          -
          <lpage>480</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>