<!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>Detection and Handling of Model Smells for MATLAB/Simulink Models</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thomas Gerlitz</string-name>
          <email>gerlitz@embedded.rwth-aachen.de</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Quang Minh Tran</string-name>
          <email>quang.tranminh@dcaiti.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christian Dziobek</string-name>
          <email>christian.dziobek@daimler.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Daimler AG, Mercedes Benz Car Development</institution>
          ,
          <addr-line>Sindel ngen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Daimler Center for Automotive IT Innovations (DCAITI)</institution>
          ,
          <addr-line>Berlin</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Informatik 11 - Embedded Software</institution>
          ,
          <addr-line>RWTH Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Code smells in traditional software artifacts are common symptoms of the violation of fundamental design principles which negatively impact the quality of the resulting software product. Symptoms of code smells commonly occur in traditional software artifacts and cannot be directly mapped to model-based software artifacts. In this paper, we present a catalog for the detection and handling of model smells for MATLAB/Simulink, a widely used tool for model-based software development in the automotive domain. These model smells describe antipattern against universal quality requirements and have been collected in cooperation with an OEM from the automotive domain. To show the feasibility of detecting the proposed model smells, we realized a model smell detector and evaluated it within an industrial case study.</p>
      </abstract>
      <kwd-group>
        <kwd>MATLAB/Simulink</kwd>
        <kwd>model-based software engineering</kwd>
        <kwd>model refactoring</kwd>
        <kwd>model quality</kwd>
        <kwd>model smells</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Model-based software engineering (MBSE) is used extensively within the
automotive domain, since it promises an increase in e ciency and quality of software
development. In contrast to traditional software engineering, the developer
creates graphical models, e.g. data ow diagrams, to implement control algorithms
responsible for systems deployed within a car, which are then used to generate
software. While MBSE has certain advantages over traditional software
engineering, similar problems occur when developing software with either development
paradigm that e ect the quality of the resulting software, i.e. modularity,
maintainability, reusability etc. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Common aws within the design of traditional
software artifacts are documented by Fowler in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In this work Fowler, de nes
so called code smells whose occurrences decrease the quality of the software. For
example, the code smell Duplicated Code describes that a software component
has been implemented by duplicating already existing code. This potentially
decreases the maintainability of the duplicated software component because errors
have to be corrected in all duplicated code parts. Therefore, developers are
compelled to avoid code smells within their software to increase its quality. Other
methods to assess the quality of software include the use of software
development guidelines, metrics or the use of formal methods to check speci c quality
criteria.
      </p>
      <p>In this paper, we present a catalog of model smells for MATLAB/Simulink,
a widely used tool for model-based software development in the automotive
domain. These model smells describe anti-patterns against universal quality
requirements and have been collected in cooperation with an OEM from the
automotive domain. In contrast to modeling guidelines that need to be followed
to create a syntactically consistent model, our proposed catalog of model smells
can be used to detect and avoid aws within the architectural design of a model
that may complicate maintenance or further development.</p>
      <p>The rest of the paper is structured as follows. Section 2 gives an introduction
to the quality criterions the model smells are based on. After that, Section 3
contains an overview of needed techniques to detect and handle the model smells
introduced in the previous section, in addition to an overview of related work
in the eld of quality assessment of MATLAB/Simulink models. The evaluation
of a prototypical implementation of the presented model smells are contained in
Section 4. Related work in the context of quality criteria for MATLAB/Simulink
models is discussed in Section 5. The paper is concluded in Section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Model Smells Catalog for Simulink</title>
      <p>Based on our experience with creating and maintaining Simulink models as well
as interacting with Simulink modelers in the automotive domain on a regular
basis, we have observed that certain model properties need to be designed with
care to achieve high quality models. In this section we present ve model quality
properties that in uence the overall quality of a Simulink model. One of these
properties is the naming scheme that is applied to elements of the model which
is a speci c attribute of each individual model element and is responsible for
the proper documentation of the model. The other properties are of
architectural nature and include the structural partitioning of the model in hindsight to
modularization and abstraction, interfaces of Subsystem blocks, the signal ow
within the model and the signal structure that is associated with this signal ow.</p>
      <p>
        For each of these properties we present a catalog of quality anti-patterns or
model smells as shown in Fig. 1. These model smells represent examples of quality
aws within these properties and are explained in the following paragraphs.
Some of the presented smells are inspired by code smells [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] but the catalog also
includes smells that are only applicable to Simulink models. How these smells
should be detected and handled by the developer is explained in Section 3.
Name. Names of modeling elements, i.e. blocks, subsystems, lines and ports, of
a Simulink model serve as documentation. In particular, a line name describes
the signal or a group of signals (in case of a bus signal), that it carries. The name
of a subsystem or a custom library block is a textual description of the function
Model Smells for
      </p>
      <p>Simulink
Partition</p>
      <p>Subsystem with Multiple Functions
Superfluous Subsystem
Deeply Nested Subsystem Hierarchy</p>
      <p>Duplicate Model Part
Interface</p>
      <p>Signal Flow</p>
      <p>Subsystem Interface
Incongruence
Inconsistent Interface Definition
Long Port List
Non-optimal Port Order</p>
      <p>Redundant Signal Paths
Cyclic Signal Path
Mismatch Between Visual and
Effective Flow
Independent Local Signal Paths
Unused Signal
Pass-through Signal</p>
      <p>Hidden Signal Flow
Signal Structure</p>
      <p>Superfluous Bus Signal
Non-Optimal Signal Grouping
Unnamed Signal Entering Signal Bus
Duplicate Signal in Bus
realized by the subsystem or the custom library block. Port names describe the
input and output interface of subsystems.</p>
      <p>The model smell Vague Name exists in a model if some modeling element
is ill-named. For instance, given a subsystem that de nes an algorithm to check
if the vehicle is currently moving. A name such as calculate signal would be
too general. A possible name would be check if vehicle moving. If a signal is
routed across hierarchy levels via Inport and Outport blocks, these Inport and
Outport blocks should be named after the signal they transport to handle the
signal consistently on all levels it is propagated to. This helps to improve the
readability of the model. If there is a mismatch between the signal name and
the port names, the model is said to contain the model smell Inconsistent Port
Name.</p>
      <p>Partition. The decomposition of functions into subsystems has a huge impact
on the understandability and extensibility, among others, of a model. Typically,
each subsystem should implement a single well-de ned function with regard to
the abstraction level, on which the subsystem is located.</p>
      <p>The model smell Subsystem with Multiple Functions occurs if a subsystem on
the lowest hierarchy level implements multiple functions. For instance, a
subsystem called vehicle moving checks if the vehicle is moving. Inside the subsystem,
there are two model parts. One part checks whether the vehicle velocity signal
is valid or not. The other part uses the result of the former part and check if
the vehicle is currently moving. It can be noticed that the subsystem contains
two well-de ned functions: one checks the validity of the vehicle velocity and one
checks if the vehicle is moving.</p>
      <p>A subsystem hides its content and could hamper the readability if its content
is too simple or is not a well-de ned function. Super uous Subsystem occurs if
there is a subsystem whose content is so simple that the subsystem is super uous
and thus should be resolved, for example if it only contains virtual blocks or
contains an amount of blocks under a certain threshold. Deeply Nested Subsystem
Hierarchy model smell occurs when the subsystem hierarchy has too many levels.
A model with too deep hierarchy can be hard to understand since the logic is
often hidden among many intermediate subsystem layers. Duplicate Model Part
is caused by the existence of identical model parts in di erent places in the
model, which are either created by accident or by actively copying parts of a
model.</p>
      <p>Interface. The interface of a subsystem is visually represented by its inports
and outports. As a result, a subsystem with too many inports or outports can
be di cult to grasp. Such a subsystem with too many inports or outports causes
the model smell Long Port List.</p>
      <p>The statement that the inports and outports of a subsystem de ne the
interface of the subsystem is only valid in the absence of buses. The reason is, if no
buses are used, each inport represents a single incoming signal and each outport
represents a single outgoing signal of the subsystem. However, the use of buses
means that a large number of signals can be transported into the subsystem via
a bus through one single inport. If only a subset of those signals are used within
the subsystem, the input interface becomes less obvious. We de ne the potential
input interface of a subsystem as the set of all elementary signals being
transported into the subsystem, both as elementary signals or in buses. Furthermore,
the signals in the potential input interface, that are used within the subsystem,
make up the e ective input interface of the subsystem.</p>
      <p>The Subsystem Interface Incongruence model smells occurs when the e ective
input interface of a subsystem is not identical to its potential input interface. The
occurrence of this smell decreases the understandability of the model because
it is not obvious which signals are needed by the subsystem, by looking at the
incoming lines of the subsystem. An Inconsistent Interface De nition occurs
when the de nition of input or output interface of subsystems does not follow
a consistent pattern. In particular, at one place, a subsystem receives signals
via buses while at another place a subsystem of comparable size and complexity
receives signals as elementary signals.</p>
      <p>The order of the inports or outports of a subsystem a ects the readability
of the subsystem. In particular, closely related ports should be located close to
each other. For instance, for a subsystem that needs both the x and y coordinate
as input arguments, two inports for x and y coordinate should be placed next to
each other. If a model does not follow this, it is said to have Non-optimal Port
Order model smell.</p>
      <p>Signal ow. This category contains model smells related to signal ow. As a
general rule, the data ow in a Simulink model is from left to right, except when
signals are fedback, for instance, via Unit Delay blocks. As a result, blocks and
subsystems should be typically positioned from left to right according to data
ow. Moreover, the visual ow represented by the graphical lines should re ect
the real data ow happening during the simulation. This is important because
the modeler tends to make assumption about the data ow based on the visual
ow.</p>
      <p>Redundant Signal Paths occurs when the same signal is routed to a subsystem
via more than one path. The existence of a Cyclic Signal Path says that there
is a signal that is an outgoing signal of a subsystem and is rerouted back to
the same subsystem. If the visual ow does not re ect the data ow, Mismatch
Between Visual and data Flow occurs.</p>
      <p>A subsystem contains Independent Local Signal Paths if there exist two or
more paths within a subsystem which do not in uence each other. This represents
a hint that the subsystem includes more than one distinct function.</p>
      <p>The model smell Unused Signal exists when there is a signal that is not
used. A common case of this smell is that a signal selected from a bus by a Bus
Selector block is not used. Pass-through Signal is a signal that is passed through
a subsystem without being used in the subsystem. Hidden Signal Flow occurs
when the signal ow can not be recognized directly based on the graphical lines
of the model. This happens when Goto/From and Data Store Read/Write blocks
are used to propagate signals across system borders.</p>
      <p>Signal Structure. The need for grouping signals into buses arises at the latest
when there are too many lines crossing each other making it hard to follow the
signal connections. In Simulink, the signal hierarchy in a bus corresponds to the
order, in which the signals are grouped into the bus. This corresponds to the
order, in which the signals are shown when the modeler wants to select a signal
in the bus. As a result, the grouping of signals into buses should be well thought
out.</p>
      <p>In some cases, a bus with only a few signals, e.g. one or two, is super uous. A
model with such a bus is said to have a Super uous Bus Signal model smell.
NonOptional Signal Grouping occurs if signals in buses are not grouped optimally.
For example, functionally related signals are not close to each other in a bus.
Unnamed Signal Entering Bus occurs when a signal without a name enters a bus.
Simulink automatically assigns names signal1, signal2 and so forth to unnamed
signals entering a bus. When the modeler later chooses a signal from the bus, it
is di cult to recognize which signals those names represent. It is also possible
to bundle a signal into a sub bus of a bus B that is already contained within the
bus B. This model smell is called Duplicate signal in bus.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Detection and Handling of Model Smells</title>
      <p>To detect the model smells presented in the previous section, a myriad of
different analysis techniques can be applied. Di erent smells may be detected
us</p>
      <sec id="sec-3-1">
        <title>Signal tracing</title>
      </sec>
      <sec id="sec-3-2">
        <title>Manual inspection</title>
        <p>Method Handled smells</p>
        <p>Super uous Subsystem
Metrics LDoenepglyPoNrtesLteisdt Subsystem Hierarchy</p>
        <p>
          Super uous Bus Signal
Duplicate detect. Duplicate model part
ing di erent levels of automation. While certain smells may be detected using
automatic or semi-automatic analyses, certain smells like the Vague name or
Non-optimal signal grouping smell might only be detected by manual model
inspection, because of the expressiveness of the natural language. The complexity
of the needed analyses also ranges from the application of simple metrics on
certain model properties in the case of the Long Port List smell to extensive
NP-hard static analyses of duplicate model structures in the Duplicate Model
Part smell. In addition, a multitude of smells regarding the Signal ow model
property can only be detected using signal tracing algorithms or formal methods
like abstract interpretation in the case of the Dead path smell. After model smells
have been detected by the proposed analyses, they need to be handled
accordingly. In [
          <xref ref-type="bibr" rid="ref13 ref14">14, 13</xref>
          ] we have proposed a catalog of refactoring operations that can
be used to automatically refactor all model smells except the Duplicate Model
Part smell. The detection and refactoring of Duplicate Model Part is described
in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. Model smells are refactored by applying a sequence of transformations
to the a ected model area. A detected Inconsistent Port Name would be
refactored by changing the name of the detected port to the name of the signal that
ows through it. An overview of the methods needed to detect and handle the
proposed model smells is given in Table 1.
        </p>
        <p>
          We have implemented all needed detection and refactoring methods in the
tools artshop [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] and SLRefactor [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Nevertheless other tools/analyses can be
used that can detect and in some cases handle model smells.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] an automatic quality assessment framework is presented which relies
on the calculation of di erent metrics representing quality properties within a
Simulink model. The values calculated by the metrics are aggregated within
a quality model that shows the quality rating of the model with respect to a
given permissible value for each quality metric. Some of the introduced metrics
measure the quality of the signal architecture of the model like the amount of
independent signal paths or the average size of subsystem interfaces.
        </p>
        <p>
          Another framework which assesses and rates the quality of a given model by
pre-de ned or custom rules is the INProVE presented in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. While the focus
of this work lies on the quality assessment process, the authors also identify
a set of standard indicators expressing the quality of the model. This set also
includes metrics that describe quality properties of signal ows within a model,
like isolated model parts, independent signal paths and signals that enter and
leave a subsystem unused (Pass-through connections).
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] ConQAT, a duplicate detection framework for MATLAB/Simulink
models is presented. In the presented approach a Simulink model is rst
transformed into a graph with at hierarchy and then an extended depth- rst search
is applied to identify isomorphic subgraphs in the model.
        </p>
        <p>The metrics and analyses mentioned above can be used to identify a subset
of the proposed model smells, which emphasizes the relevance of the smells
addressed by this paper.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Evaluation</title>
      <p>While it is technically possible to implement all model smell analysis and
refactoring techniques within one tool, we will focus on the evaluation of the model
smell analysis within the tool artshop. As mentioned in the previous section,
the presented model smells can either be detected fully automatically, by
automatic analysis and subsequent review of the results or by manual inspection
of the model. The analyses that can be performed without manually inspecting
the model, have been prototypically realized within artshop by the creation of
user-de ned conformity rules which check the occurrence of model smells within
speci c model elements. These rules are de ned with the Epsilon Validation
language (EMF) and are checked with the Epsilon framework against models that
have been imported into the artshop model repository. The rules are checked at
runtime via an interpreter and produce results that are sound as the rules check
certain properties of the model that indicate a model smell.</p>
      <p>To evaluate the performance of the prototypical implementation and show
the feasibility of the implemented model smell analyses, we performed our model
smell analysis on three industrial models. The tests have been conducted on a
computer equipped with an Intel Core i5-3320M processor and 16 GB RAM.
The model DAS is a model that implements the logic of a driver assistance
system. The model ELS realizes an exterior light system, while the model EMC
realizes the control of the exterior mirrors. The size of the analyzed models range
from about 1000-1600 blocks in the model DAS and ELS to over 20000 blocks
in the EMC model. The results of the analyses are shown in Table 2 where
the number of detected model smells are displayed within each cell. The time
needed to detect individual smells ranges from 300-400 ms within the DAS and
ELS models and 3-4 s within the EMC model in addition to the time that is
required to import the model into artshop (20-30 s for DAS/ELS and 2-3 min
for EMC).</p>
      <p>
        The table shows the number of detected occurrences of a subset of the
presented model smell within each analyzed model. The size of the results marked
as variable depends on an input parameter provided by the user that widens or
restricts the number of results detected by these smells. It can be observed that
certain smells occur frequently within the analyzed models like the Super uous
Subsystem smell while other smells like Cyclic signal path do not occur at all.
In case of the Super uous Subsystem smell, a multitude of this occurrences are
intentional, as some subsystems only contain virtual blocks due to architectural
and structural reasons, for instance due to the use of the IN-/OUTMAP pattern
as described in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The occurrences of the model smell Inconsistent Port Name
sometimes were related to simple spelling di erences, e.g. a port named
'RIndicatorLight' received a signal named 'RindicatorLight', but also included smells
with truly di erent names. The fact that some smells do not occur at all shows
that the model quality of the analyzed models already conform to certain
quality criteria that are required by these smell categories, but does not lessen the
importance of these smells. During the analysis of the results of the implemented
detector, we also found false positives that were detected but do not necessarily
re ect a model smell within the model, as already mentioned for the Super
uous subsystem smell. Another example is the occurrence of the Redundant signal
path smell where a signal entering a subsystem is splitted just right before it
enters the subsystem through two di erent ports. Detecting and handling false
positives is planned for future work and can be realized by further restricting
the scope of speci c model smells on an individual basis and the attribution of
model elements to announce the use of rational design patterns.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>
        The term model smell already has been introduced by the authors of [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] in the
context of models created by the Eclipse Modeling Framework (EMF), where
the code smells listed in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] are adapted to EMF models.
      </p>
      <p>
        An established way to assess the quality of a Simulink model is the use of
pre-de ned model design guidelines as described in the MAAB guidelines [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
Most of these guidelines can be automatically checked by the Matlab Model
Advisor [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] that is included within MATLAB/Simulink. The MAAB guidelines
includes stylistic and architectural constraints regarding the hierarchical
composition and purpose of layers within a Simulink model. Constraints that focus
on the interfaces of model components or signal ow as described in this paper
are not included in the guidelines.
      </p>
      <p>
        Other well known tools that can be used to check user-de ned model
guidelines are MESA [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and MATE [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we propose a catalog of model smells for Simulink models that
serve as hints to potential structural de cits. As opposed to modeling
guidelines such as MAAB guidelines, whose focus is mainly on syntactic guidelines,
the model smells introduced in this paper concentrate on structural and
architectural aspects of a Simulink model, e.g. signal ow, subsystem interfaces and
others. Moreover, we suggest ways of eliminating the model smells by leveraging
refactoring techniques for Simulink from our previous work.</p>
      <p>For evaluation purpose, most of the model smells are formulated in the
Epsilon Validation Language in the tool artshop. We applied the model smell
detection rules to various industrial models and could reliably and automatically
detect violated design principles. Detected model smells can then be
automatically eliminated by our Simulink refactoring tool SLRefactor.</p>
      <p>From numerous discussions with Simulink modelers, we are aware that the
border between modeling guidelines and model smells is not always clear. We
think that the relation between modeling guidelines and model smells in the
context of Simulink is the same as the relation between coding guidelines and
code smells in the context of textual programming. The former addresses a
uniform artifact style during the development process while the latter address
symptoms of structural de cits. Similar to code smells, a model smell rather is a
hint than a mistake. Therefore, if the modeler can justify the existence of certain
model smells, it is totally acceptable to ignore them. Currently, it is not possible
to model such justi cations explicitly with the Simulink modeling language.</p>
      <p>In future work, we plan to further extend and re ne the model smell catalog
by structural model smells and want to discuss the relevance of further
semantical model smells, like possible division by zero or possible under-/over ows. In
addition, we want to suggest additional refactoring operations to handle further
introduced model smells. To reduce the amount of false positives and give
developers a method to justify certain design decisions, we want to introduce a set
of generic attributions that can be considered by the detector to either ignore
the detected smell or change the analyses in certain cases. Since we believe that
automated detection and tool-supported handling of model smells can provide
great bene ts to increase and maintain model quality, we plan to integrate the
detection and handling of model smells into a continuous integration process.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Arendt</surname>
          </string-name>
          , Matthias Burhenne, and Gabriele Taentzer.
          <article-title>De ning and checking model smells: A quality assurance task for models based on the eclipse modeling framework</article-title>
          .
          <source>In 9th edition of the BENEVOL workshop</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Florian</given-names>
            <surname>Deissenboeck</surname>
          </string-name>
          , Benjamin Hummel, and
          <string-name>
            <given-names>Elmar</given-names>
            <surname>Juergens</surname>
          </string-name>
          .
          <article-title>Code clone detection in practice</article-title>
          .
          <source>2010 ACM/IEEE 32nd International Conference on Software Engineering</source>
          ,
          <volume>2</volume>
          :
          <fpage>499</fpage>
          {
          <fpage>500</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Tibor</given-names>
            <surname>Farkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Christian</given-names>
            <surname>Hein</surname>
          </string-name>
          , and Tom Ritter.
          <article-title>Automatic evaluation of modelling rules and design guidelines</article-title>
          .
          <source>Second Workshop "</source>
          From code centric to model
          <source>centric software engineering: Practices, Implications and ROI"</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Martin</given-names>
            <surname>Fowler</surname>
          </string-name>
          .
          <article-title>Refactoring: Improving the Design of Existing Code</article-title>
          . AddisonWesley Longman Publishing Co., Inc., Boston, MA, USA,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Gerlitz</surname>
          </string-name>
          , Stefan Schake, and
          <string-name>
            <given-names>Stefan</given-names>
            <surname>Kowalweski</surname>
          </string-name>
          .
          <article-title>Duplikatserkennung und Refactoring in Matlab/Simulink-Modellen [Duplicate Detection and Refactoring of Matlab/Simulink models]</article-title>
          .
          <source>In 11. Dagstuhl-Workshop MBEES</source>
          <year>2015</year>
          , pages
          <fpage>17</fpage>
          {
          <fpage>27</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] ISO/IEC</article-title>
          . ISO/IEC 25010 -
          <article-title>Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models</article-title>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S</given-names>
            <surname>oren Kemmann</surname>
          </string-name>
          , Thomas Kuhn, and
          <string-name>
            <given-names>Mario</given-names>
            <surname>Trapp</surname>
          </string-name>
          .
          <source>Extensible and automated model-evaluations with INProVE. Lecture Notes in Computer Science</source>
          , pages
          <volume>193</volume>
          {
          <fpage>208</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>The</given-names>
            <surname>Mathworks</surname>
          </string-name>
          .
          <article-title>Matlab model advisor</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>The</given-names>
            <surname>Mathworks. MAAB: Control Algorithm Modeling Guidelines Using</surname>
          </string-name>
          <string-name>
            <surname>MATLAB</surname>
          </string-name>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Rau</surname>
          </string-name>
          .
          <article-title>On model-based development: A pattern for strong interfaces in simulink</article-title>
          .
          <source>Gesellschaft fur Informatik</source>
          ,
          <source>FG</source>
          ,
          <volume>2</volume>
          (
          <issue>1</issue>
          ):
          <fpage>12</fpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Jan</given-names>
            <surname>Scheible</surname>
          </string-name>
          and
          <string-name>
            <given-names>Hartmut</given-names>
            <surname>Pohlheim</surname>
          </string-name>
          .
          <source>Automated model quality rating of embedded systems. In 4. Workshop zur Software-Qualitatsmodellierung und-bewertung (SQMB11)</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Ingo</given-names>
            <surname>Stu</surname>
          </string-name>
          <article-title>rmer, Ingo Kreuz, Wilhelm Schafer, and Andy Schurr. The mate approach: Enhanced simulink R and state ow R model transformation</article-title>
          .
          <source>In Proceedings of MathWorks Automotive Conference</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M. Quang</given-names>
            <surname>Tran</surname>
          </string-name>
          and
          <string-name>
            <given-names>Christian</given-names>
            <surname>Dziobek</surname>
          </string-name>
          .
          <article-title>Ansatz zur Erstellung und Wartung von Simulink-Modellen durch den Einsatz von Transformationen/Refactorings und Generierungsoperationen [Approach to constructing and maintaining Simulink models based on the use of transformation/refactoring and generation operations]</article-title>
          .
          <source>In 09. Dagstuhl-Workshop MBEES</source>
          <year>2013</year>
          , pages
          <fpage>1</fpage>
          {
          <fpage>11</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Quang</given-names>
            <surname>Minh</surname>
          </string-name>
          <string-name>
            <surname>Tran</surname>
          </string-name>
          , Benjamin Wilmes, and
          <string-name>
            <given-names>Christian</given-names>
            <surname>Dziobek</surname>
          </string-name>
          .
          <article-title>Refactoring of simulink diagrams via composition of transformation steps</article-title>
          .
          <source>In ICSEA</source>
          <year>2013</year>
          , The Eighth International Conference on Software Engineering Advances, pages
          <volume>140</volume>
          {
          <fpage>145</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>