<?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="de">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Effiziente Abschätzung von Datenflussfehlern in strukturierten Geschäftsprozessen</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Thomas</forename><forename type="middle">S</forename><surname>Heinze</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Friedrich-Schiller-Universität Jena {T.Heinze</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Wolfram</forename><surname>Amme</surname></persName>
							<email>wolfram.amme@uni-jena.de</email>
							<affiliation key="aff0">
								<orgName type="institution">Friedrich-Schiller-Universität Jena {T.Heinze</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Simon</forename><surname>Moser</surname></persName>
							<email>smoser@de.ibm.com</email>
							<affiliation key="aff1">
								<orgName type="institution">IBM Entwicklungslabor Böblingen</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">Effiziente Abschätzung von Datenflussfehlern in strukturierten Geschäftsprozessen</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">302B27FCA46288609AC9F450241413B6</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-19T15:57+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>Neben dem Kontrollfluss von Geschäftsprozessen kann auch der Datenfluss Ursache einer fehlerhaften Prozessausführung sein, daher ist die Überprüfung eines Prozessmodells auf Datenflussfehler ebenfalls wesentlich. Wir schlagen in diesem Beitrag eine Methode zur Abschätzung von Datenflussfehlern für strukturierte Geschäftsprozesse vor. Auf Grundlage der durch eine Datenflussanalyse abgeleiteten Datenflussinformation geben wir Fehlermengen für mögliche und sichere Datenflussfehler eines Geschäftsprozesses an. Der Vorteil dieses Ansatzes besteht zum einen in der Effizienz der Analyse, andererseits aber auch in der Identifikation und Lokalisation von Fehlern in einem Schritt. Als Nachteil ergibt sich hingegen der Verlust absoluter Präzision.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="de">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Einführung</head><p>Neben der Verifikation von Geschäftsprozessen hinsichtlich Kontrollflussfehlern, wie Verklemmungen oder fehlender Synchronisation, ist die Analyse der Verwendung von Prozessdaten zur Gewährleistung einer fehlerfreien Prozessausführung von Interesse <ref type="bibr" target="#b6">[5]</ref>. Typische Fehler in diesem Zusammenhang sind beispielsweise der lesende Zugriff auf noch uninitialisierte oder bereits gelöschte Daten, das parallele Schreiben und Lesen von Daten oder das Überschreiben ungelesener Daten. Enthält ein Prozessmodell auch Informationen zur Verwendung der Prozessdaten, in Form der durch Prozessaktivitäten geschriebenen, gelesenen und gelöschten Daten, kann eine Überprüfung auf derartige Datenflussfehler erfolgen.</p><p>Ein insbesonders für die Analyse des Datenflusses geeignetes Verfahren ist die statische Datenflussanalyse <ref type="bibr" target="#b2">[2,</ref><ref type="bibr" target="#b4">3]</ref>. Im Gegensatz zu Verifikationstechniken die auf einer vollständigen Modellprüfung beruhen erlaubt die Datenflussanalyse eine effiziente Ableitung von konservativer Datenflussinformation, verzichtet aber im Gegenzug auf exakte Ergebnisse. Auf diese Weise kann der exponentielle Verifikationsaufwand vermieden werden, der sich sonst bei einer präzisen Analyse ergibt. Der hohe Aufwand ist dabei auf die zur Überprüfung des Datenflusses notwendige Identifikation parallel ausführbarer Prozessaktivitäten zurückzuführen, die schon für strukturierte Prozesse und unter Ausschluß von Schleifen exponentielle Kosten verursachen kann <ref type="bibr" target="#b0">[1]</ref>. Zusätzlich wird auch keine endliche Abstraktion für die in einem Geschäftsprozess auftretenden Daten benötigt, da lediglich der Datenfluss zwischen den Prozessaktivitäten berücksichtigt werden muss. Im vorliegenden Beitrag zeigen wir, wie das Verfahren der Datenflussanalyse zur Überprüfung eines strukturierten Geschäftsprozesses auf Datenflussfehler genutzt werden kann. In Abschnitt 2 wird dazu zunächst ein Überblick zu Datenflussfehlern und dem hier verwendeten Prozessmodell gegeben. Danach erfolgt in Abschnitt 3 eine Beschreibung der Bestimmung von fehlenden, gelöschten sowie definierenden Daten mit Hilfe einer statischen Datenflussanalyse. Auf Grundlage der so für einen Prozess effizient ableitbaren Datenflussinformationen können wir dann in Abschnitt 4 Fehlermengen einführen, die Abschätzungen zu den im Prozess enthaltenen Datenflussfehlern in Form sicherer und möglicher Fehler bilden. Schließlich wird der Beitrag in Abschnitt 5 kurz zusammengefasst.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Grundbegriffe</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Datenflussfehler</head><p>In der Arbeit <ref type="bibr" target="#b6">[5]</ref> wird eine Sammlung der in Geschäftsprozessen auftretenden Datenflussfehler beschrieben. Dabei werden mehrere Anti-Muster vorgestellt, die Schwachstellen hinsichtlich einer fehlerfreien Verwendung von Prozessdaten darstellen. Wir beziehen uns im Folgenden auf diese, in Tabelle 1 angegebenen, Anti-Muster, wenn wir von Datenflussfehlern sprechen. Im Gegensatz zu <ref type="bibr" target="#b6">[5]</ref>  </p><formula xml:id="formula_0">Split cond(V ) V = (V , V ) 2 1 π Merge 6 U = (U , U ) 0 1 π 6 G = write(G ) 2 1 D = write(D ) A = write(A ) 0 0 H = write(H ) 4 H = (H , H ) 0 2 π 4 G = write(G ) 1 B = write(B ) 1 0 0 2 5 V = (V , V ) 0 1 π V = write(V ) U = write(U ) 2 6 read(E ) 1 read(A ) 1 V = (V , V ) 0 π 2 U = write(U ) 1 V = write(V ) 4 read(H ) 5 U = (U , U ) 0 π 5 2 H = (H , H ) 1 π 5 2 5 4 D = destroy(D ) 1 2 Join B = destroy(B ) 2 1 F = write(F ) 1 0 C = write(C ) read(A ) E = write(E ) 1 1 0 0 0 5 1 1 1 1 Fork read(F ) 2 read(H ) 3 read(U ) 4 F = destroy(F ) 3 2 E = destroy(E ) 2 G = destroy(G ) 4 3 1 H = (H , H ) U = (U , U ) V = (V , V ) 3 Φ 1 Φ 1 Φ 1 3 4 3 2 2 read(B ) 3 read(G ) 3 U = (U , U ) 3 π 7 1 read(U ) 7 H = (H , H ) 0 π 6 1 F = write(F ) 2 1 H = write(H ) 2 6 G = (G , G ) 3 Φ 2 U = (U , U ) Φ 0 B = (B , B ) Φ 2 3 3 2 1 1 6</formula><p>Abb. 1. Beispielprozess in BPMN-Notation (l.) und als Workflow-Graph (r.)</p><p>Abbildung 1 ist der erweiterte Workflow-Graph für den aus <ref type="bibr" target="#b6">[5]</ref> übernommenen Beispielprozess dargestellt. Zum Vergleich bildet die linke Seite den Prozess auch in BPMN-Notation ab. In der BPMN-Darstellung sind die Prozessknoten mit Annotationen versehen, die in den Knoten gelesene, geschriebene oder gelöschte Daten in Form von Variablen (A,B,...) bezeichnen. Ferner wurde die bedingte Aufspaltung des Kontrollflusses mit der Verzweigungsbedingung versehen. Im erweiterten Workflow-Graphen sind die Annotationen übernommen, nur dass diese nun im Format der Concurrent Static Single Assignment Form (CSSA-Form) <ref type="bibr" target="#b2">[2]</ref> vorliegen. Zu diesem Zweck wurden die auf Daten operierenden Prozessaktivitäten auf vier Instruktionstypen abgebildet:</p><p>read(V i ) liest das Datum in Variable V i , cond(V i ) bestimmt den Wert einer Verzweigungsbedingung über Variable V i , -V i = write(V j ) überschreibt die alte Definition des Datums in Variable V j mit einem neuen Datum und legt dieses in der Variablen V i ab, -V i = destroy(V j ) löscht das Datum in Variable V j und setzt dadurch den Wert der Variablen V i auf undefiniert.</p><p>Charakteristische Eigenschaft der CSSA-Form ist, dass jede Variable statisch einmal definiert ist, so dass für jede Variablendefinition durch die Instruktionen write oder destroy ein eigener Name eingeführt, und Variablenzugriffe entsprechend angepasst wurden (beispielsweise G 1 , . . . , G 4 für Variable G). Treffen mehrere Definitionen einer Variablen auf verschiedenen Pfaden des Kontrollflusses in einem Knoten zusammen, wurden spezielle Instruktionen mit wie folgt definierten Φ-Funktionen eingefügt, um die Definitionen zusammenzufassen:</p><formula xml:id="formula_1">Definition 2 (Φ-Funktion). Eine Φ-Funktion für Variable V hat die Form Φ(V 1 , . . . , V n ),</formula><p>wobei die Operanden V i den im Knoten der Funktion zusammenfließenden Definitionen von V entsprechen. Der Wert der Funktion ist der Operand V i , der die zur Prozesslaufzeit tatsächlich, beziehungsweise als letztes, ausgeführte Instruktion mit einer Definition der Variablen V repräsentiert.</p><p>Neben den Instruktionen mit Φ-Funktionen enthält die CSSA-Form weitere spezielle Instruktionen mit π-Funktionen, um Schreib-/Lese-Konflikte zwischen parallelen Prozessaktivitäten modellieren zu können: Definition 3 (π-Funktion). Eine π-Funktion für Variable V hat die Form π(V 1 , . . . , V n ), wobei die Operanden V i den im Knoten der Funktion konkurrierenden Definitionen von V entsprechen. Der Wert der Funktion ist der Operand V i , der die zur Prozesslaufzeit letzte Definition von V repräsentiert. Um die so definierten Datenflussinformationen für einen Geschäftsprozess exakt bestimmen zu können, ist eine Analyse der parallel ausführbaren Prozessaktivitäten notwendig. Grundsätzlich ist eine solche Analyse Co-NP-schwer <ref type="bibr" target="#b0">[1]</ref>. Daher verzichten wir auf die exakte Bestimmung und ermitteln stattdessen konservative Abschätzungen. Zu diesem Zweck wird das Verfahren der statischen Datenflussanalyse angewendet. Dieses erlaubt für die Charakterisierung eines Datenflussproblems durch ein System rekursiver Gleichungen eine Fixpunktlösung zu berechnen, die eine Abschätzung zur gesuchten Information bildet. Das Gleichungssystem zu den definierenden Daten ergibt sich beispielsweise wie folgt: Die Menge Fehlende Daten (sichere Fehler) enthält Instruktionen s der Instruktionstypen V i = destroy(V j ), read(V j ) und cond(V j ), die für alle Kontrollflusspfade auf ein fehlendes Datum V j zugreifen. Dazu wird überprüft, ob M ISS M U ST für die V j definierende Instruktion def (V j ) dem Wahrheitswert true entspricht. Die Menge Fehlende Daten (mögliche Fehler) umfasst Instruktionen, die für einen Pfad auf ein fehlendes Datum zugreifen können, und wurde analog über die Wahrheitswerte in M ISS M AY definiert. Auf gleiche Weise ergeben sich die Fehlermengen Doppelt gelöschte Daten, nur das diese destroy-Instruktionen enthalten und als Datenflussinformation DEL M U ST , DEL M AY genutzt wird.</p><formula xml:id="formula_2">DAT A M U ST (s) = i∈{1,...,n} DAT A M U ST (def (V i )) für s : V = Φ(V 1 , . . . , V n ) DAT A M U ST (s) = i∈{1,...,n} DAT A M U ST (def (V i )) für s : V = π(V 1 , . . . , V n ) DAT A M AY (s) = i∈{1,...,n} DAT A M AY (def (V i )) für s : V = Φ(V 1 , . . . , V n ) DAT A M AY (s) = i∈{1,...,n} DAT A M AY (def (V i )) für s : V = π(V 1 , . . . , V n ) DAT A M U ST (s) = DAT A M AY (s) = {V i } für s : V i = write(V j ) DAT A M U ST (s) = DAT A M AY (s) = ∅</formula><p>Die Fehlermenge Redundante oder überschriebene Daten (sichere Fehler) umfasst write-Instruktionen, die Daten schreiben auf die im Prozess nie lesend, also durch Instruktionen read oder cond zugegriffen wird. Zu diesem Zweck wird die Menge aller im Prozess auf mindestens einem Kontrollflusspfad gelesenen Daten bestimmt, als Vereinigung der Mengen DAT A M AY (def (V k )) für alle durch Instruktionen s : read(V k ) und s : cond(V k ) gelesenen Variablen V k . Ist eine durch Instruktion s : V i = write(V j ) definierte Variable V i kein Element dieser Menge, wird nie lesend auf V i zugegriffen und die Instruktion erfüllt den Fehler. Die Menge Redundante oder überschriebene Daten (mögliche Fehler) ergibt sich analog, nur dass nun überprüft wird, ob eine durch Instruktion s : V i = write(V j ) definierte Variable V i nicht auf allen Kontrollflusspfaden gelesen wird, unter Ausnutzung der Datenflussinformation DAT A M U ST und der Postdominanz-Relation.</p><p>In <ref type="bibr" target="#b6">[5]</ref> wird zusätzlich eine Unterscheidung zwischen redundanten und überschriebenen Daten vorgenommen. Um auch eine solche Unterscheidung durchzuführen, kann die Menge s:  </p><formula xml:id="formula_3">V l =write(V k ) DAT A M AY (def (V k ))</formula></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>3 Datenflussinformation</head><label>3</label><figDesc>Auf Grundlage der Repräsentation eines strukturierten Geschäftsprozesses durch erweiterte Workflow-Graphen können dann Informationen zum Datenfluss abgeleitet werden. Für die Bestimmung der sicheren und möglichen Fehler zu den in Tabelle 1 aufgeführten Fehlerarten werden Datenflussinformationen über die fehlenden, gelöschten und definierenden Daten des untersuchten Prozesses benötigt. Als fehlende Daten werden Variablen bezeichnet, die uninitialisiert sind oder gelöscht wurden. Dabei kann unterschieden werden, ob eine Variable für mindestens ein Ausführungsszenario ein fehlendes Datum beschreibt, oder für alle möglichen Prozessausführungen. In unserem Beispiel aus Abbildung 1 entspricht die Variable A 0 immer einem fehlenden Datum, die Variable B 3 hingegen nur dann, falls die Instruktion B 2 = destroy(B 1 ) ausgeführt wurde. Zur Darstellung der Datenflussinformation werden Wahrheitswerte genutzt, die angeben ob eine Variable ein fehlendes Datum beschreibt. Bedingt durch die Eigenschaft der CSSA-Form dass jede Variable statisch nur einmal definiert ist, können diese Werte den die Variablen definierenden Instruktionen zugewiesen werden: Definition 4 (Fehlende Daten). Für Instruktion s enthält M ISS M U ST (s) einen Wahrheitswert, der anzeigt ob die durch s definierte Variable auf allen Kontrollflusspfaden uninitialisiert/gelöscht ist und M ISS M AY (s) einen Wert, ob die Variable auf mindestens einem Pfad uninitialisiert/gelöscht ist. Ist die Instruktion s nicht vorhanden, gilt M ISS M U ST (s) = M ISS M AY (s) = true. Analog ergibt sich die Datenflussinformation zu gelöschten Daten, die angibt ob eine Variable im Prozess bereits gelöscht wurde: Definition 5 (Gelöschte Daten). Für Instruktion s enthält DEL M U ST (s) einen Wahrheitswert, der anzeigt ob die durch s definierte Variable auf allen Kontrollflusspfaden gelöscht wurde und DEL M AY (s) einen Wahrheitswert, der anzeigt ob diese Variable auf mindestens einem Pfad gelöscht wurde. Ist die Instruktion s nicht vorhanden, gilt DEL M U ST (s) = DEL M AY (s) = f alse. Die Datenflussinformation zu definierenden Daten entspricht hingegen der Menge von Daten, in Form von durch write-Instruktionen definierten Variablen, die den Wert einer Variablen in mindestens einer Prozessausführung festlegen (beispielsweise {H 1 , H 2 } für Variable H 3 in Abbildung 1), oder in allen: Definition 6 (Definierende Daten). Für Instruktion s enthält die Menge DAT A M U ST (s) alle Daten, welche den Wert der durch s definierten Variablen auf allen Kontrollflusspfaden festlegen und die Menge DAT A M AY (s) alle Daten, welche den Wert dieser Variablen auf mindestens einem Pfad festlegen. Ist die Instruktion s nicht vorhanden, gilt DAT A M U ST (s) = DAT A M AY (s) = ∅.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Tabelle 3 .</head><label>3</label><figDesc>sonst Wie zu erkennen, werden darin jeder Instruktion s eines Prozesses Gleichungen DAT A M U ST (s) und DAT A M AY (s) zugeordnet. Die Datenflussinformation für eine write-Instruktion s bildet gerade die Menge, die als einziges Element die durch s definierte Variable enthält. Für eine Instruktion mit Φ-oder π-Funktion ergeben sich die Mengen DAT A M U ST und DAT A M AY als Schnitt beziehungsweise Vereinigung der Datenflussinformation zu den die Operanden definierenden Instruktionen (Instruktion def (V i ) für Operand V i ). Da das Gleichungssystem über endlichen Mengen und monotonen Funktionen definiert ist, ist dessen Konvergenz sichergestellt. Für die Fixpunktbestimmung kann dann ein Algorithmus zur Datenflussanalyse auf CSSA-Form genutzt werden [2, 3], der diesen in höchstens quadratischer Zeit bezüglich der Anzahl von Prozessinstruktionen berechnet. Aufgrund des beschränkten Platzes wird hier auf die Angabe der Fixpunktgleichungen zu fehlenden und gelöschten Daten verzichtet. , D1, H1, H2, U1, U2, V1, V2, G1, überschriebene Daten davon redundant: G2, E1, B1 C1, D1 davon redundant: C1, D1, G2, E1, B1 Inkonsistente Daten / H4, H5, H6, U5, U6, U7, V4, V5, V6 Nicht gelöschte Daten C1, A1 C1, A1, H1, H2, U1, U2, V1, V2, B1 Doppelt gelöschte Daten ∅ ∅ Zu spät gelöschte Daten / H3, H5, A1, B3, E1, G3, U4, U7, V6, A0 Abgeleitete Fehler für den Beispielprozess aus Abbildung 1</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>aller auf mindestens einem Kontrollflusspfad überschriebenen Variablen bestimmt werden. Ist die durch eine write-Instruktion definierte Variable kein Element dieser Menge, wird sie in keinem Fall überschrieben und muss daher redundant sein. Die Menge Inkonsistente Daten (mögliche Fehler) umfasst Instruktionen, die auf ein Datum zugreifen, auf das auch eine parallel ausgeführte Instruktion schreibend oder löschend zugreift. Da solche Schreib-/Lese-Konflikte im erweiterten Workflow-Graphen bereits mittels π-Funktionen gekennzeichnet sind, ergibt sich die Fehlermenge als Menge aller Instruktionen, die auf eine durch π-Funktion mit mehr als einem Operanden definierte Variable zugreifen. In ähnlicher Weise zu den hier näher erläuterten Fehlermengen ergeben sich dann auch die Mengen zu den Datenflussfehlern Nicht gelöschte Daten und Zu spät gelöschte Daten. Eine auf diese Weise durchgeführte Abschätzung für die Datenflussfehler im Beispielprozess aus Abbildung 1 ist in Tabelle 3 dargestellt. Aus Gründen der Übersichtlichkeit wurden nicht Instruktionen, sondern die zugehörigen Variablen angegeben. So enthalten die Mengen zum Fehler Fehlende Daten Variablen, die fehlende Daten beschreiben und auf die durch eine Instruktion zugegriffen wird, und die Mengen zum Fehler Nicht gelöschte Daten Variablen, die durch eine Instruktion geschrieben aber später nicht gelöscht werden. Die Fehlermengen beschreiben offenbar recht gut die im Prozess enthaltenen Fehler. Die Mengen sicherer Fehler repräsentieren so nur tatsächlich immer im Prozess auftretende Fehler. Die Mengen möglicher Fehler repräsentieren nahezu nur Fehler, die für mindestens eine Prozessausführung auch tatsächlich auftreten. Lediglich bei U 4 in der Fehlermenge Fehlende Daten und G 2 in der Fehlermenge Redundante oder überschriebene Daten handelt es sich um keine tatsächlichen Fehler. 5 Zusammenfassung In der vorliegenden Arbeit haben wir eine Methode vorgestellt, die es für strukturierte Geschäftsprozesse erlaubt, Abschätzungen für Datenflussfehler effizient zu bestimmen. Zu diesem Zweck werden erweiterte Workflow-Graphen als Prozessmodell genutzt, die die Durchführung einer Datenflussanalyse begünstigen. Basierend auf den durch Datenflussanalyse ableitbaren Informationen zu fehlenden, gelöschten und definierenden Daten konnten dann Fehlermengen für sichere und mögliche Datenflussfehler angegeben werden. Die Methode bietet neben ihrer Effizienz den weiteren Vorteil, dass alle in einem Prozess enthaltenen Datenflussfehler in einem Schritt abgeschätzt werden können. Im Gegensatz dazu liefert ein Ansatz auf Grundlage einer Modellprüfung immer nur einen Fehler als Gegenbeispiel zur untersuchten Eigenschaft. Zukünftige Arbeiten sollen die praktische Relevanz dieser Vorteile anhand von Fallstudien weiter untersuchen.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Literatur</head><label></label><figDesc></figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>wird hier für die Anti-Muster Redundante Daten und Überschriebene Daten keine Unterscheidung zwischen Fehlern, die immer auftreten, und solchen, die nur in bestimmten Ausführungsszenarien auftreten, vorgenommen. Stattdessen werden für alle Anti-Muster die Begriffe sicherer und möglicher Fehler definiert:</head><label></label><figDesc></figDesc><table><row><cell>read: A</cell><cell></cell></row><row><cell>write: C, E, F</cell><cell></cell></row><row><cell>destroy: /</cell><cell></cell></row><row><cell></cell><cell>read: /</cell></row><row><cell></cell><cell>write: B, G, V</cell></row><row><cell></cell><cell>destroy: /</cell></row><row><cell>read: /</cell><cell></cell></row><row><cell>write: A, D, H</cell><cell>cond(V)</cell></row><row><cell>destroy: /</cell><cell></cell></row><row><cell>read: E</cell><cell>read: /</cell></row><row><cell>write: G</cell><cell>write: U</cell></row><row><cell>destroy: B</cell><cell>destroy: /</cell></row><row><cell>read: A read: A, H</cell><cell></cell></row><row><cell>write: U, V</cell><cell>read: B, G, U</cell></row><row><cell>destroy: D</cell><cell>write: F, H</cell></row><row><cell></cell><cell>destroy: /</cell></row><row><cell>read: F, H, U</cell><cell></cell></row><row><cell>write: /</cell><cell></cell></row><row><cell>destroy: E, F, G</cell><cell></cell></row><row><cell cols="2">Definition 1 (Sicherer/Möglicher Datenflussfehler). Ein sicherer Fehler</cell></row><row><cell cols="2">tritt unabhängig vom zur Ausführungszeit tatsächlich gewählten Kontrollfluss ei-</cell></row><row><cell cols="2">nes Prozesses immer auf. Ein möglicher Fehler ist ein Kandidat für einen Fehler</cell></row><row><cell cols="2">der in mindestens einer Prozessausführung auftreten kann.</cell></row><row><cell cols="2">2.2 Prozessrepräsentation</cell></row><row><cell cols="2">Zur Durchführung unserer Methode benötigen wir ein Prozessmodell, dass die</cell></row><row><cell cols="2">Wiedergabe des Datenflusses innerhalb eines Prozesses gestattet. Zu diesem</cell></row><row><cell cols="2">Zweck werden erweiterte Workflow-Graphen genutzt, die gewöhnliche Workflow-</cell></row><row><cell cols="2">Graphen [4] mit Datenflussannotationen versehen. Auf der rechten Seite von</cell></row></table></figure>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Fehlermenge</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Fehlende Daten</head><p>{ s | ( s : Vi = destroy(Vj) ∨ s : read(Vj) (sichere Fehler) ∨ s : cond(Vj) ) ∧ M ISS M U ST (def (Vj)) = true } Fehlende Daten { s | ( s : Vi = destroy(Vj) ∨ s : read(Vj) (mögliche Fehler) </p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">David</forename><surname>Callahan</surname></persName>
		</author>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Static Analysis of Low-level Synchronization</title>
		<author>
			<persName><forename type="first">Jaspal</forename><surname>Subhlok</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM SIGPLAN Notices</title>
		<imprint>
			<biblScope unit="volume">24</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="100" to="111" />
			<date type="published" when="1989">1989</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">Jaejin</forename><surname>Lee</surname></persName>
		</author>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Concurrent Static Single Assignment Form and Constant Propagation for Explicitly Parallel Programs</title>
		<author>
			<persName><forename type="first">Samuel</forename><forename type="middle">P</forename><surname>Midkiff</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><forename type="middle">A</forename><surname>Padua</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Languages and Compilers for Parallel Computing, 10th International Workshop, LCPC&apos;97</title>
				<meeting><address><addrLine>Minneapolis, Minnesota, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1997">August 7-9, 1997. 1998</date>
			<biblScope unit="volume">1366</biblScope>
			<biblScope unit="page" from="114" to="130" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">linski, Artur: Advanced Verification of Distributed WS-BPEL Business Processes Incorporating CSSA-based Data Flow Analysis</title>
		<author>
			<persName><forename type="first">Simon</forename><forename type="middle">;</forename><surname>Moser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Axel</forename><forename type="middle">;</forename><surname>Martens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Katharina</forename><forename type="middle">;</forename><surname>Görlach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Wolfram</forename><forename type="middle">;</forename><surname>Amme</surname></persName>
		</author>
		<author>
			<persName><forename type="first">-</forename><surname>God</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2007 IEEE International Conference on Services Computing (SCC 2007)</title>
				<meeting><address><addrLine>Salt Lake City, Utah, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society Press</publisher>
			<date type="published" when="2007-07-13">9-13 July 2007. 2007</date>
			<biblScope unit="page" from="98" to="105" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Analyzing Process Models Using Graph Reduction Techniques</title>
		<author>
			<persName><forename type="first">Wasim</forename><forename type="middle">;</forename><surname>Sadiq</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Maria</forename><forename type="middle">E</forename><surname>Orlowska</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information Systems</title>
		<imprint>
			<biblScope unit="volume">25</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="117" to="134" />
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Natalia: Data-Flow Antipatterns: Discovering Data-Flow Errors in Workflows</title>
		<author>
			<persName><forename type="first">Nikola</forename><forename type="middle">;</forename><surname>Trcka</surname></persName>
		</author>
		<author>
			<persName><surname>Van Der Aalst</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Wil</surname></persName>
		</author>
		<author>
			<persName><surname>Sidorova</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Advanced Information Systems Engineering, 21st International Conference, CAiSE 2009</title>
				<meeting><address><addrLine>Amsterdam, The Netherlands</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009">June 8-12, 2009. 2009</date>
			<biblScope unit="volume">5565</biblScope>
			<biblScope unit="page" from="425" to="439" />
		</imprint>
	</monogr>
</biblStruct>

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