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