<!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>Barcelona, Spain</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>A Card Game for Learning Software-Refactoring Principles</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thorsten Haendler</string-name>
          <email>thorsten.haendler@fh-vie.ac.at</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Applied Sciences BFI Vienna Institute for Information Systems and New Media</institution>
          ,
          <addr-line>WU Vienna</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <volume>2</volume>
      <fpage>2</fpage>
      <lpage>10</lpage>
      <abstract>
        <p>While software refactoring is considered important to keep a software system maintainable and extensible, it is often neglected in practice due to several reasons. Besides the associated costs, software developers often perceive refactoring as a difficult and risky activity. However, apart from textbooks that document rules and best practices for identifying bad smells and applying appropriate refactoring techniques, learning and teaching refactoring poses multiple challenges. The application of these rules and techniques to code examples requires (advanced) skills in programming as well as an adequate handling of the programming environment. These circumstances can distract the focus and set barriers to the introduction of refactoring. In this paper, we present REFACTORY, a nondigital multi-player card game for learning principles of software refactoring without the development-related complexities. In our game, the players simulate a software-development team confronted with bad code smells. The players learn to combine refactoring techniques to remove the smells and to balance costs and value of refactoring. We specify the game design and illustrate the game workflow. In addition, experiences and lessons learned from a first game-play study are presented, e.g. regarding game fun and mediation of competences. Finally, we discuss limitations and further potential for improving the game.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Author Keywords</title>
      <p>Card game, software refactoring, serious game, game-based
learning</p>
    </sec>
    <sec id="sec-2">
      <title>INTRODUCTION</title>
      <p>
        Issues in software artifacts such as code, design or architecture
can cause technical debt (TD) which can negatively impact a
software system’s maintainability and evolvability [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. A
popular technique for removing these issues (such as bad smells)
is software refactoring, which aims at improving the internal
quality while preserving the observable system behavior [
        <xref ref-type="bibr" rid="ref30 ref9">30,
9</xref>
        ]. But software refactoring is a complex activity involving
several challenges and which is often perceived as difficult and
risky by software developers [
        <xref ref-type="bibr" rid="ref12 ref38">38, 12</xref>
        ]. In recent years, only a
few approaches in software-engineering education addressed
the need for software developers competent in software
refactoring (see e.g. [
        <xref ref-type="bibr" rid="ref17 ref35">35, 17</xref>
        ]). Most have in common that they
require a high level of entry skills, e.g. regarding coding,
software-design principles or handling of the programming
environment (e.g. the testing framework).
      </p>
      <p>
        For refactoring a certain kind of code smell, often different
options and paths are available [
        <xref ref-type="bibr" rid="ref37 ref9">9, 37</xref>
        ]. Being aware of multiple
(or all) options available (in best practices), gives the software
developer advantages regarding flexibility and efficiency in
problem solving since she then can choose the best (e.g. the
easiest or most elegant) out of multiple options. Moreover,
it is essential that software developers are aware of the value
of software refactoring and are able to apply refactoring
techniques in a meaningful and efficient way by weighing costs
and benefits for the software project.
      </p>
      <p>
        Educational games aim at fostering practical competences
and motivation by providing a playful and interactive
environment [
        <xref ref-type="bibr" rid="ref18 ref26">26, 18</xref>
        ]. As found out by [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], around 90% of games
for software-engineering education are digital games, which
means that they mostly provide a simulation of development
activities and are played against the computer (for examples,
see Section 2). In general, non-digital card and board games
allow for focusing on selected conceptual aspects, have lower
entry barriers and provide the benefits of face-to-face and
informal interactions between players [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
      </p>
      <p>In this paper, we present a non-digital card game called
REFACTORY for learning principles of software refactoring. In
particular, the objective of the game is (1) to motivate the players
for learning more about software refactoring and (2) to
mediate basic refactoring-related competences in terms of being
able to conceptually combine refactoring techniques to remove
bad code smells as well as reflecting the balancing of costs
and benefits of applying software refactoring. The proposed
learning environment supports active and game-based
learning, especially suitable for novices that have little experience
in software development. By focusing on the conceptual level
and certain aspects of refactoring, development-related
complexities are avoided and the entry barriers are low. The basic
idea is to confront players in the role of software developers
with a software system that is affected by several bad code
smells (technical debt). In multiple sprints, the players then
aim at increasing the system’s value by realizing
functionalities. The players then have to decide whether to realize a
functionality, which is more time expensive, when the
corresponding component is affected by smells, or to remove
subsystems
assigned to players
smell cards
assigned to
components
first set of
refactoring
cards given
to players
sub1</p>
      <p>S</p>
      <p>F
sub4</p>
      <p>S
round
(sprint)
the smells beforehand by applying refactoring techniques. In
particular, this paper provides the following contributions.</p>
      <p>We present design and workflow of an educational card
game addressing basic competences in software refactoring,
such as combining refactoring techniques to remove bad
code smells and strategic aspects like balancing costs and
benefits of performing refactoring activities.</p>
      <p>We discuss user feedback in terms of the observations and
results of a short game-play study based on a prototype of
the card game.</p>
      <p>
        Fig. 1 illustrates the game constellation of REFACTORY. A
game board represents a software system consisting of
multiple sub-systems (each comprising multiple software
components in turn), which are assigned to players at start (see 1 in
Figure 1). Goal of the game is basically to increase the value
of the given software system by realizing new functionalities
assigned every sprint [
        <xref ref-type="bibr" rid="ref36">36</xref>
        ] (see 2 ). However, the players are
impeded in realizing new functionalities by pre-existing issues
in the software design (see 1 ), which complicate the
modification and extension of components and thereby increase
development time. These bad smells can be removed by
applying certain combinations of refactoring techniques (see 3 ).
In addition, events (such as code reviews or a feature check
from the customer) impact the value scores (see 2a ). Further
details on the design and game-play workflow can be found in
Section 3.3.
      </p>
      <p>The remainder of this paper is structured as follows. Section
2 discusses game approaches related to the proposed card
game. In Section 3, our game REFACTORY is explained in
detail, including the targeted objectives (e.g. competences
and learning context), the game design (e.g. concepts and
mechanics) as well as the workflow and variants of game play.
Then, we report first user feedback in terms of the results of
a small game-play study (see Section 4). Section 5 reflects
the approach’s limitations and further potential. Section 6
concludes the paper.</p>
    </sec>
    <sec id="sec-3">
      <title>RELATED WORK</title>
      <p>
        In recent years, several (educational) games have been
proposed in the field of software engineering such as approaches
for game-based learning, serious gaming and gamification;
see e.g. [
        <xref ref-type="bibr" rid="ref2 ref21 ref26 ref32 ref6">6, 32, 21, 26, 2</xref>
        ]. Among these gaming approaches,
closely related to our approach are in particular games for
software refactoring on the one hand and educational card games
on the other hand, which are both discussed in the following.
      </p>
    </sec>
    <sec id="sec-4">
      <title>Games for Software Refactoring</title>
      <p>
        For the sub-field of software refactoring, only very few
approaches of (educational) games can be identified. Based on
the systematic literature reviews [
        <xref ref-type="bibr" rid="ref2 ref26 ref32">26, 32, 2</xref>
        ] and further
research, the following gaming approaches related to refactoring
can be identified [
        <xref ref-type="bibr" rid="ref16 ref20 ref3 ref33 ref34 ref8">34, 33, 8, 20, 16, 3</xref>
        ]. For an analysis of
refactoring games, also see [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Among these, serious games
and gamified (editor-based) development environments such
as [
        <xref ref-type="bibr" rid="ref16 ref3 ref8">8, 16, 3</xref>
        ] provide realistic or real-world development
conditions enhanced by gaming elements to motivate the software
developers. For instance, the serious game proposed in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]
supports several single and multi-player game modes striving
to increasing a system’s internal quality by reducing its
technical debt via refactoring. For this purpose, analysis tools such
as test frameworks and technical-debt analyzers are integrated.
CodeArena [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] is a 3D game built on Minecraft Forge that
allows for fighting code clones (represented as monsters) via
code refactoring based on an additional editor view. Related to
these are intelligent editor-based tutoring systems such as [
        <xref ref-type="bibr" rid="ref17 ref35">35,
17</xref>
        ]. They all have in common that they require a high level
of entry skills, e.g. regarding programming, software-design
principles or handling of the programming environment (e.g.
the test framework). In addition to these approaches, only
very few game-based learning approaches are established such
as [
        <xref ref-type="bibr" rid="ref33 ref34">34, 33</xref>
        ], which provides an interactive learning path with
several activities and learning units (e.g. multiple-choice
questions) based on tangible cards representing smell types and
an interactive screen for visualizing refactoring options for
selected smell types in terms of a dependency graph.
Complementing these games, we propose a card game for actively
learning certain principles of software refactoring (e.g.
combining refactoring techniques to remove smells, strategical
aspects on balancing costs and value of refactoring). Our
game has low entry barriers and can be combined with these
more demanding games.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Card Games for Software Engineering</title>
      <p>
        In recent years, several card games have been proposed in the
field of software engineering; see e.g. [
        <xref ref-type="bibr" rid="ref1 ref11 ref23 ref25 ref27 ref4 ref7">4, 27, 23, 11, 1, 25, 7</xref>
        ].
For instance, planning poker is a popular gamified method for
a group-based estimation of development-task effort, widely
used in agile software projects, see e.g. [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. An example
for teaching programming-related concepts is Potato Pirates
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], which aims at mediating fundamentals in computational
thinking (especially to a younger audience) in terms of basic
programming structures (conditionals, loops, variables etc.).
More related to our approach are card games that simulate
the software development process, such as Mission to Mars
[
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] for agile release planning, or Problems and
Programmers according to phases of the waterfall process model [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
Moreover, DecidArch allows for training to handle design
decisions in software architecture [
        <xref ref-type="bibr" rid="ref25 ref7">25, 7</xref>
        ]. The game also includes
cards representing events that require the players to react by
meaningfully applying design decisions. As a complement to
these card games, our game focuses on handling the process
of software refactoring. To the best of our knowledge, the
Dice of Debt Game is the only card game related to (learning)
software refactoring [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Dice of Debt simulates an agile
software project confronted with technical debt. The debt
can be reduced by applying certain (cost intense) measures
represented in terms of cards for the techniques of
continuous integration, reducing complexity, increased test coverage,
and code review. For monitoring the progress, it provides a
scoring and tracking sheet. To this extent, the game has a few
aspects similar to ours such as the aim to increase a quality
score (reducing technical debt) by applying certain counter
measures. However, in contrast to Dice of Debt, which
focuses on the high-level management of technical debt, our
game addresses, among other aspects, on the combinations
of concrete refactoring techniques for removing types of bad
smells (i.e. debt items). Moreover, Dice of Debt includes a
high factor of chance by quantifying the cost and value of debt
counter-measures with multiple dices, while our game more
focuses on strategic aspects of balancing costs and benefits
of refactoring in order to raise awareness for efficiently and
meaningfully applying refactoring techniques.
      </p>
    </sec>
    <sec id="sec-6">
      <title>REFACTORY</title>
      <p>In this section, we introduce our card game REFACTORY.
In particular, we describe the game’s objectives, detail the
game design in terms of the basic game concepts and game
mechanics and, finally, describe the game-play workflow and
exemplary game variants.</p>
    </sec>
    <sec id="sec-7">
      <title>Objectives</title>
      <p>Objective of REFACTORY is (1) to motivate players for
learning more about software refactoring and (2) to mediate basic
competences, which are explained below.</p>
      <sec id="sec-7-1">
        <title>Motivation</title>
        <p>
          The game aims to motivate players by providing a playful
simulation of the challenges in handling technical debt in software
systems expressed as concrete bad code smells. The aesthetic
aspects [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] addressed by the game are narrative (role as
software developers), challenge (removing smells and
increasing the software’s value) and also fellowship (competing and
collaborating players in a social framework). From the
perspective of gamer types [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], the card game addresses primarily
killers that aim to rank and to win (score sheets) and achievers
that aim to achieve a status or goals (e.g. by removing all
smells). The group-oriented variants also address socializers.
Moreover, the game provides balance between elements of
chance (e.g. dicing for assigning smells and functionalities or
selecting random event cards), strategy (e.g. deciding how to
invest time points) and knowledge application (e.g, combining
refactoring techniques to remove smells).
        </p>
      </sec>
      <sec id="sec-7-2">
        <title>Competences</title>
        <p>
          In addition to fostering motivation, the game also aims at
mediating principles in software refactoring, which can be
described in terms of target competences (a.k.a. learning
objectives). For specifying competences (especially in engineering
and computing), Bloom’s revised taxonomy of educational
objectives [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] is very popular. Moreover, Paquette distinguishes
between prerequisite and target competences [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ]. Built on
these, we have developed a framework for refactoring
competences [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] that is used below. In particular, the game already
requires a minimal degree of understanding basic terms of
refactoring (factual knowledge; i.e. I, 2, A/B according to
[
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]). In turn, the game mainly addresses the following two
target competences:
        </p>
        <p>At first, the game addresses the application of a combination
of refactoring techniques to remove certain smells, which
can be classified as processing conceptual knowledge at the
cognitive levels of application, analysis, and evaluation (i.e.
II, 3/4/5, B).</p>
        <p>Moreover, it also addresses applying and analyzing
metacognitive knowledge aspects in terms of strategies for
refactoring expressed as balancing the time/costs and benefits of
performing refactoring (i.e. IV, 3/4, B).</p>
      </sec>
      <sec id="sec-7-3">
        <title>Learning Context</title>
        <p>
          The game can be seen as a complement to other learning and
training activities and environments (didactic mix), which are
discussed in the section on related work (see above). The game
can be described as a concepts-first approach to introducing
software refactoring. It addresses students or even
practitioners (related to software projects) that are, however, novices
in the field of software refactoring. In particular, the game
especially focuses on players without programming-related
experiences or that are more oriented to project management.
For example, the game could be used in the framework of a
university course on software design, maintenance or agile
development. Based on the addressed competences specified
above, a competence-oriented learning path can be described,
in which the game represents a starting point guiding.
Learners can be guided from there to higher levels of competence,
e.g. via tutoring systems [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] and serious games [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Development Process</title>
      <p>The development of the game is oriented to a process model,
which includes the use of a domain ontology for games in
software refactoring. Fig. 2 depicts the model in terms of a
UML activity diagram representing the key development steps,
which are elaborated in the further Sections.</p>
      <p>ad game development</p>
      <p>Game Ontology
User and
Context Analysis</p>
      <p>Competence Levels
DOenstoiglongOyp-btaiosnesd Game</p>
      <p>CUosemrspeatnednces
[re-ideation necessary]
GCaomep.OLnetvoelolsgy GaCmoemOp.nLtoelvoeglys</p>
      <p>Game Ideation
Selected DSeesilgencteOdptions</p>
      <p>Design Options
Game Mechanics</p>
      <p>Game Dynamics
Game Aesthetics</p>
      <p>Analysis Tools</p>
      <p>Design Options</p>
      <p>Designing
the Game</p>
      <p>Game Design
[re-implemen[traeti-oimnpnleecmeesnsa-ry]
tation necessary]</p>
      <p>
        Further details on the ontology-based analysis and design of
games and the included process model can be found in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
    </sec>
    <sec id="sec-9">
      <title>Game Design</title>
      <p>In the following, we give a conceptual overview of the game
and explain the basic game mechanics and components.</p>
      <sec id="sec-9-1">
        <title>Conceptual Overview</title>
        <p>
          Fig. 3 shows an overview of concepts applied in REFACTORY
in terms of a class diagram of the Unified Modeling Language
(UML2) [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ]. The concept map represents the key elements
of the game and the relationships between them.
        </p>
        <p>The Game Play is based on a Game Board representing a
software system consisting of multiple Sub-Systems
(including multiple Software Components in turn; see Fig. 3. Each
subsystem is assigned to a Player (in the role of a software
developer). In a Game Play, multiple Players strive for
increasing the Value of the software system. A game play
consists of multiple Rounds representing agile sprints, during
which functionalities are assigned to be realized, smells can
be removed by applying refactoring and additionally events
occur, which can impact each players’ value. These aspects
are realized by the following four kinds of Cards (see Fig. 4).
Event Card</p>
        <p>*
Card Deque
*
* uses</p>
        <p>Game Play * 2..*
based * involves
on 1</p>
        <p>Game Board
(System)</p>
        <p>0..1
Functionality
Assignment *</p>
        <p>a ected by
Card</p>
        <p>0..1 0..1
(DePvlaeyloeprer) 1 1 Score Sheet</p>
        <p>*
* Sub-System
related to
1 Round
(Sprint)
*</p>
        <p>assigned
0..1 to
* Component 0..1</p>
        <p>*
*</p>
        <p>Turn
*</p>
        <p>Move</p>
        <p>God Class
Feature
Envy</p>
        <p>removes
Smel Card * * RefaCcatordring
*</p>
        <p>Move Method
Extract Method
*</p>
        <p>applies
todo* Functionality</p>
        <p>Card
* *
done</p>
        <p>* *
* Time Points *
* Value Points *</p>
        <p>Points
consumes
*
Functionality
Realization</p>
        <p>Smel
Removal
(front)</p>
        <p>(back)
FeatureEnvyrOetfiaocntsorfoinrg:
A method accesses
data of another
class more than its
own data
(front)
(front)</p>
        <p>(front)
MoveMethod Code Review</p>
        <p>Functionality
Move a method
to a class that
uses it mostly.</p>
        <p>
          in the next
round
Reduce the value
of the player with
most smells by
10 points
e ort: 2
value: 3
(a) (b) (c) (d)
Figure 4. Exemplary cards of (a) bad smells, (b) refactoring techniques,
(c) events, and (d) functionalities.
(c) Event Card: representing events that impact the
software project and the strategies of balancing the removement
of bad smells and realizing functionalities (see (d) in Fig.
4). In particular, the following four kinds of events are
distinguished:
– Code Review: representing a review of the code
quality with the consequences of reducing the value points
of the player with the most smells.
(a) Smell Card: representing a bad code smell that
negatively impacts the maintainability and extensibility of the
affected software component (see e.g. [
          <xref ref-type="bibr" rid="ref37 ref9">9, 37</xref>
          ]). A smell
card provides a textual description of the nature of the smell
(front of the card) and a list of combinations of refactoring
techniques to remove the smells (on the back of the card;
see (a) in Fig. 4). At game start, the components are already
affected by bad smell cards (diced), for which the
corresponding cards are located at the components of the game
board.
(b) Refactoring Card: representing a concrete refactoring
technique, such as MOVEMETHOD or EXTRACTCLASS
(see e.g. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]) that aims at improving the internal quality by
modifying the a code fragment while preserving the
observable software behavior [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. A refactoring card provides
information on the technique and the effort to perform it in
terms of Time points (see (b) in Fig. 4).
        </p>
        <p>- MoveMethod or
- EctractMethod
e ort: 1
– Feature Check: representing a check of the current
state of functionality realization from the customer (or
product owner) with the consequence of reducing value
points of the players with the most functionalities todo
(i.e. not yet realized).
– Time Check: representing a check of the time not
used by the players with the consequence of reducing
the value points of the player with the most available
(i.e. unused) time points.
– Training Session: representing a session dedicated
to training techniques for software refactoring resulting
in additional refactoring cards drawn by the players.
The training can be applied to all players or just the
player who draws the card.</p>
        <p>The events take place immediately or in a future round, as
noted on the front of the card (see (c) in Fig. 4).
(d) Functionality Card: representing a certain
functionality of the software system. The details of the functionality
are hided in the game, i.e. that only the effort (in terms of
time points) to realize the functionality (todo) and the value
(also in terms of points) of the functionality (in case it has
been realized; see below) are noted on the front of the card
(see (d) in Fig. 4).</p>
        <p>In every Round, Time points are given to each player, in terms
that they are noted into a player’s Score Sheet. The sheet
also gives an overview of the player’s functionalities todo
(for which the target components are noted) and done as well
as the achieved Value (as the sum of functionalities done).
Moreover, a set of new Functionality Cards (todo; taken
from the product backlog) are drawn from the card deck and
assigned to the players’ components by dicing. Each round,
one player (rotating) also selects an Event Card that
impacts all players or only the acting player (see above). Per
round, each player then moves in turn. At first, she draws new
Refactoring Cards. Functionality and Refactoring
Cards are then taken in player’s hand. Each player then
basically can decide how to invest the Time points for performing
the following two kinds of Moves.</p>
        <p>Functionality Realiziation represents a player’s
move to realize a functionality, which is at the player’s
hand (todo; previously drawn). By realizing a functionality,
the player’s time points are reduced by the corresponding
effort points and in turn the player’s value points are
increased by the functionalities’ value (in the score sheet).
The functionality card is then placed at the corresponding
component on the game board. In case a component is
affected by a bad smell, the costs of realizing the functionality
are doubled. While realizing a functionality, new smells can
be introduced potentially (by dicing a certain number). For
this purpose, then the corresponding cards are drawn from
the card deck and located at the corresponding component.
Smell Removal represents the combination of
refactoring techniques to remove a certain bad smell located at a
player’s component. For this purpose, (1) the effort points
of the refactorings must be available (and are consumed)
and (2) the combination must be appropriate for removing
the smell (see Table 1).</p>
        <p>Further details on game play are explained in the following
Section.</p>
      </sec>
      <sec id="sec-9-2">
        <title>Mapping Refactorings to Bad Smells</title>
        <p>
          Table 1 presents exemplary applied mappings between bad
code smells and corresponding refactoring techniques, i.e.
options and combinations to remove the smells. The mappings
are based on the documented knowledge provided by [
          <xref ref-type="bibr" rid="ref37 ref9">9, 37</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>Game Play</title>
      <p>Based on the game design explained above, game-play aspects
such as how to prepare a game session as well as scenarios
and variants of game play are described below.</p>
      <sec id="sec-10-1">
        <title>Game Preparation</title>
        <p>For playing the game, a game board, score sheets and game
cards 1 as well as a traditional dice (i.e. faces one to six) and a
pen (to fill the score sheet) are required. Before game play, the
subsystems (with included components) have to be assigned
to players. Moreover, for each subsystem, smell cards are
allocated to components by random (diced) and each player
also receives a starter set of refactoring cards (see 1 in Fig.1).</p>
      </sec>
      <sec id="sec-10-2">
        <title>Game-Play Scenarios</title>
        <p>As shown above, the game provides strategic challenges,
demands for applying conceptual knowledge and contains a
certain degree of chance (e.g. dicing). In the following,
exemplary game-play aspects are detailed in terms of scenarios. For
instance, for managing the technical debt items (concretely
expressed as bad smells) located in their sub-systems, the
players can select between different strategies that are very close
to the options actually used in refactoring practice.</p>
        <p>
          At first, a player can realize a functionality in a smelly
component by ignoring the bad smell, which can be motivated by
different reasons, such as inexperience or unawareness on
the one hand, or driven by the assumption that this
component won’t be often modified. However, every modification
of a smelly components can become quite cost expensive
(cf. technical-debt interest [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]).
        </p>
        <p>
          A second option for the player is to remove the smells just
before realizing funtionalities, which is referred as ad-hoc
or floss refactoring [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ]. The advantage of this technique is
that only smells are removed that are actively maintained
and/or extended.
        </p>
        <p>The third option is to remove (all) smells in anticipation,
even if no concrete extension by functionalities is planned.</p>
        <p>In this strategy, the player/developer runs the risk to prevent
1The materials of the card-game prototype (e.g. game board,
score sheet, game cards) are available for download from http:
//refactoringgames.com/cardgame/.
issues in terms of debt interest that will never accrue, since
the affected components will eventually never be touched
by developer.</p>
      </sec>
      <sec id="sec-10-3">
        <title>Game-Play Variants</title>
        <p>The game design and game constellation specified above allow
for describing multiple game variants, which differ regarding
the user interaction and at the level of detail in the rules of the
game. Three exemplary variants are shortly described below.
(A) Competing Players: The players compete against each
other in collecting value points. Each player is only
responsible for their subsystems. This variant represents the base
for the following two game variants.
(B) Competing Groups: In this variant, multiple groups
compete against each other. In contrast to (A), the members of
a group support each other in several regards, such as for
combining refactoring cards or realizing functionalities of
each other.
(C) Collaborating Players: The third variant describes a team
of all participating players that aims at optimizing the value
of the software system. In this, the players can support
each other in exchanging refactoring cards and balancing
the players’ time for realizing the assigned features. A
possible reference for comparing the team’s value could
be the value achieved in previous sessions (when applying
other strategies) or achieved by other teams.</p>
      </sec>
    </sec>
    <sec id="sec-11">
      <title>USER FEEDBACK</title>
      <p>We investigated user feedback on the game via a two-stage
process (1) by performing a pilot to identify obvious issues and
to refine the game and (2) via a user study with 19 participants,
which are both explained in the following.</p>
    </sec>
    <sec id="sec-12">
      <title>Pilot</title>
      <p>In order to test the game functionality of and gain first feedback
on game play, we conducted a short pilot with three software
developers playing a first version of the game. We observed
the game play and discussed the experiences with the players
afterwards. The players gave generally positive feedback and
confirmed simplicity as key for learning principles in software
refactoring. In addition, a few suggestions to improve the
game have been collected, such as adding more elements of
chance to increase game fun and to improve the game theme
to increase the acceptance, especially by a younger audience.</p>
    </sec>
    <sec id="sec-13">
      <title>Game-Play Study</title>
      <p>Based on improvements of the game design (such as
introducing event cards; see above), we conducted an additional small
user study with 19 voluntary participants, consisting of 7
software developers and 12 students of the Information Systems
bachelor studies, of which 8 indicated to have at least some
experiences in software engineering, while 4 had little/none;
all with low to medium knowledge in software refactoring.
The players were instructed into the gaming rules before game
play. Game sessions (of each 8 rounds) have been performed
in five groups, each consisting of 3 to 4 players, which took
about 20 to 40 minutes to complete. Every group has explored
two game variants, i.e. at first (A) competing players and then
one of the group-oriented variants (B by two groups, C by
three groups). After that, the participants have been asked to
specify the level of agreement to 8 given statements (see Table
2) via Likert scales (1=no to 6=full agreement), which can be
structured by the following 3 blocks.
(1) general impressions of the game,
(2) fun and motivation of game play (first objective), and
(3) the game as mediator of competences (second objective)</p>
      <sec id="sec-13-1">
        <title>General Impressions</title>
        <p>Fig. 5 shows the results on statements regarding the general
impression of the game. Almost all participants (i.e. 16) agreed
to the statement that the game supports in learning principles in
software refactoring (1.1). In addition, most (63%) indicated
that playing the game helps better understanding the value
of refactoring (1.2). Interestingly, many participants (i.e. 13)
have experienced problems in following the game rules (1.3),
which can be induced by the explanation of the rules or by the
complexity of the rules themselves (also see the discussion in
the following section).</p>
        <p>1
2
4
5</p>
        <p>6
3
4
6
6</p>
        <p>3
7
3
8
3
2
2
1.3
1.2
1.1
0</p>
      </sec>
      <sec id="sec-13-2">
        <title>Fun and Motivation</title>
        <p>Fig. 6 reports on the answers to statements regarding fun and
motivation in playing the game (first objective). In general,
63% of the participants indicated that playing the game is fun
(2.1). The statement that the game motivates to learn more
about software refactoring (2.2) finds overall weak support.
Moreover, almost all participants stated that the group-oriented
variants (i.e. competing groups and collaborating players) were
more fun to play (2.3).
3.2</p>
        <p>2
3.1 1
2
3
4
6
8
10
12
14
16
18
20
22</p>
      </sec>
      <sec id="sec-13-3">
        <title>Competence Acquisition</title>
        <p>Fig. 7 depicts the results on statements regarding competence
acquisition (second objective). Most participants (i.e. 79%)
indicate that the game can support acquiring competences for
software refactoring. In detail, most participants agreed on the
statement that the game supports improving the knowledge on
how to combine refactoring techniques to remove bad smells
(3.1). Moreover, almost all participants (i.e. 15 out of 19)
agreed that by playing the game they reflected on balancing
costs and benefits of refactoring (3.2).</p>
        <p>5
7
0
2
4
6
8
10
12
14
16
18
20
22</p>
      </sec>
      <sec id="sec-13-4">
        <title>Improvement Potential</title>
        <p>In addition to these closed questions, the participants were
also asked for potential game improvements, which mainly
dispersed over the game’s appearance/theme and the
gameplay rules. Some participants have indicated that the game
could be visually and haptically more appealing and that the
theme of the game needs to be revised. Moreover, some
noticed that the game is a bit too complicated and –correlating
to this– that the manual should be revised. Among other
aspects, these points are discussed in the following section.</p>
      </sec>
    </sec>
    <sec id="sec-14">
      <title>DISCUSSION</title>
      <p>
        The short game-play study indicates that the developed card
game supports in acquiring basic competences for software
refactoring and also motivates the participants to deal with
software refactoring. In the following we reflect on limitations
regarding the user study and the game approach as well as
on potential for further improvement. At first, the study is
5 1
2
6
4
3
based on a small and heterogeneous target group consisting
of developers and IT students differing in terms of knowledge
and experience, who can be seen as typical card-game
players. However, a potential threat to the internal validity can
be seen in the kind of questions asked to the participants in
the sense that the intention behind the study is transparent to
the participants, i.e. they can probably recognize that their
agreement with the approach presented is desired. Thus, the
participants can be seen as biased to some extent. To overcome
these limitations, further experimentation and refinement is
required, which is planned in future research. In particular, it
is intended to perform further user studies with more
participants in the framework of university courses and by measuring
the competence acquisition via exemplary tasks that relate to
competence levels [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In this course, it would also be
interesting to investigate how the game actually addresses player
types (such as achievers or killers) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>In general, the proposed card game focuses on certain
conceptual competences (see above), which can be seen as a starting
point to learning software refactoring. For the player, this
means that it remains to be explored, for example, how to
actually perform an EXTRACTCLASS by performing code
modifications (in a larger code base). However, we believe
that the card game can also foster other skills, such as
problemsolving, team work, or communication (e.g. resulting from
face-to-face interaction and immediate social feedback), which
could be investigated in further research.</p>
      <p>
        The realized non-digital card game was motivated by the
benefits of lower entry barriers and the potential to focus on
selected conceptual aspects of software refactoring. However,
the proposed game design could also be realized as a digital
game, which would come with some advantages, such as an
automated assessment and game processing. In addition, there
is certainly a lot of potential in improving the visual
appearance of the game, which could correlate with a refinement
of the game mission. For instance, within a battle narrative,
the bad smells could by represented as enemies that can be
beaten by deftly applying refactoring weapons. Building upon
this, the cards could be visually improved, e.g. oriented to the
popular fantasy card game Magic: The Gathering [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
    </sec>
    <sec id="sec-15">
      <title>CONCLUSION</title>
      <p>
        In this paper, we have introduced REFACTORY, a non-digital
card game for teaching basic concepts in software
refactoring. The short user study indicated that the card game can (1)
motivate for learning more about software refactoring and (2)
support learning refactoring principles (i.e. combining
refactoring techniques to remove bad smells and of applying and
reflecting strategies for balancing costs and benefits). For
future work, we intend to apply the game within university
courses and to perform further user studies. In order to
improve the user experience, we also plan to revise the game
layout (as discussed above). Another possible direction could
be to transform the presented non-digital into a digital game,
by which the assessment of actual code modifications could be
included (integrated editor) and which would also allow a
combination and integration with other training/gaming activities
and environments (see e.g. [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ]).
      </p>
    </sec>
    <sec id="sec-16">
      <title>Acknowledgements</title>
      <p>This work was partly funded by the Department for Economic
Affairs, Labour and Statistics (MA23) of the City of Vienna
(Austria) through the research project "New Work – New
Business" at the UAS BFI Vienna.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Lim</given-names>
            <surname>Jia Xuan Aditya Batura</surname>
          </string-name>
          ,
          <source>Fendy Lieanata and Seah Tat Leong</source>
          .
          <year>2017</year>
          . Potato Pirates. (
          <year>2017</year>
          ).
          <article-title>Codomo Pte Ltd</article-title>
          . https://www.potatopirates.
          <source>game [September 6</source>
          ,
          <year>2019</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Manal</surname>
            <given-names>M</given-names>
          </string-name>
          <string-name>
            <surname>Alhammad and Ana M Moreno</surname>
          </string-name>
          .
          <year>2018</year>
          .
          <article-title>Gamification in software engineering education: A systematic mapping</article-title>
          .
          <source>J. Systems and Software</source>
          <volume>141</volume>
          (
          <year>2018</year>
          ),
          <fpage>131</fpage>
          -
          <lpage>150</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Simon</given-names>
            <surname>Baars</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sander</given-names>
            <surname>Meester</surname>
          </string-name>
          .
          <year>2019</year>
          .
          <article-title>CodeArena: Inspecting and Improving Code Quality Metrics in Java using Minecraft</article-title>
          .
          <source>In Proceedings of the 2019 International Conference on Technical Debt (Tool Demos)</source>
          . IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Alex</given-names>
            <surname>Baker</surname>
          </string-name>
          ,
          <source>Emily Oh Navarro, and André van der Hoek</source>
          .
          <year>2005</year>
          .
          <article-title>An experimental card game for teaching software engineering processes</article-title>
          .
          <source>Journal of Systems and Software 75</source>
          ,
          <fpage>1</fpage>
          -
          <lpage>2</lpage>
          (
          <year>2005</year>
          ),
          <fpage>2</fpage>
          -
          <lpage>16</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Richard</given-names>
            <surname>Bartle</surname>
          </string-name>
          .
          <year>1996</year>
          .
          <article-title>Hearts, clubs, diamonds, spades: Players who suit MUDs</article-title>
          .
          <source>Journal of MUD research 1</source>
          ,
          <issue>1</issue>
          (
          <year>1996</year>
          ),
          <fpage>19</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Craig</given-names>
            <surname>Caulfield</surname>
          </string-name>
          , Jianhong Cecilia Xia, David Veal, and
          <string-name>
            <given-names>S</given-names>
            <surname>Maj</surname>
          </string-name>
          .
          <year>2011</year>
          .
          <article-title>A systematic survey of games used for software engineering education</article-title>
          .
          <source>Modern Applied Science</source>
          <volume>5</volume>
          ,
          <issue>6</issue>
          (
          <year>2011</year>
          ),
          <fpage>28</fpage>
          -
          <lpage>43</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Remco C de Boer</surname>
            , Patricia Lago, Roberto Verdecchia, and
            <given-names>Philippe</given-names>
          </string-name>
          <string-name>
            <surname>Kruchten</surname>
          </string-name>
          .
          <year>2019</year>
          .
          <article-title>DecidArch v2: An improved Game to teach Architecture Design Decision Making. (</article-title>
          <year>2019</year>
          ),
          <fpage>153</fpage>
          -
          <lpage>157</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Leonard</given-names>
            <surname>Elezi</surname>
          </string-name>
          , Sara Sali, Serge Demeyer, Alessandro Murgia, and
          <string-name>
            <given-names>Javier</given-names>
            <surname>Pérez</surname>
          </string-name>
          .
          <year>2016</year>
          .
          <article-title>A game of refactoring: Studying the impact of gamification in software refactoring</article-title>
          .
          <source>In Proc. of the Scientific Workshops of XP2016. ACM</source>
          ,
          <volume>23</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Martin</given-names>
            <surname>Fowler</surname>
          </string-name>
          , Kent Beck, John Brant,
          <string-name>
            <given-names>William</given-names>
            <surname>Opdyke</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Don</given-names>
            <surname>Roberts</surname>
          </string-name>
          .
          <year>1999</year>
          .
          <article-title>Refactoring: improving the design of existing code</article-title>
          .
          <source>Addison-Wesley Professional.</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Richard Garfield.
          <year>1993</year>
          .
          <article-title>Magic: The Gathering</article-title>
          . Board Game.
          <article-title>Wizards of the Coast</article-title>
          , Renton, Washington, US (
          <year>1993</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>Tom</given-names>
            <surname>Grant</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Dice of Debt Game</article-title>
          . (
          <year>2015</year>
          ). GameChange LLC. https://www.agilealliance.org/dice-of-debt-game
          <source>/ [September 6</source>
          ,
          <year>2019</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Haendler</surname>
          </string-name>
          and
          <string-name>
            <given-names>Josef</given-names>
            <surname>Frysak</surname>
          </string-name>
          .
          <year>2018</year>
          .
          <article-title>Deconstructing the Refactoring Process from a Problem-Solving and Decision-Making Perspective</article-title>
          .
          <source>In Proc. of the 13th International Conference on Software Technologies (ICSOFT)</source>
          .
          <source>SciTePress</source>
          ,
          <fpage>363</fpage>
          -
          <lpage>372</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Haendler</surname>
          </string-name>
          and
          <string-name>
            <given-names>Gustaf</given-names>
            <surname>Neumann</surname>
          </string-name>
          .
          <year>2019a</year>
          .
          <article-title>A Framework for the Assessment and Training of Software Refactoring Competences</article-title>
          .
          <source>In Proc. of 11th International Conference on Knowledge Management and Information Systems (KMIS)</source>
          .
          <source>SciTePress.</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Haendler</surname>
          </string-name>
          and
          <string-name>
            <given-names>Gustaf</given-names>
            <surname>Neumann</surname>
          </string-name>
          . 2019b.
          <article-title>Ontology-based Analysis and Design of Educational Games for Software Refactoring</article-title>
          .
          <source>In Computers Supported Education, Revised Selected Papers of CSEDU 2019</source>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Haendler</surname>
          </string-name>
          and
          <string-name>
            <given-names>Gustaf</given-names>
            <surname>Neumann</surname>
          </string-name>
          . 2019c.
          <article-title>Ontology-based Analysis of Game Designs for Software Refactoring</article-title>
          .
          <source>In Proc. of the 11th International Conference on Computer Supported Education (CSEDU)</source>
          , Vol.
          <volume>1</volume>
          . SciTePress,
          <fpage>24</fpage>
          -
          <lpage>35</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Haendler</surname>
          </string-name>
          and
          <string-name>
            <given-names>Gustaf</given-names>
            <surname>Neumann</surname>
          </string-name>
          . 2019d.
          <article-title>Serious Refactoring Games</article-title>
          .
          <source>In Proc. of the 52nd Hawaii International Conference on System Sciences (HICSS)</source>
          .
          <volume>7691</volume>
          -
          <fpage>7700</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Thorsten</surname>
            <given-names>Haendler</given-names>
          </string-name>
          , Gustaf Neumann, and
          <string-name>
            <given-names>Fiodor</given-names>
            <surname>Smirnov</surname>
          </string-name>
          .
          <year>2019</year>
          .
          <article-title>An Interactive Tutoring System for Training Software Refactoring</article-title>
          .
          <source>In Proc. of the 11th International Conference on Computer Supported Education (CSEDU)</source>
          , Vol.
          <volume>2</volume>
          . SciTePress,
          <fpage>177</fpage>
          -
          <lpage>188</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Juho</surname>
            <given-names>Hamari</given-names>
          </string-name>
          , Jonna Koivisto, and
          <string-name>
            <given-names>Harri</given-names>
            <surname>Sarsa</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Does gamification work?-a literature review of empirical studies on gamification</article-title>
          .
          <source>In Proc. of 47th Hawaii International Conference on System Sciences (HICSS)</source>
          . IEEE,
          <fpage>3025</fpage>
          -
          <lpage>3034</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Robin</surname>
            <given-names>Hunicke</given-names>
          </string-name>
          , Marc LeBlanc, and
          <string-name>
            <given-names>Robert</given-names>
            <surname>Zubek</surname>
          </string-name>
          .
          <year>2004</year>
          .
          <article-title>MDA: A formal approach to game design and game research</article-title>
          .
          <source>In Proc. of the AAAI Workshop on Challenges in Game AI</source>
          , Vol.
          <volume>4</volume>
          . AAAI Press San Jose, CA,
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Shivam</surname>
            <given-names>Khandelwal</given-names>
          </string-name>
          , Sai Krishna Sripada, and
          <string-name>
            <given-names>Y Raghu</given-names>
            <surname>Reddy</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Impact of Gamification on Code review process: An Experimental Study</article-title>
          .
          <source>In Proc. of the 10th Innovations in Software Engineering Conference. ACM</source>
          ,
          <volume>122</volume>
          -
          <fpage>126</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Mehmet</surname>
            <given-names>Kosa</given-names>
          </string-name>
          , Murat Yilmaz,
          <string-name>
            <surname>Rory O'Connor</surname>
            , and
            <given-names>Paul</given-names>
          </string-name>
          <string-name>
            <surname>Clarke</surname>
          </string-name>
          .
          <year>2016</year>
          .
          <article-title>Software engineering education and games: a systematic literature review</article-title>
          .
          <source>Journal of Universal Computer Science</source>
          <volume>22</volume>
          ,
          <issue>12</issue>
          (
          <year>2016</year>
          ),
          <fpage>1558</fpage>
          -
          <lpage>1574</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>David R Krathwohl</surname>
          </string-name>
          .
          <year>2002</year>
          .
          <article-title>A revision of Bloom's taxonomy: An overview</article-title>
          .
          <source>Theory into practice 41</source>
          ,
          <issue>4</issue>
          (
          <year>2002</year>
          ),
          <fpage>212</fpage>
          -
          <lpage>218</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <given-names>Philippe</given-names>
            <surname>Kruchten</surname>
          </string-name>
          and
          <string-name>
            <given-names>James</given-names>
            <surname>King</surname>
          </string-name>
          .
          <year>2011</year>
          .
          <article-title>Mission to Mars: An agile release planning game</article-title>
          .
          <source>In 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&amp;T)</source>
          . IEEE,
          <fpage>552</fpage>
          -
          <lpage>552</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Philippe</surname>
            <given-names>Kruchten</given-names>
          </string-name>
          , Robert L Nord, and
          <string-name>
            <given-names>Ipek</given-names>
            <surname>Ozkaya</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>Technical debt: From metaphor to theory and practice</article-title>
          .
          <source>IEEE software 29</source>
          ,
          <issue>6</issue>
          (
          <year>2012</year>
          ),
          <fpage>18</fpage>
          -
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Patricia</surname>
            <given-names>Lago</given-names>
          </string-name>
          , Jia F Cai,
          <string-name>
            <surname>Remco C de Boer</surname>
            , Philippe Kruchten, and
            <given-names>Roberto</given-names>
          </string-name>
          <string-name>
            <surname>Verdecchia</surname>
          </string-name>
          .
          <year>2019</year>
          .
          <article-title>DecidArch: Playing Cards as Software Architects</article-title>
          .
          <source>In Proceedings of the 52nd Hawaii International Conference on System Sciences.</source>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Michael</surname>
          </string-name>
          <article-title>A Miljanovic and Jeremy S Bradbury</article-title>
          .
          <year>2018</year>
          .
          <article-title>A Review of Serious Games for Programming</article-title>
          .
          <source>In Joint International Conference on Serious Games</source>
          . Springer,
          <fpage>204</fpage>
          -
          <lpage>216</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Kjetil</surname>
          </string-name>
          Moløkken-Østvold,
          <source>Nils Christian Haugen, and Hans Christian Benestad</source>
          .
          <year>2008</year>
          .
          <article-title>Using planning poker for combining expert estimates in software projects</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>81</volume>
          ,
          <issue>12</issue>
          (
          <year>2008</year>
          ),
          <fpage>2106</fpage>
          -
          <lpage>2117</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Emerson</surname>
            Murphy-Hill,
            <given-names>Chris</given-names>
          </string-name>
          <string-name>
            <surname>Parnin</surname>
          </string-name>
          , and Andrew P Black.
          <year>2012</year>
          .
          <article-title>How we refactor, and how we know it</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>38</volume>
          ,
          <issue>1</issue>
          (
          <year>2012</year>
          ),
          <fpage>5</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29. Object Management Group.
          <year>2017</year>
          .
          <article-title>Unified Modeling Language (UML)</article-title>
          ,
          <source>Superstructure, Version 2.5.1</source>
          . (
          <year>2017</year>
          ). http://www.omg.
          <source>org/spec/UML/2.5.1 [September 6</source>
          ,
          <year>2019</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30. William F Opdyke.
          <year>1992</year>
          .
          <article-title>Refactoring object-oriented frameworks</article-title>
          . University of Illinois at Urbana-Champaign
          <string-name>
            <surname>Champaign</surname>
          </string-name>
          , IL, USA.
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <given-names>Gilbert</given-names>
            <surname>Paquette</surname>
          </string-name>
          .
          <year>2007</year>
          .
          <article-title>An ontology and a software framework for competency modeling and management</article-title>
          .
          <source>Educational Technology &amp; Society</source>
          <volume>10</volume>
          ,
          <issue>3</issue>
          (
          <year>2007</year>
          ),
          <fpage>1</fpage>
          -
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          32.
          <string-name>
            <surname>Oscar</surname>
            <given-names>Pedreira</given-names>
          </string-name>
          , Félix García, Nieves Brisaboa, and
          <string-name>
            <given-names>Mario</given-names>
            <surname>Piattini</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Gamification in software engineering-A systematic mapping</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>57</volume>
          (
          <year>2015</year>
          ),
          <fpage>157</fpage>
          -
          <lpage>168</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          33.
          <string-name>
            <given-names>Felix</given-names>
            <surname>Raab</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>CodeSmellExplorer: Tangible exploration of code smells and refactorings</article-title>
          .
          <source>In Visual Languages and Human-Centric Computing (VL/HCC)</source>
          ,
          <source>2012 IEEE Symposium on. IEEE</source>
          ,
          <fpage>261</fpage>
          -
          <lpage>262</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          34.
          <string-name>
            <surname>Felix</surname>
            <given-names>Raab</given-names>
          </string-name>
          , Markus Fuchs, and
          <string-name>
            <given-names>Christian</given-names>
            <surname>Wolff</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>CodingDojo: Interactive slides with real-time feedback</article-title>
          . Mensch &amp;
          <article-title>Computer 2012-Workshopband: interaktiv informiert-allgegenwärtig und allumfassend!? (</article-title>
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          35.
          <string-name>
            <surname>Mincho</surname>
            <given-names>Sandalski</given-names>
          </string-name>
          , Asya Stoyanova-Doycheva,
          <string-name>
            <given-names>Ivan</given-names>
            <surname>Popchev</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Stanimir</given-names>
            <surname>Stoyanov</surname>
          </string-name>
          .
          <year>2011</year>
          .
          <article-title>Development of a Refactoring Learning Environment</article-title>
          .
          <source>Cybernetics and Information Technologies (CIT) 11</source>
          ,
          <issue>2</issue>
          (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          36.
          <string-name>
            <given-names>Ken</given-names>
            <surname>Schwaber</surname>
          </string-name>
          and
          <string-name>
            <given-names>Mike</given-names>
            <surname>Beedle</surname>
          </string-name>
          .
          <year>2002</year>
          .
          <article-title>Agile software development with Scrum</article-title>
          . Vol.
          <volume>1</volume>
          . Prentice Hall Upper Saddle River.
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          37.
          <string-name>
            <surname>Girish</surname>
            <given-names>Suryanarayana</given-names>
          </string-name>
          , Ganesh Samarthyam, and
          <string-name>
            <given-names>Tushar</given-names>
            <surname>Sharma</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Refactoring for software design smells: Managing technical debt</article-title>
          . Morgan Kaufmann.
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          38.
          <string-name>
            <surname>Ewan</surname>
            <given-names>Tempero</given-names>
          </string-name>
          , Tony Gorschek, and
          <string-name>
            <given-names>Lefteris</given-names>
            <surname>Angelis</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Barriers to refactoring</article-title>
          .
          <source>Commun. ACM</source>
          <volume>60</volume>
          ,
          <issue>10</issue>
          (
          <year>2017</year>
          ),
          <fpage>54</fpage>
          -
          <lpage>61</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>