<?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">Towards Automated Testing of Abstract Syntax Specifications of Domain-Specific Modeling Languages</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Daniel</forename><forename type="middle">A</forename><surname>Sadilek</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">Humboldt-Universität zu Berlin</orgName>
								<address>
									<addrLine>Rudower Chaussee 25</addrLine>
									<postCode>12489</postCode>
									<settlement>Berlin</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Stephan</forename><surname>Weißleder</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">Humboldt-Universität zu Berlin</orgName>
								<address>
									<addrLine>Rudower Chaussee 25</addrLine>
									<postCode>12489</postCode>
									<settlement>Berlin</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Towards Automated Testing of Abstract Syntax Specifications of Domain-Specific Modeling Languages</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">E9FF16292AEBBDAACAEC8FDD81712DB0</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T01:10+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>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The abstract syntax of domain-specific modeling languages (DSMLs) can be defined with metamodels. Metamodels can contain errors. Nevertheless, they are not tested systematically and independently of other artifacts like models or tools depending on the metamodel. Consequently, errors in metamodels are found late-not before the dependent artifacts have been created. Since all dependent artifacts must be adapted when an error is found, this results in additional error correction effort. This effort can be saved if the metamodel of a DSML is tested early. In this paper, we argue for metamodel testing and propose an approach that is based on understanding a metamodel as a specification of a set of models. Example models are given by a user to test if the set of models specified by a metamodel is correct. We present an example from the domain of earthquake detection to clarify our idea.</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>Metamodels are a common way to describe the structure of domain-specific modeling languages (DSMLs). Tools for a DSML like editors, interpreters, or debuggers base on this metamodel. Like every other artifact, metamodels contain errors (e.g. wrong specification of classes or associations between them). When errors in a metamodel are found late, dependent models and tools must be adapted. Hence, detecting errors in a metamodel early can save time and money.</p><p>In software engineering, testing is the primary means to detect errors. In this paper, we advocate testing metamodels and present an approach for automated testing based on the specification of positive and negative example models.</p><p>In Sec. 2, we describe how to specify metamodel tests with example models and we describe how to execute them in Sec. 3. In Sec. 4, we substantiate our approach with an exemplary development process of a simple DSML. We discuss related work in Sec. 5. We conclude and give an overview of future work in Sec. 6.</p><p>2 How to Test Metamodels?</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Example Models and Test Models</head><p>How can a metamodel be tested? To answer this question, we have to consider the nature of metamodels. A metamodel is the specification of a set of possible or desired models. What does it mean that a metamodel contains an error? It means that the specified set of models either contains a model that is undesired or that it does not contain a model that is desired.</p><p>The set of models specified by a metamodel is a subset of all instances of all possible metamodels expressible as instances of the meta-metamodel used<ref type="foot" target="#foot_0">1</ref> . Figure <ref type="figure" target="#fig_1">1</ref> shows an Euler diagram visualizing this idea. To test a set specification, one could give all elements of the set and check if the set does contain these and only these elements. Since metamodels generally specify an infinite set of models, this is impossible. Instead, representative elements can be given. Each representative element can be either an element or not an element of the set.  In the following, we describe the relationship between such representative elements and a Metamodel Under Test (MMUT).</p><p>For metamodels, we call representative elements example models. Example models that are elements of the set of desired models should be correct instances of the MMUT-hence we call them positive example models (Fig. <ref type="figure" target="#fig_1">1a</ref>). Example models that are not elements of the set of desired models should not be instances of the MMUT-we call them negative example models (Fig. <ref type="figure" target="#fig_1">1b</ref>).</p><p>Single example models can be anywhere inside or outside the set specified by the MMUT. But, for high discriminatory power of the tests, we propose to give example models as pairs of a positive and a negative example model that differ only in one aspect, for example by an attribute value or by the existence of some object or reference. The positive/negative example model pairs then demarcate the boundary of the set specified by the MMUT (Fig. <ref type="figure" target="#fig_1">1c</ref>). The more example model pairs are given by a user, the more precise the boundary is demarcated. This resembles the common testing technique of boundary testing <ref type="bibr" target="#b2">[Bei90]</ref>.</p><p>A positive example model and its negative counterpart differ only slightly. If a user has to specify them separately, this introduces a lot of redundancy. Therefore, we propose to specify them in only one test model. A test model is a positive example model extended with test annotations that describe which model elements have to be added or removed to make it a negative example model. Thus, a test model allows a user to specify a positive/negative example model pair without redundancy.</p><p>We propose to allow the user to annotate more than one model element. Then, one test model can describe one positive and multiple negative example models (Fig. <ref type="figure" target="#fig_1">1d</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Test Metamodel</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.1">Motivation for an Additional Metamodel</head><p>Technically, models cannot be created and stored without a corresponding metamodel. Which metamodel should be used for test models? Can we use an existing one, for example the MMUT or the metamodel of UML object diagrams?</p><p>Unfortunately, the MMUT cannot be used. The reason is that the MMUT does not allow to express test annotations. Also, a user may want to create test models before the MMUT exists-for example, to sketch how instances may look like or to follow a test first approach like in test-driven development <ref type="bibr" target="#b1">[Bec02]</ref>.</p><p>Test models describe instances of the MMUT. UML object diagrams can be used to describe instances of arbitrary classes. Could they be used to describe instances of the MMUT's classes? Unfortunately, the metamodel for UML object diagrams does not contain elements to express test annotations, i.e. there is no way to describe a combination of several example models in one object diagram. Also, UML object diagrams explicitly reference the classes that the modeled objects instantiate. This again forbids to create test models before the MMUT exists.</p><p>Therefore, another metamodel for test models is needed. We call it test metamodel. Figure <ref type="figure" target="#fig_2">2</ref> shows the test metamodel we propose and other artifacts of our approach: A test model is an instance of the test metamodel and it specifies one positive example model  and an arbitrary number of negative example models. A test model references elements of the MMUT by name (explained below). For each MMUT, there can be various test models that are all instances of the test metamodel. The test metamodel is fixed, i.e. test models for different MMUTs are all instances of the same test metamodel.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.2">Structure of the Test Metamodel</head><p>Figure <ref type="figure" target="#fig_3">3</ref> shows the test metamodel: Instances of classes are given with their class name and an optional object name. An instance can have an arbitrary number of attributes. Each attribute has a name and a value, which is given generically as a string literal. Instances can be connected by references. Reference ends can be named. The name must match an attribute of the instance's class at the opposite end of the reference.</p><p>All model elements (instances, attributes, and references) have an existence specification that can be arbitrary (default value), enforced, or forbidden. All model elements with existence specification arbitrary or enforced are part of the specified positive example model. If an element is enforced, removing this element from the model leads to a negative example model. If an element is forbidden, it is not part of the positive example model and adding it leads to a negative example model. If multiple elements in a test model are enforced or forbidden, one test model describes multiple negative example models. If two or more elements should be enforced or forbidden conjunctionally, i.e. they should describe just one negative example model, then they can be connected by a conjunction.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Test Execution</head><p>In this section, we briefly describe how test models are used to test metamodels. The test execution consists of 5 steps:</p><p>1. Resolve references to the MMUT.</p><p>The test model references the elements of the MMUT by name. In the first step, it is checked whether all references can be resolved. If a reference of a not forbidden element cannot be resolved, the test fails.</p><p>2. Derive example models from the test model.</p><p>Each test model specifies one positive example model and multiple negative example models. The positive example model is derived from the test model by leaving out all forbidden elements. A negative example model is derived for each conjunction in the test model and for each enforced or forbidden element that is not connected to a conjunction. Let e be a conjunction of elements or a single element for which a negative example model is to be derived. Then all forbidden elements except e are left out when constructing the model. If e itself is a forbidden element, it is added to the negative example model; if e is enforced, it is left out.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>3.</head><p>For all example models: Create an instance of the MMUT according to the example model.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>4.</head><p>For all example models: Check multiplicities and constraints of the created MMUT instance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>5.</head><p>For all example models: Decide test outcome.</p><p>If the current example model is a positive one, constraints must not be violated in the previous steps; if it is a negative one, at least one constraint must be violated.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Example: Testing the Metamodel of a Stream-Oriented DSML</head><p>In this section, we describe the first step of an exemplary iterative development process of a simple stream-oriented DSML for the configuration of an earthquake detection algorithm: A sensor source generates a data stream that can be filtered and that finally streams into a sink. For this example, we use the prototypical implementation of our approach: MMUnit (http://mmunit.sourceforge.net).</p><p>The development of the stream-oriented DSML involves a language engineer and an expert of the domain, a seismologist. As a first step, seismologist and language engineer discuss some example uses of the new language. For the beginning, they concentrate on one specific detection algorithm called STA/LTA <ref type="bibr" target="#b10">[Ste77]</ref>. They sketch their ideas in an informal ad hoc concrete syntax. Figure <ref type="figure" target="#fig_5">4</ref> shows the resulting model they have drawn on a whiteboard.  The intention behind this model is as follows: Sensor readings from an acceleration sensor are piped through a filter that realises the STA/LTA detection. The filter forwards sensor readings that are considered to be the beginning of an earthquake and blocks all others. The frequency of sensor readings is limited by another filter, detection time filter, before they stream into a stream sink that generates an earthquake detection warning whenever a sensor reading streams in, for example by activating a warning horn. The filters and the sink contain attributes influencing their behavior.</p><p>The language engineer prefers a test-driven development. Therefore, he creates a metamodel test before he creates the metamodel. For this, he derives a test model from the model he and the seismologists sketched on the whiteboard. The result is shown in Fig. <ref type="figure" target="#fig_6">5</ref>. <ref type="foot" target="#foot_1">2</ref>The four instances on the left reproduce the model sketch. The positive example model specified with the test model consists of only these objects. The test model also specifies three negative example models: (1) Each sink must have a reference to a stream source. Therefore, the language engineer sets the existence specification of the reference from oWarning to oTimeFilter to "enforced". This describes a negative example model in which the reference is missing. (2) Seismologist and language engineer discussed but discarded the idea of a motion detector filter. To ensure that the final metamodel does not support a motion detector, the language engineer adds the forbidden instance oMotionDetector. The corresponding negative example model contains this additional instance. (3) Each source must be referenced by exactly one sink. To test this, the language engineer adds the forbidden instance oWarning2. Again, the corresponding negative example model contains this additional instance. After specifying the test model, the language engineer creates a metamodel for the streamoriented language (Fig. <ref type="figure" target="#fig_7">6</ref>). In order to execute the tests specified by the test model, the language engineer uses MMUnit to generate corresponding JUnit test cases. The generated JUnit tests use a library that implements the test process as described in Sec. In model-based testing, many approaches use models as specifications to generate test cases for a system under test (SUT) [NF06, PP05, OA99, AO00]. The tests check if the SUT satisfies all constraints of the model. The models themselves are assumed to be correct, whereas we want to test the correctness of (meta-)models.</p><p>Tests for model transformations are handled in [Küs06, WKC06, BFS + 06]. They all assume that the used metamodels are correct and they focus on testing the transformation process between them. Our approach is complementary to their approaches as it tests the metamodels they assume to be correct.</p><p>In grammar testing <ref type="bibr" target="#b9">[Pur72]</ref>, character sequences are used to test a developed grammar <ref type="bibr" target="#b5">[Läm01]</ref>. This generic approach permits to define both words that conform to the grammar and words that do not. While our metamodel also allows to generically describe instances, we target metamodels, not grammars.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusion and Future Work</head><p>Conclusion. Metamodels play an important role for the definition of the abstract syntax of a DSML. In this paper, we argued that metamodels should be tested systematically. We proposed an approach for testing metamodels and exemplified it with tests of a metamodel for a stream-oriented DSML. Our approach is based on understanding metamodels as set specifications. Our idea is to use example models that may lie either inside or outside of the set specified by the metamodel.</p><p>We already did a prototypical implementation of our approach, which we sketched shortly in this paper. It is based on the Eclipse Modeling Framework (EMF). The prototype is called MMUnit (http://mmunit.sourceforge.net) and provides an editor for test models and can generate JUnit tests from test models. Such a generated JUnit test reads a test model and checks if the described positive example model is an instance of the MMUT and if the described negative example models are not instances of the MMUT. If both checks pass, the test succeeds; otherwise it fails.</p><p>Metamodel tests are possible. They can be specified quite easily. By the integration with JUnit, metamodel tests can be executed automatically. Thus, metamodel tests can be integrated into existing software development processes (e.g. metamodel tests can be executed as part of a continuous integration build).</p><p>Future work. Currently, our implementation tests classes, attributes, and associations of a metamodel together with their multiplicities. Usually, a constraint language like OCL is used to constrain the set of possible models. We plan to extend our implementation to support the evaluation of OCL constraints during test execution.</p><p>Another restriction in our current approach is that a test model always describes exactly one positive example model. We think that one may also want to describe multiple positive example models that differ only slightly or one may also want to describe negative example models only. For this, we could extend the test metamodel with an attribute that states whether the test model describes a positive or a negative example model as the base case. Furthermore, we could add another enumeration value for existence specifications that allows for specifying that a model element can be removed or left in the example model without influencing whether the example model is a positive or a negative one.</p><p>We left open whether metamodel tests pay off economically? To answer this question, systematic case studies are necessary.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Metamodel as a set specification; example models as elements.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Relations between artifacts of our approach.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: The test metamodel.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: A first whiteboard sketch of a model expressed in a stream-oriented DSML.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: Screenshot of the test model for the earthquake detection metamodel. (The test model editor is part of our prototype implementation MMUnit.)</figDesc><graphic coords="7,124.80,135.76,357.17,161.94" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: A proposal for a domain-specific metamodel.</figDesc></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">We consider metamodels that are instances of MOF.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">The notation we use for test models is similar to that of UML object diagrams. Additionally, enforced elements are marked with a thick border, forbidden elements with a dashed one.</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgments. We would like to thank the reviewers for valuable comments. This work was supported by grants from the DFG (German Research Foundation, research training group METRIK).</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Using UML Collaboration Diagrams for Static Checking and Test Generation</title>
		<author>
			<persName><forename type="first">Aynur</forename><surname>Abdurazik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeff</forename><surname>Offutt</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">UML 2000</title>
				<meeting><address><addrLine>York, UK</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
		<respStmt>
			<orgName>University of</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Test Driven Development: By Example</title>
		<author>
			<persName><forename type="first">Kent</forename><surname>Beck</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002-11">November 2002</date>
			<publisher>Addison-Wesley Professional</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Software Testing Techniques</title>
		<author>
			<persName><forename type="first">B</forename><surname>Beizer</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1990">1990</date>
			<publisher>John Wiley &amp; Sons, Inc</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Metamodel-based Test Generation for Model Transformations: an Algorithm and a Tool</title>
		<author>
			<persName><surname>Bfs + ; Erwan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Franck</forename><surname>Brottier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jim</forename><surname>Fleurey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Benoit</forename><surname>Steel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yves</forename><surname>Baudry</surname></persName>
		</author>
		<author>
			<persName><surname>Le Traon</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ISSRE &apos;06: Proceedings of the 17th International Symposium on Software Reliability Engineering</title>
				<meeting><address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="85" to="94" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Definition and validation of model transformations</title>
		<author>
			<persName><forename type="first">M</forename><surname>Jochen</surname></persName>
		</author>
		<author>
			<persName><surname>Küster</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software and Systems Modeling</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="233" to="259" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Grammar Adaptation</title>
		<author>
			<persName><forename type="first">Ralf</forename><surname>Lämmel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">FME&apos;01</title>
				<editor>
			<persName><forename type="first">Nuno</forename><surname>José</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><surname>Oliveira</surname></persName>
		</editor>
		<editor>
			<persName><surname>Zave</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2001">2021. 2001</date>
			<biblScope unit="page" from="550" to="570" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Automatic Test Generation: A Use Case Driven Approach</title>
		<author>
			<persName><forename type="first">Clementine</forename><surname>Nebut</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Franck</forename><surname>Fleurey</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. Softw. Eng</title>
		<imprint>
			<biblScope unit="volume">32</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="140" to="155" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Generating Tests from UML Specifications</title>
		<author>
			<persName><forename type="first">Jeff</forename><surname>Offutt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Aynur</forename><surname>Abdurazik</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">UML&apos;99 -The Unified Modeling Language</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<meeting><address><addrLine>Berlin / Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1999">1999</date>
			<biblScope unit="volume">1723</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Abstractions for Model-Based Testing</title>
		<author>
			<persName><forename type="first">Wolfgang</forename><surname>Prenninger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Pretschner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Electr. Notes Theor. Comput. Sci</title>
		<imprint>
			<biblScope unit="volume">116</biblScope>
			<biblScope unit="page" from="59" to="71" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">A sentence generator for testing parsers</title>
		<author>
			<persName><forename type="first">Paul</forename><surname>Purdom</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">bit</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="366" to="375" />
			<date type="published" when="1972">1972</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Real time detection and location of local seismic events in central California</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">W</forename><surname>Stewart</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Bull. Seism. Soc. Am</title>
		<imprint>
			<biblScope unit="volume">67</biblScope>
			<biblScope unit="page" from="433" to="452" />
			<date type="published" when="1977">1977</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Verifying Metamodel Coverage of Model Transformations</title>
		<author>
			<persName><forename type="first">Junhua</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Soon-Kyeong</forename><surname>Kim</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Carrington</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ASWEC&apos;06</title>
				<imprint>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

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