<!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>
        <contrib contrib-type="author">
          <string-name>Ian O'Neill</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Electronics, Electrical Engineering and Computer Science The Queen's University of Belfast Belfast</institution>
          ,
          <addr-line>BT7 1NN, N.</addr-line>
          <country country="IE">Ireland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>- In this paper I argue that student software developers should be concerned not just with tersely expressed requirements ('user stories'), but with more involved 'use cases'. By encouraging developers to consider system behavior in some detail, the use-case approach lays the foundations for a coherent analysis of the object-based components that realize those behaviors. Though not objects in themselves, use cases encourage an object-oriented mindset. I consider some of the pitfalls that students must avoid when they are working with use cases, and propose an automated tutorial to help tackle some recurring difficulties.</p>
      </abstract>
      <kwd-group>
        <kwd>use cases</kwd>
        <kwd>UML</kwd>
        <kwd>user stories</kwd>
        <kwd>agile</kwd>
        <kwd>educational software</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>In this paper, I examine some common problems associated
with use cases in the classroom, while reminding educators of
the advantages of including use cases in the software
engineering (SE) process. I draw on my work teaching SE to
groups of 200+ second-year students on undergraduate
computing courses that last three to five years. For seasoned
educators, some of my comments may simply confirm their
own experiences. Others will find reminders of difficulties to
avoid, and may be encouraged to adopt on-line tutorials, like
the one outlined here, as a means of reinforcing key points.
Sometimes the challenge of use cases is in the UML notation.
Sometimes it involves the very meaning of the term ‘use case’.
I begin with the latter.</p>
    </sec>
    <sec id="sec-2">
      <title>II. WHY USE CASES (STILL)?</title>
      <p>– AND HOW THEY DIFFER FROM USER STORIES</p>
      <p>
        Booch, Rumbaugh and Jacobson offer a definition that
every student developer on a use case driven project should
learn by heart: “A use case is a description of a set of
sequences of actions, including variants, that a system performs
to yield an observable result of value to an actor” [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. A
common problem among student developers is the tendency to
reduce the use case to a single button click or even an
onscreen feature: the resulting use case diagram can resemble a
decision diagram, where each use case is a step in a sequence,
rather than a sequence in its own right. One likely source of
confusion is the similarity (not least in the name!) between use
cases on the one hand and, on the other, the user stories
favored by agile methodologies, ‘Agile’ has gained a
prominence that it did not have when Jacobson’s influential
text on use case driven software engineering [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] first appeared
25 years ago, so that now undergraduate students may learn
about user stories before use cases. Tersely expressed user
stories conceal different degrees of complexity. At one end of
the scale are epics (e.g. “As a user, I can back up my entire
hard drive[, so that...]” [3]) that must be decomposed into
smaller, more workable user stories before coding begins. At
the other extreme, the user story can indeed represent a
‘singleclick’ operation (“As an estimator, I want to see the item we’re
estimating, so that I know what I’m giving an estimate for.”
[4]).
      </p>
      <p>
        In his ACM webinar Agile Methods: The Good, the Hype
and the Ugly [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], drawing on his book that covers many of the
same themes [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Bertrand Meyer succinctly identifies some
fundamental problems associated with face-value
implementation of user stories: their lack of abstraction draws
the developer into providing a solution to the story ‘as is’,
without considering the many variants that customers – other
perhaps than the story’s originator – are likely to require in
their own particular circumstances, whether now or in the
future; user stories may also, as separate elements in a product
backlog, lull the developer into seeing every project as
comprising only ‘additive complexity’ that can be built up
largely in discrete layers (Meyer’s ‘lasagne’ metaphor), as
opposed to the all-too-frequent ‘multiplicative complexity’ (his
‘linguine’ metaphor), where an attempt to change a single piece
of behavior is likely to affect many existing behaviors, like
tugging on one strand in a tangle of pasta!
      </p>
      <p>While they are not a cure-all for the problem of
requirements representation, an important advantage of use
cases, as part of an object-oriented (OO) development process,
is that they split a development problem into substantial,
wellconsidered ‘chunks’ of behavior, entailing an analysis of both
main and alternative flows of actor-system interactions. The
use case approach encourages the developer to work in an
‘object-friendly’ way: analyzing the written description of the
flows in a use case helps the developer identify suites of
collaborating objects that realize the behavior the customer
needs, under typical conditions and when exceptions occur.</p>
      <p>Moreover, use cases bring into focus the dependencies
between different sets of system behaviors, dependencies that
are likely to color the eventual system architecture. The
written descriptions of the use cases – those sets of sequences
of actions, with their references to other extending or included
sets – are a more substantial record of required behavior than
the simple diagrammatic notation that shows use cases in
context. But even that simple notation, with its connected use
case ellipses and stick-figure actors, has value in assisting
interested parties understand, in broad brush strokes, how one
set of behaviors relates to, and potentially impacts on, other
sets of behaviors; it also shows at a glance who (or what) might
be expected to make use of those behaviors. The written
descriptions put detail on the individual behaviors to be
developed; the very accessible graphical notation stimulates
and aids discussion of how the system should behave as a
whole.</p>
      <p>
        As incorporated into the UML [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], the use case based
approach to software development already had much to
commend it. However, reacting to more recent developments
in the software industry, Jacobson has also proposed an
accommodation between use cases and agile’s user stories: in
his Use-Case 2.0 approach [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], use cases are divided into
use case slices that correspond to one or more stories (similar
to the user stories of Scrum, etc.).
      </p>
      <p>Use-Case 2.0 makes a well-argued case for the
complementarity of use cases and the stories that form the basis
of the dialogue between developers and stakeholders.
Likewise, student developers just have to understand, and use
to their advantage, the differences between the techniques of
agile and the conventions of the UML.</p>
    </sec>
    <sec id="sec-3">
      <title>III. GETTING USE CASE DIAGRAMS RIGHT</title>
      <p>
        The UML offers the student some flexibility in the way he
or she describes a flow of events within a use case [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] (e.g.
bulleted descriptions of normal and alternative flows, pre- and
post-conditions, identification of extension points), but it
specifically defines the diagrammatic notation for representing
relationships between the use cases. The intention is that
colleagues and clients, or students and teachers, should be able
to interpret the diagram quickly but accurately. Accuracy of
interpretation requires that the three relationships be used
carefully and consistently (definitions of &lt;&lt;extend&gt;&gt; and
&lt;&lt;include&gt;&gt; especially have been a recurring subject of debate
– e.g. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]):
      </p>
      <p>1) Generalization, represented by an open-headed arrow
with a solid-line tail. In this relationship the more general use
case is at the arrowhead, while the more specialized use case
is at the tail (M and J are specializations of H in Figure 1:
where H is allowed, M or J can be used). Using the correct
arrow, and positioning the correct use cases at the head and
tail, are important details for the student to get right.</p>
      <p>
        2) &lt;&lt;include&gt;&gt;. According to Booch, Rumbaugh and
Jacobson [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], “an include relationship between use cases
means that the base use case explicitly incorporates the
behavior of another use case at a location specified in the base.
The included use case never stands alone, but is only
instantiated as part of some larger base that includes it.” This
still leaves a degree of ambiguity, for it is not made explicit
whether the ‘location specified in the base’ must be in the
main flow of the base use case or if it may be in an alternative
flow. Often trainers give their students less room for maneuver
in the use of &lt;&lt;include&gt;&gt;. For example, in its blog,
Requirements Inc. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] maintains “A includes B […] – A
cannot produce success outcome without running B”. See also
Dennis, Wixom and Tegarden’s [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] association of
&lt;&lt;include&gt;&gt; with a use case’s normal flow. In explaining the
&lt;&lt;include&gt;&gt; relationship to my students, I have favored the
more prescriptive approach, so that from the include
relationship between L and K shown in Figure 1, it is
understood that Use Case L, if it executes normally, always
includes Use Case K in its main (or normal) flow. This makes
it easier to distinguish &lt;&lt;include&gt;&gt; from &lt;&lt;extend&gt;&gt; which
follows.
      </p>
      <p>
        3) Unlike &lt;&lt;include&gt;&gt;, then, &lt;&lt;extend&gt;&gt; represents
optional or conditional behavior: “The base use case may
stand alone, but under certain conditions its behavior may be
extended by the behavior of another use case” [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. (Some
students will struggle initially to appreciate that &lt;&lt;extend&gt;&gt;
differs from extends, the reserved word used to signal
inheritance in OO languages like Java.) Like &lt;&lt;include&gt;&gt;, the
&lt;&lt;extend&gt;&gt; relationship needs to be read in the direction of
the dashed stick-arrow, where the use case that provides the
‘extending’ or conditional behavior is at the tail and the use
case that is ‘being extended’ is at the head of the arrow. Thus,
in Figure 1, the K-N relationship reads: ‘Use Case K extends
Use Case N’. Very often in their diagrams, students place the
&lt;&lt;extend&gt;&gt; arrow the wrong way round, confused by the fact
that if ‘K extends N’, the functionality of K will be accessed
from an ‘extension point’ in a flow of events in N (i.e., put
simply, N ‘invokes’ K).
      </p>
      <p>
        For the last two years, in the lead-in to their end-of-year
exam, I have provided students with a short, adaptive, on-line
‘use case tutorial’. Both exam and tutorial are written in
Questionmark, a widely-used commercial software package for
implementing and scheduling
multiple-choice/multipleresponse assessments [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Other
multiple-choice/multipleresponse software is available, sometimes as freeware (e.g.
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]); EduSymp attendees will be familiar with e-learning
issues more generally (e.g. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]). However, this use case
tutorial specifically exploits the often neglected, but powerful,
conditional ‘jump blocks’ in Questionmark, which can be used
to match the system’s follow-up questions to a specific
combination of student responses. Drawing on my research
into object-based natural language dialogue systems [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], I
have used these jump blocks extensively to give the
studentsystem interaction a novel, ‘conversational’ twist. The
interaction resembles a branching, frame-based natural
language dialogue [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], where a ‘frame’ or ‘set’ of responses
determines the next step in the conversation. In a separate
article (to appear in ACM Inroads) I detail the dialogue
management strategy. In this instance, the student comments
on a use case diagram (the example in Figure 1) and the system
responds. Figure 2 shows the system’s reaction to an
incomplete and inaccurate set of student responses – given this
response combination, the system will give feedback and then
simply prompt the student to try again. If the student’s
response combinations indicate that he or she is having
difficulty in a particular area (terminology, or interpretation of
the symbols), the system will quiz the student on the problem
area alone, providing feedback on each new set of responses,
and moving on only when the responses are sufficiently
accurate. The tutorial concludes when the student gives a
good, broad-ranging set of responses. Tenacious but helpful in
its comments, the system evokes the small-scale,
person-toperson tutorials of earlier years.
      </p>
      <p>Student feedback on the automated tutorial has been very
encouraging. Comments taken from the surveys (also
implemented in Questionmark) that accompany the tutorial
include: “I thought that the way that you could repeat the
questions again if you didn't pass was good, and I thought that
the personalized feedback was great and really helpful”; “It
was good, told me what I didn't understand and confirmed what
I already knew”; “I thought it explained it quite well, and
wasn't too critical on my wrong answers, which I liked a lot”.
The main requests from the surveys are for longer tutorials, and
tutorials on other subjects. Having trialed the short use case
tutorial as a revision aid, I hope to introduce it earlier in the
academic year, where it will be a ready reminder of some key
points as students embark on a substantial use case driven SE
project.</p>
    </sec>
    <sec id="sec-4">
      <title>V. CONCLUDING REMARKS</title>
      <p>On traditional OOSE pathways, when students write their
‘final-year dissertation’, they are expected to describe their
software solution and justify their approach. A use case model
gives clear structure to the required behavior and so to the
development process – provided the student, with the
educator’s help, has learnt to avoid common conceptual and
notational pitfalls associated with use cases. Automated
tutorials can support that learning process. In software
engineering, use cases encourage developers and clients to
think beyond isolated actions and consider the system in the
round, from an early stage of the development process.</p>
      <p>Use cases may have a similar effect in life more generally!
At a talk I attended in London in the 1990s (sadly I do not have
a more detailed reference), Jacobson told how use cases had
even influenced the layout of his kitchen. So, if Make toast is a
use case, realize it properly: make sure that your bread bin,
toaster, cutlery drawer and fridge with the butter in it are all
beside each other!
last</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Jacobson</surname>
          </string-name>
          ,
          <article-title>The Unified Modeling Language User Guide</article-title>
          , 2nd ed.
          <source>Upper Saddle River: Addison-Wesley</source>
          ,
          <year>2005</year>
          , p.
          <fpage>228</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <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>
          , and G. Övergaard,
          <string-name>
            <surname>ObjectOriented Software Engineering - A Use Case</surname>
          </string-name>
          <article-title>Driven Approach</article-title>
          . Wokingham: ACM Press/Addison-Wesley,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>Mountain</given-names>
            <surname>Goat Software</surname>
          </string-name>
          , https://www.mountaingoatsoftware.com/ agile/user-stories
          <source>#section-3</source>
          , last accessed
          <year>2017</year>
          /06/27.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>Mountain</given-names>
            <surname>Goat Software</surname>
          </string-name>
          , https://www.mountaingoatsoftware.com/blog/ advantages
          <article-title>-of-the-as-a-user-i-want-user-story-template</article-title>
          ,
          <source>last accessed</source>
          <year>2017</year>
          /06/27.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>B.</given-names>
            <surname>Meyer</surname>
          </string-name>
          , Agile Methods:
          <article-title>The Good, the Hype and the Ugly</article-title>
          ,
          <source>ACM Webinar, 18 February</source>
          <year>2015</year>
          , https://www.youtube.com/watch?v= ffkIQrq-m34,
          <source>last visited</source>
          <year>2017</year>
          /10/06
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B.</given-names>
            <surname>Meyer</surname>
          </string-name>
          , Agile!
          <article-title>The Good, the Hype and the Ugly</article-title>
          . Cham, Switzerland: Springer International Publishing,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Jacobson</surname>
          </string-name>
          , ibid.,
          <source>Chapters 17 and 18.</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>I.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Spence</surname>
          </string-name>
          , and
          <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</article-title>
          , https://www.ivarjacobson.com/publications/ white-papers/
          <article-title>use-case-ebook</article-title>
          ,
          <source>last accessed</source>
          <year>2017</year>
          /08/07 .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>I.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Spence</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Kerr</surname>
          </string-name>
          , “
          <article-title>Use Case 2.0 - the hub of software development</article-title>
          ,
          <source>” ACM Queue</source>
          ,
          <volume>4</volume>
          (
          <issue>1</issue>
          ),
          <year>2016</year>
          , pp.
          <fpage>94</fpage>
          -
          <lpage>122</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Jacobson</surname>
          </string-name>
          , ibid., p.
          <fpage>230</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.A.</given-names>
            <surname>Laguna</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.M.</given-names>
            <surname>Marqués</surname>
          </string-name>
          , “
          <article-title>On the multiplicity semantics of the extend relationship in use case models,” in Software and Data Technologies</article-title>
          , Third International Conference,
          <string-name>
            <surname>ICSOFT</surname>
          </string-name>
          <year>2008</year>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cordeiro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Shishkov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ranchordas</surname>
          </string-name>
          , and M. Helfert, Eds. Heidelberg: Springer,
          <year>2009</year>
          , pp.
          <fpage>62</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Jacobson</surname>
          </string-name>
          , ibid., p.
          <fpage>233</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>Requirements</given-names>
            <surname>Inc Blog</surname>
          </string-name>
          , http://requirementsinc.com
          <article-title>/uml-basics-includeand-extend-stereotypes-in-use-cases/</article-title>
          , last accessed
          <year>2017</year>
          /06/27.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dennis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.H.</given-names>
            <surname>Wixom</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Tegarden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Systems</given-names>
            <surname>Analysis</surname>
          </string-name>
          &amp;
          <article-title>Design - An Object-Oriented Approach with UML</article-title>
          , 5th ed. Hoboken,
          <string-name>
            <surname>N.J.</surname>
          </string-name>
          : Wiley,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Jacobson</surname>
          </string-name>
          , ibid., p.
          <fpage>234</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Questionmark</surname>
            <given-names>Homepage</given-names>
          </string-name>
          , accessed
          <year>2017</year>
          /06/27.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Moodle</surname>
          </string-name>
          , https://www.moodle.org,
          <source>last accessed</source>
          <year>2017</year>
          /08/08.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>D.R.</given-names>
            <surname>Stikkolorum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Demuth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Zaytsev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Boulanger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Gray</surname>
          </string-name>
          , “
          <article-title>The MOOC hype: can we ignore it? Reflections on the current use of massive open online courses in Software Modeling Education,” in MODELS Educators Symposium</article-title>
          ,
          <source>EduSymp</source>
          <year>2014</year>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Demuth</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.R.</given-names>
            <surname>Stikkolorum</surname>
          </string-name>
          , Eds. Valencia, Spain,
          <year>September 2014</year>
          , pp.
          <fpage>75</fpage>
          -
          <lpage>86</lpage>
          , http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1346</volume>
          , last accessed
          <year>2017</year>
          /08/07.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>I. O'Neill</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Hanna</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Greer</surname>
            , and
            <given-names>M.F.</given-names>
          </string-name>
          <string-name>
            <surname>McTear</surname>
          </string-name>
          , “
          <article-title>Implementing advanced spoken dialogue management in Java,”</article-title>
          <source>Science of Computer Programming</source>
          ,
          <volume>54</volume>
          (
          <issue>1</issue>
          ), pp.
          <fpage>99</fpage>
          -
          <lpage>124</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>M.F. McTear</surname>
          </string-name>
          , Spoken Dialogue Technology:
          <article-title>Toward the Conversational User Interface</article-title>
          . London: Springer-Verlag,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>