<?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">Model-driven Configuration of Function Net Families in Automotive Software Engineering</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Cem</forename><surname>Mengi</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering</orgName>
								<orgName type="institution">RWTH Aachen University</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Önder</forename><surname>Babur</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering</orgName>
								<orgName type="institution">RWTH Aachen University</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Holger</forename><surname>Rendel</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering</orgName>
								<orgName type="institution">RWTH Aachen University</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Christian</forename><surname>Berger</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering</orgName>
								<orgName type="institution">RWTH Aachen University</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Model-driven Configuration of Function Net Families in Automotive Software Engineering</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">4044873DFCE5A83AA2095D793083C367</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T22:01+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>Recent efforts in the automotive domain to initiate a paradigm-shift from a traditional hardware-driven to a function-driven development process create new challenges to tackle. A hardware-driven variant handling mechanism will get more and more inappropriate. Instead, new concepts and methods are necessary to model and configure concrete systems. A software document which is used in the early phase of development is the so called function net model. Variability in function nets is captured implicitly and is strongly dependent on the hardware infrastructure, constraints are collected with informal annotations, and variants are generated manually. This results in a situation where function nets get too complex, time consuming and unsuitable for future standards. In this paper, we will present a model-driven approach for function nets to capture variability explicitly, to express formal constraints, and to generate concrete variants with the support of an automated configuration process. By this, it is possible to use the generated variants as skeletons for virtual prototyping, so that requirement specifications can be verified efficiently.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction and Motivation</head><p>Variability in automotive software engineering has achieved a degree of complexity which can no longer be handled with traditional hardware-driven methodologies <ref type="bibr">[1]</ref><ref type="bibr" target="#b10">[2]</ref><ref type="bibr">[3]</ref>. Function net models are software documents which are used in an early phase of such a development process to describe the first virtual realization of the system structure <ref type="bibr">[4]</ref>. Typically, it consists of functional modules that interact via signals.</p><p>Variation points and their variants are captured implicitly by modeling a so called maximal function net model. The idea behind that is to capture every functional module, e.g., a sensor, an actuator, a control algorithm etc. In this way, a function net corresponds to an Electronic Control Unit (ECU) together with all its physical connections to bus systems, sensors, and actuators. Figure <ref type="figure" target="#fig_1">1</ref> illustrates two forms of a maximal function net model. Figure <ref type="figure" target="#fig_1">1</ref>(a) represents a function net model specified in an Excel sheet, while Figure <ref type="figure" target="#fig_1">1(b</ref>) is a visualization of this Excel sheet as graph. In both forms, it is very difficult or nearly impossible to extract useful information manually out of it.  Communication dependencies between function nets, i.e., communication dependencies between ECUs, which have an influence on variability are handled by using informal annotations. Variants are then generated manually by removing specific parts of the function net with the help of these annotations. In a hardware-driven process, this can be regarded equally to removing hardware components such as ECUs, sensors, or actuators and the appropriate software portions. Any implications to other hardware and software components have to be solved manually.</p><p>Regarding the current trend in automotive software engineering, we can observe a paradigm-shift from a hardware-driven process to a function-driven process <ref type="bibr" target="#b13">[5]</ref>. Therefore, a hardware-driven variant handling mechanism will get more and more inappropriate, because it gets too complex and is not suitable for future standards: it completely depends on the underlying hardware infrastructure, consistency has to be ensured manually, i.e., there is no formalization to express dependencies, and there is also no automated support to configure and validate concrete variants.</p><p>In a research project at our department, we are providing new concepts, methods, and tools for handling complexity and variability in software documents for automotive software engineering <ref type="bibr">[6]</ref><ref type="bibr" target="#b15">[7]</ref><ref type="bibr">[8]</ref><ref type="bibr">[9]</ref>. We have developed a formal language to model function nets, and a formal language to model variation points and variants. Furthermore, we have integrated these two modeling languages in order to reduce synchronization overhead. Modeling guidelines, some of which can be checked on syntactical level and others which completely rely on behalf of the function net architect, are also provided. Moreover, methodology rules for the usage of such an integrated modeling language are also specified. What is still missing is the possibility to express constraints between functional modules or its signals inside one or many function net models. Furthermore, there is also a need to have an automated support to configure concrete variants out of the family which also ensures the consistency. Because we are not only dealing with function net models but with several software documents, we need a configuration engine which is independent from the input language.</p><p>Including the missing concepts will enhance the development process in a way, that out of the family of function net models, we can generate skeleton variants for virtual prototypes (i.e., behavioral simulation on a PC). This allows an early and efficient verification of requirement specifications.</p><p>In this paper, we will introduce an approach to express constraints in and between function net models. Furthermore, a configuration process is integrated which is coupled with an independent back-end inference engine. The output of the configuration process is a concrete variant of a function net.</p><p>The paper is structured as follows: Section 2 describes and motivates the problems in more detail. Here, we also illustrate an example which is used continuously in the whole paper. Section 3 and 4 include the main contribution of this paper. Here, we explain the language to express constraints and the whole configuration process. Section 5 describes related work and finally Section 6 concludes this paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Problem Description by Example</head><p>This section describes the initial situation of our approach that is relevant to explain the problems we are going to tackle and the contribution of this paper. Nevertheless, we will not describe the conceptual background but illustrate an example and refer to them appropriately. Figure <ref type="figure" target="#fig_2">2</ref> shows an example of a function net model integrated with a variability model <ref type="bibr">[6,</ref><ref type="bibr">8]</ref>. It illustrates a part of a Central Locking System (CLS), with a Vehicle Access Controller (VAC), a Data Transceiver (DT), and a Central Locking Master (CLM). A VAC can lock (l) or unlock (ul) the vehicle. For this, it has to authorize itself with some authentication data (ad).</p><p>To communicate between functional modules we use ports. Thereby, we distinguish between data ports, i.e., signals with a data storage characteristic, and control ports, i.e., signals initiating a functionality. In Figure <ref type="figure" target="#fig_2">2</ref> data ports are visualized with a rectangular shape, while control ports are visualized with a circle shape. Furthermore, these two types of ports are distinguished between provided and required ports. In Figure <ref type="figure" target="#fig_2">2</ref> provided ports are marked black, while required ports are marked white.</p><p>Variation points and their variants are captured in the variability model <ref type="bibr">[6,</ref><ref type="bibr">8]</ref>. For example, a VAC is a variation point, which has two variants, i.e., a Remote Control (RC) and an Identification Transmitter (IDT) for a more comfortable access. In the same way, a DT is also a point of variation which has for example Antennas (At) as variants. A further variant could be a key slot (not shown in Figure <ref type="figure" target="#fig_2">2</ref>). Variation points have group cardinalities and variants have variant cardinalities in the same way as Czarnecki et al. have introduced <ref type="bibr">[10]</ref>. For example, in Figure <ref type="figure" target="#fig_2">2</ref>  .4] of At expresses that a valid CLS can have at least one but at most four instances of the variant. By using group and variant cardinalities it is possible to restrict valid systems. In the subsequent sections, we will see that this is not enough to express constraints. Finally, variants can be specified more fine-grained (depicted with the dots in Figure <ref type="figure" target="#fig_2">2</ref>). For example, ports and their connections can differ depending on the variant. For our explanations in this paper, we will not need them and therefore, they are neglected here.</p><p>As explained before, currently we cannot express more complex constraints between functional modules or its signals inside one or many function nets. Furthermore, an automated support to configure concrete variants is also not possible. The next two subsections will describe the mentioned problems in more detail.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Expressing Constraints</head><p>In Figure <ref type="figure" target="#fig_2">2</ref>, we have denoted two constraints for IDT (solid black line with arrow), i.e., the exclusion of RC if it is selected and the necessity of exactly four Ats. Please note that the exclusion can also be modeled with the expression of group cardinalities. This kind of constraints and obviously more complex constraints are often needed when modeling a family of function nets. As mentioned before, in our current prototype it is not possible to express more complex constraints which is a strong limitation of our integrated concept. Therefore, there is a need for an appropriate constraint language in order to express dependencies between variants.</p><p>An important requirement is that the language has sufficient expressiveness. It should be possible to combine multiple variants and to formulate nested statements. It should also be possible to define constraints between different variability models. Another important requirement is that constraints should be reusable. Having gained experience in often used constraints, it should be possible to predefine standard constraints and reuse them. Furthermore, the constraint language should not cause that much time-consuming training effort for the configuration process. This minimizes error-proneness and enhance usability.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Configuration of Concrete Variants</head><p>Consider again Figure <ref type="figure" target="#fig_2">2</ref>. We have depicted check boxes for the variability model to illustrate the configuration process. In the example, IDT is selected which requires exactly 4 Ats. Obviously, this is a valid configuration from which a concrete variant can be derived. The variant can then be used as skeleton for virtual prototypes to verify the requirements specification. Such a virtual prototype can for example be modeled with tools such as Matlab R Simulink R and Stateflow R <ref type="bibr" target="#b19">[11]</ref>. In our current implementation such a configuration process is not supported.</p><p>There is a need for back-end configuration engine which infers valid variants. The configuration engine should be independent from the input language. This means, that it should be possible to handle different kind of models, such as function net models, Simulink models, and even source code. Furthermore, it should be possible to combine different models and process them as input. For this, the configuration process should be easily extendable and highly performant.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Design of Function Net Families with Constraints</head><p>Because we do not plan to design a new constraint language, we have investigated literature to find a suitable one that fulfills our requirements and is adaptable to our prototype. As one important requirement, we have identified that the constraint language should not cause additional expenses. Therefore, the selection of our language depends on the input language of the underlying configuration engine. As we will see in Section 4, we will use smodels as configuration engine which requires Weight Constraint Rule Language (WCRL) as input language <ref type="bibr">[12]</ref>. Soininen et. al. have shown that WCRL has sufficient expressiveness. It is also possible to reuse rules. Therefore, WCRL is a language that is suitable for our purposes. In this paper, we do not show the complete definition of WCRL but limit it to a portion that is enough for the variability and function net model. For the complete definition, please refer to the authors of WCRL <ref type="bibr">[12]</ref>.</p><p>A weight constraint rule is of the form</p><formula xml:id="formula_0">C 0 ← C 1 , . . . , C n ,<label>(1)</label></formula><p>where C i is a weight constraint which in turn is of the form</p><formula xml:id="formula_1">C i = L ≤ {a 1 = w 1 , . . . , a n = w n } ≤ U,<label>(2)</label></formula><p>where L, U ∈ Z are lower and upper bounds, a i is a literal (atomic formula or predicate), and w i ∈ N 0 is a weight.</p><p>A weight constraint C i is satisfied for a set S iff</p><formula xml:id="formula_2">L ≤ ai∈S w i ≤ U,<label>(3)</label></formula><p>where S is a set of literals.</p><p>To illustrate WCRL consider again Figure <ref type="figure" target="#fig_2">2</ref>. To express the exclusion of RC if IDT is selected, we can define a weight constraint rule as follows:</p><p>ExcludeRC ← IsSelectedIDT, where ExcludeRC = − ∞ ≤ {InstOfType(X, RC) : InstDomain(X)} ≤ 0, and</p><formula xml:id="formula_3">IsSelectedIDT = 1 ≤ {InstOfType(X, IDT) : InstDomain(X)} ≤ ∞.</formula><p>The expression InstOfType(X, RC) : InstDomain(X) returns, out of the whole set of instances, i.e., the selected variants, a subset of a literals X which are of type RC (and a have default weight of 1). The same holds for IDT.</p><p>To express that exactly 4 Ats are needed if IDT is selected, we can define another weight constraint rule:</p><formula xml:id="formula_4">Exactly4Ats ← IsSelectedIDT,</formula><p>where IsSelectedIDT is defined as above, and</p><formula xml:id="formula_5">Exactly4Ats = 4 ≤ {InstOfType(Y, At) : InstDomain(Y)} ≤ 4.</formula><p>In this way, it is possible to express formal constraints which are also processable by the configuration process which is presented next.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Configuration of Function Net Families</head><p>A constraint language allows the restriction or precision of the configuration domain. We are now able to model a family of function nets and to express constraints across variants. What is still missing is a methodology and appropriate concepts to configure a concrete variant out of the family. In this section, we will provide such a configuration process and explain the steps relevant for it.</p><p>Figure <ref type="figure" target="#fig_3">3</ref> gives an overview of the whole configuration process. The input document will be a function net family as shown in Figure <ref type="figure" target="#fig_2">2</ref> and the output document after configuration will be a comletely configured function net. The configuration steps are (1) the selection of the variants in the variability model. This is done with the help of the integrated prototype <ref type="bibr">[8]</ref>. The result of this step will be a function net family plus selected variants. Because WCRL is the input language for the back-end inference engine, we need (2) a transformation from the language of function net families to an equivalent model in WCRL which is the result of this step. The transformation rules are defined with support of openArchitectureWare (oAW) <ref type="bibr" target="#b21">[13]</ref>. The function net model in WCRL is the input for the inference engine smodels which (3) infers a configured function net in WCRL. In order to visualize the result we (4) transform it back to the function net model. Note that steps (2)-( <ref type="formula">4</ref>) are internally processed so that a user does not notice them.</p><p>In the following subsections, we will explain the above outlined steps in more detail by illustrating them with the example of Section 2. We will start with step (2), i.e., a function net family plus selected variants which are transformed to a model in WCRL.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Transformation to a WCRL Model</head><p>Consider Figure <ref type="figure" target="#fig_5">4</ref>. We have a family of function nets where WCRL constraints can be expressed (see Section 3) and in addition variants can be selected. In the example, we want to configure an IDT and four Ats. As explained above, we first have to transform the function net family to a model in WCRL.</p><p>The bottom part of the figure shows the result after transformation, i.e., a model in WCRL. For example, the functional module VAC is transformed to Function(VAC) &lt;-. This is a short notation for a weight constraint rule where the right part is always true (and therefore empty). Such a rule is also called a fact. The information that VAC is also a variation point is captured in the next line. Furthermore, we need the association information between VAC as a  functional module and variation point. This is expressed in the third line. In the same way, variants of variation points, constraints, cardinalities, and selections are all transformed to WCRL.</p><formula xml:id="formula_6">Function(VAC) &lt;- FunctionVP(VP.VAC) &lt;- FunctionIsVP(VAC, VP.VAC) &lt;- Variant(IDT) &lt;- FunctionVPHasVariant(VP.VAC, IDT) &lt;- -∞ ≤ {InstOfType(Y, RC): InstDomain(Y)} ≤ 0 &lt;-1 ≤ 4 ≤ {InstOfType(Y, At): InstDomain(Y)} ≤ 4 &lt;-1 ≤ 0 ≤ {InstOfType(X, IDT): InstDomain(X)} ≤ 1 &lt;- 1 ≤ {InstOfType(X, IDT): InstDomain(X)} ≤ 1 &lt;- … Variant(At) &lt;- 0 ≤ {InstOfType(X, At): InstDomain(X)} ≤ 4 &lt;- 4 ≤ {InstOfType(X, At): InstDomain(X)} ≤ 4 &lt;- .wcrl VP VAC [1..2] V RC [0..1] V IDT [0..1] … DT [1..1] At [1..4] … VP V … VM CLS Variability Model excludes exactly 4 4 ≤ {InstOfType(X, IDT): InstDomain(X)} ≤ ∞ {InstOfType(X, IDT): InstDomain(X)} ≤ ∞</formula><p>To implement transformation rules, we have used the oAW framework, more precisely the component Xpand. Xpand is a template-based language to generate code based on EMF (Eclipse Modeling Framework) models <ref type="bibr">[14]</ref>. Figure <ref type="figure">5</ref> illustrates an Xpand template that processes all variation points and variants of our integrated models (which are also based on EMF) and generates the appropriate WCRL code. Having now the model in WCRL, we can use the inference engine smodels to generate a valid configuration.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">The Inference Engine: smodels</head><p>We have decided to use an independent inference engine, which is able to process combined models and has a reasonable performance. We will not present in this paper our classification and evaluation method for our decision, because it is still work in progress. But among all evaluated possibilities, smodels seems to be a good candidate <ref type="bibr" target="#b23">[15]</ref>. In Section 5 we will give some arguments for our decision. Using smodels as back-end inference engine, a WCRL model is taken as input which then infers a configured WCRL model as output (for the input from Figure <ref type="figure" target="#fig_5">4</ref>). Figure <ref type="figure">6</ref> shows an example of the output. We have one instance IDT 1 of type IDT (line 1 and 2), and four instances of type At. Furthermore, all instances for ports and their connections are inferred.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">Transformation to a Function Net Model</head><p>Finally, the result of smodels has to be transformed back to the function net model. Therefore, we again specify our transformation rules using oAW. We do not describe this in detail, because it is analogous as described in Subsection 4.1. Figure <ref type="figure" target="#fig_7">7</ref> illustrates the result of this step. The function net has now one instance of IDT and four instances of At, which all are connected appropriately. Note that in this model the complete variability is bind (there is no green colored functional module) and therefore it is a variant that can be used as a skeleton for virtual prototyping. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Related Work</head><p>In terms of expressing constraints, two different approaches exist: structural/ graphical definition and textual definition. The former is usually adopted by configuration systems involving feature trees <ref type="bibr" target="#b24">[16]</ref>, and the possible relations include simple 'requires' and 'excludes' relations and cardinality constraints <ref type="bibr">[10]</ref>, and relations like 'recommends' or 'discourages' in some cases <ref type="bibr" target="#b25">[17]</ref>.The latter requires the use of a constraint language/logic, including OCL <ref type="bibr" target="#b26">[18]</ref>, WCRL <ref type="bibr">[12]</ref>, or Prolog <ref type="bibr" target="#b25">[17]</ref> to express arbitrary logic formulas constraining the model, allowing less user-friendly yet much more expressive constraints. Among different languages, OCL has the advantage as the most well-known language since defining complex constraints requires a considerable amount of proficiency in the relevant language.</p><p>In <ref type="bibr" target="#b27">[19]</ref> and <ref type="bibr" target="#b28">[20]</ref>, different methods for product configuration are summarized. Some are rule-based, logic-based and constraint-based configuration; the strengths and weaknesses of tools adopting different approaches are discussed in <ref type="bibr" target="#b29">[21]</ref>. Answer Set Programming (ASP) <ref type="bibr" target="#b30">[22]</ref> emerges to be an important and widely accepted means for product configuration, and is suitable for the representation of configuration knowledge <ref type="bibr" target="#b31">[23]</ref>. Since the configuration task is NP-complete, performance of the inference engine seems to be important for medium to large scale models. There exist several solvers including pure ASP solvers such as smodels <ref type="bibr" target="#b23">[15]</ref>, DLV <ref type="bibr" target="#b32">[24]</ref>, and hybrid approaches integrated with SAT solvers such as ASSAT <ref type="bibr" target="#b33">[25]</ref>. A theoretical comparison can be found in <ref type="bibr" target="#b34">[26]</ref> and comparison of their performance in relevant sections of each paper and in <ref type="bibr" target="#b35">[27]</ref>.</p><p>Regarding the different ASP solvers, there exist considerable amount of data on using smodels, which has a long history of development and wide acceptance. It allows a direct integration into our configuration process with the use of WCRL as input language. In contrast, OCL requires an extra model transformation. However, we plan to integrate OCL into our configuration process in order to compare both in more detail. The disadvantage in performance and lack of advanced concepts (such as non-monotonic reasoning, learning, powerful heuristics) may be neglected considering the current scope of our work; and it is easy to migrate later to different engines with the same interface (WCRL I/O) for better performance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusion</head><p>In this paper, we have illustrated a model-driven approach to configure an integrated variability and function net model. First, we have explained the need for a constraint language in order to restrict the configuration domain. Therefore, we have included WCRL as an appropriate language. Second, we have motivated the necessity for an independent back-end inference engine. Here, smodels seems to be a tool which is adaptable, extendable, and with high performance. We plan to start a benchmark where this can be evaluated more precisely.</p><p>The possibility to configure concrete variants of function nets allow the generation of skeleton variants for virtual prototyping. For example, in this way, variants of Simulink models can be simulated in order to verify efficiently requirement specifications in an early phase of a model-driven development process.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>Function net model as graph.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1. A maximal function net model illustrated in two different forms.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig. 2 .</head><label>2</label><figDesc>Fig. 2. An example showing the integration of a function net and variability model.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 3 .</head><label>3</label><figDesc>Fig. 3. Overview of the configuration process.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Fig. 4 .</head><label>4</label><figDesc>Fig. 4. Transformation of function net family model to WCRL.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Fig. 5 .Fig. 6 .</head><label>56</label><figDesc>Fig.5. An example of an Xpand template that generates WCRL code for variation points and variants.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Fig. 7 .</head><label>7</label><figDesc>Fig. 7. The result of the overall configuration process as function net model.</figDesc></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m">DEFINE processVariationPoint FO 2</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<author>
			<persName><surname>Functionvp</surname></persName>
		</author>
		<title level="m">this.getId</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m">FunctionIsVP</title>
				<imprint/>
	</monogr>
	<note>this.variableFun 5</note>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m">variants AS var 7</title>
				<imprint/>
	</monogr>
	<note>FOREACH vcard</note>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m">vars.getId</title>
				<imprint/>
	</monogr>
	<note>Variant</note>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m">FunctionVPHasVariant</title>
				<imprint/>
	</monogr>
	<note>this.g</note>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m">{Ins InstDomain(X)</title>
				<imprint>
			<biblScope unit="page">11</biblScope>
		</imprint>
	</monogr>
	<note>getLowerBound</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title/>
	</analytic>
	<monogr>
		<title level="j">ENDFOREACH</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<ptr target="getUpperBound" />
		<title level="m">ENDDEFINE» OR FunctionVariationPoint» nction.getId()», «this.getId()») &lt;-rs» getId</title>
				<imprint/>
	</monogr>
	<note>vars.getId()») &lt;-stOfType(X, «vars.getId. vcard.</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Engineering Automotive Software</title>
		<author>
			<persName><forename type="first">M</forename><surname>Broy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">H</forename><surname>Krüger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Pretschner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Salzmann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the IEEE</title>
				<meeting>the IEEE</meeting>
		<imprint>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="356" to="373" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><surname>Czarnecki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><forename type="middle">W</forename></persName>
		</author>
		<title level="m">Eisenecker: Generative programming: methods, tools, and applications</title>
				<meeting><address><addrLine>NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Addison-Wesley</publisher>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><surname>Pohl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Böckle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">J</forename><surname>Van Der Linden</surname></persName>
		</author>
		<title level="m">Software Product Line Engineering: Foundations, Principles and Techniques</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m">Handbuch Kraftfahrzeugelektronik: Grundlagen, Komponenten, Systeme, Anwendungen</title>
				<editor>
			<persName><forename type="first">H</forename><surname>Wallentowitz</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">K</forename><surname>Reif</surname></persName>
		</editor>
		<meeting><address><addrLine>Wiesbaden</addrLine></address></meeting>
		<imprint>
			<publisher>Vieweg</publisher>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<ptr target="http://www.autosar.org.Lastrequest" />
		<title level="m">AUTOSAR (AUTomotive Open System ARchitecture) Development Partnership</title>
				<imprint>
			<date type="published" when="2010-03-30">March 30. 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Armac: Functional Variant Modeling for Adaptable Functional Networks</title>
		<author>
			<persName><forename type="first">C</forename><surname>Mengi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 3rd International Workshop on Variability Modelling of Software-Intensive Systems</title>
				<meeting>the 3rd International Workshop on Variability Modelling of Software-Intensive Systems<address><addrLine>Seville, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2009">2009. 2009</date>
			<biblScope unit="page" from="83" to="92" />
		</imprint>
	</monogr>
	<note>VaMoS</note>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Ein Klassifikationsansatz zur Variabilitätsmodellierung in E/E-Entwicklungsprozessen</title>
		<author>
			<persName><forename type="first">C</forename><surname>Mengi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Armac</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Engineering 2009 Workshop: Produkt-Variabilität im gesamten Lebenszyklus (PVLZ 2009)</title>
				<meeting><address><addrLine>KL, Germany</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Modellierung variantenreicher Funktionsnetze im Automotive Software Engineering</title>
		<author>
			<persName><forename type="first">C</forename><surname>Mengi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">Navarro</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Fuß</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th Workshop Automotive Software Engineering (ASE 2009)</title>
				<meeting>the 7th Workshop Automotive Software Engineering (ASE 2009)<address><addrLine>Lübeck, Germany</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Model-driven Support for Source Code Variability in Automotive Software Engineering</title>
		<author>
			<persName><forename type="first">C</forename><surname>Mengi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Fuß</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Zimmermann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Aktas</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 1st International Workshop on Model-driven Approaches in Software Product Line Engineering (MAPLE 2009)</title>
				<meeting>the 1st International Workshop on Model-driven Approaches in Software Product Line Engineering (MAPLE 2009)<address><addrLine>San Francisco, California, USA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Eisenecker: Formalizing cardinality-based feature models and their specialization</title>
		<author>
			<persName><forename type="first">K</forename><surname>Czarnecki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Helsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><forename type="middle">W</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Process: Improvement and Practice</title>
				<imprint>
			<date type="published" when="2005">2005</date>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="page" from="7" to="29" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<ptr target="http://www.mathworks.com/" />
		<title level="m">The Mathworks</title>
				<imprint>
			<date type="published" when="2010-03-30">March 30. 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">Representing Configuration Knowledge with Weight Constraint Rules</title>
		<author>
			<persName><forename type="first">T</forename><surname>Soininen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Niemelä</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Tiihonen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sulonen</surname></persName>
		</author>
		<idno>SS-01-01</idno>
		<imprint>
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
	<note type="report_type">AAAI Technical Report</note>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<ptr target="http://www.openArchitectureware.org/" />
		<title level="m">openArchitectureware</title>
				<imprint>
			<date type="published" when="2010-03-30">March 30. 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<ptr target="http://www.eclipse.org/modeling/emf/" />
		<title level="m">Eclipse Modeling Framework</title>
				<imprint>
			<date type="published" when="2010-03-30">March 30. 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Smodels -An Implementation of the Stable Model and Well-Founded Semantics for Normal LP</title>
		<author>
			<persName><forename type="first">I</forename><surname>Niemelä</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Simons</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">LPNMR &apos;97: Proceedings of the 4th International Conference on Logic Programming and Nonmonotonic Reasoning</title>
				<meeting><address><addrLine>London, UK</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="1997">1997</date>
			<biblScope unit="page" from="421" to="430" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<title level="m" type="main">Feature-Oriented Domain Analysis (FODA) Feasibility Study</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">C</forename><surname>Kang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">G</forename><surname>Cohen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Hess</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">E</forename><surname>Novak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">S</forename><surname>Peterson</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1990">1990</date>
		</imprint>
		<respStmt>
			<orgName>Carnegie-Mellon University Software Engineering Institute</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<ptr target="http://www.pure-systems.com/.Lastrequest:30th" />
		<title level="m">systems</title>
				<imprint>
			<date type="published" when="2010-03">March 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<monogr>
		<ptr target="http://www.omg.org/tech-nology/documents/formal/ocl.htm" />
		<title level="m">Object Constraint Language Specification Version 2</title>
				<imprint>
			<date type="published" when="2010-03-30">March 30. 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Product Configuration Frameworks -A Survey</title>
		<author>
			<persName><forename type="first">D</forename><surname>Sabin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Weigel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Intelligent Systems</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="42" to="49" />
			<date type="published" when="1998">1998</date>
			<publisher>IEEE Educational Activities Department</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Configuration -State of the Art and New Challenges</title>
		<author>
			<persName><forename type="first">L</forename><surname>Hotz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Krebs</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 17th Workshop Planen, Scheduling und Konfigurieren, Entwerfen (PuK</title>
				<meeting>the 17th Workshop Planen, Scheduling und Konfigurieren, Entwerfen (PuK</meeting>
		<imprint>
			<date type="published" when="2003">2003. 2003</date>
			<biblScope unit="page" from="145" to="157" />
		</imprint>
	</monogr>
	<note>KI 2003 Workshop</note>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Classifying variability modeling techniques</title>
		<author>
			<persName><forename type="first">M</forename><surname>Sinnema</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Deelstra</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Inf. Softw. Technol</title>
				<meeting><address><addrLine>Newton, MA, USA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="717" to="739" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">A Glimpse of Answer Set Programming</title>
		<author>
			<persName><forename type="first">C</forename><surname>Anger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Konczak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Linke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Künstliche Intelligenz</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="12" to="17" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Developing a Declarative Rule Language for Applications in Product Configuration</title>
		<author>
			<persName><forename type="first">T</forename><surname>Soininen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Niemelä</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">PADL &apos;99: Proceedings of the First International Workshop on Practical Aspects of Declarative Languages</title>
				<meeting><address><addrLine>London, UK</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="1998">1998</date>
			<biblScope unit="page" from="305" to="319" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">The DLV system for knowledge representation and reasoning</title>
		<author>
			<persName><forename type="first">N</forename><surname>Leone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Pfeifer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Faber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gottlob</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Perri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Scarcello</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Comput. Logic</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="499" to="562" />
			<date type="published" when="2006">2006</date>
			<publisher>ACM</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">ASSAT: Computing Answer Sets of a Logic Program by SAT Solvers</title>
		<author>
			<persName><forename type="first">F</forename><surname>Lin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zhao</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Nonmonotonic Reasoning</title>
				<imprint>
			<date type="published" when="2002">2002</date>
			<biblScope unit="volume">157</biblScope>
			<biblScope unit="page" from="115" to="137" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">On the relation among answer set solvers</title>
		<author>
			<persName><forename type="first">E</forename><surname>Giunchiglia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Leone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Maratea</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Annals of Mathematics and Artificial Intelligence</title>
		<imprint>
			<biblScope unit="volume">53</biblScope>
			<biblScope unit="page" from="1" to="4" />
			<date type="published" when="2008">2008</date>
			<publisher>Kluwer Academic Publishers</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<analytic>
		<title level="a" type="main">Evaluating ASP and Commercial Solvers on the CSPLib</title>
		<author>
			<persName><forename type="first">T</forename><surname>Mancini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Micaletto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Patrizi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cadoli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Constraints</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="407" to="436" />
			<date type="published" when="2008">2008</date>
			<publisher>Kluwer Academic Publishers</publisher>
		</imprint>
	</monogr>
</biblStruct>

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