<!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>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Groningen</institution>
          ,
          <addr-line>PO Box 800, 9700 AV Groningen</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <fpage>15</fpage>
      <lpage>20</lpage>
      <abstract>
        <p>Agility in Information Systems Engineering should not be limited to the software design &amp; implementation phase. Agility should already start early during requirements analysis and customer validation. The objective of this position paper is to sketch how to integrate requirements engineering with agile software development, a.k.a. Agile RE. We sketch our approach to support the agility-oriented development of the functional requirements for an information system and to describe our ongoing research on the Agil-ISE topic. Our main message: Align and improve the development path, not only the individual development steps.</p>
      </abstract>
      <kwd-group>
        <kwd>1 User Wish</kwd>
        <kwd>User Story</kwd>
        <kwd>Main Success Scenario</kwd>
        <kwd>Alternative Scenarios</kwd>
        <kwd>Use Case</kwd>
        <kwd>System Sequence Description</kwd>
        <kwd>Natural Language Generation</kwd>
        <kwd>Software Procedures</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <sec id="sec-1-1">
        <title>For instance:</title>
        <p>textual ⟶
graphical ⟶
⟶   
⤐ ↴
 
   </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Our approach</title>
      <p>During validation it might turn out that the result wasn’t okay yet. In that case, we have to go back,
most likely to the MSS or the ASs (as indicated in Figure 6). So, our development approach is iterative,
i.e., improving ‘the same piece’ through successive refinements/adaptions. A ‘piece’ could be only one
functional requirement / use case, or even only one scenario within a use case.</p>
      <p>The results of a Requirements Analysis phase for a system essentially consist of a description of the
dynamics, describing the relevant processes (i.e., what the system must be able to do), and a description
of the statics, describing the relevant data structures (i.e., what the system must know). We specify the
dynamics in the form of textual System Sequence Descriptions (tSSDs). The statics are often given in
the form of a Conceptual Data Model. Together, the statics and the dynamics constitute a complete
conceptual ‘blue print’ of the system to be developed, as summarized in Table 1:</p>
      <sec id="sec-2-1">
        <title>For the dynamic aspects we developed:</title>
        <p>• a syntax for our textual SSDs [1]
• a formal, declarative semantics for those textual SSDs [2]
• a mapping of those textual SSDs to Natural Language [3]
• a mapping of those textual SSDs to graphical SSDs [3]</p>
        <p>The mappings of a textual SSD to Natural Language and to a graphical SSD can be used to validate
the textual SSD (resulting from a Requirements Analysis phase) with the user community.</p>
      </sec>
      <sec id="sec-2-2">
        <title>For the static aspects we developed:</title>
        <p>• a mapping of conceptual data models to Natural Language [4]
• a mapping of conceptual data models to SQL [5]</p>
        <p>The mapping of a Conceptual Data Model to Natural Language can be used to validate the
Conceptual Data Model (resulting from Requirements Analysis) with the user community. The mapping
to SQL gives (a first version of) an implementation design.</p>
        <p>Figure 3 positions and links our ‘development products’ schematically (with existing components
in white and our ‘development products’ in yellow):</p>
        <sec id="sec-2-2-1">
          <title>Dynamics</title>
          <p>textual SSDs</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>Statics</title>
          <p>It is worthwhile to sketch a complete example of a development path for a concrete functional
requirement, showing the artefacts produced along the development path. Figure 4 contains such an
example.</p>
          <p>eUW
pUW
US
MSS
AS*
UC
tSSD
SW-procedure(s)</p>
          <p>Register a student
Register a student with a given name, address, country, birth date, …
As an administrator, I want to Register a student [ because ….. ]
1. The user asks the system to &lt;pUW&gt; (Register a student with …)
2. The system fulfils &lt;pUW&gt; (Register a student with …)
3. The system sends result to the user (e.g., registered data including the generated student nr.)
AS1: If (s)he is a foreigner then …
AS2: If (s)he was a student before then …
AS3: …
⁞
MSS + AS1 + AS2 + AS3 + …
(But what if the foreigner was a student before?)</p>
          <p>User  System: &lt;pUW&gt; ;
if student is a foreigner
then ….. (even if the foreigner was a student before, as the customer told us)
else if (s)he was not a student before
then System  System: generate new student number ;</p>
          <p>System  System: fulfil &lt;pUW, with new student number&gt;
else …..</p>
          <p>end
end ;</p>
          <p>System  User: result (e.g., registered data including generated student number)
E.g., a stored procedure in SQL
@output is declared as a return parameter here
(Let’s suppose that student number is declared as an AUTO-INCREMENT primary key field)
CREATE PROCEDURE RegisterStudent @n VARCHAR(50), @a VARCHAR, @c VARCHAR(20),
@bd DATE, ...., @output VARCHAR OUTPUT
AS
BEGIN</p>
          <p>IF @c &lt;&gt; ‘NL’
THEN .....</p>
          <p>ELSE IF .....</p>
          <p>THEN BEGIN INSERT INTO Student(name, address, country, ...)</p>
          <p>VALUES(@n, @a, @c, @bd, ...)</p>
          <p>SELECT @output = ‘Done. New student nr. is ’+ &lt; . . . &gt;
END</p>
          <p>END</p>
          <p>ELSE .....</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>Note that the resulting procedure follows the structure of the textual SSD.</title>
        <p>Figure 4 also illustrates the traceability virtues of our aligned approach: The original user wish
(Register a student) forms a ‘trace’ all the way from that user wish down to the software procedure
(RegisterStudent). Since textual SSDs can also be named in our syntax, the textual SSD produced
during the development could be named RegisterStudent as well. All in all, the traces arise during and
as part of the development, not produced as a (ceremonial) duty afterwards, as is typically the case [6].</p>
        <p>In Figure 5 we show the graphical SSD generated from our textual SSD and the generated NL-text
next to it, but both with all scenarios integrated now. For the generation of the graphical SSD we used
the drawing generation tool Plantuml (see https://plantuml.com/sequence-diagram, and our appendix
for the code). For a complex example we refer to [7].</p>
        <p>The User asks the System to &lt;pUW&gt;.</p>
        <p>If student is a foreigner
then …..
else if (s)he was not a student before
then the System does generate new student number.</p>
        <p>The System does fulfil &lt;pUW&gt;
else …..</p>
        <p>end
end.</p>
        <p>The System sends result to User</p>
      </sec>
      <sec id="sec-2-4">
        <title>All this is worked out in detail in the forthcoming book [8].</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. An Agile Method for Information Systems Engineering</title>
      <p>Now we are ready to sketch an agile method for information systems engineering (Agil-ISE).</p>
      <p>When a new user wish pops up, then you can ‘walk the line’ we sketched, i.e., follow the aligned
development path, completely from initial user wish all down to implementation (say, in Java or SQL).</p>
      <sec id="sec-3-1">
        <title>The development path for a single functional requirement also includes validation. We can write it out as a business process, an agile ISE-business process. In other words, this is about business process alignment and ISE-business agility. All in all, it brings us to the following agile method for information systems engineering (Agil-ISE):</title>
        <p>eUW
pUW
US
US</p>
        <sec id="sec-3-1-1">
          <title>An agile method for information systems engineering (Agil-ISE)</title>
          <p>for the development of a functional requirement</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>An elementary User Wish comes in</title>
      </sec>
      <sec id="sec-3-3">
        <title>Which parameters should it have?</title>
      </sec>
      <sec id="sec-3-4">
        <title>Which benefit(s) does it have? (Mention at least one)</title>
      </sec>
      <sec id="sec-3-5">
        <title>Which actor(s)/role(s)?</title>
      </sec>
      <sec id="sec-3-6">
        <title>MSS Write out the Main Success Scenario</title>
        <p>tSSD Convert it to a textual SSD</p>
      </sec>
      <sec id="sec-3-7">
        <title>NL-text Generate the corresponding NL-text</title>
        <p>gSSD Generate the corresponding graphical SSD (if desirable)</p>
      </sec>
      <sec id="sec-3-8">
        <title>Validate Let the customer validate the generated NL-text and/or gSSD</title>
      </sec>
      <sec id="sec-3-9">
        <title>SW-procedures Convert the (possibly adapted) tSSD to software procedure(s)</title>
      </sec>
      <sec id="sec-3-10">
        <title>For each individual Alternative Scenario there is an additional integration step:</title>
      </sec>
      <sec id="sec-3-11">
        <title>AS Write out the Alternative Scenario</title>
        <p>tSSD Convert it to a (local) textual SSD
MSS ⊕ AS* Integrate it into the already existing textual SSD</p>
      </sec>
      <sec id="sec-3-12">
        <title>NL-text Generate the corresponding NL-text</title>
        <p>gSSD Generate the corresponding graphical SSD (if desirable)</p>
      </sec>
      <sec id="sec-3-13">
        <title>Validate Let the customer validate the generated NL-text and/or gSSD SW-procedures Convert the (possibly adapted) tSSD to (adapted) software procedure(s)</title>
      </sec>
      <sec id="sec-3-14">
        <title>Note that each development cycle results in one or more actual software procedures.</title>
        <p>Until now we discussed the development of an individual functional requirement (FR). Developing
several FRs can be done incrementally, i.e., developing (and delivering) the system ‘piece by piece’.
And if there are several development teams to develop the FRs, an individual FR should preferably be
handled within one team. Figure 6 illustrates these aspects. This way of working makes the approach
well scalable.</p>
        <p>Team 1</p>
      </sec>
      <sec id="sec-3-15">
        <title>Our approach is worked out in more detail in [8]</title>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Future work / Research agenda</title>
      <p>Currently we are working on a mapping of those textual SSDs to SQL (see the dotted downward arrow
in Figure 2). Our planned future research is to elevate our theory to meta-level in order to be able to
generate all this from a central repository (so, automation in agile ISE).</p>
    </sec>
    <sec id="sec-5">
      <title>5. References</title>
      <p>E.O. de Brock: From Business Modeling to Software Design. In B. Shishkov (ed.): Proceedings</p>
      <sec id="sec-5-1">
        <title>BMSD (Business Modeling and Software Design), LNBIP 391, pp. 103–122 (2020)</title>
        <p>
          E.O. de Brock: Declarative Semantics of Actions and Instructions. In B. Shishkov (ed.):
Proceedings BMSD (Business Modeling and Software Design), LNBIP 391, pp. 297–308 (2020)
E.O. de Brock: On System Sequence Descriptions. In M. Sabetzadeh et al (eds.): Jo
          <xref ref-type="bibr" rid="ref2">int Proc. of
REFSQ-2020</xref>
          Workshops, Doctoral Symposium, Live Studies Track, and Poster Track (2020)
The Plantuml-code used for generating the graphical SSD has a close resemblance to the original tSSD:
User -&gt; System: &lt;pUW&gt;
group if [student is a foreigner]
        </p>
        <p>rnote over User, System #white: …..
else else
group if [(s)he was not a student before]</p>
        <p>System -&gt; System: generate new student number</p>
        <p>System -&gt; System: fulfil &lt;pUW&gt;
else else</p>
        <p>rnote over User, System #white: …..</p>
        <p>end
end
System -&gt; User: result</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>E.O. de Brock</surname>
            and
            <given-names>C.</given-names>
          </string-name>
          <article-title>Suurmond: NLG4RE: How NL Generation Can Support Validation in RE</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>In J</surname>
          </string-name>
          . Fischbach et al (eds.):
          <source>Joint Proceedings of REFSQ-2022 Workshops</source>
          , Doctoral Symposium, and Poster &amp; Tools
          <string-name>
            <surname>Track (2022) E.O. de Brock</surname>
          </string-name>
          :
          <article-title>Foundations of Semantic Databases</article-title>
          . Prentice
          <string-name>
            <surname>Hall (1995) R. Kasauli</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Knauss</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Horkoff</surname>
          </string-name>
          et al:
          <article-title>Requirements Engineering Challenges and Practices in LargeScale Agile System Development</article-title>
          .
          <source>Journal of Systems and Software</source>
          , vol.
          <volume>172</volume>
          (
          <year>2021</year>
          ) http://dx.doi.org/10.1016/j.jss.
          <year>2020</year>
          .110851 E.O. de Brock:
          <article-title>Converting a non-trivial Use Case into an SSD: An exercise</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <source>SOM Research Report 2018011</source>
          , University of Groningen (
          <year>2018</year>
          ) E.O. de Brock:
          <article-title>Developing Information Systems Accurately - A Wholistic Approach</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          Springer books (
          <year>2022</year>
          )
          <article-title>6</article-title>
          . Appendix:
          <article-title>Plantuml-code used to generate the graphical SSD</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>