<!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>
      <journal-title-group>
        <journal-title>Poster &amp; Tools Track, Birmingham, UK</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Approach for Requirements Specification</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Maria Naumcheva</string-name>
          <email>m.naumcheva@innopolis.university</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Horkof, A. Perini, A. Susi, M. Daneva, A. Herrmann, K. Schneider</institution>
          ,
          <addr-line>P. Mennig, F. Dalpiaz, D. Dell'Anna, S. Kopczyńska, L</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>In: J. Fischbach, N. Condori-Fernández</institution>
          ,
          <addr-line>J. Doerr, M. Ruiz, J.-P. Steghöfer, L. Pasquale, A. Zisman, R. Guizzardi, J</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Innopolis University</institution>
          ,
          <addr-line>1 Universitetskaya St., Innopolis, Tatarstan republic, 420500, Russian Federation</addr-line>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>University of Toulouse / IRIT</institution>
          ,
          <addr-line>Cr Rose Dieng-Kuntz, 31400 Toulouse</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2022</year>
      </pub-date>
      <volume>2</volume>
      <fpage>1</fpage>
      <lpage>03</lpage>
      <abstract>
        <p>Although the software engineering community knows well the deficiencies of natural language documentation, it remains the predominant way of software requirements specification. The desired properties of software requirements that are hard to be reached with natural language specifications are unambiguity and traceability. This issue has been solved through several approaches, yet still most software projects rely on natural language requirements. This research aims at capitalizing on recent developments of programming language-based approaches to requirements with the purpose of devising a unified approach enriched with tools and methodology. This approach is based on the object-oriented technology as follows: the development process is seamless from the requirements specification to implementation and verification. An object-oriented language, Eifel, is used as a requirements notation. It provides means of system modeling without using specific notation, which often becomes a barrier in formal methods adoption. The specification, design, implementation and tests are developed incrementally using the mechanisms of inheritance and refinement and relying on the notion of contracts.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <sec id="sec-1-1">
        <title>1.1. Problem</title>
        <p>
          According to the IEEE international standard [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], a good software requirements specification
should be correct, unambiguous, complete, consistent, ranked for importance and/or stability,
verifiable, modifiable, and traceable. This research focuses on unambiguity and traceability of
the requirements.
        </p>
        <p>
          Ambiguity refers to possible diferent interpretations of the same requirement. Since natural
language-based requirements specifications are a dominant practice in a software industry
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], eliminating this property is dificult to achieve because natural language (NL) is an innate
source of ambiguity [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Naming the Pain in Requirements Engineering (NaPiRE) initiative [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]
has also demonstrated statistical significance of the issue of ”Underspecified requirements that
are too abstract and allow for various interpretations”
        </p>
        <p>
          Researchers have addressed the NL-inherent ambiguity through diferent methods [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. These
methods suggest introducing certain level of formality: to constrain the natural language or to
utilize formal methods and notations. Using formal methods implies the need to additionally
train requirements engineers, as well as creates communication barriers between requirements
engineers and software developers. As a consequence, such methods are not widely adopted
since only 6% of respondents of the 2015 industrial survey [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] claimed formulating formal
properties.
        </p>
        <p>Requirements traceability is the ability to follow both the sources and consequences of
requirements. Requirements traceability ensures that the impact of changes in requirements
specification is easily localizable in the code, which significantly decreases the time and costs of
assessing the impact of changes and implementing the changes. Traceability relations can also
be used to assist verifying that the system meets its requirements. Maintaining requirements
traceability links is often perceived as not a cost-eficient process, and many projects ignore this
practice completely. At the same time, the projects with missing traceability links are vulnerable
under change and evolution as it can be tremendously hard to identify all the system elements
where the changes should be introduced.</p>
        <p>This research develops a methodology of object-oriented approach for requirements
specification. This approach relies on the modeling power of object-oriented programming
language. Requirements are captured by contracts, which ensures their unambiguity. Applying
object-oriented approach simplifies creating and maintaining traceability links as programming
language artifacts can have direct links in IDE.</p>
      </sec>
      <sec id="sec-1-2">
        <title>1.2. Related Work</title>
        <p>
          Applying object-oriented concepts to requirements analysis and design attracted much attention
in 1990s. The works of Rambaugh et al [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], Jacobson [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], and Booch [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] had much in common and
were unified into Object-Oriented Analysis and Design (OOAD) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] as a unified methodology,
and Unified Modeling Language (UML) [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] as a unified notation and a set of graphical diagrams.
OOAD suggests applying OO techniques to the initial requirements, produced at the earlier
stages of the development process. This method relies on a set of diagrams to capture the
software system details and to be able to communicate them to the project stakeholders.
        </p>
        <p>
          Scenarios are considered to be the main technique for object-oriented requirements elicitation
and specification. In addition to use cases, use cases 2.0 [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], use case stories, and user stories
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] were introduced. In the Use Case 2.0, Extreme Programming and Rational Unified Process
approaches scenarios also play the key role in managing software development.
        </p>
        <p>
          OOAD approach to requirements involves several notations: natural language, UML, and
requirements specification language (such as OCL). This implies the need of transformations
between notations and analysis models. Although some methods for automated conversion
have been proposed [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], the process is prone to errors that can be dificult to catch due
to switching from one notation to the other. In contrast, the suggested approach relies on
seamless software development and provides means for formal properties modeling using the
programming language as a notation.
        </p>
      </sec>
      <sec id="sec-1-3">
        <title>1.3. Relevance</title>
        <p>
          Requirements engineering remains a pain point: 45% of respondents are not satisfied with
achievement of requirements engineering goals [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The suggested approach addresses
important requirements problems (ambiguity, traceability), while being easy-to-grasp for requirements
engineers as it relies on programming language mechanisms.
        </p>
        <p>
          According to [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], practitioners agree with the following statements:
• The standardisation of requirements engineering improves the overall process quality
• Ofering standardised document templates and tool support benefits the communication
• Ofering standardised document templates increases the quality of the work products
Therefore, an approach that addresses current issues in requirements specification is beneficial
to software development community in case if this approach is supported with methodology,
templates and tools.
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Proposed Solution</title>
      <p>Object-oriented paradigm has been successful in software development yet its capabilities are
underused for requirements elicitation, analysis and design. The research presented in this
paper applies object-oriented approach to requirements. In this approach, object-oriented
programming language is used to capture requirements with contracts, such as pre- and
postconditions, as well as class invariants. Software development is seamless as the unified notation,
i.e. the programming language, is used throughout the entire development process. As a result,
static verification can be applied to verify the correctness of the implementation against the
requirements.</p>
      <sec id="sec-2-1">
        <title>2.1. Object-oriented requirements</title>
        <p>In the proposed approach, requirements become software: they are written in a programming
language, and are stored in a version control system. The subsections 2.1.1 to 2.1.6 demonstrate
the application of object-oriented concepts to requirements and what are the benefits of applying
the same approach throughout all stages of development process.</p>
        <sec id="sec-2-1-1">
          <title>2.1.1. Objects and classes</title>
          <p>In object-oriented approach requirements are organised around physical or conceptual objects,
rather than around procedures. The information about problem domain object types is carried
in classes, the main units of abstraction. The features of the requirements classes are deferred
and describe the operations, applicable to the objects of this type. The semantics of these
operations is captured using preconditions, postconditions, and class invariants.</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>2.1.2. Abstraction</title>
          <p>
            Abstraction refers to describing only relevant properties and dismissing irrelevant information.
Abstraction is crucial in eliciting requirements since a requirements engineer must identify
the important aspects of the system and its environments and dismiss the rest [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ].
Moreover, requirements specification and system design must avoid unnecessary implementation
constraints.
          </p>
          <p>In object-oriented approach the abstraction is induced by the following mechanisms:
• Defining the objects relevant to the system under development by assigning relevant
features
• Defining the properties of objects and applicable operations using contracts.</p>
          <p>The outcomes of requirements elicitation are often not abstract enough, and the task of a
requirements engineer is to infer abstract requirements from concrete statements. For example,
the outcome of an elicitation process can be a use case. The requirements engineer can extract
from the use case abstract requirements that specify logical constraints on possible sequences
of operations. These logical constraints can be captured by contracts and, thus, be enforced
during system verification and validation.</p>
        </sec>
        <sec id="sec-2-1-3">
          <title>2.1.3. Inheritance</title>
          <p>Inheritance allows a class to incorporate the features of another class in addition to its own
features. Inheritance can be viewed as a classification mechanism which is valuable in
understanding the problem’s domain.</p>
          <p>Inheritance mechanism is indispensable for requirements specification. At the requirements
phase the system requirements are captured in deferred classes. The efective classes, that will
carry the system implementation, inherit from the deferred classes and must comply with their
contracts. The induced inheritance graph captures traceability links.</p>
        </sec>
        <sec id="sec-2-1-4">
          <title>2.1.4. Object-oriented Requirements notation</title>
          <p>If the object-oriented approach is applied throughout the entire software development process,
a programming language (the same one that will be used further for system implementation)
becomes a notation for requirements. Unlike formal methods and UML, it does not require
additional training for software engineers. Moreover, tools can support the automated translation
of programming language specifications to a natural language. Related diagrams can also be
derived automatically.</p>
        </sec>
        <sec id="sec-2-1-5">
          <title>2.1.5. Seamless development process</title>
          <p>Using programming language as a requirements notation facilitates the seamless development
process. The specification, design, implementation and tests are developed incrementally using
the mechanisms of inheritance and refinement. All software artifacts can be directly linked to
each other in an IDE.</p>
        </sec>
        <sec id="sec-2-1-6">
          <title>2.1.6. Contracts</title>
          <p>According to Design by Contract, contracts are interface specifications for software classes and
routines. Preconditions and postconditions are assertions associated with individual routines.
Class invariants express the properties of all instances of a class.</p>
          <p>Preconditions express the properties that must hold when calling the routine. Postconditions
express the properties that must hold on the routine’s exit. Class invariants apply to all contracts
of a class.</p>
          <p>Contracts serve as the mechanism of capturing requirements. Preconditions express the
properties that must hold before invoking a feature. Postconditions express properties that must
hold after invoking a feature. Class invariants express properties, which must be preserved by
all features.</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Requirements specification methodology</title>
        <p>Requirements specification methodology is the key contribution of this research. It will address
the following issues:
• How to specify environment properties, and how to turn them into requirements?
• What is the process of object-oriented requirements specification?
• What tool functionality should support the devised methodology?</p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Novelty</title>
        <p>
          In model-driven development an intermediate modelling language is used for constructing
the model of a system that can be further automatically translated to source code. Event-B
[
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], Petri-nets [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], and UML [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] can serve as intermediate languages. However, formal
methods are not widely adopted in industry [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Besides, in these approaches it is not possible
to backtrack whether source code changes violate system’s formal specification. Our research
will address this limitation.
        </p>
        <p>
          Applying seamless object-oriented approach to requirements was suggested by B. Meyer [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]
and further developed by B. Meyer [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], A. Naumchev [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] and F. Galinier [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. Nevertheless,
the complete methodology of producing requirements specification has not been proposed,
which makes the seamless approach unusable. Applying existing approaches to a case study
revealed that they require methodological guidance to be applied to entire projects (rather than
being used for specifying some particular properties).
        </p>
        <p>The novelty of this research is in providing a methodology of producing object-oriented
requirements and supporting this methodology with a tool prototype. As the approach diverges
from the current practice, its usability plays vital role in its adoption.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Research Method</title>
      <p>We aim to answer the following research questions:
• What is the proper role of natural language in requirements specification?
• Do object-oriented programming languages have the expressive power to model functional
and non-functional requirements?
• What are the means of ensuring requirements unambiguity in OO approach?
• What are the means of ensuring requirements traceability in OO approach?
• What is the role of scenarios in the requirements specification methodology?
• What is the functionality of a tool that should support the OO approach?
This research consists of three stages.</p>
      <p>Initially a study of the state of the art is conducted as well as an investigation of the approaches
to requirements specification that address the issue of requirements ambiguity and a state of
practice of their application in industry. Further a study of the methodology of commonly used
approaches to requirements and their tool support is carried out.</p>
      <p>The next stage is developing a methodology of applying object-oriented approach to
requirements. We use a real-world Roborace case study to develop a methodology in the process of
producing its requirements specification. Producing requirements specification, together with
the output of the state-of-practice research on tools supporting requirements specification, will
result in proposing functionality of a tool supporting the approach. The initial tool functionality
will be provided early during methodology development. Further the tool functionality will
be refined in the process of Roborace case study exploration. The methodology will also be
supported with templates, publicly available on GitHub.</p>
      <p>The final stage is validating the proposed methodology. For this purpose we will apply it to a
new case study and demonstrate the soundness of the generated specification.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Progress</title>
      <p>
        The initial phase of this research involved studying the literature and exploring state of the art
and state of practice. Based on this study, we concluded that requirements methods addressing
the issue of requirements ambiguity assume introducing certain level of formality whereas
software development community remains reluctant to introducing formal methods. Only 40%
of software development projects perform traceability management between requirements and
other software artifacts [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>The next step was to explore a case study which we use as a testbed for the methodology under
development. The initial requirements specification for Roborace case study was produced.
Based on this specification, we suggested an approach that unifies scenarios and object-oriented
requirements specification.</p>
      <p>Currently we are working on the methodology of deriving requirements from environment
properties and specifying the requirements in an object-oriented way. Further we will formulate
the methodology and tool functionality, which will be followed with the validation study.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>In this paper we have presented a research that aims to provide a methodology of producing
unambiguous software requirements. The methodology relies on an object-oriented approach to
requirements. In this approach a programming language is used as the notation for requirements
formalization. The resulting software development process is seamless from requirements to
implementation, verification and validation, which ensures traceability between requirements
and other software artifacts and facilitates system verification and validation.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>I. C. S. S. E. S.</given-names>
            <surname>Committee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.-S. S.</given-names>
            <surname>Board</surname>
          </string-name>
          ,
          <source>IEEE Recommended Practice for Software Requirements Specifications</source>
          , volume
          <volume>830</volume>
          , IEEE,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Fricker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Grau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zwingli</surname>
          </string-name>
          , Requirements engineering: best practice, in: Requirements Engineering for Digital Health, Springer,
          <year>2015</year>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>46</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Meyer</surname>
          </string-name>
          , On formalism in specifications,
          <source>IEEE Software 2</source>
          (
          <year>1985</year>
          )
          <fpage>6</fpage>
          -
          <lpage>26</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Fernández</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wagner</surname>
          </string-name>
          ,
          <article-title>Naming the pain in requirements engineering: A design for a global family of surveys and first results from Germany</article-title>
          ,
          <source>Information and Software Technology</source>
          <volume>57</volume>
          (
          <year>2015</year>
          )
          <fpage>616</fpage>
          -
          <lpage>643</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>J.-M. Bruel</surname>
          </string-name>
          , et al.,
          <article-title>The role of formalism in system requirements</article-title>
          ,
          <source>ACM Computing Surveys (CSUR) 54</source>
          (
          <year>2021</year>
          )
          <fpage>1</fpage>
          -
          <lpage>36</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Blaha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Premerlani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Eddy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. E.</given-names>
            <surname>Lorensen</surname>
          </string-name>
          , et al.,
          <article-title>Object-oriented modeling and design</article-title>
          , volume
          <volume>199</volume>
          ,
          <string-name>
            <surname>Prentice-hall Englewood</surname>
            <given-names>Clifs</given-names>
          </string-name>
          , NJ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>I.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Christerson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Jonsson</surname>
          </string-name>
          , G. Övergaard,
          <article-title>Object-oriented software engineering - a use case driven approach</article-title>
          , Addison-Wesley, Boston MA,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          , I. Jacobson, G. Booch,
          <source>The Unified Modeling Language Reference Manual, Object Technology Series</source>
          , 2 ed.,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          , Boston, MA,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          , et al.,
          <article-title>Object-oriented analysis and design with applications</article-title>
          ,
          <source>ACM SIGSOFT software engineering notes 33</source>
          (
          <year>2008</year>
          )
          <fpage>29</fpage>
          -
          <lpage>29</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>O. OMG</surname>
          </string-name>
          ,
          <source>Unified modeling language version 2</source>
          .5.1, Object Management Group (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>I.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          , I. Spence,
          <string-name>
            <given-names>K.</given-names>
            <surname>Bittner</surname>
          </string-name>
          ,
          <article-title>USE-CASE 2.0 The Guide to Succeeding with Use Cases, Ivar Jacobson International SA</article-title>
          .,
          <string-name>
            <surname>Alexandria</surname>
          </string-name>
          , Virginia,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>K.</given-names>
            <surname>Beck</surname>
          </string-name>
          ,
          <article-title>Extreme programming explained: embrace change, addison-wesley professional</article-title>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Yue</surname>
          </string-name>
          , et al.,
          <article-title>atoucan: an automated framework to derive uml analysis models from use case models</article-title>
          ,
          <source>ACM Trans. on Soft. Eng. and Methodology (TOSEM) 24</source>
          (
          <year>2015</year>
          )
          <fpage>1</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kramer</surname>
          </string-name>
          ,
          <article-title>Is abstraction the key to computing?</article-title>
          ,
          <source>Communications of the ACM</source>
          <volume>50</volume>
          (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>V.</given-names>
            <surname>Rivera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Catano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Wahls</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Rueda</surname>
          </string-name>
          ,
          <article-title>Code generation for event-b</article-title>
          ,
          <source>International Journal on Software Tools for Technology Transfer</source>
          <volume>19</volume>
          (
          <year>2017</year>
          )
          <fpage>31</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Philippi</surname>
          </string-name>
          ,
          <article-title>Automatic code generation from high-level petri-nets for model driven systems engineering</article-title>
          ,
          <source>Journal of Systems and Software</source>
          <volume>79</volume>
          (
          <year>2006</year>
          )
          <fpage>1444</fpage>
          -
          <lpage>1455</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>T.</given-names>
            <surname>Yue</surname>
          </string-name>
          , et al.,
          <article-title>Facilitating the transition from use case models to analysis models: Approach and experiments</article-title>
          ,
          <source>ACM Trans. on Soft. Eng. and Methodology (TOSEM) 22</source>
          (
          <year>2013</year>
          )
          <fpage>1</fpage>
          -
          <lpage>38</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>B.</given-names>
            <surname>Meyer</surname>
          </string-name>
          ,
          <article-title>Object-oriented software construction</article-title>
          , volume
          <volume>2</volume>
          , Prentice hall Englewood Clifs,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>B.</given-names>
            <surname>Meyer</surname>
          </string-name>
          , Multirequirements, in: Modelling and
          <article-title>Quality in Requirements Engineering (Martin Glintz Festscrhift)</article-title>
          , Verl.-Haus Monsenstein u. Vannerdat,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Naumchev</surname>
          </string-name>
          , Seamless
          <string-name>
            <surname>Object-Oriented</surname>
            <given-names>Requirements</given-names>
          </string-name>
          , in: 2019 International MultiConference on Eng., Computer and Inform.
          <source>Sciences (SIBIRCON)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>743</fpage>
          -
          <lpage>748</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>F.</given-names>
            <surname>Galinier</surname>
          </string-name>
          ,
          <article-title>Seamless development of complex systems: a multirequirements approach</article-title>
          ,
          <source>Ph.D. thesis</source>
          , Université de Toulouse, Université Toulouse III-Paul Sabatier,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>