<!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>Towards a Theory about Continuous Requirements Engineering for Information Systems</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Groningen, Faculty of Economics and Business</institution>
          <addr-line>PO Box 800, 9700 AV Groningen</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <abstract>
        <p>The problem we address in this paper is the question how to come from initial user wishes to a running system in a straightforward, transparent, modular, and agile manner. In particular, we want to develop a sound underlying theory that grounds engineering approaches that tackle this broad problem (the complete development path for functional requirements, from initial user wishes up to a running system). We develop a theory that crosses the boundaries of several (sub)disciplines, e.g., requirements engineering, machine theory, and (database) systems development.</p>
      </abstract>
      <kwd-group>
        <kwd>user story</kwd>
        <kwd>use case</kwd>
        <kwd>system sequence diagram</kwd>
        <kwd>information machine</kwd>
        <kwd>implementation</kwd>
        <kwd>ANSI-SPARC three-level architecture</kwd>
        <kwd>development path</kwd>
        <kwd>incremental</kwd>
        <kwd>continuous</kwd>
        <kwd>requirements engineering</kwd>
        <kwd>information system</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Overview</title>
      <p>Section 1 recalls the background notions user story (US), use case (UC) and system
sequence diagram (SSD). Section 2 introduces the notion of an information machine
(IM): An IM can receive an input and will then produce an output and might change its
state. Section 3 depicts a transparent development path for functional requirements,
from USs via UCs and SSDs to an IM. Section 4 discusses some aspects of incremental
requirements engineering for information systems and then Section 5 treats
continuous requirements engineering for information systems.</p>
      <p>An information machine is a blueprint, and can have many different
implementations, as Section 6 points out. That section also shows the relation with the
fundamental ANSI-SPARC three-level architecture, but now extended from
databases to information machines in general: USs, UCs and SSDs belong to the
external level, an IM belongs to the conceptual level, and implementations of an IM
belong to the internal level.
We first recall some background notions (but in the words as we want to look at them).</p>
      <p>
        Informally speaking, a user story (US) is a ‘wish’ of a (future) user which the
system should be able to fulfil (see [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] for instance), e.g., the wish ‘Remove a student
with a given student number’ of a university employee.
      </p>
      <p>Copyright © 2018 for this paper by its authors. Copying permitted for private and
academic purposes.</p>
      <p>
        A use case (UC) is a text in natural language that describes the steps of a typical
usage of the system (see [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] for instance). For the user story ‘Remove a student with a
given student number’ the use case could be as follows:
1. A university employee (the ‘user’) asks the system to remove a student with a
given number
2. The system removes the student info (if the student was known to the system)
3. The system informs the employee that the system did it (or that the student
number was unknown)
      </p>
      <p>Initially, use cases can be produced by (future) users of the system, domain experts
or (other) staff members, or officials from the organization for which the system has to
be built. Initially written use cases might need to be improved (sharpened/enhanced/
detailed/completed) in order to clarify what the system should do exactly (and when).
E.g., our sample use case could more clearly distinguish between the two cases whether
or not the student was known to the system. A (business) analyst might help to produce
sharpened versions of initially written use cases.</p>
      <p>
        A system sequence diagram (SSD) of a use case is a ‘diagram’ that depicts the
interaction between the primary actor (user), the system, and its supporting actors (if
any), including the messages between them (see Chapter 10 of [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] for instance). An
SSD is a kind of stylised UC that makes the prospective inputs, state changes, and
outputs more explicit. Although SSDs can be drawn in much fancier ways (e.g., see
[34]), we will only draw their bare essence. For example, for (the refined version of) the
use case just given, the (stylized) SSD could look as follows:
o
o
      </p>
      <p>User → System: RemoveStudent(&lt;number&gt;);
if the student number is known to the system
then System → System: remove the student info;</p>
      <p>System → User: “Done”
else System → User: “Unknown student number”
We distinguish 3 types of basic interaction steps (each present in the example above):
User → System: Elucidates the inputs the system can expect (input step)
System → User: Elucidates the outputs the system should produce (output step)
System → System: Elucidates the transitions the system should make (transition step)</p>
    </sec>
    <sec id="sec-2">
      <title>2 Formal Modelling: Information Machines</title>
      <p>
        For our next development step, we need the notion of an information machine (IM):
An information machine is a 5-tuple (I, O, S, G, T) consisting of:
o a set I (of inputs)
o a set O (of outputs)
o a set S (of states)
o a function G: S x I → O, mapping state-input pairs to the corresponding output
o a function T: S x I → S, mapping state-input pairs to the corresponding next state
The notation f: X → Y used above, indicates that f is a function with X as its domain
and its range being a subset of Y. The notion of information machine is equivalent to
the notion of data machine in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. It is a – not necessarily finite – Mealy machine without
a special start state (see [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]).
      </p>
      <p>G is called the output function of the IM and T the transition function of the IM.
We could equivalently have chosen for one (combined) function: F: I → (S → S x O)
In that case, each input leads to a function assigning a ‘new’ state and an output to an
‘old’ state.</p>
      <p>If the system also communicates with supporting actors, say other systems, then we
still distinguish three types of basic interaction steps, but with (primary) ‘User’
generalized to ‘Actor’, where an actor can be any other system. Expressed in terms of
an information machine:
Actor → System: Elucidates the minimally needed set I of inputs of the IM
System → Actor: Elucidates the minimally needed set O of outputs and
the output function G of the IM
System → System: Elucidates the minimally needed set S of states and
the transition function T of the IM
For instance, our earlier ‘Remove student’ example would lead to inputs of the form
RemoveStudent(&lt;number&gt;) and to the outputs “Unknown student number” and
”Done”. Suppose that each state s  S contains as a component a student table STUD
with an attribute NUMBER, then the condition that a student number n is known to the
system translates to n  { t(NUMBER) │ t  s(STUD) }.</p>
      <p>When n  { t(NUMBER) │ t  s(STUD) } and the input i = RemoveStudent(n),
then the output G(s, i) will be “Done” and the student table in the new state T(s, i) will
be { t  s(STUD) │ t(NUMBER)  n}. In the other cases output G(s, i) will be
“Unknown student number” and the new state T(s, i) will be s, i.e. stay the same.</p>
    </sec>
    <sec id="sec-3">
      <title>3 From User Stories via Use Cases and SSDs to an IM</title>
      <p>Starting from the USs and the UCs via their corresponding SSDs we can define an IM.
In a general scheme (where the arrows indicate what is input for what):
US1</p>
      <p>↓
UC1</p>
      <p>↓
SSD1
↘</p>
      <p>US2 . . . . USn
↓ . . . . ↓
UC2 . . . . UCn</p>
      <p>↓ . . . . ↓
SSD2 . . . . SSDn
↓ . . . . ↙
Information Machine</p>
      <p>User stories: Short texts in natural language, each describing a
‘wish’ of a (future) user which the system should be able to fulfil
Use cases: Texts (several sentences) in natural language, each UC
describing for one US the steps in a typical usage of the system
System sequence diagrams: Diagrams, each depicting for 1 UC
the interaction between user, system and its supporting actors,
and the messages between them
Information Machine: Formal/Conceptual model of the system,
including the messages between the system and its environment
Information machines in practice are really sophisticated, i.e., supporting a lot of use
cases, resulting in very large input sets, output sets, state sets, and with complicated
output functions and transition functions. Moreover, in practice such machines are often
under continuous development (‘under construction’), just as a city for instance.</p>
      <p>Instead of defining and developing such a sophisticated machine in one go (‘big
bang’), including ‘all’ functionality that is needed – as might be suggested in Section 3
– since a few decades such machines are often defined and developed incrementally,
i.e., starting with a simple, small version and extending/adapting it in several small steps
into larger, more sophisticated versions.</p>
      <p>Figure 2 indicates how an initial version of an IM might develop into newer
versions. Note that, e.g. due to changing requirements, existing US/UC/SSD-triples
might be adapted. (The “ + “ in US1+ etc. indicate adaptions of earlier versions.) So, we
see the addition of new US/UC/SSD-triples but also the adaption of earlier versions.</p>
      <sec id="sec-3-1">
        <title>User Stories</title>
      </sec>
      <sec id="sec-3-2">
        <title>Use Cases</title>
      </sec>
      <sec id="sec-3-3">
        <title>SSDs</title>
      </sec>
      <sec id="sec-3-4">
        <title>Information Machines US1 US2 ↓ ↓</title>
        <p>UC1 UC2</p>
        <p>↓ ↓
SSD1 SSD2
↘ ↙
IMv1
→
⁞
⁞
⁞
⁞
⁞
⁞
⁞
→</p>
        <p>US3</p>
        <p>↓
UC3</p>
        <p>↓
SSD3</p>
        <p>↓
IMv2
⁞
⁞
⁞
⁞
⁞
⁞
⁞
→</p>
        <p>US1+ US3+</p>
        <p>↓ ↓
UC1+ UC3+</p>
        <p>↓ ↓
SSD1+ SSD3+</p>
        <p>↘ ↙
→ IMv3 →
⁞
⁞
⁞
⁞
⁞
⁞
⁞
→</p>
        <p>US4</p>
        <p>↓
UC4</p>
        <p>↓
SSD4</p>
        <p>↓
IMv4
We now treat incremental development of functional requirements for an information
system more generally. Figure 2 can be generalized easily: Via a few USs, UCs and
their corresponding SSDs (and the previous version of the IM) one can define an initial
(resp. next) version of the IM:</p>
      </sec>
      <sec id="sec-3-5">
        <title>Use Cases</title>
      </sec>
      <sec id="sec-3-6">
        <title>SSDs</title>
      </sec>
      <sec id="sec-3-7">
        <title>Information</title>
        <p>Machines</p>
        <p>US … US</p>
        <p>↓ … ↓
UC … UC</p>
        <p>↓ … ↓
SSD … SSD
↘ … ↙
IMv1 →
⁞
⁞
⁞
⁞
⁞
⁞
→</p>
        <p>US … US</p>
        <p>↓ … ↓
UC … UC</p>
        <p>↓ … ↓
SSD … SSD
↘ … ↙</p>
        <p>IMv2 →
→
⁞
⁞
⁞
⁞
⁞
⁞
→</p>
        <p>US … US</p>
        <p>↓ … ↓
UC … UC</p>
        <p>↓ … ↓
SSD … SSD
↘ … ↙</p>
        <p>
          IMv3 →
→
⁞
⁞
⁞
⁞
⁞
⁞
→
…
Now we are heading towards continuous development of functional requirements. We
note that such an incremental development of functional requirements can go on
‘forever’. In a sense, such a development process is cyclic and can even be (almost)
continuous during the lifecycle of an information system. We use the word continuous
here when individual (or ‘discrete’) versions can hardly (or not) be distinguished
anymore. Since we concentrate on development of functional requirements only, we are
not talking about continuous delivery or continuous deployment, for example, but about
continuous requirements engineering; see for instance [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] for those distinctions.
        </p>
        <p>
          So, all in all, Figure 5 might be more appropriate:
One cycle might contain only a few USs, UCs and their corresponding SSDs, or maybe
even only one US, UC and SSD. Or, maybe even less than one full UC: In a more agile
development process of functional requirements a simple ‘core’ scenario (or ‘main
success scenario’) of a - maybe yet unclear - ‘full’ UC might be delivered first, followed
by ‘fuller’ versions in subsequent cycles (see [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]). So, existing US/UC/SSD-triples
might be adapted as well. Short cycles especially hold in case of daily/nightly builds
(see [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]) and continuous integration (see [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]).
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>6 Realizations/Implementations of an Information Machine</title>
      <p>Information machines can be considered as blueprints. An IM can have many different
realizations/ implementations. For instance, an information machine can be realized by
a human servant (say a clerk), by an ‘SQL servant’ (i.e., a computer with SQL software),
or by a ‘Java servant’ (i.e., a computer with Java software):
information machine</p>
      <p>
        ↙ or ↓ or ↘
human Java SQL
servant servant servant
If we combine Figure 6 with the previous ones then we obtain the fundamental
ANSISPARC three-level architecture, see e.g. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], but now extended from databases to
information machines in general:
      </p>
      <p>US . . . . . . . US</p>
      <p>↓ . . . . . . . ↓
UC . . . . . . . UC</p>
      <p>↓ . . . . . . . ↓
SSD . . . . . . . SSD</p>
      <p>↘ . . . . . . . ↙
information machine</p>
      <p>↙ or ↓ or ↘
human Java SQL
servant servant servant</p>
      <sec id="sec-4-1">
        <title>External Level</title>
      </sec>
      <sec id="sec-4-2">
        <title>Conceptual Level</title>
      </sec>
      <sec id="sec-4-3">
        <title>Internal Level</title>
        <p>
          Relational SQL-based systems, for instance, are very suitable for incremental
development, and since long they are used in this way. For a realization of user stories
by means of an SQL-system for instance, we can use (stored) procedures. E.g., for our
sample user story ‘Remove a student with a given student number’ we can look back at
the corresponding SSD in Section 1 and the details worked out in the last paragraph of
the section on information machines (Section 2). In a naturally way this will lead to the
SQL-procedure below. (Parameter names are preceded by an “@” in SQL.)
We are inclined to call the realization/implementation of an information machine an
information system: According to the literature an information system has a Boundary,
Users, Processors, Storage, Inputs, Outputs and Communication networks (see [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]).
The USs, UCs, SSDs, and the IM already shed light on the Boundary, Users, Inputs,
and Outputs of the system under development. During continuous (and incremental)
development of the functional requirements, these components will grow continuously.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Retrospection</title>
      <p>We addressed the question how to come from initial user wishes to a running system in
a straightforward, transparent, modular, and agile manner. In particular, we started to
develop a sound underlying theory that grounds engineering approaches that tackle this
broad problem (the complete development path for functional requirements from initial
user wishes up to a running system). The theory we developed crosses the boundaries
of several (sub)disciplines, e.g., requirements engineering, machine theory, and
(database) systems development. We couldn’t trace such an underlying theory that
covers this broad problem completely (the whole development path for functional
requirements, from initial user wishes up to a running system).</p>
      <p>We placed the notions user story, use case, and system sequence diagram in line,
and we linked the SSDs directly to the notion of an information machine: The set of
SSDs of an application actually determine the inputs, the outputs, and the output
function of the IM. By means of an example we showed how a user story directly leads
to a set of inputs for an IM and, when the IM is implemented in SQL for instance, how
such an input set in turn directly corresponds to a (stored) procedure. It indicates the
modularity of the resulting system when developed in this way.</p>
      <p>All in all, we started to develop a theory on Continuous requirements engineering
for information systems, grounding some engineering approaches and crossing the
boundaries of several (sub)disciplines, e.g., requirements engineering, machine theory,
(database) systems development.</p>
      <p>After discussing some aspects of incremental requirements engineering for ISs, we
treated continuous requirements engineering for ISs. We also pointed out that an IM
is a blueprint, and can have completely different implementations. We depicted a
straightforward, transparent, and agile development path for functional requirements,
from USs via UCs and SSDs to an IM, and then to an actual realization.</p>
      <p>We depicted the relation with the fundamental ANSI-SPARC three-level
architecture, but extended from databases to information machines in general: USs,
UCs and SSDs belong to the external level, an IM belongs to the conceptual level, and
implementations of an IM belong to the internal level.</p>
    </sec>
    <sec id="sec-6">
      <title>Future Work</title>
      <p>We want to extend our theory with additional, extended, and/or more complicated
issues, such as sequences of inputs and corresponding outputs, complete induction for
IMs (as a means to prove state properties of IMs), additional guidelines for developing
use case texts, UC patterns, more complicated UCs and SSDs, further notions and
terminology related to IMs, generalization and formalization of the CRUD-functions,
dynamic constraints (i.e., constraints on state transitions), and interacting systems.
Acknowledgements. We thank the reviewers for their critical questions, which clearly
helped to sharpen the paper.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>G.G.</surname>
          </string-name>
          <article-title>Lucassen: Understanding User Stories</article-title>
          .
          <source>PhD thesis</source>
          , Utrecht University (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>I. Jacobson</surname>
          </string-name>
          et al:
          <article-title>Use Case 2.0: The Guide to Succeeding with Use Cases</article-title>
          . Ivar Jacobson Int. (
          <year>2011</year>
          ) or https://en.wikipedia.org/wiki/Use_case
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Larman: Applying UML and patterns</article-title>
          .
          <source>Addison Wesley Professional</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>4. https://en.wikipedia.org/wiki/System_sequence_diagram</mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>5. F.T.A.M.</surname>
          </string-name>
          <article-title>Pieper: Data machines and interfaces</article-title>
          .
          <source>PhD thesis</source>
          , TU Eindhoven (
          <year>1989</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>G.H.</given-names>
            <surname>Mealy</surname>
          </string-name>
          :
          <article-title>A Method for Synthesizing Sequential Circuits</article-title>
          .
          <source>Bell System Technical Journal</source>
          ,
          <fpage>1045</fpage>
          -
          <lpage>1079</lpage>
          (
          <year>1955</year>
          ) or https://en.wikipedia.org/wiki/Mealy_machine
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>J.</given-names>
            <surname>Martin</surname>
          </string-name>
          <article-title>: Managing the Data-base Environment</article-title>
          . Prentice Hall (
          <year>1983</year>
          ) or https://en.wikipedia.org/wiki/Create,_read,_
          <source>update_and_delete</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. P. Forbrig: Does Continuous Requirements Engineering need Continuous Software Engineering?
          <source>REFSQ Workshops</source>
          <year>2017</year>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>1796</volume>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>9. https://en.wikipedia.org/wiki/Daily_build</mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. G. Booch:
          <article-title>Object-oriented analysis and design with applications</article-title>
          .
          <source>Addison Wesley</source>
          (
          <year>1998</year>
          ) or https://en.wikipedia.org/wiki/Continuous_integration
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. ANSI/X3/SPARC Study Group on
          <source>DBMS: Interim Report. ACM SIGMOD bulletin</source>
          , vol.
          <volume>7</volume>
          .
          <issue>2</issue>
          (
          <issue>1975</issue>
          ) or https://en.wikipedia.org/wiki/ANSI-SPARC_Architecture
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>L.</given-names>
            <surname>Jessup</surname>
          </string-name>
          and J.
          <source>Valacich: Information Systems Today. Pearson</source>
          (
          <year>2008</year>
          ) or https://en.wikipedia.org/wiki/Information_system
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>