<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Investigating the Effects of Integrating Handcrafted Code in Model-Driven Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tim Bolender</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Rumpe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Wortmann</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Software Engineering RWTH Aachen University Aachen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Where model-driven engineering (MDE) requires models to interact with general-purpose programming language (GPL) artifacts, sophisticated patterns for the integration of generated and handcrafted code are required. This raises a gap between modeling and programming which requires developers to switch between both activities and their contexts. Action languages that enable interacting with GPL artifacts on model level can alleviate the need for switching, but cannot rely on the mature development tools of GPLs. We propose to investigate the acceptance and effects of MDE with action languages that GPL interaction. To this effect, we present a study design for comparing MDE with integration of handcrafted artifacts to pervasive MDE with action languages. In this study, participants develop the behavior of selected components of the software architecture of a small autonomous robot using either the delegation pattern or a Java-like action language. With this, we aim to uncover which method yields better acceptance and performance results.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Programming raises a conceptual gap between the problem
domains and the solution domains of discourse [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
Modeldriven engineering (MDE) aims at reducing this gap by lifting
more abstract models to primary development artifacts [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Such models are better suited to analysis, communication,
documentation, and transformation. However, where models
require interaction with general-purpose programming
language (GPL) artifacts, such as legacy code, libraries, or
frameworks, modeling infrastructures usually require bridging
this gap by integrating handcrafted with generated artifacts.
For this, various patterns have been developed [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], all of which
require the modeler to switch from more abstract modeling
activities to very technology-specific programming activities,
which require different tooling and different mindsets. Where
developers switch between various activities 47 times per
hour on average already [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], the additional activity switching
required by such MDE might ultimately hinder development.
      </p>
      <p>
        We aim to investigate the effect of pervasive MDE using
action languages in a comparative modeling study. In this
study, the participants develop the behavior of
MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] component models of a small autonomous
robot. To this end, they either integrate handcrafted code
through a variant of the delegation pattern [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] or leverage a
Java-like action language. We provide the software architecture
without component behavior to the participants as well as a
code generator that translates the software architectures to
Java code executable with the Simbad1 3D robot simulator.
The treatment group develops the components’ behavior with
embedded, restricted Java/P, which is the action language of
the UML/P [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] language family. The control group develops
the components’ behavior through integrating of handcrafted
Java code. We record the 100-minute development sessions
and instrument the development environment with analyses
on the quality of the component behavior under
development. Together with pre-study questionnaires and post-study
questionnaires, we aim to uncover whether pervasive MDE
with action languages or programming of component behavior
method yields better acceptance and performance results.
      </p>
      <p>In the following, Sec. II introduces the MontiArcAutomaton
architecture modeling infrastructure and the Java/P action
language, before Sec. III details the study design and ?? discusses
threats to its validity. Then Sec. V describes preliminary results
from a pilot study andSec. VI debates related studies. Sec. VII
concludes.</p>
    </sec>
    <sec id="sec-2">
      <title>II. PRELIMINARIES</title>
      <p>
        To prevent architecture modelers from switching between
modeling and programming, we embed the Java/P [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] action
language into components of the MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
architecture description language. This section introduces both.
      </p>
      <sec id="sec-2-1">
        <title>A. The Java/P Action Language</title>
        <p>
          Java/P [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] is a MontiCore [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] language resembling Java 1.7.
It is used as action language in the UML/P [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] language family
and supports the full concrete syntax and abstract syntax of
Java 1.7 as well as its context condition rules. MontiCore’s
code generation framework translates Java/P models into Java
artifacts. Reifying a Java as a modeling language enables to
easily extend it with new modeling elements (for instance, the
notions of components as in ArchJava [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]), context conditions
rules (such as preventing assignment of null values), and
1Simbad website: http://simbad.sourceforge.net/
transformations (such as automatically creating getters and
setters). Moreover, MontiCore produces a parser for Java/P
programs that supports processing Java 1.7 classes, i.e., lifting
legacy level to model level. This enables to model Java
programs capable of using existing libraries and frameworks.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>B. The MontiArcAutomaton Modeling Infrastructure</title>
        <p>
          MontiArcAutomaton [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] is an extensible architecture
modeling infrastructure. It comprises a component &amp; connector
(C&amp;C) architecture description language (ADL) and a code
generation framework. The ADL is realized as a
MontiCore [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] language and uses MontiCore’s language integration
mechanisms [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] to enable plug-and-play embedding of action
languages. It has been configured with behavior modeling
languages including Java/P and successfully deployed to
teaching [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] as well as to service robotics applications [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. The
combination of MontiArcAutomaton with Java/P is denoted
AJava (for “Architectural Java”).
        </p>
        <p>Core concepts of the MontiArcAutomaton ADL are
illustrated with the experiment’s software architecture depicted
in Fig. 1: the MontiArcAutomaton ADL distinguishes
component types (denoted components) and their instances (denoted
subcomponents). Components feature parameters (similar to
constructors in object-oriented GPLs) and interfaces of typed,
directed ports. They either are composed (SearchControl)
or atomic (Collision). Composed components yield
configurations of subcomponents that exchange messages via
unidirectional connectors between their ports. Atomic components
yield a behavior description in form of an embedded action
language or via integration of handcrafted GPL artifacts.</p>
        <p>The BallFinder software architecture comprises ten
subcomponents of nine different component types. The two
components depicted on its left wrap sensing functions to
localize a ball in the environment and to detect possible
collisions. Their messages are fed into an instance of the
composed component type SearchControl, which uses
these to determine the next navigation actions and logs both
incoming and outgoing messages. It sends motor commands
to another composed component taking care of navigation as
well as to an instance of StatusLamp that serves to convey
messages to observers.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. STUDY DESIGN</title>
      <p>
        There are various means to achieve pervasive MDE using
different language combinations as well as various patterns
to integrate handcrafted code (cf. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]) and measuring their
differences requires concretizing the research question to
comparable implementations. We use AJava as representative of
pervasive MDE as both ADLs and action languages are
common modeling techniques. For the integration of handcrafted
code, we selected the delegation pattern [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] as representative,
which has been employed in various modeling infrastructures.
This section describes the design of our study based on these
representatives.
      </p>
      <sec id="sec-3-1">
        <title>A. Research Goals</title>
        <p>
          When planning an experiment, it is crucial to measure only
the properties from which the researchers can correctly draw
conclusions. To answer our research question systematically,
we applied the Goal-Question-Metric (GQM) [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] method.
Using this top-down approach, the conceptual level (goals)
is considered first. This is refined to the operational level
(questions) from which the quantitative level (metrics) is
observed. Each refinement step is based on the preceding level.
This ensures that only metrics are employed, which help to
achieve the original goal and not because they are easy to
measure or convenient for the researcher. To this effect, our
research goal is to analyze behavior modeling with AJava
and the delegation pattern for the purpose of evaluation with
respect to their effectiveness and efficiency from the point
of view of the researcher in the context of graduate and
undergraduate students at RWTH Aachen University.
        </p>
        <p>We concretize this in three research questions as follows:
RQ1 Does pervasive MDE with AJava help to reduce the
development time compared to describing component
behavior with Java using the delegation pattern?
RQ2 Is the pervasive MDE with AJava less error-prone than
employing the delegation pattern for integration of
handcrafted code?
RQ3 How convenient is pervasive MDE with AJava for the
developers?</p>
        <p>Based on these research questions, we determine the
variables to measure during the experiment (Section III-B) as
well as to formulate our hypotheses to be tested against the
collected data in (Section III-C). Thereby, we strictly follow
the GQM method, which we use as guideline for the study
design.</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Variables</title>
        <p>Before devising the corresponding metrics to answer our
research questions, we address the variables of the experiment.</p>
        <p>1) Independent Variables: As we stated before, we intend
to gain insights into assets and drawbacks of pervasive MDE
compared with the integration of handcrafted artifacts.
Therefore, we have only one independent variable, which is:
Development method The method used for behavior
integration. This variable features two alternatives, namely
the delegation pattern and AJava as we select these as
representatives for the methods in question.</p>
        <p>Thus, we are conducting a single factor experiment with two
alternatives. To this effect, we employ two test groups, one
for each treatment method. To determine the composition of
these groups, we employ randomization to ensure a balanced
distribution with respect to, e.g., knowledge and experience
between the groups.</p>
        <p>2) Controlled Variables: To be able to make reliable
assertions after the experiment, we try to control the following
variables:</p>
        <p>Experience MontiArcAutomaton is developed by the
chair of Software Engineering at the RWTH Aachen
University and part of its teaching activities. Hence
knowledge about its basic functionalities and its methods
can be assumed. However, we provide an introduction
to ensure that all subjects participate with the same
knowledge.</p>
        <p>Programming skills These are important for
development in general. We expect these to be homogeneously
distributed, thus we consider this variable as controlled.
By employing questionnaires, we aim to ensure that our
assumption on Java programming skills holds.</p>
        <p>Project The environment in which techniques are exerted
has a major influence on the results. We prepare a project
consisting of multiple tasks and provide a project skeleton
to the participants. In Section III-E, we give an overview
over this project and introduce the tasks.</p>
        <p>Tooling Tooling, such as IDEs and build systems, can
reduce the work for certain tasks enormously. We ensure
that the tooling support for applying both methods is
identical.</p>
        <p>3) Response Variables: The last step of the GQM method
is to consider each of the research question individually and
devise a list of metrics to answer these.</p>
        <p>RQ1 Does pervasive MDE with AJava help to reduce the
development time compared to modeling component
behavior with Java using the delegation pattern?
Time of solution finding The time needed to resolve the
whole task, including testing and error-solving.</p>
        <p>Time for programming The time required to develop
the actual solution. Includes actual programming time
only, i.e., excludes testing and code generation times.
Number of code generations The number of times the
code generator was started.</p>
        <p>Time for testing The time needed to test the solution.
Time needed for error-solving The time used to solve
errors reported during compiling and testing.</p>
        <p>RQ2 Is the pervasive MDE with AJava less error-prone than
employing the delegation pattern for integration of
handcrafted code?
Absolute number of errors The number of error
occurring during compilation and testing.</p>
        <p>Time needed for error-solving The time used to solve
any errors that occurred.</p>
        <p>Errors in Time The number of errors in relation to the
time used to come up with a solution.</p>
        <p>RQ3 How convenient is pervasive MDE with AJava for the
developers?
Time saving The opinion whether the techniques is
considered as time saving.</p>
        <p>Convenience The evaluation whether the technique is
found to be easy to use.</p>
        <p>Overhead creation The assessment whether the
technique requires efforts which are unnecessary for the actual
solution of the problem.</p>
        <p>Demand for more tooling The rating whether the
technique needs more tooling to be used properly.</p>
        <p>Each of these variables is measured for each of the tasks
individually and once for the whole project. This way, we
enable a result analysis with more insights about the specific
strong and weak aspects of the methods.</p>
      </sec>
      <sec id="sec-3-3">
        <title>C. Hypotheses</title>
        <p>To enable the statistical analysis of the experiments results,
we state our hypotheses pairs in the following. For the sake
of simplicity, we give a combined expectation about each
research question.</p>
        <p>RQ1 We expect using AJava requires less development time
and code generation iterations, i.e.,
H1.10 Solution finding time is larger or equal.</p>
        <p>H1.11 Solution finding time is less.</p>
        <p>H1.20 Solution creation time is larger or equal.</p>
        <p>H1.21 Solution creation time is less.</p>
        <p>H1.30 Code generation is run more or equally often.
H1.31 Code generation is run less often.</p>
        <p>H1.40 Testing time is larger or equal.</p>
        <p>H1.41 Testing time is less.</p>
        <p>H1.50 Error-solving time is larger or equal.</p>
        <p>H1.51 Error-solving time is less.</p>
        <p>RQ2 We expect using AJava produces less errors and
consequently requires less time for error solving, i.e.,
H2.10 The absolute number of errors is larger or equal.
H2.11 The absolute number of errors is less.</p>
        <p>H2.20 The time for error-solving is larger or equal.
H2.21 The time for error-solving is less.</p>
        <p>H2.30 The errors per time is larger or equal.</p>
        <p>H2.31 The errors per time is less.</p>
        <p>RQ3 We expect using AJava better accepted and conceived
more comfortable, i.e.,
H3.10 The valuation of time saving is less or equal.
H3.11 The valuation of time saving is larger.</p>
        <p>H3.20 The valuation of convenience is less or equal.
H3.21 The valuation of convenience is larger.</p>
        <p>H3.30 The valuation of overhead is larger or equal.
H3.31 The valuation of overhead is less.</p>
        <p>H3.40 The demand for tooling is larger or equal.
H3.41 The demand for tooling is less.</p>
        <p>As the variables are collected for each task individually, the
hypotheses are validated respectively. We employ a one-sided
Student’s t-test for those metrics that are of a ratio scale, e.g.,
development time or error count. For the metrics, especially
those of RQ3, we use a one-sided Mann-Whitney-U test since
we deal with measured data of ordinal scale.</p>
      </sec>
      <sec id="sec-3-4">
        <title>D. Participants</title>
        <p>Our experiment represents an internal validation, i.e., the
participants are computer science students at the chair of
Software Engineering. This includes Bachelor, Master, and Ph.D.
students, all of which expected to have a solid knowledge in
Java due to their curricula and background as well as interests
in software architecture. Furthermore, we anticipate that a
majority of the participants already is aware MontiArcAutomaton
and has a rudimentary idea of its capabilities due to its
inclusion in the the department’s teaching and research activities.
Nevertheless, an introduction to MontiArcAutomaton is given
to ensure a consistent foundation for all participants. Based on
the in the experiment included questionnaires, a more detailed
description of the demography of the participants including
their prior knowledge can later be given during the result
analysis. We expect to have 20 subjects participate in the
experiment.</p>
      </sec>
      <sec id="sec-3-5">
        <title>E. Experiment Materials</title>
        <p>During the experiment, the participants have to complete
a series of separate tasks in a predefined order. Each of
these tasks has the goal to implement a particular component
behavior in an overall project, but is itself independent. For
each of these components, an exact description of the behavior
is provided in form of an implementation-independent text
description. Since we are only interested in the behavior
implementation during the experiment, an architecture skeleton
of this project will be provided.</p>
        <p>
          Each participant is implementing the software for a robot on
the basis of the open source Simbad robot simulator framework
[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Simbad features a 3D virtual environment in which a
virtual robot can be executed. The robot can be equipped with
a variety of utilities, which enable it to sense objects and
obstacles which can be placed in this environment. The
movement is realized via two different kinematic models to choose
from (1) the default composite control with a velocity and a
rotation value; and (2) the differential control, in which two
wheels are separately controllable. The individual behavior is
implemented in a dedicated method which is repeatedly called
by the simulator framework. To enables the supervision of this
behavior, Simbad features a simple interface which renders the
current as state of the environment as well the different sensor
values. Exemplary, the user interface with the experiment’s
scenario is depicted in Fig. 2. It enables the control over the
simulation, and provides a 3D environment visualization as
well as details about the simulation and the robot state (left).
        </p>
        <p>The robot software architecture implemented by the
participants during the experiment is called BallFinder. As
the name suggests, its task is to find and collect red balls.
collision sensor representation
3D environment visualization
ball
robot with collision</p>
        <p>sensors and lamp
Component Name
Camera
Collision
Logger
MovementControl
MotorControl
CompositeMotor
WheelMotor
simulation
details
robot ego
perspective
simulator and
camera controls
Therefore, it is equipped with a software camera for locating
balls and a range of bumper sensors for collision detection.
To provide easy visual feedback to the observer, it features a
simple lamp as actuator. The search takes place in two separate
phases: locating and collecting. During locating, the robot
rotates around its axis until a red ball is recognized through a
rudimentary image analysis via its camera. When successful,
the robot switches into the collecting phase: it stops rotating
and starts moving forward towards the ball until a collision is
detected. During the first phase, the lamp is supposed to blink
while during the second it should be turned on continuously.
After a successful retrieval, a new ball appears at a different
spot in the environment and the whole procedure starts all over
again.</p>
        <p>The architecture used for this robot was already introduced
by Fig. 1. Almost each of its components is an experimental
item to which the two treatments should be applied to.
Therefore, the subjects should develop the components’ the behavior
implementations. Additionally, one task requires to refactor the
architecture to change the robot’s kinematic model. In Table I,
an overview of the components to be implemented is given
with the kind of their related implementation challenges. We
distinguish between three main challenge kinds:
1) Logic Tasks of this kind demand a behavior
implementation with a minimal degree of logic. This should involve
the usage of control structures like branches and loops.
Thus, we expect the subject to implement more than
simple variable reading and writing.
2) Integration This kind includes the interaction with a
native API. Instead of developing self-contained code,
external code in form of provided functions or classes are
employed. Therefore, the subject has to include imports
and aspects like function signatures in its consideration.
3) Refactoring Tasks of this kind require more than the
creation of new solutions: they might involve the
restructuring existing components. Hence, the subject have to
consider the existing (old) behavior and has to perform a
refactoring in an at least limited sense.</p>
        <p>We plan to use this classification later for a more
differentiated result analysis. In the following, we give more detailed
description of the components for a better understanding of
the project and experiment.</p>
        <p>Camera This component uses the camera sensor of the
Simbad framework to detect whether a red ball is located
in front of the robot. It does so by analyzing the color
picture delivered by the hardware. The result of the
analysis is reported through its output port ball. The
image perceived by the camera is provided in form of a
100 100 array of RGB values. For image recognition,
a simple algorithm is supposed to be implemented by
the subjects. Instead of using an actual object recognition
algorithm, only the red channel of the image is used.
Furthermore, only the center column of pixels is considered
and segmented into sections with size of 10 pixels. Since
the virtual environment is mainly colored in green and
blue, an average red value in one of these sections larger
than the threshold 100 is sufficient to confirm a ball in
from of the robot. This way, a satisfying trade-off between
task complexity and detection accuracy is achieved.
Collision This sensor is used to detect physical contact
of the robot to other objects in the environment. For this
purpose, it is equipped with a belt of 16 evenly distributed
bumper sensors. To signalize whether a collision was
detected the collision port is used. Each sensor reports
a collision through Boolean value and the component
iterates over all sensors to determine whether any sensors
reports a collision.</p>
        <p>SearchControl This is a composite component
consisting of the subcomponents InternalControl and
Logger. It is the central entity of the project since and
is in charge of controlling the robot. To facilitate the
removing errors, its behavior as well as the received input
values are logged through Logger. This component does
receive any treatment from the subjects.</p>
        <p>Logger This component handles the logging requirement
of the SearchControl type. Therefore, it receives all
input values from the containing component as well as
the output values of the InternalSearchControl.
Monitoring their changes, it writes these events including
a time stamp to a log file.</p>
        <p>MovementControl This composed component controls
the robot’s movement. Therefore, it translates the
movement commands received from searchControl
to movement of the actual “physical” devices of
locomotion. At the beginning of the experiment,
it contains instances of MotorControl and
CompositeMotor, the latter matches Simbad’s
default kinematic model. During the experiment, the
participants have to restructure MovementControl
and replace the CompositeMotor instance with two
instances of type WheelMotor.</p>
        <p>MotorControl The task of this component is the
translation of movement commands for the actual drive control.
Initially, when the default kinematic model is deployed,
the component possesses two outgoing ports to control
an instance of CompositeMotor. After restructuring,
the differential model is used, it features one output value
for each of the two WheelMotor instances.</p>
        <p>CompositeMotor This component corresponds to one of
the kinematic models available in Simbad and represents
a single “physical” propulsion. It receives a velocity
and a rotation value as input to control the movement.
The behavior implementation of this component passes
the two incoming values to the Simbad framework.
WheelMotor A component of this type matches with
one wheel of the differential kinematic model. It
receives one value as input. A positive one results in a
forward rotation of the wheel, while a negative value
causes a backwards one, respectively. Consequently,
CompositeMotor poses implementation challenge
regarding integration of native API.</p>
      </sec>
      <sec id="sec-3-6">
        <title>F. Conduction Plan</title>
        <p>The complete experiment takes 100 minutes per participant.
For the execution, experiment equipment is provided, this
includes notebook computers running Ubuntu Linux, the Atom2
editor with disabled syntax highlighting and disabled language
completion support, and a makefile responsible for triggering
the maven-driven build processes. We provide the restricted
editor and the makefiles to mitigate the effects of advanced
IDEs. Using basic editing functionalities, such as “find” or
“replace” is not restricted. The provided makefiles take care
of parsing models, generating code, compiling, and packaging
it.</p>
        <p>To enable a correct attribution of the subjects actions to
the correct metric, we use screen recording and employ a
camera to capture the non-digital behavior. Furthermore, we
are storing the project state at each compilation and run for
an easier analysis in the aftermath.</p>
        <p>During execution, each subject performs the following:
2Atom website: https://atom.io
1) Pre-questionnaire (5min) Before the actual start of the
experiment, the participant is asked to fill out a survey
on his or her modeling and programming skills. This
includes inquiring the experience with modeling and
objectoriented programming in general as well as specific
modeling and programming techniques and languages.
2) Introduction (25min) Next, we give an introduction
to the study’s development environment,
MontiArcAutomaton, and the respective behavior modeling
techniques for the participants group. Moreover, we introduce
the BallFinder and the modeling task. The participant
may explore prepared example code to familiarize himself
or herself with the assigned modeling technique and
may inspect the provided architecture of the experimental
project.
3) Tasks (65min) We hand out the task description to
the participant and let him or her perform the task
using the assigned modeling technique. The participants
are requested to solve the task steps in order of their
presentation. This order is identical to the presentation in
Table I, the subjects will therefore implement the robot
following the flow of information from input to output.
During the whole time, the participants are allowed to ask
questions related to the understanding of the exercises,
but no information regarding the solution is given.
4) Post-questionnaire (5min) Ultimately, we conduct a
second questionnaire to learn more about the acceptance
and ask for general feedback about the experiment.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. DISCUSSION</title>
      <p>Our study design enables comparing MDE with integration
of handcrafted artifacts to pervasive MDE with action
languages. As representatives, we chose AJava and the delegation
pattern for the conduction of the experiment. This study should
give us a first good indication about their respective benefits in
practice. To this effect, we embedded the experiment’s tasks
into a small project to simulate a realistic scenario. Through
a minimal set of tools, we ensured that we compare the
techniques and not the tooling. By our choice of tasks, we
covered many different aspects of the development process.
In addition to the implementation of logic, we should receive
insights about refactoring and the integration of native API
as well. For the comparison, we do not only consider
performance metrics, we also take acceptance and usability into
account. Both aspects add up to full picture, compensating
shortcomings of other metrics. Otherwise, a later employment
of the technique in practice could be endangered.</p>
      <p>The greatest risk to an experiment is the invalidation of
results found in the collected data. Therefore, we discuss
the possible threats to internal and external validity in the
following and examine how we assured that conclusions are
legit and in which context the results are valid.</p>
      <sec id="sec-4-1">
        <title>A. Threats to Internal Validity (Causality)</title>
        <p>
          Threats to internal validity arise from factors influencing the
causality between independent and dependent variables [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>We recognize following potential threats:</title>
      <p>Knowledge of Java Especially the performance metrics
to answer RQ1 and RQ2 would be affected. Since we
expect a mostly homogeneous group of participants with
this regard and we randomize the participants among
the groups, we do not consider this as problematic.
Questionnaires are conducted to support this assumption.
Experience with delegation pattern or AJava Similar
to the Java knowledge, we expect no risk from this aspect.
Differences in experience should not be present in large,
for this claim we use the questionnaires as well and
provide a proper introduction to the techniques before
the actual experiment.</p>
      <p>Tooling support Tools, such as IDEs, facilitate the
development and, hence, entail the risk of actually measuring
the quality of the tools instead of the techniques to be
investigated in the experiment. Through minimizing the
tooling and providing the identical tooling to both groups,
we ensure that this does not affect our experiments.
Unfamiliar environment As a side effect, we force
the subjects into using an unfamiliar development
environment, which may be conceived a hindrance. To
address this, included an introduction phase in which each
subject can make herself or himself comfortable with the
environment. As this applies to both groups, however, this
should not impact the results.</p>
      <p>Absolute acceptance The performed acceptance
measurements are absolute and therefore not usable for a
comparison unless the same subject experiences both
techniques. We do not negate this finding. However, we
would like to note that we are not interested in
determining an absolute acceptance value and if one techniques
performs really bad or is dissatisfying in certain tasks,
we still should be able to notice a difference.
Small sample size The number of participants makes the
results unreliable in terms of significance. There is not
doubt about this risk, but we would like to note that the
exact indicators are only available after the execution of
the experiment. Furthermore, we employ multiple tasks
for this reason and perform the comparison for each
individually, but also in sum. When increasing the sample
by including more external participants, we see the risk
of create more heterogeneous groups endangering our
controlled variables.</p>
      <sec id="sec-5-1">
        <title>B. Threats to External Validity (Generalizability)</title>
        <p>Threats to external validity address the generalizability of
empirical research. For our study, the most important threats
to its generalizability are:</p>
        <p>Project size The software engineering challenges of
our project is several magnitudes less than in industrial
projects. Hence, the results can not be generalized easily.
The size is unfortunately naturally limited by the available
time of the participants in a laboratory experiment. We
tried to overcome this problem by embedding different
types of implementation challenge (see Table I) to cover
multiple application scenarios.</p>
        <p>Academic context This experiment features an artificially
created project which differs from real-world projects.
Again, we refer to the different implementation
challenges we employed. Beyond, only repetitions in industry
are able to tackle this threat.</p>
        <p>
          Non-professionals We incorporated students in our
experiment which might not be a good replacement for
actual professionals. To address this issue, we refer
to [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] for reasons why we think that choice restricts
the generalization only minimally.
        </p>
        <p>Choice of techniques We used Java, AJava and the
delegation pattern to compare pervasive MDE to integrating
handcrafted code. One might argue that the delegation
pattern is especially complicated and using other patterns
would yield better results for the approach of handcrafted
code. Or that Java might be especially unsuited for this
topic in general. As Java is one of the most popular
languages for professional software engineering and the
delegation pattern is very popular for integrating
generated and handcrafted code, we assume that both reflect
the state of the art appropriately.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>V. PRELIMINARY RESULTS</title>
      <p>We conducted a pilot study with 13 participants, out of
which 7 employed the delegation pattern and 6 employed
AJava to developed the BallFinder robot software.
Interesting findings are illustrated in Figure 3 and discussed below.</p>
      <p>Regarding solution finding time, the AJava group solved
their tasks in a median of 39 minutes compared to 64 minutes
required by the delegation pattern group. With respect to
programming time, the AJava group required a median of
30 minutes compared to 55 minutes of the delegation pattern
group. With p-values of less than 1%, both H1.10 and H1.20
hence can be rejected for the pilot study. For the variables of
error resolving time and testing time, we received indifferent
results without relevant significance, hence we cannot refute
the related hypotheses. The same holds for the number of
code generation iterations: On average, the AJava group
generated code 15 times, whereas the delegation pattern group
on average generated code 20 times.</p>
      <p>Developing with AJava led to a consistent number of
between 11 and 14 test errors, whereas participants of the
delegation pattern group finished with a wide range of between
1 and 14 errors. Measuring the amount of test errors per
minute produced similar diversity, hence H2.20 and H2.30
cannot be rejected either.</p>
      <p>The participants’ assessment on the different techniques’
convenience generally seem favor using AJava: 83% of the
participants of this group consider AJava practical, whereas
only 43% of the delegation pattern group participants consider
that practical. As the results are almost significant only, we
also cannot refute H3.10. Considering the overhead imposed
by the respective techniques, 50% of the AJava group’s
participants consider AJava not introducing overhead at all, whereas
Solution finding time</p>
      <p>Programming finding time
Code generation iterations
Test errors
Practicality (low to high)
Time saving (low to high)
57% of the delegation pattern group consider it introducing
large overhead. Significance of the results implies that H3.21
can be accepted. Regarding the findings of time saving with
any of the techniques and demand for tooling, we did not
receive significant results or notable biases in the results.
Hence we cannot refute the related hypotheses.</p>
    </sec>
    <sec id="sec-7">
      <title>VI. RELATED STUDIES</title>
      <p>
        Our study design basically compares two “programming”
languages. From this vantage point, several related studies
have been conducted. The study presented in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], for instance,
compares “tangible” graphical programming languages where
the resulting programs were executed on a real robot platform.
The authors do not investigate the differences in abstraction
between different languages.
      </p>
      <p>
        The authors of [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] compare seven GPLs regarding
runtime efficiency, loading efficiency, program length, and other
factors. They also do not compare their levels of abstraction.
      </p>
      <p>
        Other studies investigate the introduction of MDE in
industrial contexts to identify obstacles [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] or challenges [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] for
its adoption [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. They do, however, not directly investigate
the acceptance of pervasive MDE over the programming
techniques established at the respective companies.
      </p>
      <p>
        There also are various studies on different modes of (virtual)
robot programming, such as the experiment reported in [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ],
which are related to our experiment, but not to the investigated
objects.
      </p>
      <p>Overall, to the best of our knowledge, there is only little
related work on comparing pervasive MDE to providing system
behavior via integration of handcrafted GPL code.</p>
    </sec>
    <sec id="sec-8">
      <title>VII. CONCLUSION</title>
      <p>We have presented the design of a study on the acceptance
and effects of pervasive model-driven engineering using action
languages to interface GPL code artifacts. In the proposed
study, two groups of participants will develop the behavior
of a robot fetching balls in a simulation environment using
MontiArcAutomaton with either embedded Java/P or by
integrating handcrafted artifacts. We record the study sessions
and instrument these with quality assurance infrastructure,
and surveys. Based on this data, we aim to gain a better
understanding about the impact of using action languages in
modeling activities. Preliminary results tend to favor pervasive
MDE with respect to efficiency and convenience. However,
these results are based on a small sample size and must be
investigated with larger groups of participants.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>France</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , “
          <article-title>Model-driven Development of Complex Software: A Research Roadmap,” Future of Software Engineering (FOSE '07)</article-title>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>54</lpage>
          , may
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Völter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Stahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bettin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Haase</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          , and
          <string-name>
            <surname>B. von Stockfleth</surname>
          </string-name>
          ,
          <source>Model-Driven Software Development: Technology</source>
          , Engineering, Management, ser.
          <source>Wiley Software Patterns Series</source>
          . Wiley,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>T.</given-names>
            <surname>Greifenberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Hölldobler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kolassa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Look</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Mir Seyed Nazari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Navarro</given-names>
            <surname>Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Plotnikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Reiß</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Roth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schindler</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</surname>
          </string-name>
          , “
          <article-title>Integration of Handwritten and Generated Object-Oriented Code,” in Model-Driven Engineering and Software Development Conference (MODELSWARD'15), ser</article-title>
          .
          <source>CCIS</source>
          , vol.
          <volume>580</volume>
          . Springer,
          <year>2015</year>
          , pp.
          <fpage>112</fpage>
          -
          <lpage>132</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A. N.</given-names>
            <surname>Meyer</surname>
          </string-name>
          , T. Fritz,
          <string-name>
            <given-names>G. C.</given-names>
            <surname>Murphy</surname>
          </string-name>
          , and T. Zimmermann, “
          <article-title>Software developers' perceptions of productivity,”</article-title>
          <source>in Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Roth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</surname>
          </string-name>
          , “
          <article-title>Language and Code Generator Composition for Model-Driven Engineering of Robotics Component &amp; Connector Systems</article-title>
          ,
          <source>” Journal of Software Engineering for Robotics</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <article-title>Modeling with UML: Language, Concepts</article-title>
          ,
          <source>Methods</source>
          . Springer International,
          <year>July 2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>H.</given-names>
            <surname>Krahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Völkel</surname>
          </string-name>
          , “
          <article-title>MontiCore: a Framework for Compositional Development of Domain Specific Languages,”</article-title>
          <source>International Journal on Software Tools for Technology Transfer (STTT)</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>353</fpage>
          -
          <lpage>372</lpage>
          ,
          <year>September 2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Aldrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Chambers</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Notkin</surname>
          </string-name>
          , “
          <article-title>ArchJava: connecting software architecture to implementation</article-title>
          .” in International Conference on Software Engineering (ICSE)
          <year>2002</year>
          . ACM Press,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Haber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Look</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Navarro</given-names>
            <surname>Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Mir Seyed Nazari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Völkel</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</surname>
          </string-name>
          , “
          <article-title>Integration of Heterogeneous Modeling Languages via Extensible and Composable Language Components</article-title>
          ,”
          <source>in Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Schulze</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</surname>
          </string-name>
          , “
          <article-title>Teaching agile model-driven engineering for cyber-physical systems</article-title>
          ,”
          <source>in Proceedings of the 39th International Conference on Software Engineering: Software Engineering and Education Track</source>
          , ser. ICSE-SEET '
          <fpage>17</fpage>
          .
          <string-name>
            <surname>Piscataway</surname>
          </string-name>
          , NJ, USA: IEEE Press,
          <year>2017</year>
          , pp.
          <fpage>127</fpage>
          -
          <lpage>136</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Heim</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. M. S.</given-names>
            <surname>Nazari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</surname>
          </string-name>
          , “
          <article-title>Modeling Robot and World Interfaces for Reusable Tasks</article-title>
          ,” in
          <source>2015 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1793</fpage>
          -
          <lpage>1798</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          ,
          <string-name>
            <surname>Domain-Specific Languages</surname>
          </string-name>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>V. R.</given-names>
            <surname>Basili</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Weiss</surname>
          </string-name>
          , “
          <article-title>A methodology for collecting valid software engineering data</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>728</fpage>
          -
          <lpage>738</lpage>
          ,
          <year>Nov 1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>L.</given-names>
            <surname>Hugues</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Bredeche</surname>
          </string-name>
          , “
          <source>Simbad: An Autonomous Robot Simulation Package for Education and Research,” in Proceedings of the 9th International Conference on Simulation of Adaptive Behavior (SAB)</source>
          ,
          <source>ser. Lecture Notes in Computer Science</source>
          , vol.
          <volume>4095</volume>
          . Berlin, Heidelberg: Springer Berlin Heidelberg,
          <year>2006</year>
          , pp.
          <fpage>831</fpage>
          -
          <lpage>842</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M. S.</given-names>
            <surname>Horn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. T.</given-names>
            <surname>Solovey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Crouser</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Jacob</surname>
          </string-name>
          , “
          <article-title>Comparing the use of tangible and graphical programming languages for informal science education</article-title>
          ,”
          <source>in Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. ACM</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>975</fpage>
          -
          <lpage>984</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>L.</given-names>
            <surname>Prechelt</surname>
          </string-name>
          , “
          <article-title>An empirical comparison of seven programming languages</article-title>
          ,
          <source>” Computer</source>
          , vol.
          <volume>33</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>29</lpage>
          ,
          <year>Oct 2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>M.</given-names>
            <surname>Staron</surname>
          </string-name>
          , “
          <article-title>Adopting model driven software development in industry-a case study at two companies,” in MoDELS</article-title>
          , vol.
          <volume>6</volume>
          . Springer,
          <year>2006</year>
          , pp.
          <fpage>57</fpage>
          -
          <lpage>72</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>P.</given-names>
            <surname>Baker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Loh</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Weil</surname>
          </string-name>
          , “
          <article-title>Model-driven engineering in a large industrial context - motorola case study</article-title>
          ,
          <source>” Model Driven Engineering Languages and Systems</source>
          , pp.
          <fpage>476</fpage>
          -
          <lpage>491</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hutchinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rouncefield</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          , “
          <article-title>Model-driven engineering practices in industry</article-title>
          ,”
          <source>in Proceedings of the 33rd International Conference on Software Engineering. ACM</source>
          ,
          <year>2011</year>
          , pp.
          <fpage>633</fpage>
          -
          <lpage>642</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>C. S.</given-names>
            <surname>Tzafestas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Palaiologou</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Alifragis</surname>
          </string-name>
          , “
          <article-title>Virtual and remote robotic laboratory: Comparative experimental evaluation,” IEEE Transactions on education</article-title>
          , vol.
          <volume>49</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>360</fpage>
          -
          <lpage>369</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>C.</given-names>
            <surname>Wohlin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Runeson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Höst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. C.</given-names>
            <surname>Ohlsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Regnell</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wessln</surname>
          </string-name>
          , Experimentation in Software Engineering. Springer Publishing Company, Incorporated,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>D.</given-names>
            <surname>Falessi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Juristo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Wohlin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Turhan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Münch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jedlitschka</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Oivo</surname>
          </string-name>
          , “
          <article-title>Empirical software engineering experts on the use of students and professionals in experiments,”</article-title>
          <source>Empirical Software Engineering</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>