<!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>Using i* with Scrum: An Initial Proposal</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Leonardo Berbare de Araujo</string-name>
          <email>leo.berbare@usp.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fábio Levy Siqueira</string-name>
          <email>levy.siqueira@usp.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Escola Politécnica da Universidade de São Paulo</institution>
          ,
          <addr-line>São Paulo</addr-line>
          ,
          <country country="BR">Brazil</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <volume>1674</volume>
      <fpage>19</fpage>
      <lpage>24</lpage>
      <abstract>
        <p>Although goal modeling using i* provides several benefits to requirements analysis, it may be difficult to use it with agile methods. This paper proposes a method that combines i* with Scrum, integrating the initial phases of Tropos with Scrum practices. In summary, goals in a Strategic Rationale model are prioritized to a release and then refined into user stories. The stories are implemented in Sprints, following the Scrum activities. This paper also reports the use of this method to develop a mobile app that brings political decisions closer to the Brazilian electorate.</p>
      </abstract>
      <kwd-group>
        <kwd>i-star</kwd>
        <kwd>tropos</kwd>
        <kwd>requirements</kwd>
        <kwd>scrum</kwd>
        <kwd>agile</kwd>
        <kwd>user story</kwd>
        <kwd>planning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        User story [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is a popular requirements representation used in agile software
development projects. Even though its textual template represents the goal
behind a feature (in the “so that” part), it is not possible to reason about goals,
especially higher-level goals, or reason about how goals are refined into
requirements. This information, for example, is important when creating user
stories, or when a product owner selects the features to be implemented in an
iteration. Even if some agile methods, such as Scrum [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], do not impose using
user stories, it is not clear how to use goal modeling in agile projects, with
changing requirements and continuous delivery of software.
      </p>
      <p>
        This paper proposes a method that combines goal modeling, using i*
models, with agile software development. We integrate the initial phases of
Tropos, Early Requirements and Late Requirements, with Scrum practices.
Differently from works that propose transforming i* models into user stories
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], transforming user stories into i* models [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], or obtaining a goal net model
from user stories [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], our method involves refining a partial i* model into user
stories that will be used to guide the software development.
      </p>
      <p>Copyright © 2016 for this paper by its authors. Copying permitted for private and academic purposes.</p>
      <p>To present the method, this paper is organized as follows: Section 2
presents Scrum and user story. Section 3 describes the method, and Section 4
presents an experience report of how the method was used to develop a
mobile app. Finally, Section 5 presents a discussion and some conclusions.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Scrum and User Story</title>
      <p>
        Scrum is an agile framework for managing the development of complex
products and services [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. A Scrum team is composed of three roles: a product
owner (who decides which features will be developed and their priority), a
Scrum master (who acts like a coach), and a development team (a
crossfunctional and self-organized group of developers).
      </p>
      <p>
        A project using Scrum begins with the creation of a product backlog,
representing a list of requirements for the system. This backlog is created and
prioritized by the product owner, while the development team helps
estimating each item in it. The work on items of the product backlog is executed in
sprints. A sprint is a time-boxed iteration to create a product increment with
value to the customer or user. Based on the product backlog and the vision of
the product owner, the Scrum team agrees on a sprint goal, which may be a
specific set of backlog items or a set of features. The items of the product
backlog that will be developed in the sprint are organized in a sprint backlog,
along with a plan to deliver the product increment. To create this plan, Scrum
teams normally break each item into tasks, and estimate the effort to complete
each one of them [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The framework does not describe how tasks should be
implemented, but it describes some important events. A brief daily meeting
should be performed by the development team and the Scrum master to
understand how the development is progressing and what issues should be
addressed. The other two events should be conducted at the end of the sprint: the
sprint review and the sprint retrospective. The first is a review of product
created in the increment, while the second is a review of the process, focusing on
process improvement.
      </p>
      <p>
        While Scrum does not impose a requirement representation for the
product backlog, many teams use user stories [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. According to Cohn, a user
story “describes functionality that will be valuable to either a user or
purchaser of a system or software" [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Differently from other requirements
representations, a user story is not a detailed specification; it is a reminder for a
conversation between the development team and the stakeholders [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Method</title>
      <p>
        In order to bring goal modeling into the Scrum framework, we propose a
method based on Tropos [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. The method comprises five phases: Early
Requirements, Initial Late Requirements, Goal Refinement, Sprint Planning, and
Implementation. Unlike Tropos, the method does not impose an
AgentOriented Software Engineering approach.
      </p>
      <p>The first phase, Early Requirements, is similar to the one proposed in
Tropos, but adapted to the Scrum framework. Therefore, a developer with
requirements engineering skills and the product owner model the system’s
stakeholders into social actors: defining roles and intentions. They create the
Strategic Dependencies (SD) Model by listing the possible dependencies
between each pair of social actors. Then, they make the Strategic Rationale (SR)
Model by listing possible hardgoals, softgoals, plans (we use “plan”, from
Tropos, instead of “task” to avoid a confusion with Scrum’s “task”), and
resources within each social actor’s boundary and describing how these goals
affect each other.</p>
      <p>On Initial Late Requirements, the second phase, the developer and
product owner introduce the system-to-be as a new social actor, and update
the SD Model to include dependencies the initial actors may have with the
system (which sometimes replace old dependencies). Similar to the first
phase, they make the SR Model for the system defining goals that help
accomplish the dependencies in which the system is a dependee.</p>
      <p>
        The third phase, Goals Refinement, is the core of the method. This
phase should be executed as a release planning [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], considering several
sprints. The product owner sorts the list of dependencies with the system
according to their priority. He or she selects the ones essential to the next release
of the system and, with support of the developer with requirements
engineering skills, makes a list of the system’s internal goals that help accomplish
these dependencies. They sort goals based on their importance and the product
owner then selects which ones to refine. Refinement of a goal consists of:
describing the goal in a sentence or two; decomposing it into plans that serve
as means to the goal (giving a title to each plan and describing how they
compose the goal); and giving each plan a set of user stories that should cover it.
The development team should estimate each user story, creating a product
backlog.
      </p>
      <p>The fourth and fifth phases, respectively, Sprint Planning and
Implementation, is executed in all sprints. Sprint Planning consists of the product
owner selecting a subset of user stories (therefore, a set of plans and goals)
with a theme in mind and considering the team velocity. The team should split
each item into tasks and create a sprint backlog.</p>
      <p>As in Scrum, an Implementation phase follows each Sprint Planning
phase, and implementation methods should vary according to team and
project. Yet, the phase starts by the assignment of developers to the sprint
backlog items. The progress of development should be available to the team by
pointing out which items (plans, user stories, and their tasks or components)
have been completed.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Applying the Method</title>
      <p>The method was created and used during a capstone project of a Computer
Engineering course at Universidade de São Paulo (USP). The idea was to
develop a mobile app, named Appopuli, which brings political decisions closer
to the Brazilian electorate. The team was composed of two final-year students,
working as developers and product owners, and an advisor, working as a
Scrum master.</p>
      <p>During the Early Requirements phase, we identified the following
actors: Electors, Politicians, Political Parties, and Press. We elicited a set of
dependencies such as “an Elector depends on the Press to find news about
candidates” and then the rationale for each actor, writing goals like “recognize
good candidates” (an Elector goal).</p>
      <p>During the Initial Late Requirements phase, we included the System
actor and elicited dependencies such as “the Elector depends on the System to
express their opinion.” The rationale of the System actor resulted not only in
many hardgoals representing subsystems and components, but also in a few
softgoals representing desirable functioning qualities.</p>
      <p>In the Goals Refinement phase, we decided that dependencies with
the Political Parties and the Press had lower priorities than the Electors’ and
Politicians’. We also narrowed the scope of our project to the Municipal
Chamber of São Paulo. Therefore, only 15 hardgoals out of 40 goals inside
the System actor boundary were refined in order to create a minimum viable
product during the sprints. This phase resulted in 30 plans such as “Rate a
politician between 1 and 5 stars,” which has a small set of user stories,
including “an Elector may change the number of stars previously given to a
politician.” An example of the refinement is presented in Fig. 1.</p>
      <p>The rest of the development was divided in four sprints. Each sprint
executed both the phases Sprint Planning and Implementation. Only one of
the final-year students executed these phases, as the other student left for an
exchange period. The first sprint focused on building a simple app that shows
basic info on every alderman of São Paulo. Planning it meant choosing which
user stories would be implemented. For instance, picking “a user may search
aldermen by name” rather than “a user may search aldermen by political
party.” Differently from the method, we split the user stories into tasks during the
Implementation phase. The three other sprints were planned similarly.</p>
      <p>During Implementation, each sprint backlog was managed through the
list of tasks to satisfy a set of user stories. Some tasks were described as the
classes and methods to be implemented. The App was developed for Android
phones, using Java; the server side of the application was developed in Ruby,
using the framework Ruby on Rails and a PostgreSQL database. By the end of
the fourth sprint, users could: sign up at the Android app; choose aldermen
and proposed laws to follow; see any activity from followed concerns on a
timeline; check details of a proposed law (including their original PDF
documents); among other functionalities.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Discussion and Conclusion</title>
      <p>This paper proposes a method that combines goal modeling, using i* and
based on Tropos, with the agile framework Scrum. We also describe the use
of this method to develop a mobile app. The proposed method is based on the
idea that goals are more stable than requirements. Therefore, the goal model
will not change frequently, and it would be possible to use it in release
planning with few changes during sprints. Yet, the benefits of goal modeling
would allow a better understanding of the system to be built, help reasoning
about alternatives, and prioritize the development based on goals. These
benefits should compensate the addition of an artifact – which is a disadvantage
from an agile perspective.</p>
      <p>As this is an initial proposal, there are some important future works.
The method should be improved by including some guidelines and a more
detailed description, specially in the Goal Refinement phase. In addition, it
should be evaluated in a project with a real product owner and a bigger
development team. Finally, the benefits of the method should be analyzed
considering its impact to agility.</p>
      <p>Acknowledgements. We thank Diego Henrique dos Reis Marques for his
participation in the project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Cohn</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>User Stories Applied: For Agile Software Development</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Professional</given-names>
          </string-name>
          , Boston (
          <year>2004</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Kenneth</surname>
            <given-names>S.</given-names>
          </string-name>
          <article-title>Rubin: Essential Scrum: A Practical Guide to the Most Popular Agile Process</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Professional</given-names>
          </string-name>
          , Upper Saddle River, NJ (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Agra</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sousa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Melo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lucena</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alencar</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Specifying guidelines to transform i* Model into User Stories: an overview</article-title>
          .
          <source>In: Proceedings of the Eighth International i* Workshop</source>
          . pp.
          <fpage>109</fpage>
          -
          <lpage>114</lpage>
          . CEUR,
          <string-name>
            <surname>Canada</surname>
          </string-name>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Jaqueira</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lucena</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alencar</surname>
            ,
            <given-names>F.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castro</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aranha</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>Using i* Models to Enrich User Stories</article-title>
          .
          <source>Presented at the i* Workshop</source>
          , Valencia (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Lin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shen</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miao</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Using goal net to model user stories in agile software development</article-title>
          .
          <source>In: 2014 15th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing (SNPD)</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bresciani</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perini</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giorgini</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giunchiglia</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mylopoulos</surname>
          </string-name>
          , J.:
          <article-title>Tropos: An agent-oriented software development methodology</article-title>
          .
          <source>Auton. Agents Multi-Agent Syst. 8</source>
          ,
          <fpage>203</fpage>
          -
          <lpage>236</lpage>
          (
          <year>2004</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>