<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">ModelDefenders: A novel gamified mutation testing game for model-driven engineering</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Felix</forename><surname>Cammaerts</surname></persName>
							<email>felix.cammaerts@kuleuven.be</email>
							<affiliation key="aff0">
								<orgName type="department">Research Center for Information System Engineering</orgName>
								<orgName type="institution" key="instit1">Leuven</orgName>
								<orgName type="institution" key="instit2">KU</orgName>
								<address>
									<country key="BE">Belgium</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Monique</forename><surname>Snoeck</surname></persName>
							<email>monique.snoeck@kuleuven.be</email>
							<affiliation key="aff0">
								<orgName type="department">Research Center for Information System Engineering</orgName>
								<orgName type="institution" key="instit1">Leuven</orgName>
								<orgName type="institution" key="instit2">KU</orgName>
								<address>
									<country key="BE">Belgium</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">ModelDefenders: A novel gamified mutation testing game for model-driven engineering</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">BF3ACB88039C1E713F0225317B21BDB1</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T16:59+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Mutation testing</term>
					<term>MDE</term>
					<term>Education M. Snoeck) 0000-0002-0037-3865 (F. Cammaerts); 0000-0002-3824-3214 (M. Snoeck)</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Recently, there has been a surge in Model-Driven Engineering (MDE), where code is automatically generated from a model. While this has certainly enabled non-technical people to become something of a programmer, it doesn't necessarily make them good testers or good modelers. In mutation testing syntactic variations (mutants) are created from the source code and run against a test suite. Mutants that pass all the test cases in the suite are called alive, while mutants that fail are called dead. Good testers are able to develop test suites that kill all mutants. This can also be applied to MDE, where the mutants are created on the models used for code generation. This paper presents a gamified approach for mutation testing on models and discusses the specific challenges and caveats encountered when defining mutants and setting up such a gamified approach.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Mutation testing is a code-based testing technique in which syntactic deviations of the system under test (SUT) are generated, under the assumption that programmers write near-correct code. The mutants are run against the test suite used for the SUT. Mutants that pass all test cases are said to be alive, while mutants that fail one or more test cases are said to be dead. The ratio of live mutants gives an indication of how well the SUT has been tested. The living mutants can be used as feedback for the programmer, as they are different from the SUT, but have still managed to pass all the test cases, indicating a possible incomplete testing of the SUT or required changes to the code.</p><p>Mutation testing can also be applied to MDE, in two different ways. A first approach is to create mutants on the generated code to check whether the transformations work correctly <ref type="bibr" target="#b0">[1]</ref>. A second approach is to create mutants on the models. Here, deviations in the modelling constructs of a model cause different outputs of the generated source code <ref type="bibr" target="#b1">[2]</ref>. Since our focus is on improving the modelling skills of non-technical students, we will concentrate on the latter approach in this paper with the goal of proposing a gamified educational tool. This paper presents ModelDefenders, a gamified approach to introducing mutation testing in MDE. ModelDefenders is intended to be used as an educational tool where students learn to become better testers and modellers by evaluating and creating mutants on these models.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Related work</head><p>A similar gamified approach, as the one being introdued in this paper, has been developed for code-based mutation testing, this gamified approach is called CodeDefenders <ref type="bibr" target="#b2">[3]</ref> and was the main source of inspiration for this paper. CodeDefenders uses the same game mechanics that we will use. CodeDefenders also aims to teach novice testers how to adequately test a software program. Research has shown that CodeDefenders is well received by students and has positive learning effects, with students performing steadily better <ref type="bibr" target="#b3">[4]</ref>. It has also been found that the test suites and mutants developed within the game are stronger than those from automated tools <ref type="bibr" target="#b4">[5]</ref>.</p><p>For the implementation of ModelDefenders, the MERODE MDE approach was chosen <ref type="bibr" target="#b5">[6]</ref>. The method is supported by a modelling tool that provides different levels of support for developing models <ref type="bibr" target="#b6">[7]</ref> and a companion prototyper that allows students to experiment with their models <ref type="bibr" target="#b7">[8]</ref> which includes a feature that provides students with feedback on their manual actions <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b9">10]</ref>. The availability of a code generator makes a good basis for implementing a model defender game. MERODE is actively being taught in two modelling courses in two universities, which also provides opportunities for experimental evaluation.</p><p>This paper presents the dynamics of the ModelDefenders tool, specifically for the artifacts used in the MERODE MDE approach. It is explained how test cases and mutants can be defined for those artefacts, and how these developed test cases and mutants can be used to engage students in the practice of modelling and testing in a gamified approach. We attempt to formulate an answer to the following research questions: RQ1. How can test cases be defined on artefacts used within the MERODE MDE approach (i.e.</p><p>Finite state machines and class diagrams)?</p><p>RQ2. How can syntactic changes (mutants) be defined on artefacts within the MERODE MDE approach (i.e. Finite state machines and class diagrams)?</p><p>RQ3. How can these test cases and mutants provide a gamified approach to teach students the practice of software testing and modelling?</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Defining test cases</head><p>In code-based testing approaches, test cases are usually written in the same programming language as the SUT. In MDE, the modelling language constructs are usually only used to develop the model, without the ability to define test cases using the same modelling constructs. Therefore, it is necessary to properly define how test cases should be defined for the different artefacts in MDE. The artefacts used in the MERODE MDE approach are a class diagram (CD) and statecharts that model the dynamic behaviour of the object types (OT). MERODE uses a subset of statecharts, namely finite state machines (FSM).  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Finite state machines</head><p>When defining a test case for an FSM, an execution sequence and an expected result should be provided. The execution sequence is a series of events that are executed sequentially on the FSM. The events in the test case should all be present in the FSM's alphabet. The result of the test case is a state in the FSM, or the error state if the execution sequence cannot be fully executed on the FSM. In the Patient model (Figure <ref type="figure" target="#fig_0">1</ref>), the sequence of events MEcrPatient, upgrade, upgrade, downgrade would place the patient in the lowPriority state. While MEcrPatient, upgrade, operate is not possible as patient cannot be operated in the lowPriority state. The expected result is therefore an error state.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Class diagram</head><p>Similarly, when defining a test case on a CD, an execution sequence and an expected result should be provided. However, in a CD the sequence constraints are less explicit than in an FSM as there are no explicitly modelled states. Nevertheless, the sequence of instantiating and removing objects in the CD can be considered as an execution sequence. For example, an object p1 of Person must first be created before it can be removed. The expected outcome of such a sequence of events is either success or failure. Success if the entire sequence of events can be executed according to the multiplicities and relationships of the CD. Failure if one of the steps in the sequence is not possible at that point in the sequence, for example, deleting an object before it exists. Specific to MERODE is that the relationships between objects express an existential dependency (ED) relationship, where one of the objects is the master and the other is the dependent. ED means that the master object must exist before the dependent object can be created and that the master object cannot be deleted until all the child objects have been deleted. In addition, a dependent can only be related to one master object throughout its life. For example, consider the Tuxedo model (Figure <ref type="figure" target="#fig_1">2</ref>). Here Rental is dependent on Tuxedo and Person. This means that before a Rental can be initiated, there should already be a Tuxedo and a Person to which the Rental object can be associated.</p><p>When instantiating several objects of one OT, additional object pointers need to be provided to the events to identify the objects that are subject of the action. The minimum information needed is the identification of the object that is impacted by the action, as well as the identification of related objects via object pointers when a new object is created. Object pointers are given between square brackets [], and paramerters between round brackets (). An execution sequence for a CD might look like this crTuxedo[](Red): t1, crPerson[]('Felix'): p1, crRental[p1, t1]: r1. This test case instantiates a Tuxedo t1, a Person p1 and a Rental r1 which is dependent on Tuxedo t1 and Person p1. The expected result of this execution sequence would be success. Conversely, the execution sequence crTuxedo[](Red): t1, crRental[t1, p1]: r1, crPerson[]('Felix'): p1 would fail as the Person object must be created before the Rental object can be created. When taking into account the parameters of the object types as well, it is important to check whether the datatype of the given parameter matches with the data type of the MUT. If the parameter does not match, the test case is considered invalid.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Defining mutants</head><p>Mutation testing involves making small syntactic changes to the source code to create mutants, such as changing &lt; to ≤. These syntactic deviations are run against the test-set, and mutants that manage to pass all the test-cases in the test-set are an indication of bad or missing test-cases in the test-set. When defining such mutants in code-based approaches, it is important to note that these deviations usually keep the skeleton of the code the same (for example, using the same method calls, and classes keeping the same relationships to other classes). Similarly, when defining mutants for mutation testing of model-based approaches, it is important to clearly distinguish between what is considered to be the skeleton of the model and what parts can be mutated. This section therefore provides an overview of possible mutations.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">Finite state machines</head><p>When creating a mutant for an FSM, the states of the MUT must remain unchanged. Mutations can be modelled by changing the labels of transitions and thus the events that would trigger those transitions. It is also possible to add and remove transitions. In addition, the following constraints should be observed to ensure that the test cases remain executable on the mutant: (1) The mutated FSM must not contain any nondeterminism, as this would make the outcome of the test case nondeterministic. <ref type="bibr" target="#b1">(2)</ref> The mutated FSM must retain the names of the states as in the Model Under Test (MUT). Failure to do so would make it impossible to correctly verify the outcome of the test cases on the mutant.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">Class diagram</head><p>When creating a mutant for a CD, the OTs of the MUT must remain unchanged. Mutations can be modelled by changing the multiplicities of the relationships between OTs. It is also possible to add and remove relationships and changing the datatype of the parameters. In addition, when modelling a mutant for a CD, the following constraints should be observed to ensure that the test case remains executable on the mutant: (1) No cyclic dependencies can be introduced in the </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Gamification</head><p>To encourage students to develop mutants and test cases under the constraints mentioned above, a gamification approach can be used. This gamification approach is baptised ModelDefenders. In ModelDefenders, students are assigned one of two roles: attacker or defender. Defenders are tasked with creating test cases that consist of a sequence of events and an expected outcome (Section 3). The attacker is tasked with creating mutants on the models (CD and FSMs), according to the aforementioned rules (Section 4). Similar to mutation testing, the mutants (from the attacker) are run against the test cases (from the defender). A mutant that successfully passes all test cases is said to be alive, a mutant that fails at least one test case is said to be killed. If a mutant survives, the attacker gains one point, while if the defender's test cases have successfully killed a mutant, the defender gains one point.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.1.">Attackers</head><p>The attacker is given the MUT, which is either a CD or an FSM. Figure <ref type="figure" target="#fig_2">3</ref> shows an example of an FSM under test (top left). Below it is an overview of the test cases developed by the defender. The attacker can click on "View" to see the complete test case. This shows the full sequence of events from the defender and the expected outcome. At the top right, the attacker is given an editing area in which he can modify the MUT to model a mutant. Once the attacker is finished modelling the mutant, he can click on 'attack', which will run the current test cases against the mutant. If one of the test cases has a different outcome than the expected outcome for the mutant, the mutant is dead; if all the test cases have the expected outcome, the mutant is alive. On the bottom right the attacker is given an overview of the mutants that have previously been used as attack, including which are dead and which are alive. The attacker can click "View Killing Test" if the mutant is dead to see which of the tests the mutant failed. The attacker can click 'View' to see the mutant.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.2.">Defenders</head><p>The defender is also given the MUT, which is either a CD or an FSM, in the top-left corner (see Figure <ref type="figure" target="#fig_3">4</ref>). The defender can define test cases for this FSM in the top right pane. Here, the defender can add each of the possible events of the FSM one by one and specify the expected outcome state (i.e. a state of the FSM or an error). Once a test case is fully defined, the defender can add it to the test suite. Before the test case is actually added to the test suite, it is checked whether the expected outcome of the test case actually matches the outcome that would be expected from the FSM. If this is not the case, the test case is not added to the suite and the user is informed that his test case has been incorrectly defined. Once the defender feels that he has fully developed the test suite, he can use it to defend against the mutants modelled by the attacker. These mutants are shown at the bottom left. Each mutant is labelled as dead or alive. The defender can look at the mutants to help define the test cases for the test suite. If a mutant is dead, the defender can also "view killing test" to see which of the test cases killed it.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.3.">Running test cases against a mutant</head><p>To check whether a mutant defined by an attacker is dead or alive, the defender's test cases are run against the mutant. If all the test cases have the same outcome on the mutant as on the MUT, the mutant is alive. If at least one test case has a different outcome on the mutant than on the MUT, the mutant is dead.</p><p>For FSMs it is quite straightforward to check the outcome of the test case on the mutant. The sequence of events can be run on the mutant, the state of the mutant after executing the last event of the test case is the outcome of the test case on the mutant. This result can be compared with the result on the MUT. As soon as one of the events of the sequence cannot be executed on the current state of the mutant, the resulting state of the mutant becomes the error state.</p><p>Even though, adhering to the constraints imposed for defining mutants of a FSM would mean there is no explicit focus on common mistakes when modelling FSMs, such as liveliness aspects, these are still implicitly present. Namely, if the MUT is valid (i.e. contains no backwards/forward inaccessible states and this no liveliness problems), a well-defined suite of test cases, would be able to detect any mutant that does introduce these mistakes. For example, in Figure <ref type="figure" target="#fig_0">1</ref>, a mutant that omits the upgrade transition between mediumPriority to highPriority, would be killed by the test case MEcrPatient, upgrade, upgrade, upgrade with as expected outcome highPriority. This should allow a defender to understand that the accessibility of each of the states should be tested. In this case this is done indirectly by defining a test case with an expected outcome state on the FSM. For an attacker this should allow to understand that the absence of such test cases allows for mutants to be designed which do not adhere to the liveliness properties of FSMs.</p><p>For CDs, it is not enough just to look at the order of the events; the parameters, object pointers and associations present in the MUT and the mutant should also be considered. For example, consider the Tuxedo case in figure <ref type="figure" target="#fig_1">2</ref>. A tuxedo can be associated with 0 or 1 rentals, while a person can be associated with 0 or many rentals. Considering only the order of events, a test case crTuxedo[](Red): t1, crTuxedo[](Blue): t2, crPerson[]('Felix'): p1, crRental[t1, p1]: r1, crRental(t2, p1): r1 with expected success, would be able to kill a mutant in which the relation between Tuxedo and Rental has been changed to a 0 to 1, since the last crRental is not possible on the mutant. However, this test case would not be able to detect a mutant in which the relationship between Tuxedo and Rental has been omitted. For this mutant the sequence of events crTuxedo[](Red): t1, crTuxedo[](Blue): t2, crPerson[]('Felix'): p1, crRental[t1, p1]: r1, crRental[t2, p1]: r1 would also be successful. To take the object pointers into account, one should look at each association to objects present in the event of a test case. Take for example the event crRental[t1, p1]: r1. This test case creates two relations, one between t1 and r1 and another between p1 and r1. For each of the OTs that are part of these relations (Tuxedo-Rental and Person-Rental), the following rules should be checked. X is the master OT, Y is the dependent OT.</p><p>• If there is a direct relation between X and Y in both the MUT and the mutant, then check with the multiplicity of the mutant if a new object of type Y can be created.</p><p>• If there is a direct relation between X and Y in the MUT, but not in the mutant, no check for this specific relation is needed. However, the other relations still need to be checked.</p><p>• If there is no direct relation between X and Y in the MUT, but there is one in the mutant, check whether there already exists an object of type X at that point in the event sequence and whether a new object of type Y can be instantiated on the mutant considering the multiplicity of the relationship.</p><p>Concerning parameters, it is sufficient to check whether at each object instantiation, the parameters used in the test cases are of the same data type as the parameter in the MUT at the same position. If the data types are the same, even though the values of the data might not match, then the mutant survives the test case. While if the data types are different, the test case kills the mutant.</p><p>We do acknowledge that most CDs are based on UML and do not restrict the relations into being existent-dependent relationships. Nonetheless, the way of defining mutants for CDs and defining test cases remains the same. The rules for comparing a test case against a mutant are now applicable to any X and Y which are directly related to each other.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Evaluation</head><p>ModelDefenders is currently under development. Mockups have been created in Figma<ref type="foot" target="#foot_0">1</ref> to understand the possible user interactions with the tool. These mockups are currently being translated into a web application. Once the development of ModelDefenders is complete, it can be evaluated. Firstly, the usability of the tool will be evaluated. Secondly, it will be assessed whether ModelDefenders motivates student to test more. Finally, we will assess whether this increased 'exploration' of models in turn increases students' understanding of modelling.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Finite state machine of the Patient model.</figDesc><graphic coords="3,124.18,84.19,346.91,56.10" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Class diagram of the Tuxedo model. The Tuxedo object type has as parameter color and the Person object type has as parameter name</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Attacker view when attacking an FSM as model under test.</figDesc><graphic coords="5,137.64,84.19,320.00,208.00" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Defender view when defending an FSM as model under test.</figDesc><graphic coords="6,137.64,84.19,320.00,208.00" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">https://www.figma.com/file/lJ6HVBH0hmJGz2RSTMQMc6/ModelDefenders?type=design&amp;node-id=0%3A1&amp;mode=design&amp;t=siCzSe9kKoYsK4oa-1</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>This paper is being funded by the ENACTEST Erasmus+ project number 101055874.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Mutation testing for java based on model-driven development</title>
		<author>
			<persName><forename type="first">A</forename><surname>Gonzalez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Luna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Bressan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2018 XLIV Latin American Computer Conference (CLEI)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="1" to="10" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Model-based mutation testing-approach and case studies</title>
		<author>
			<persName><forename type="first">F</forename><surname>Belli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">J</forename><surname>Budnik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hollmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Tuglular</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">E</forename><surname>Wong</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Science of Computer Programming</title>
		<imprint>
			<biblScope unit="volume">120</biblScope>
			<biblScope unit="page" from="25" to="48" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Teaching mutation testing using gamification</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Rojas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Fraser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">European Conference on Software Engineering Education (ECSEE)</title>
				<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Gamifying a software testing course with code defenders</title>
		<author>
			<persName><forename type="first">G</forename><surname>Fraser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Gambi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kreis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Rojas</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 50th ACM Technical Symposium on Computer Science Education</title>
				<meeting>the 50th ACM Technical Symposium on Computer Science Education</meeting>
		<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="571" to="577" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Code defenders: crowdsourcing effective tests and subtle mutants with a mutation testing game</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Rojas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">D</forename><surname>White</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">S</forename><surname>Clegg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Fraser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM 39th International Conference on Software Engineering (ICSE), IEEE</title>
				<imprint>
			<date type="published" when="2017">2017. 2017</date>
			<biblScope unit="page" from="677" to="688" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Enterprise information systems engineering, The MERODE Approach</title>
		<author>
			<persName><forename type="first">M</forename><surname>Snoeck</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">MERLIN: An Intelligent Tool for Creating Domain Models</title>
		<author>
			<persName><forename type="first">M</forename><surname>Snoeck</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Research Challenges in Information Science: 14th International Conference, RCIS 2020</title>
				<meeting><address><addrLine>Limassol, Cyprus</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2020">September 23-25, 2020. 2020</date>
			<biblScope unit="page" from="549" to="555" />
		</imprint>
	</monogr>
	<note>Proceedings 14</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Assessing the influence of feedback-inclusive rapid prototyping on understanding the semantics of parallel UML statecharts by novice modellers</title>
		<author>
			<persName><forename type="first">G</forename><surname>Sedrakyan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Poelmans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Snoeck</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information and Software Technology</title>
		<imprint>
			<biblScope unit="volume">82</biblScope>
			<biblScope unit="page" from="159" to="172" />
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Tescav: An approach for learning modelbased testing and coverage in practice</title>
		<author>
			<persName><forename type="first">B</forename><surname>Marín</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Alarcón</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Giachetti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Snoeck</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Research Challenges in Information Science: 14th International Conference, RCIS 2020</title>
				<meeting><address><addrLine>Limassol, Cyprus</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2020">September 23-25, 2020. 2020</date>
			<biblScope unit="page" from="302" to="317" />
		</imprint>
	</monogr>
	<note>Proceedings 14</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Investigating the effectiveness of model-based testing on testing skill acquisition</title>
		<author>
			<persName><forename type="first">F</forename><surname>Cammaerts</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Verbruggen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Snoeck</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IFIP Working Conference on The Practice of Enterprise Modeling</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="3" to="17" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
