<!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>Refactoring in Requirements Engineering: Exploring a methodology for formal verification of safety-critical systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oisín Sheridan</string-name>
          <email>Oisin.Sheridan@mu.ie</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, Maynooth University</institution>
          ,
          <addr-line>Maynooth</addr-line>
          ,
          <country country="IE">Ireland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>In: M. Abbas</institution>
          ,
          <addr-line>F. B. Aydemir, M. Daneva, R. Guizzardi, J. Gulden, A. Herrmann, J. Horkof, M. Oriol Hilari, S. Kopczyńska, P. Mennig, E. Paja, A. Perini, A. Rachmann, K. Schneider, L. Semini, P. Spoletini</addr-line>
          ,
          <institution>A. Vogelsang. Joint Proceedings of REFSQ-2025 Workshops, Doctoral Symposium, Posters &amp; Tools Track, and Education and Training Track.</institution>
          <addr-line>Co-located with REFSQ 2025. Barcelona</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>[Context and motivation] The formal verification of safety-critical software requires formal requirements. Software requirements are often written in natural-language, which then needs to be translated into a formal language for use in verification. [Question/problem] As a requirements set becomes larger and more defined over the course of a requirements engineering project, an ever-increasing amount of work is required to ensure consistency, readability and traceability across the set. Often, dependencies and duplication of information between requirements emerges, which then requires additional work from engineers to update all of the afected requirements when changes need to be made. [Principal ideas/results] We propose that this can be improved by applying refactoring to requirements. Refactoring is a software engineering technique where code is reorganized to improve its internal structure without changing its behavior; in the case of requirements, we can reduce duplication of information and improve readability of the requirements without changing the behavior that the requirements specify. [Contribution] This project aims to provide a working implementation of requirements refactoring in Mu-FRET, a fork of the Formal Requirements Elicitation Tool (FRET) which allows for requirements to be written in a structured natural-language, which is then translated automatically into temporal logic. In addition, we will provide a theory of refactoring that can be generalized to other requirements languages.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Requirements Elicitation</kwd>
        <kwd>Software Verification</kwd>
        <kwd>FRET</kwd>
        <kwd>Refactoring</kwd>
        <kwd>Traceability</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>requirement in FRET, including its fretish text and corresponding Future-Time LTL translation, are
shown in Figure 1.</p>
      <p>The readability of fretish requirements makes it much easier to maintain and expand a requirements
set as a project progresses. However, requirements engineers still face a number of challenges when
managing an industrial-scale specification. As more properties of the system are specified, dependencies
between requirements emerge, which can lead to duplication of information across multiple
requirements and requires additional work to maintain consistency when updates are made. We propose that
this problem can be solved by incorporating refactoring into the requirements engineering process.
Refactoring is the process of improving the structure of software without altering its external-facing
functionality, and we believe that the techniques used in software engineering can be adapted for
requirements engineering. In particular, the aim of this PhD project is to incorporate Refactoring
techniques into a fork of FRET, called Mu-FRET1, for use on fretish requirements.</p>
      <p>
        The idea of refactoring fretish requirements originated from experience using FRET in collaboration
with an industrial partner as part of the VALU3S project [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], where we used FRET to formalise a set
of requirements for an Aircraft Engine Controller [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. After the requirements were formalised, there
were a number of definitions that were repeated numerous times across the set: for example, the phrase
“under sensor faults” in the natural-language requirements was formalised as “if((sensorValue(S)
&gt; nominalValue + R) | (sensorValue(S) &lt; nominalValue - R) | (sensorValue(S) =
null)” and appeared in full in 8 diferent requirements; this made updating this definition dificult, as
any changes needed to be manually propagated across the set to maintain consistency [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. We decided
to explore if this “bad smell” and others could be solved by using refactoring, in the same way one
might use code refactoring to extract a method in software development.
      </p>
      <p>
        We examined existing literature and selected four refactoring techniques that we felt were applicable
to fretish requirements [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. As a proof-of-concept, we implemented one of these techniques, Extract
Requirement, in Mu-FRET and applied it to the Engine Controller requirements. This exploration of
requirements refactoring then expanded into this PhD project, which aims to implement the other
refactoring techniques for fretish requirements and then investigate how refactoring can be applied
in requirements engineering in general.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Proposed solution</title>
      <p>
        As mentioned above, the main focus of this project is the implementation of four refactoring techniques
into Mu-FRET. At the time of writing, three of these techniques have been implemented (Extract
Requirement, Inline Requirement, and Rename Requirement), with development on the fourth (Move
Definition) currently in progress. We have described these refactorings in detail in previous work [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>Extract Requirement moves a definition from one or more “source” requirements into a
newlycreated requirement, which also defines a new variable that captures the meaning of the extracted
“fragment”. This new variable replaces the fragment in the source requirement(s), preserving the
underlying meaning while making the requirements easier to understand and maintain.</p>
      <p>Inline Requirement is the opposite of Extract Requirement, taking one requirement and merging
it into another. The most basic implementation of Inline is as the direct inverse of Extract, operating
on source requirements of the form “if CONDITION System shall satisfy RESPONSE”, replacing
CONDITION with RESPONSE in any selected destination requirements. However, the applicability of
Inline Requirement to requirements of other forms (such as those that include a timing constraint that
may-or-may-not align with that of the destination) is an open question that I intend to explore.</p>
      <p>Rename Requirement changes a requirement’s name and then updates any references to it to
match its new name. FRET already allows a user to rename a requirement, but this existing functionality
does not update the ’Parent Requirement ID’ field of any of the target’s child requirements. This leaves
those child requirements with a broken reference, forcing manual updates across the set. Mu-FRET’s
implementation of the Rename refactoring solves this problem, maintaining consistency.</p>
      <sec id="sec-2-1">
        <title>1Mu-FRET repository: https://github.com/valu3s-mu/mu-fret</title>
        <p>In addition, robust renaming is very important when considered alongside Extract Requirement,
which creates a variable which directly corresponds to the extracted definition. It is important that the
names of this requirement and variable stay aligned so that the connection is maintained, and thus
Rename Requirement is able to rename both an extracted requirement and it’s corresponding variable
in a single user-facing action, with the variable name being updated in every requirement where that
variable is used. This ability to rename a variable and have it propagate across multiple requirements is
not present in the original build of FRET.</p>
        <p>Move Definition takes part of one requirement and moves it to another, focusing a requirement on
a single responsibility. It difers from Extract Requirement and Inline Requirement in that it does not
alter the number of requirements in the set, it only moves definitions between requirements.</p>
        <p>Each of these refactoring techniques will be integrated with formal checks that the behaviour of the
requirements before the refactoring is the same as after the refactoring, by checking equivalence of
the temporal logic formulae using the NuSMV model checker. The exact nature of this check varies
depending on the refactoring in question; for example, Extract Requirement checks that the updated
source requirement combined with the newly-extracted requirement matches the original version of
the source requirement before refactoring, and the extraction is only performed if this check succeeds.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Related Work</title>
      <p>
        This work is primarily based on the framework for refactoring natural-language requirements outlined
by Ramos et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The authors propose five refactorings that are applicable to textual requirements; we
determined that four of these could be applied to fretish (“Extract Alternative Flows” is not considered
applicable as fretish does not have a notion of branching requirements). These refactoring techniques
are adapted from software refactoring, as laid out by Fowler et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        As far as we are aware, there is little existing work on applying refactoring to formal or semi-formal
requirements, and there is essentially no tool-support for it. Similar work has been conducted by Xuan
et al. on using refactoring to improve test suites for analysis of source code [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Yu et al. have proposed
10 refactoring rules for episode models [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. There is also significant existing literature on the application
of refactoring to system modeling languages, such as Feature Models [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], UML [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ][
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and ADORA
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. However, these languages are based on diagrams rather than textual descriptions or logics, and as
such the results are not directly transferrable.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Methodology</title>
      <p>This project seeks to answer the following research questions:
• RQ1: To what extent are software refactorings applicable to functional requirements?
• RQ2: Under precisely what conditions are requirement refactoring techniques applicable? What
elements of the structure of a requirement might allow or prevent the use of one or more
refactoring techniques?
• RQ3: How can refactoring techniques developed for fretish requirements be generalised for
other requirements languages and formalisms?</p>
      <p>The first step in answering these questions will be to complete an intitial implementation of the four
chosen refactoring methods. By developing support for refactoring in a requirements engineering tool,
we will be able to test how it can be applied to real sets of requirements. Also, the process of developing
the software forces us to codify exactly how the refactorings behave; this behaviour can be updated as
the theory behind the refactoring process matures, but it is valuable to have a concrete implementation
to build from.</p>
      <p>
        Once development on the four refactorings is complete, we aim to evaluate the applicability of each
on a number of case studies. This will address Research Question 1. These case studies include the
aforementioned Aircraft Engine Controller requirements from VALU3S, a set of requirements for a
Mechanical Lung Ventilator developed for the ABZ 2024 case study [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], and the requirements for
a tilt-rotor drone in development for the ProVANT Emergentia project. Other case studies from the
literature are being considered, but we feel that these case studies in particular are valuable because we
have access to the complete elicitation process and artifacts. We believe that refactoring is most useful
in the early and middle stages of a project, when the requirements are still a work-in-progress, and
thus many completed case studies are too “clean” to gain a marked benefit from applying refactoring.
This is worth investigating further, however.
      </p>
      <p>In addition, we will examine the efect that refactoring has on the underlying meaning of the
requirements, represented by the LTL formulae. At present, the Mu-FRET refactorings are focused
primarily on improving the structure of the fretish text of the requirements, with the LTL translations
used for checking consistency. However, we want to investigate if a requirement’s logical representation
can be used to determine whether a given refactoring can be applied. In doing so, we hope to arrive at
a set of well-defined criteria for each refactoring that describes exactly when that technique can be
used, and when some part of the requirement prohibits its use, addressing Research Question 2. Also,
any results gathered from focusing on the LTL specification should be more easily generalisable to
requirements languages other than fretish, as temporal logics are commonly used in requirements
engineering and formal methods. This aligns with Research Question 3.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Next Steps &amp; Future Challenges</title>
      <p>The implementation of refactoring in Mu-FRET is nearing completion, with two tasks remaining:
implement Move Definition, and incorporate NuSMV checks into Inline, Rename, and Move. These
tasks are the current highest priority for this project.</p>
      <p>Although we have described the Move Definition refactoring in previous work, the exact details of
the implementation are not entirely clear. Exactly what parts of a requirement can be moved, and which
other requirements are valid options for the movement, will need to be decided during the development
process. We have also considered a specialised form of Move Definition called Pull-Up Definition ,
which would move a definition from a child requirement into its parent, representing the idea that the
definition is common to all of that requirement’s children. Implementing this in Mu-FRET is being
considered.</p>
      <p>Implementing model checking with NuSMV into the remaining refactorings should not pose a
significant challenge, as the capability has already been demonstrated with Extract Requirement.
The dificulty will be in deciding exactly what properties should be checked, and ensuring that the
implementation is robust when multiple diferent refactorings are performed on the requirements set
over the course of a project.</p>
      <p>After all four refactorings have been fully implemented, we will investigate the limitations of the
implementation and the conditions that are required to perform refactoring. In essence, our goal is
to find the “weakest precondition” for each refactoring, and thus define the widest possible set of
requirements that can be refactored. We suspect that the most challenging refactoring to define will be
Inline Requirement, because it is often performed with the intention of deleting the source requirement
after the inlining has been performed. This means that we need to consider all of the information that
a requirement contains across all of its fields, to ensure that none of that information is lost in the
refactoring process. Expanding the application of Inline Requirement to arbitrary requirements of a
suitable structure, rather than being limited to those generated by Extract Requirement, represents a
notable challenge for this project but also a significant result once complete.</p>
      <p>After this, as mentioned above, we will investigate how the refactorings change not only the fretish
text, but also the equivalent Temporal Logic semantics as well. We will need to examine the temporal
logic semantics generated by FRET to find any consistent efects of refactoring the fretish text. Also,
there are questions on how exactly our extracted requirements are templated, which arose from the
temporal logic translation. We will need to examine what the optimal template is for specifying
the extracted definitions, and this requires a deeper understanding of the relationships between the
requirements and how refactoring may afect them.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>We are underway with an investigation into the application of refactoring on functional requirements.
Four refactoring techniques are being implemented in the Mu-FRET tool; three are already implemented
and available for use, while the fourth is set to be developed in the near future. The usefulness of
these refactorings will be evaluated on at least three case studies, with others from the literature being
considered. We will use the temporal logic semantics for the requirements generated by Mu-FRET to
draw conclusions about requirements refactoring that can be applied more broadly to other requirements
languages.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <sec id="sec-7-1">
        <title>This work is supported by the Maynooth University John &amp; Pat Hume Fellowship.</title>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Declaration on Generative AI</title>
      <sec id="sec-8-1">
        <title>The author(s) have not employed any Generative AI tools.</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Basagiannis</surname>
          </string-name>
          , G. Giantamidis,
          <string-name>
            <given-names>H.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Ferrari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Jahic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kanak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. L.</given-names>
            <surname>Esnaola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Orani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Pereira</surname>
          </string-name>
          , et al.,
          <source>The VALU3S ECSEL Project: Verification and Validation of Automated Systems Safety and Security, in: Euromicro Conference on Digital System Design, IEEE</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>352</fpage>
          -
          <lpage>359</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Farrell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Luckcuck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Sheridan</surname>
          </string-name>
          , R. Monahan, FRETting About Requirements:
          <article-title>Formalised Requirements for an Aircraft Engine Controller</article-title>
          , in: Requirements Engineering: Foundation for Software Quality, Springer,
          <year>2022</year>
          , pp.
          <fpage>96</fpage>
          -
          <lpage>111</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -98464-9\_9.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Farrell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Luckcuck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Sheridan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Monahan</surname>
          </string-name>
          ,
          <article-title>Towards refactoring fretish requirements</article-title>
          ,
          <source>in: NASA Formal Methods Symposium</source>
          , Springer,
          <year>2022</year>
          , pp.
          <fpage>272</fpage>
          -
          <lpage>279</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Luckcuck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Farrell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Sheridan</surname>
          </string-name>
          ,
          <article-title>Why just fret when you can refactor? retuning fretish requirements</article-title>
          ,
          <year>2022</year>
          . URL: https://arxiv.org/abs/2202.05816. doi:
          <volume>10</volume>
          .48550/ARXIV.2202.05816.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ramos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Piveta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Castro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. a.</given-names>
            <surname>Araújo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Moreira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Guerreiro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. S.</given-names>
            <surname>Pimenta</surname>
          </string-name>
          , R. T. Price,
          <article-title>Improving the Quality of Requirements with Refactoring</article-title>
          , in: Anais do
          <string-name>
            <given-names>VI</given-names>
            <surname>Simpósio Brasileiro de Qualidade de Software</surname>
          </string-name>
          (SBQS
          <year>2007</year>
          ), Sociedade Brasileira de Computação - SBC, Brasil,
          <year>2007</year>
          , pp.
          <fpage>141</fpage>
          -
          <lpage>155</lpage>
          . doi:
          <volume>10</volume>
          .5753/sbqs.
          <year>2007</year>
          .
          <volume>15573</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Beck</surname>
          </string-name>
          ,
          <article-title>Refactoring: improving the design of existing code, The Addison-Wesley object technology series</article-title>
          , Addison-Wesley,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Xuan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Cornu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Martinez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Baudry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Seinturier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Monperrus</surname>
          </string-name>
          , B-refactoring:
          <article-title>Automatic test code refactoring to improve dynamic analysis</article-title>
          ,
          <source>Information and Software Technology</source>
          <volume>76</volume>
          (
          <year>2016</year>
          )
          <fpage>65</fpage>
          -
          <lpage>80</lpage>
          . URL: https://www.sciencedirect.com/science/article/pii/S0950584916300714. doi:https: //doi.org/10.1016/j.infsof.
          <year>2016</year>
          .
          <volume>04</volume>
          .016.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>W.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Butler</surname>
          </string-name>
          ,
          <article-title>Refactoring use case models on episodes</article-title>
          ,
          <source>in: Proceedings. 19th International Conference on Automated Software Engineering</source>
          ,
          <year>2004</year>
          .,
          <year>2004</year>
          , pp.
          <fpage>328</fpage>
          -
          <lpage>335</lpage>
          . doi:
          <volume>10</volume>
          .1109/ASE.
          <year>2004</year>
          .
          <volume>1342757</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Tanhaei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Habibi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.-H.</given-names>
            <surname>Mirian-Hosseinabadi</surname>
          </string-name>
          ,
          <article-title>Automating feature model refactoring: A model transformation approach</article-title>
          ,
          <source>Information and Software Technology</source>
          <volume>80</volume>
          (
          <year>2016</year>
          )
          <fpage>138</fpage>
          -
          <lpage>157</lpage>
          . URL: https://www.sciencedirect.com/science/article/pii/S0950584916301422. doi:https://doi.org/ 10.1016/j.infsof.
          <year>2016</year>
          .
          <volume>08</volume>
          .011.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Misbhauddin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Alshayeb</surname>
          </string-name>
          ,
          <article-title>Uml model refactoring: a systematic literature review</article-title>
          ,
          <source>Empirical Software Engineering</source>
          <volume>20</volume>
          (
          <year>2013</year>
          )
          <fpage>206</fpage>
          -
          <lpage>251</lpage>
          . URL: http://dx.doi.org/10.1007/s10664-013-9283-7. doi:
          <volume>10</volume>
          . 1007/s10664-013-9283-7.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Van Der Straeten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Jonckers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          ,
          <article-title>A formal approach to model refactoring and model refinement</article-title>
          ,
          <source>Software &amp; Systems Modeling</source>
          <volume>6</volume>
          (
          <year>2006</year>
          )
          <fpage>139</fpage>
          -
          <lpage>162</lpage>
          . URL: http://dx.doi.org/10.1007/ s10270-006-0025-9. doi:
          <volume>10</volume>
          .1007/s10270-006-0025-9.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R.</given-names>
            <surname>Stoiber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Fricker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Jehle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Glinz</surname>
          </string-name>
          ,
          <article-title>Feature unweaving: Refactoring software requirements specifications into software product lines</article-title>
          ,
          <source>in: 2010 18th IEEE International Requirements Engineering Conference</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>403</fpage>
          -
          <lpage>404</lpage>
          . doi:
          <volume>10</volume>
          .1109/RE.
          <year>2010</year>
          .
          <volume>59</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Farrell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Luckcuck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Monahan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Sheridan</surname>
          </string-name>
          ,
          <article-title>Fretting and formal modelling: A mechanical lung ventilator</article-title>
          ,
          <source>in: International Conference on Rigorous State Based Methods</source>
          ,
          <year>2024</year>
          , pp.
          <fpage>360</fpage>
          -
          <lpage>383</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>