2 Modell-basierte Codegenerierung
|
|
|
- Ingeborg Roth
- vor 10 Jahren
- Abrufe
Transkript
1 Ein Testverfahren für optimierende Codegeneratoren INGO STÜRMER, MIRKO CONRAD 1 1 DaimlerChrysler AG, Forschung und Technologie, Alt-Moabit 96a, Berlin ( [email protected], [email protected]) Hinweis: Die Originalversion dieses Artikels ist unter DOI: /s erhältlich! Zusammenfassung: Die im Rahmen der Modell-basierten Entwicklung eingebetteter Steuerungs- und Regelungssoftware eingesetzten optimierenden Codegeneratoren müssen einer intensiven Qualitätssicherung unterzogen werden. Dem Einsatz von Testsuiten kommt dabei eine zentrale Rolle zu. Der Beitrag beschreibt den Aufbau einer modularen Testsuite für Codegeneratoren und schlägt einen Testansatz vor, der eine systematische Prüfung der vom Codegenerator angewendeten Optimierungstechniken ermöglicht. 1 Einführung Als Reaktion auf die gestiegenen Herausforderungen bei der Entwicklung eingebetteter Software im Kraftfahrzeug [6] vollzieht sich seit Mitte der 1990er Jahre ein Paradigmenwechsel, der durch den Übergang von der klassischen Programmentwicklung hin zu Modell-basierten Techniken gekennzeichnet ist [19], [18], [11], [27]. Kennzeichnend für die Modell-basierte Entwicklung ist die frühzeitige Beschreibung der eingebetteten Software durch ausführbare Modelle unter Verwendung von Funktionsblockdiagrammen und erweiterten Zustandsautomaten. Ein für diese Zwecke gebräuchliches Modellierungs- und Simulationswerkzeug, das sowohl im akademischen als auch im industriellen Umfeld weite Verbreitung gefunden hat, ist MATLAB/Simulink/Stateflow 1 [15]. Während MATLAB als Basisumgebung fungiert, stellen die Erweiterungen Simulink und Stateflow graphische Editoren und Simulatoren für Blockschaltbilder bzw. Statecharts zur Verfügung. Derartige graphische Modelle dienen als Basis aller weiteren konstruktiven Entwicklungsschritte bis hin zur Implementierung der zu realisierenden Software. Während in der Vergangenheit eine manuelle Implementierung der Software die Regel war, existieren mittlerweile Codegeneratoren, wie z.b. TargetLink [25] oder der Real-Time Workshop [23], die automatisch effizienten Code direkt aus dem Softwaremodell generieren können (Modellbasierte Codegenerierung). Bei einem Codegenerator handelt es sich prinzipiell um einen Compiler, der eine Quellsprache (hier eine graphische Modellierungssprache wie Simulink/Stateflow) in eine Zielsprache (hier eine prozedurale Programmiersprache wie C oder ADA) übersetzt. In der automobilen Softwareentwicklung ist dabei der konsequente Einsatz 1 Weltweit ist von ca Simulink/Stateflow-Anwendern auszugehen.
2 von Optimierungstechniken durch die beschränkte Speicherkapazität auf der Zielhardware unverzichtbar. Die Modell-basierte Codegenerierung ermöglicht deutliche Effizienzgewinne bei der Implementierung der Modelle. Voraussetzung hierfür ist aber, dass der Codegenerator bei der Übersetzung bereits getesteter Modelle keine Fehler in die Software einbringt. Eine mögliche Fehlerquelle sind dabei eben jene Optimierungen, die die notwendige Effizienz des generierten Codes im Hinblick auf Ausführungsgeschwindigkeit und Speicherverbrauch gewährleisten. Codegeneratoren haben aber noch nicht die Betriebsbewährtheit von C- und ADA Compilern erreicht und müssen daher einer intensiven Qualitätssicherung durch Testen unterzogen werden. Der vorliegende Beitrag beschreibt ein praxisorientiertes und systematisches Testverfahren für Codegenerator-Optimierungen. Die Codegenerierung wird dabei über das erfolgreiche Durchlaufen einer Testsuite abgesichert. Vorgestellt werden sowohl der generelle Aufbau einer solchen Testsuite, als auch ein Ansatz zur systematischen Erzeugung von Testfällen. Letztere prüfen die vom Codegenerator verwendeten Optimierungen. Der weitere Aufbau des Artikels ist wie folgt gegliedert: Kapitel 2 führt in die Modell-basierte Codegenerierung, Kapitel 3 in die dabei verwendeten Optimierungstechniken ein. In Kapitel 4 wird der generelle Ansatz zum Test von Codegeneratoren erläutert. Dieser wird in Kapitel 5 am Beispiel des Tests von Optimierungen umgesetzt. Kapitel 6 beschließt den Beitrag mit einer Zusammenfassung. 2 Modell-basierte Codegenerierung Die Modell-basierte Entwicklung eingebetteter Steuerungs- und Regelungssoftware ist durch den durchgehenden Einsatz ausführbarer Modelle in allen Entwicklungsphasen charakterisiert [11]. Die zu realisierende Funktion tritt dabei in verschiedenen, aufeinander aufbauenden Repräsentationsformen auf (Modellevolution): Ein (physikalisches) Funktionsmodell wird dabei um Realisierungsaspekte ergänzt, überarbeitet und schließlich mittels Codegeneratoren in optimierten Programmcode einer imperativen Programmiersprache (meist C) überführt. Der generierte Code kann auf verschiedenen Ausführungsplattformen (Host-PC, Evaluation Bord) analysiert bzw. getestet und anschließend in das eingebettete System (im Automobilbereich auch elektronisches Steuergerät (ECU) genannt) integriert werden (Abb. 1).
3 Am Anfang der Modellevolution steht häufig ein sog. physikalisches Modell 2. Es definiert die Schnittstelle der zu entwickelnden Softwarefunktion und beschreibt deren Außenverhalten in ausführbarer Form. Insbesondere enthält es bereits die notwendigen Steuerungs- und Regelalgorithmen. Das physikalische Modell kann nach beliebigen Kriterien strukturiert sein. Zweck des physikalischen Modells ist es, die zu entwickelnden Algorithmen darzustellen, ohne dabei bereits Realisierungsdetails beachten zu müssen. Die Beschreibung der Algorithmen erfolgt daher üblicherweise unter Verwendung von Gleitkomma-Arithmetik. Aus Effizienzgründen und aufgrund der Tatsache, dass ggf. von der Zielplattform abstrahiert wurde, kann das physikalische Modell nicht direkt als Basis für die Ableitung von Code für Seriensteuergeräte dienen. Daher wird es zuerst unter Realisierungsaspekten überarbeitet (z.b. Aufteilung von Funktionsteilen auf Tasks) und um notwendige Implementierungsdetails (z.b. Datentypen und Skalierungsinformationen) angereichert. In der Regel wird dabei die Gleitkomma-Arithmetik des physikalischen Modells durch Festkomma-Arithmetik ersetzt. Ergebnis der Überarbeitung ist ein Implementierungsmodell, das alle für die Codegenerierung notwendigen Informationen enthält und die Erzeugung von effizientem C-Code erlaubt. Optimierender Codegenerator Compiler / Linker Loader Host Modell *.mdl C Code *.c; *.h Maschinencode *.obj Target Abbildung 1: Prinzip der automatischen Codegenerierung Die automatische Codegenerierung stellt einen der Hauptvorteile der Modell-basierten Entwicklung dar. So führt die Verwendung eines Codegenerators zu einer deutlichen Effizienzsteigerung in der Implementierungsphase der Software. Einzelne Studien belegen eine erreichbare Verkürzung der Softwareentwicklungszeit von bis zu 20% durch den Einsatz der Codegenerierung [27]. Wenn zusätzlich der Verifikationsprozess auf Codeebene reduziert werden kann, werden Einsparungen bis zu 50% erwartet. Diese Zahlen decken sich mit Aussagen anderer Nutzer, so dass von erreichbaren Effizienzsteigerungen von 20-50% ausgegangen werden kann. Die Autoren weisen jedoch darauf hin, dass auf die Prüfung des generierten Codes nicht gänzlich verzichtet werden kann, da durch ungeeignete Modellierung oder falsche Anwendung des Codegenerators ungewollt Fehler in den Code eingebracht werden können, obwohl der Codegenerator korrekt funktioniert. 2 Der Begriff physikalisches Modell wird hier nicht für die physikalische Abbildung der Umgebung im Streckenmodell, sondern für ein frühes Funktionsmodell verwendet.
4 Der Einsatz der Codegenerierung wird darüber hinaus mit einer hohen Reife des Softwareentwicklungsprozesses assoziiert: So hat z.b. das japanische MathWorks Advisory Board (J- MAAB) fünf Reifegradstufen für die Modell-basierte Entwicklung definiert. Die beiden höchsten Stufen können danach nur erreicht werden, wenn eine automatische Seriencodegenerierung erfolgt. 3 Codegenerator Optimierungstechniken Soll Codegenerierung bei der Entwicklung eingebetteter Software zum Einsatz kommen, sind die Entwickler speziell im Automobilbereich auf die großflächige Anwendung von Optimierungstechniken angewiesen, da die Software auf einer Hardware mit streng limitierten Ressourcen integriert wird. Zu den typischen Optimierungstechniken zählen: Standardoptimierungen: Anwendung von bekannten Techniken aus dem Übersetzerbau, wie z.b. Konstanten Faltung (constant folding), Entfernung von redundanten oder nicht erreichbaren Code (dead-path elimination) [17], Interblock-Optimierungen: Kombination bzw. Verschmelzung verschiedener Simulink- Blöcke oder Stateflow-Anteile zu effizienten Codemustern [8], Einsatz von Codemuster-Bibliotheken: Diese ersetzen spezifischer Modellteile (Einzelblöcke oder Modellpattern) durch vorgefertigte, in Bibliotheken abgelegte Codefragmente (z.b. in Maschinensprache). Auf diese Weise können für eine bestimmte Kombination aus Compiler und Zielprozessor besonders effiziente Pattern ausgewählt werden [24]. Beispiel Der Einsatz von Optimierungen kann anhand eines einfachen Implementierungsmodells mit zwei Switch-Blöcken veranschaulicht werden. Die Funktionsweise eines Switch-Blocks ist in Abb. 2 (links) dargestellt. Während unoptimierter Code für das Beispiel in Abb. 2 (rechts) aus zwei verschachtelten If-Then-Else-Statements bestehen würde, kann ein optimierender Codegenerator einige Vereinfachungen vornehmen: Da der mittlere Eingang (control) des ersten Switch-Blocks (Switch1) konstant 0 und damit immer kleiner als der interne Schwellwert τ=0.5 ist, wird stets der untere Eingang, also InPort1, durchgeleitet. Das If-Statement (Switch1) kann wegoptimiert werden. Auf diese Weise liegt der Wert von InPort1 stets am oberen und am unteren Eingang des zweiten Switch-Blocks an und wird unabhängig vom Wert des Steuereingangs dieses Switch-Blocks weiterpropagiert. Ein optimierender Codegenerator könnte das Beispielmodell demnach durch eine einfache Zuweisung der Form OutPort = InPort1 realisieren.
5 Abbildung 2: Optimierbares Simulink-Modell mit zwei Switch-Blöcken 4 Test von Codegeneratoren Trotz der erreichten Fortschritte im Bereich der formalen Methoden stellt der dynamische Test weiterhin eines der wichtigsten Verfahren für die Sicherung der Softwarequalität dar. Da ein vollständiger Test nicht realisierbar ist, muss aus der Menge der möglichen Testfälle eine Teilmenge ausgewählt werden, die eine umfassende Prüfung des Testobjektes gewährleistet. Die Auswahl der Testfälle entscheidet dabei über Umfang und Qualität des gesamten Tests. Die zentrale Herausforderung beim Test von Codegeneratoren besteht demnach in der systematischen Auswahl einer handhabbar kleinen Menge von Testfällen, die geeignet erscheinen, vorhandene Fehler im Codegenerator mit hoher Wahrscheinlichkeit aufzudecken (Fehler-sensitive Testfälle). Bei oberflächlicher Betrachtung bestehen Testfälle für Codegeneratoren aus gültigen und ungültigen Testmodellen (hier: Simulink/Stateflow-Modelle). Der Test des Codegenerators gilt als erfolgreich, wenn: ungültige Testmodelle vom Codegenerator zurückgewiesen, d.h. nicht in C Code übersetzt werden (ungültige Testfälle) und gültige Testmodelle durch den Codegenerator übersetzt werden und sich der daraus generierte Code hinreichend ähnlich zum Modell verhält (gültige Testfälle). Für die ungültigen Testfälle ist diese Sichtweise ausreichend, da die Testmodelle zurückgewiesen, nicht aber ausgeführt werden müssen. Für die gültigen Testfälle stellt sich die Situation komplexer dar: Um die hinreichende Verhaltensähnlichkeit von Testmodell und daraus generiertem Code zu überprüfen, müssen beide mit den gleichen Eingabedaten (Testvektoren) stimuliert und die zugehörigen Ergebnisse (Testoutput) von Modell und Code miteinander vergleichen werden. Gültige Testfälle für Codegeneratoren bestehen also im allgemeinen Fall aus graphischen Modellen (Testfälle 1. Ordnung) und aus geeigneten Eingabedaten (Testfälle 2. Ordnung), mit denen diese Modelle stimuliert werden müssen. Beide Aspekte sind beim Aufbau einer Test-
6 suite für Codegeneratoren zu berücksichtigen, d.h. es sind sowohl Testfälle 1. Ordnung (Testmodelle) als auch die zugehörigen Testfälle 2. Ordnung (Testvektoren) bereitzustellen. Da die betrachteten graphischen Modelle innere Zustände besitzen können, ist es nicht ausreichend, sie kurzzeitig mit konstanten Werten zu stimulieren. Vielmehr können Testvektoren und Testergebnisse zeitveränderliche Größen sein. Basierend auf diesen Überlegungen ergibt sich der in Abb. 3 dargestellte prinzipielle Ansatz für den Test eines Codegenerators. Ob die Übersetzung der Modelle in C-Code korrekt funktioniert, wird dabei durch einen Vergleich zwischen den Testmodellen und dem daraus generierten Code (kurz: Autocode) sichergestellt. Diese Vorgehensweise bezeichnet man auch als Back-to-Back Test. Testmodell und Autocode werden hierfür mit denselben Testvektoren stimuliert und die jeweiligen Systemreaktionen im Rahmen der Testauswertung auf hinreichende Ähnlichkeit geprüft. Codegeneratortestsuite Testfallerzeugung für Testsuitemodul i (Testfälle 1. Ordnung) Testvektorgenerierung (Testfälle 2. Ordnung) Testmodellerzeugung Testmodell Testoutput o(t) Mod Testvektor i(t) Modell 1 Codegenerator Testauswertung? 1 Testoutput o(t) Code C Code Testdurchführung/-management Abbildung 3: Codegeneratortest - Grundprinzip Bei der Realisierung des Testansatzes sind neben den beiden Aspekten der Testfallerzeugung (Abb. 3, Testmodellerzeugung und Testvektorgenerierung) auch geeignete Verfahren für den robusten Vergleich der Testoutputs von Modell und Code (Abb. 3, Testauswertung) sowie eine leistungsfähige Werkzeugunterstützung für die Verwaltung und Ausführung der Tests (Abb. 3, Testdurchführung/ -management) bereitzustellen. Um einen modularen Aufbau der Testsuite zu ermöglichen, sollten Testfallerzeugung und Testdurchführung bzw. -management getrennt voneinander erfolgen. Neben dem in diesem Beitrag vorgestellten systematischen Test von Optimierungen erfordert eine umfassende Absicherung eines Modell-basierten Codegenerators weitere Testsuitemodu-
7 le, z.b. für den intensiven Test der Elementarblöcke/-konstrukte von Simulink/Stateflow oder für die Einbeziehung komplexer Modelle aus dem Anwendungskontext (siehe auch [31] für eine Übersicht über die benötigten Module einer Testsuite für Codegeneratoren). 5 Systematischer Test von Optimierungen Der systematische Test von Optimierungen kann gemäß dem in Kapitel 4 vorgestellten Grundprinzip erfolgen. Dabei ergeben sich die in Abb. 4 dargestellten Schritte, s.a. [21]. Testvektor C Testmodell B Optimierungsregel A n 1 n 1 LHS r RHS Testvektorgenerator Reactis, ET-Tool Modellgenerator ModeSSa Testfallerzeugung Testmodell r,x Testoutput o(t) r,x,y,mod Testvektor i(t) r,x,y D Back-to-back Testumgebung MTest Modell 1 1 C Code MIL Codegenerator TargetLink Testoutput o(t) r,x,y,code SIL/PIL E? Signalvergleicher MEval, MTest Testdurchführung/-management Abbildung 4: Codegeneratortest Systematischer Test der Optimierungen 5.1 Testfallerzeugung Ausgangspunkt für die Bestimmung geeigneter Testmodelle ist eine informelle, verbale Spezifikation einer Optimierungsregel r des Codegenerators, die z.b. durch den Hersteller des Codegenerators bereitgestellt wird. Die hierauf aufbauenden, zur Testfallerzeugung gehörenden Schritte, werden im Folgenden erläutert. Formalisierung der Optimierungsregeln (A) Die zu testende Codegenerator-Transformationsregel (z.b. eine Interblock-Optimierung) wird als Graphersetzungsregel (auch Graphtransformationsregel vgl. [29]) formalisiert. Eine solche Darstellung ermöglicht ein klares Verständnis darüber, wie Muster des Eingabegraphen (Modell) ausgetauscht, ergänzt oder gelöscht und in Code transformiert werden. Die Verwendung
8 von Graphtransformationsregeln ist hierbei nicht ungewöhnlich, stellen sie doch eine allgemein akzeptierte und formale Spezifikationstechnik für Compiler bzw. Codegeneratoren dar [2]. Beispiel Abb. 5 zeigt die eine vereinfachte Variante der Graphtransformationsregel für die Optimierung von If-Statements, die bei der Übersetzung von Switch-Blöcken zur Anwendung kommt. Der Switch-Block mit dem Schwellwert τ wird dabei durch den Knoten D repräsentiert, seine Eingänge durch die Knoten A bis C und der Ausgang durch den Knoten E. Kann auf Grund vorangegangener Berechnungen festgestellt werden, dass der Wert des Steuereingangs B stets größer gleich oder stets kleiner als der Schwellwert τ ist, kann im Code auf die If-Abfrage verzichtet werden. Die sich ergebenden Alternativen werden durch die 3 rechten Regelseiten veranschaulicht. RHS 1 A E, if C.value always >= τ LHS A In1 B E RHS 2, if C.value always < τ C control D E B In2 then A RHS 3 Node Attributes: D.type= switch D.threshold= τ F else If (C >= τ) B E, else Abbildung 5: Graphtransformationsregel für die Vereinfachung von If-Statements Testmodellerzeugung (B) Die Graphtransformationsregel dient als eine Art "Blaupause" für die Bestimmung der Testmodelle. Zu diesem Zweck wird ihr möglicher Eingaberaum näher betrachtet. Der Eingaberaum definiert sich als die Menge der Graphinstanzen, bei denen die Regel eine Graph Ersetzung durchführen könnte. Diese Menge kann prinzipiell unbegrenzt sein. Daher verwenden wir die Klassifikationsbaum-Methode [5] als unterlagertes Testverfahren, um den Eingaberaum der Graphtransformationsregel systematisch in Äquivalenzklassen zu zerlegen. Eine
9 geeignete Kombination der Äquivalenzklassen zu Testfällen kann automatisiert mit dem Klassifikationsbaum-Editor CTE/XL [14] vorgenommen werden. Die im CTE/XL definierten Tests können als abstrakte Beschreibungen der Testfälle 1. Ordnung, also der Testmodelle aufgefasst werden. Beispiel Abb. 6 oben stellt den Eingaberaum der Graphregel aus Abb. 5 in Form eines Klassifikationsbaums dar. Jeder der drei Eingänge A, B, C des Switch-Blocks (Teilbaum Inputs) kann dabei mit einer Konstanten oder einem variablen Ausdruck verbunden werden. Außerdem können zwei oder gar alle drei Eingänge des Switch-Blocks aus ein und der selben Quelle gespeist werden (Teilbaum EqualSignals). Im unteren Teil von Abb. 6 sind die zugehörigen Testfälle (Testcase 1 Testcase 40) dargestellt. Testcase 37 (vgl. mit Abb. 7) repräsentiert beispielsweise alle Switch-Blöcke mit drei variablen Eingängen, bei denen die Eingänge A und C aus der selben Quelle gespeist werden. Abbildung 6: Klassifikationsbaum und Kombinationstabelle für die Vereinfachung von If-Statements
10 Die Anzahl der Testfälle, die sich durch die Kombination der gewählten Klassen ergeben, kann schnell anwachsen: Einige hundert Testfälle sind nicht unüblich. Da es aufwendig und fehleranfällig ist, die Modelle manuell auf Basis der abstrakten Testfallbeschreibungen zu erstellen, wurde dieser Schritt automatisiert. Die Instanziierung einer CTE/XL- Testfallbeschreibung durch ein konkretes Testmodell erfolgt dabei durch den Testmodellgenerator ModeSSa (Model Generator for Simulink and Stateflow [7]). ModeSSa erzeugt für jeden im CTE/XL beschriebenen Test ein repräsentatives Testmodell. Hierfür wird eine XML- Darstellung des Klassifikationsbaums erstellt und unter Verwendung der Graphtransformationssprache GReAT [10] in eine XML-Darstellung eines dazu passenden Simulink/Stateflow- Modells überführt. Der Transformationsphase folgt die Generierung von ausführbaren Testmodells mit SimEx [22], einem Werkzeug, das die Transformation von XML-Darstellungen in Simulink/Stateflow-Modelle ermöglicht. Beispiel Abb. 7 zeigt das mit ModeSSa erzeugte Implementierungsmodell für Testcase 37. Abbildung 7: Repräsentatives Testmodell für Testcase 37 Die Gesamtheit der so erzeugten Testmodelle ergibt die Testfälle 1. Ordnung, die die Funktionalität des Codegenerators im Hinblick auf die gewählte Optimierungsregel r systematisch abprüfen. Bevor jedoch das Verhalten des Codegenerators überprüft werden kann, benötigen wir passende Eingabedaten (Testfälle 2. Ordnung), um die Modelle zu stimulieren. Testvektorgenerierung (C) Um Aussagen über die Verhaltensähnlichkeit von Modell und Autocode machen zu können, genügt es nicht, bei der Testdurchführung nur einzelne Teile des Modells zu durchlaufen. Vielmehr müssen alle möglichen "Simulationspfade" des gegebenen Testmodells und auch des daraus generierten Codes stimuliert werden. Dies begründet sich daher, dass Modell und Code zwar strukturelle Ähnlichkeiten aufweisen [1] (z.b. Kontrollflusspfade), es aber auch Fälle gibt, in denen Unterschiede in der Struktur auftreten können. So werden z.b. durch Optimierungen Teile des Modells verworfen (diese sind im Code nicht mehr zu finden). Ferner können im Code zusätzliche Strukturelemente generiert werden, wie z.b. eine Kontrollstruk-
11 tur, die bei einer Division einen möglichen Null-Divisor abfängt. Ebenso können Modellpattern wie z.b. Subsysteme mehrfach im Code auftauchen (Inlining) oder zu einzelnen Funktionsaufrufen zusammengefasst werden. Hieraus ergibt sich die Notwendigkeit, jedem Testmodell/Code Testvektoren beizuordnen, die eine ausreichend hohe Strukturüberdeckung auf Modell- wie auf Codeebene gewährleisten (White-box Test). Um diese Aufgabe zu automatisieren, können Testvektorgeneratoren eingesetzt werden. Zunächst werden dafür unter Verwendung eines Testvektorgenerators wie Reactis Tester [20] aus dem Testmodell automatisch Strukturtestdaten erzeugt, die eine ausreichend hohe Modellüberdeckung erwarten lassen. Aufgrund der strukturellen Ähnlichkeiten zwischen Modell und Autocode kann in der Regel davon ausgegangen werden, dass diese, wenn sie zum Test des Autocodes verwendet werden, auch zu einer ähnlich hohen Codeabdeckung führen. Sollten wegen der oben angeführten Fälle strukturelle Unterschiede auftreten, müssen fehlende Testvektoren auf Codeebene ggf. ergänzt werden. Hierfür kann z.b. das Evolutionäre Testtool ET [28] eingesetzt werden. Beispiel Eine 300ms dauernde Stimulation von Input1 mit i 1 (t) 37.1 =t und Input2 mit 0, 0.0 t < 0.1 i 2 (t) 37.1 = 0.5, 0.1 t < 0.2 lässt eine vollständige Strukturüberdeckung auf Modellebene 1, 0.2 t 0.3 erwarten. Zusätzlich wird in (D) die mit diesen Testvektoren tatsächlich erreichte Überdeckung auf Modell- und auf Codeebene gemessen. Ist die erreichte Überdeckung auf Modell- oder Codeebene unzureichend, ist manuell zu prüfen, ob Testvektoren ergänzt werden müssen, oder ob es sich um tatsächlich unerreichbare Strukturelemente handelt. Die Wahl der Überdeckungsmaße auf Modell- und Codeebene erfolgt in Abhängigkeit von der Kritikalität der Anwendung. Für eine Übersicht verschiedener Modell- und Codeüberdeckungsmaße siehe [1]. Die Schritte (A) bis (C) werden für alle Optimierungsregeln des Codegenerators durchgeführt. Auf diese Weise entsteht mit dem Modul zum systematischen Test der Optimierungen ein zentraler Baustein einer umfassenden Testsuite für Codegeneratoren.
12 5.2 Testdurchführung und -management Die Testsuitekomponente zum systematischen Test von Optimierungsregeln kann ebenso wie andere Module der Codegeneratortestsuite in die Modell-basierte Testumgebung MTest [12], [16] importiert und dort ausgeführt werden. Beispiel: Abb. 8 zeigt die zur If-Statement-Optimierung gehörenden Teile der Codegenerator Testsuite in MTest. Für jeden im Klassifikationsbaum definierten Testfall (vgl. Abb. 6: Testcase x) findet sich ein Simulink-Modell (switchsystem_x), sowie die zugehörigen Testvektoren (TestData) und Testergebnisse (Testoutput bzw. OutputData). Testmodell switch, 37 Testvektor i(t) switch,37,1 Testoutput o(t) switch,37,1,mod Testoutput o(t) switch.37.1,code Abbildung 8: Teil der Optimierungstestsuite in MTest Back-to-back-Test von Modell und Code (D) Die vorhandenen Tests können nun einzeln oder im Batchbetrieb ausgeführt werden. Zunächst werden die Modelle und der daraus erzeugte Code nacheinander mit den gleichen Testvektoren stimuliert. Dabei werden die Testoutputs von Modell und Code, sowie die erreichten Modell- und Codeüberdeckungen von der Testumgebung protokolliert.
13 Je nach Anwendungszweck kann der zum Vergleich verwendete C-Code auf dem Entwicklungsrechner (Software-in-the-Loop Test, SIL) auf einer zielnahen Hardware (Processor-inthe-Loop Test, PIL) oder auf beiden Plattformen ausgeführt werden. Testauswertung (E): Um Aussagen zur Verhaltensähnlichkeit von Modell und Code treffen zu können, sind die Systemreaktionen von Modell- und Code miteinander zu vergleichen. Für jeden Output ist hierbei ein Vergleich zeitveränderlicher Signale erforderlich. Dieser Vergleich ist nicht so trivial, wie er auf den ersten Blick erscheint: Während die Simulation des Modells typischerweise unter Verwendung von Gleitkommaarithmetik erfolgt, handelt es sich beim generierten Code aus Effizienzgründen i.d.r. um Testkomma-Code (siehe [12] für Informationen zum Unterschied von Fest- und Gleitkommaarithmetik). D.h. Modell und Code verwenden unterschiedliche Datentypen und Genauigkeiten. Darüber hinaus sind die Ausführungsgeschwindigkeiten der verschiedenen Ausführungsplattformen nicht notwendigerweise identisch. Aufgrund dieser Sachverhalte ist es nicht zielführend, absolute Gleichheit (Identität) zwischen den Testoutputs von Modell und Code zu fordern. Vielmehr muss zwischen beiden Signalen eine geeignete Ähnlichkeitsrelation bestehen. In einfachen Fällen genügt es, die symmetrische absolute Differenz der Abtastpunkte von o(t) r,x,y,mod und o(t) r,x,y,code zu berechnen und anschließend die über alle Abtastpunkte bestimmte maximale Abweichung zu ermitteln. Beide Signale sind ähnlich, wenn die derart ermittelte Abweichung kleiner als eine vorgegebene Akzeptanzschwelle ist, die in Abhängigkeit von der Quantisierungsgenauigkeit (Auflösung) des betrachteten Outputs gewählt wird. Für komplexere Fälle bietet sich eine Vorverarbeitung mit dem in MEval [30] implementierten Differenzmatrixverfahren [3], [33] mit anschließender Differenzbildung an. Diese Vorgehensweise ermöglicht die getrennte Analyse von zeitlichen Abweichungen und Abweichungen im Wertebereich und damit die Tolerierung definierter zeitlicher Abweichungen. Über eine geeignete Parametrierung kann auch hier die Akzeptanzschwelle angepasst werden. Beispiel In Abb. 9 sind die Systemreaktionen von Modell und Code (SIL) übereinander geplottet, Abb. 10 zeigt die skalierungsbedingt auftretenden Differenzen. Da diese stets kleiner als die vorgegebene zulässige Abweichung sind, ist die Verhaltensähnlichkeit von Modell und Code gegeben, d.h. der abgebildete Test war erfolgreich.
14 Testoutput o(t) switch,37,1,mod Testoutput o(t) switch.37.1,code Abbildung 9: Outputdaten Testoutput o(t) switch,37,1,code -Testoutput o(t) switch.37.1,mod Abbildung 10: Signalvergleich
15 Sind alle Outputsignalpaare eines Testmodells zueinander ähnlich ist dies ein Indiz dafür, dass der Codegenerator und die weiteren benutzten Werkzeuge (z.b. Compiler, Linker) für diesen Testfall korrekt arbeiten. Eine Unähnlichkeit bei einem oder mehreren Signalpaaren kann mehrere Ursachen haben. Mögliche Gründe sind eine fehlerhafte Implementierung des Codegenerators, ein Problem mit einem der anderen involvierten Werkzeuge, ein fehlerhaft erzeugtes Testmodell oder an einer unvollständigen bzw. fehlerhaften Spezifikation der Optimierung (unzulässige Graphtransformation). Die entsprechenden Fehlerfälle müssen manuell untersucht werden. 6 Zusammenfassung In vorliegenden Beitrag wurde ein an den Erfordernissen der Praxis orientiertes Testverfahren für optimierende Codegeneratoren beschrieben. Das Verfahren leistet einen wichtigen Beitrag zur Absicherung der in der Modell-basierten Entwicklung eingebetteter Steuerungs- und Regelungssysteme eingesetzten Codierungswerkzeuge, die die graphische Modellierungssprache Simulink/Stateflow in C-Code umsetzen. Ein wesentlicher Vorteil des Testverfahrens ist das hohe Automatisierungspotential, das insbesondere durch den Modellgenerator ModeSSa gewährleistet wird. Aussagen zur Korrektheit der durch den Codegenerator ausgeführten Transformationen werden dabei durch Back-to-Back-Tests von Ursprungsmodell und daraus generiertem Code gewonnen: Sind die Reaktionen von Modell und Autocode auf Stimulation mit den gleichen Eingaben hinreichend ähnlich, kann für den betrachteten Fall auf eine korrekte Transformation geschlossen werden. Verallgemeinerungen derartiger Aussagen sind möglich, wenn der Funktionsumfang des Codegenerators systematisch durch Testfälle abgedeckt wird, wobei Testfälle immer eine Kombination aus Testmodellen und zugehörigen Testvektoren zur Stimulation sind (Testfälle 1. und 2. Ordnung). Schwerpunkt des vorgestellten Ansatzes ist daher eine Systematik zur Erzeugung von Testfällen für Codegeneratoren. Die Testfälle werden verwendet, um die im Codegenerator implementierten Optimierungen zu überprüfen: In einem ersten Schritt werden aus einer formalen Repräsentation des Eingaberaums einer Optimierung systematisch Simulink/Stateflow- Modelle erzeugt, die bei der Übersetzung in C-Code die betreffende Optimierung auslösen. Für jedes dieser Testmodelle werden in einem zweiten Schritt Testvektoren generiert, die eine Strukturüberdeckung von Testmodell und zugehörigem Autocode gewährleisten. Modell und Code werden dann unter Verwendung dieser Testvektoren einem Back-to-Back-Test unterzogen. Ein robuster Signalvergleich der Systemreaktionen entscheidet dann über die erforderliche Verhaltensähnlichkeit.
16 Das vorgeschlagene Verfahren geht in mehreren Punkten über die in der Literatur vorhandenen Ansätze hinaus (vgl. [32], [4], [26]): Erstens werden die Testmodelle systematisch aus einer formalen Beschreibung der Optimierungen eines Codegenerators abgeleitet. Dies ist eine Erweiterung existierender Ansätze, die Testfälle auf Basis der Grammatik der Eingabesprache erstellen oder von ad-hoc zusammengestellten bzw. auf Erfahrung basierten Mengen von Testmodellen ausgehen. Zweitens werden die erforderlichen Eingaben für diese Testmodelle sowie für den generierten Code auf Basis von White-Box-Überdeckungsmaßen generiert. Die so erreichte hohe strukturelle Überdeckung auf Modell- und Codeebene geht über die Ergebnisse hinaus, die mit manuell erstellten oder zufällig generierten Testdaten (vgl. [Toe99]) erreicht wurden. Drittens erlauben die angewendeten robusten Signalvergleichsverfahren die Tolerierung von Unterschieden zwischen der Ausführung von Modell und Code, die beim Übergang von Gleitkomma- auf Festkommaarithmetik unvermeidbar sind. Der Back-to-Back-Test zwischen Modell und Code erfolgt weitgehend automatisiert in der einer Modell-basierten Testumgebung wie z.b. MTest. Dies sichert die Regressionsfähigkeit der Testsuite und ermöglicht die zeitnahe Überprüfung neuer Versionen oder Konfigurationen des Codegenerators. Die Testfälle zur Prüfung der Optimierungen bilden einen Kernbestandteil einer umfassenden modularen Testsuite für Codegeneratoren. Weitere Module der Testsuite, die auf andere Aspekte der Codegenerierung fokussieren, werden derzeit bei verschiedenen Automobilherstellern und -zulieferern entwickelt. Diese Module der Testsuite können mit denen der Hersteller des Codegenerators (s.a. [9]) zu einer umfassenden Testsuite für Codegeneratoren kombiniert werden. Die Autoren sind der Überzeugung, dass eine solche Testsuite zukünftig eine zentrale Rolle in der anwendungsunabhängigen Absicherung des Einsatzes von Codegeneratoren, z.b. deren Zertifizierung, spielen wird. Referenzen 1. Baresel, A., Conrad, M., Sadeghipour, S., Wegener, J. (2003) The Interplay between Model Coverage and Code Coverage. Proc. 11. Europ. Int. Conf. on Software Testing, Analysis and Review (EuroSTAR 03), Amsterdam (NL). 2. Baldan, P.; König, B.; Stürmer, I. (2004) Generating Test Cases for Code Generators by Unfolding Graph Transformation Systems. Proc. Int. Conf. on Graph Transformation (ICGT'04), LNCS Bd. 3256, S Conrad, M.; Fey, I.; Pohlheim, H. (2003) Automatisierung der Testauswertung für Steuergerätesoftware. Proc. 11. Int Kongress Elektronik im Kraftfahrzeug, VDI-Berichte, Bd. 1789, VDI Verlag, Düsseldorf (D), S Edwards, P.D. (1999) The Use of Automatic Code Generation Tools in the Development of Safety-Related Embedded Systems. Vehicle Electronic Systems, Europ. Conf. and Exhibition, ERA Report # Grochtmann, M.; Grimm, K. (1993) Classification Trees for Partition Testing. Software Testing, Verification and Reliability, S
17 6. Grimm, K. (2005) Software-Technologie im Automobil. In: Liggesmeyer, P., Rombach, D.: Software-Engineering eingebettete Systeme, Spektrum, Verlag S Heck, S. (2005) Entwurf eines Modellgenerators für den systematischen Test optimierender Codegeneratoren. Diplomarbeit, TU Berlin (D). 8. Hanselmann, H., Kiffmeier, U., Köster, L., Meyer, M. (1999) Automatic Generation of Production Quality Code for ECUs. Proc. Embedded Intelligence, Nürnberg (D). 9. Jungmann, J.; Beine, M. (2003) Automatische Code-Generierung für sicherheitskritische Systeme. Automotive Electronics, Heft II. 10. Karsai, G., Agrawal, A., Shi, F., Sprinkle, J. (2003) On the use of Graph Transformation in the Formal Specification of Model Interpreters. Journal of Universal Computer Science, Vol. 9(11), S Klein, T., Conrad, M., Fey, I., Grochtmann, M.: Modellbasierte Entwicklung eingebetteter Fahrzeugsoftware bei DaimlerChrysler. Proc. Modellierung 2004, Marburg (D), März 2004, Lecture Notes in Informatics, Vol. P-45, S Lamberg, K., Beine, M., Eschmann, M., Otterbach, R., Conrad, M., Fey, I. (2004) Model-based testing of embedded automotive software using MTest. Proc. SAE World Congress 2004, Detroit (USA), März 2004, SAE technical paper # Lapsley, P., Bier, J., Shoham, A., Lee, E. A. (1997) DSP Processor Fundamentals. IEEE Press, New York (USA). 14. Lehmann, E., and Wegener, J. (2000) Test Case Design by Means of the CTE/XL. Proc. 8. Europ. Int. Conf. on Software Testing, Analysis and Review (EuroSTAR '00), Copenhagen (DK). 15. MATLAB/Simulink/Stateflow (Produktinformationen). The MathWorks Inc., MTest (Produktinformationen). dspace GmbH, Muchnick, S. S. (1997) Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco (USA). 18. Rau, A. (2003) Model-Based Development of Embedded Automotive Control Systems. Dissertation, Dept. of Computer Science, Universität Tübingen (D). 19. Reinfrank, M. (1994) Modellbasierte Funktionsentwicklung für Motorsteuerungen - Ein Pilotprojekt in der MSR- Entwicklungsumgebung MESA. Proc. 5. Int. Tagung Elektronik im Kraftfahrzeug, VDI-Berichte, Bd. 1152, VDI Verlag, Düsseldorf (D), S.253ff. 20. Reactis Simulator / Tester (Produktinformationen). Reactive Systems Inc Stürmer, I.; Conrad, M. (2003) Test Suite Design for Code Generation Tools. Proc. of 18th. Int. IEEE Automated Software Engineering Conference (ASE'03), S SimEx (Produktinformationen). IT power Consultants, Real-Time Workshop (Produktinformationen). The MathWorks Inc., Thomsen, T. (2003) Integration of International Standards for Production Code Generation, Society of Automotive Engineers. SAE technical paper # TargetLink (Produktinformaitionen). dspace GmbH, Toeppe, S., Ranville, S., Bostic, D., Wang, C. (1999) Practical Validation of Model Based Code Generation for Automotive Applications. Proc. of 18. AIAA/IEEE/SAE Digital Avionics System Conference, St. Louis (USA). 27. Ueda, T.; Ohata, A. (2004) Trends of Future Powertrain Development and the Evolution of Powertrain Control Systems. Proc. of 30. Int. Congress on Transportation Electronics (Convergence 04), Detroit (USA), SAE # , S Wegener, J.; Stahmer, H.; Baresel, A. (2001) Evolutionary Test Environment for Automatic Structural Testing. Special Issue of Information and Software Technology, Vol. 43, S Rozenberg, G. (ed.) (1997) Handbook of Graph Grammars and Computing by Graph Transformations Vol.1. World Scientific, MEval (Produktinformationen). IT power Consultants, Stürmer, I. (2004) Integration of the Code Generation Approach in the Model-based Development Process by Means of Tool Certification, Journal of Integrated Design and Process Science, Vol. 8 (2), S
18 32. Bourjawah, A. S., Saleh, K. (1997) Compiler Test Case Generation Methods: A Survey and Assessment, Information and Software Technology, Vol. 39, S Conrad, M., Sadeghipour, S., Wiesbrock, H. (2005) Automatic Evaluation of ECU Software Tests, SAE World Congress 2005, Detroit (US),April 2005, SAE Paper Teile dieses Beitrags und der darin beschriebenen Arbeiten sind im Rahmen des BMBF geförderten Verbundprojekts IMMOS Integrierte Methodik zur modellbasierten Steuergeräteentwicklung (Förderkennzeichen 01ISC31D) entstanden.
Code Generator Certification: A Test Suite-oriented Approach
Code Generator Certification: A Test Suite-oriented Approach DaimlerChrysler AG, Research E/E and Information Techlogy {Mirko.Conrad [email protected] Überblick Motivation Ziele der Arbeiten
Erfolgreicher entwickeln durch systematisches Testen
Erfolgreicher entwickeln durch systematisches Testen Testen ist eine zentrale Maßnahme bei der Qualitätssicherung von Automobilelektronik. Nur durch systematisches und automatisiertes Testen kann eine
Einsatz automatischer Testdatengenerierung im modellbasierten Test
Einsatz automatischer Testdatengenerierung im modellbasierten Test Sadegh Sadeghipour [email protected] Gustav-Meyer-Allee 25 / Gebäude 12 13355 Berlin www.itpower.de Modellbasierte Software-Entwicklung
Korrektheitsbegriffe für modellbasierte Codegeneratoren
Korrektheitsbegriffe für modellbasierte Codegeneratoren Institut für Informatik Martin-Luther-Universität Halle-Wittenberg 9.IT 2 22.06.2006 Dr. Mirko Conrad The MathWorks München Prof. Dr. Wolf Zimmermann
dspace (1/3) dspace: Gegründet 1988 in Paderborn Mitarbeiter: Über 650 Mitarbeiter weltweit, davon über 70 % Ingenieure Ständiges Mitarbeiterwachstum
Agenda dspace und das V-Modell für Steuergeräte- Entwicklung Wie funktioniert Rapid Control Prototyping TargetLink: Vom Model zum Code Ein Wort zu HIL Praxisbeispiele dspace (1/3) dspace: Gegründet 1988
Dr. Klaus Lamberg, Michael Beine
$6,0)DFKWDJXQJ 6LPXODWLRQV XQG7HVWPHWKRGHQI U6RIWZDUH LQ)DKU]HXJV\VWHPHQ 7HVWPHWKRGHQXQG±WRROV WRROV LQ GHUPRGHOOEDVLHUWHQ )XQNWLRQVHQWZLFNOXQJ Dr. Klaus Lamberg, Michael Beine $JHQGD Modellbasierte Funktionsentwicklung
Entwicklungsprozesse und -werkzeuge
Entwicklungsprozesse und -werkzeuge Boris Nikolai Konrad [email protected] PG Seminarwochenende 21.-23. Oktober 2007 1 Überblick Entwicklungsprozesse Unterstützungsprozesse Kernprozess Entwicklungswerkzeuge
Integration mit. Wie AristaFlow Sie in Ihrem Unternehmen unterstützen kann, zeigen wir Ihnen am nachfolgenden Beispiel einer Support-Anfrage.
Integration mit Die Integration der AristaFlow Business Process Management Suite (BPM) mit dem Enterprise Information Management System FILERO (EIMS) bildet die optimale Basis für flexible Optimierung
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop
Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop Christoph Niedermayr 20.01.2005 Überblick 1 2 X in the loop Rapid Prototyping Begriffe Was versteht man unter statischem
Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008
Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen
SEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
Überprüfung der digital signierten E-Rechnung
Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,
4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw, 16.04.2013
Software Komponenten FS13 Gruppe 03 Horw, 16.04.2013 Bontekoe Christian Estermann Michael Moor Simon Rohrer Felix Autoren Bontekoe Christian Studiengang Informatiker (Berufsbegleitend) Estermann Michael
Systemen im Wandel. Autor: Dr. Gerd Frenzen Coromell GmbH Seite 1 von 5
Das Management von Informations- Systemen im Wandel Die Informations-Technologie (IT) war lange Zeit ausschließlich ein Hilfsmittel, um Arbeitsabläufe zu vereinfachen und Personal einzusparen. Sie hat
Content Management System mit INTREXX 2002.
Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,
10 Erweiterung und Portierung
10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle
Eine Logikschaltung zur Addition zweier Zahlen
Eine Logikschaltung zur Addition zweier Zahlen Grundlegender Ansatz für die Umsetzung arithmetischer Operationen als elektronische Schaltung ist die Darstellung von Zahlen im Binärsystem. Eine Logikschaltung
C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang
Einleitung Dieses Buch wendet sich an jeden Leser, der die Programmiersprache C++ neu lernen oder vertiefen möchte, egal ob Anfänger oder fortgeschrittener C++-Programmierer. C++ ist eine weitgehend plattformunabhängige
Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über
Güte von s Grundlegendes zum Konzept der Güte Ableitung der Gütefunktion des Gauss im Einstichprobenproblem Grafische Darstellung der Gütefunktionen des Gauss im Einstichprobenproblem Ableitung der Gütefunktion
Datenübernahme easyjob 3.0 zu easyjob 4.0
Datenübernahme easyjob 3.0 zu easyjob 4.0 Einführung...3 Systemanforderung easyjob 4.0...3 Vorgehensweise zur Umstellung zu easyjob 4.0...4 Installation easyjob 4.0 auf dem Server und Arbeitsstationen...4
Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten
Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während
Anforderungen an die HIS
Anforderungen an die HIS Zusammengefasst aus den auf IBM Software basierenden Identity Management Projekten in NRW Michael Uebel [email protected] Anforderung 1 IBM Software Group / Tivoli Ein Feld zum
Vector Software. Test Automation mit VectorCAST während der gesamten Softwareentwicklung W H I T E P A P E R
Vector Software W H I T E P A P E R Test Automation mit VectorCAST während der gesamten Softwareentwicklung VectorCAST Produktfamilie Die VectorCAST Produktfamilie automatisiert Testaktivitäten über den
Übung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
OUTSOURCING ADVISOR. Analyse von SW-Anwendungen und IT-Dienstleistungen auf ihre Global Sourcing Eignung. Bewertung von Dienstleistern und Standorten
Outsourcing Advisor Bewerten Sie Ihre Unternehmensanwendungen auf Global Sourcing Eignung, Wirtschaftlichkeit und wählen Sie den idealen Dienstleister aus. OUTSOURCING ADVISOR Der Outsourcing Advisor ist
Lineare Gleichungssysteme
Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen
Lizenzen auschecken. Was ist zu tun?
Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.
Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08
Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer
etermin Einbindung in Outlook
etermin Einbindung in Outlook 1. Einführung Über etermin gebuchte Termine können bei Bedarf auch mit externen Terminkalendern, wie zum Beispiel Outlook, ical oder Google synchronisiert werden. Dieses Dokument
Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing
Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster
Lizenzierung von System Center 2012
Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im
Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt
Objektorientierter Software-Entwurf Grundlagen 1 1 Einordnung der Veranstaltung Analyse Design Implementierung Slide 1 Informationssystemanalyse Objektorientierter Software-Entwurf Frühe Phasen durch Informationssystemanalyse
Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt
Konsolidierung und Neuimplementierung von VIT Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt Inhaltsverzeichnis 1 Was ist der Kontext?... 1 2 VIT: Ein sehr erfolgreiches
Übungen zu. Kraftfahrzeugmechatronik II
Übungen zu Kraftfahrzeugmechatronik II Software-Entwicklung nach dem V-Modell Übungen Rapid Prototyping und Target Link Quelle: Schäuffele/Zurawka Automotiv Software Engineering vieweg Verlag Umsetzung
Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
Java Entwicklung für Embedded Devices Best & Worst Practices!
Java Entwicklung für Embedded Devices! George Mesesan Microdoc GmbH Natürlich können wir dieses neue log4j Bundle auch auf dem Device verwenden. Ist doch alles Java. Java Micro Edition (ME) Java Standard
Einführung in. Logische Schaltungen
Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von
Sie werden sehen, dass Sie für uns nur noch den direkten PDF-Export benötigen. Warum?
Leitfaden zur Druckdatenerstellung Inhalt: 1. Download und Installation der ECI-Profile 2. Farbeinstellungen der Adobe Creative Suite Bitte beachten! In diesem kleinen Leitfaden möchten wir auf die Druckdatenerstellung
Künstliches binäres Neuron
Künstliches binäres Neuron G.Döben-Henisch Fachbereich Informatik und Ingenieurwissenschaften FH Frankfurt am Main University of Applied Sciences D-60318 Frankfurt am Main Germany Email: doeben at fb2.fh-frankfurt.de
Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Das komplette Material finden Sie hier: Download bei School-Scout.de
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was
MetaQuotes Empfehlungen zum Gebrauch von
MetaQuotes Empfehlungen zum Gebrauch von MetaTrader 4 auf Mac OS Auch wenn viele kommerzielle Angebote im Internet existieren, so hat sich MetaQuotes, der Entwickler von MetaTrader 4, dazu entschieden
Primzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
Informationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77
7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77 (LQOHLWXQJ Mit der SAP Testworkbench und dem Testtool ecatt können Anwender von SAP Software auf Basis des SAP Web Application Servers ab
Speicher in der Cloud
Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG
SDD System Design Document
SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen
Ishikawa-Diagramm. 1 Fallbeispiel 2. 2 Was ist ein Ishikawa-Diagramm 2. 3 Vorgehen bei der Erstellung eines Ishikawa-Diagramms 2.
Ishikawa-Diagramm 1 Fallbeispiel 2 2 Was ist ein Ishikawa-Diagramm 2 3 Vorgehen bei der Erstellung eines Ishikawa-Diagramms 2 4 Vorteile 5 5 Nachteile 5 6 Fazit 5 7 Literaturverzeichnis 6 1 Fallbeispiel
Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
white sheep GmbH Unternehmensberatung Schnittstellen Framework
Schnittstellen Framework Mit dem Schnittstellen Framework können Sie einerseits Ihre Schnittstellen automatisch überwachen. Eine manuelle Kontrolle wird überflüssig, da das Schnittstellen Framework ihre
Grundlagen für den erfolgreichen Einstieg in das Business Process Management SHD Professional Service
Grundlagen für den erfolgreichen Einstieg in das Business Process Management SHD Professional Service Der BPM-Regelkreis Im Mittelpunkt dieser Übersicht steht die konkrete Vorgehensweise bei der Einführung
Skript Pilotphase em@w für Arbeitsgelegenheiten
Die Pilotphase erstreckte sich über sechs Meilensteine im Zeitraum August 2011 bis zur EMAW- Folgeversion 2.06 im August 2013. Zunächst einmal musste ein grundsätzliches Verständnis für das Verfahren geschaffen
Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof
Bedienungsanleitung für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Matthias Haasler Version 0.4 Webadministrator, email: [email protected] Inhaltsverzeichnis 1 Einführung
Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch
Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,
Kapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
Echtzeit- und Regelungstechnische Aspekte bei der automatischen Transformation von Matlab/Simulink in SPS-basierten Steuerungscode
PEARL Workshop 2007 06.12.2007 Echtzeit- und Regelungstechnische Aspekte bei der automatischen Transformation von Matlab/Simulink in SPS-basierten Steuerungscode, Dipl.-Ing. Andreas Wannagat, Prof. Dr.-Ing.
A1.7: Entropie natürlicher Texte
A1.7: Entropie natürlicher Texte Anfang der 1950er Jahre hat Claude E. Shannon die Entropie H der englischen Sprache mit einem bit pro Zeichen abgeschätzt. Kurz darauf kam Karl Küpfmüller bei einer empirischen
Codex Newsletter. Allgemeines. Codex Newsletter
Newsletter Newsletter Dezember 05 Seite 1 Allgemeines Newsletter Mit diesem Rundschreiben (Newsletter) wollen wir Sie in ca. zweimonatigen Abständen per Mail über Neuerungen in unseren Programmen informieren.
«PERFEKTION IST NICHT DANN ERREICHT, WENN ES NICHTS MEHR HINZUZUFÜGEN GIBT, SONDERN DANN, WENN MAN NICHTS MEHR WEGLASSEN KANN.»
«PERFEKTION IST NICHT DANN ERREICHT, WENN ES NICHTS MEHR HINZUZUFÜGEN GIBT, SONDERN DANN, WENN MAN NICHTS MEHR WEGLASSEN KANN.» www.pse-solutions.ch ANTOINE DE SAINT-EXUPÉRY 1 PROJECT SYSTEM ENGINEERING
Grundlagen der Technischen Informatik. Sequenzielle Netzwerke. Institut für Kommunikationsnetze und Rechnersysteme. Paul J. Kühn, Matthias Meyer
Institut für Kommunikationsnetze und Rechnersysteme Grundlagen der Technischen Informatik Paul J. Kühn, Matthias Meyer Übung 2 Sequenzielle Netzwerke Inhaltsübersicht Aufgabe 2.1 Aufgabe 2.2 Prioritäts-Multiplexer
2D to 3D Technologie
Copyright by GDESIGN Vertriebsgesellschaft Einführung Der Einsatz von CAD-Werkzeugen und -Techniken gehört heute zum Standard. Immer mehr Unternehmen arbeiten daran, ihre bisherige 2D-Konstruktion auf
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
Welche Unterschiede gibt es zwischen einem CAPAund einem Audiometrie- Test?
Welche Unterschiede gibt es zwischen einem CAPAund einem Audiometrie- Test? Auch wenn die Messungsmethoden ähnlich sind, ist das Ziel beider Systeme jedoch ein anderes. Gwenolé NEXER g.nexer@hearin gp
2. Konfiguration der Adobe Software für die Überprüfung von digitalen Unterschriften
1. Digital signierte Rechnungen Nach 11 Abs. 2 zweiter Unterabsatz UStG 1994 gilt eine auf elektronischem Weg übermittelte Rechnung nur dann als Rechnung im Sinne des 11 UStG 1994, wenn die Echtheit der
Einführung in die Informatik Tools
Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht
WEBINAR@LUNCHTIME THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ
WEBINAR@LUNCHTIME THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ HERZLICH WILLKOMMEN BEI WEBINAR@LUNCHTIME Moderation Anne K. Bogner-Hamleh SAS Institute GmbH Education Consultant Training
Grundlagen der Theoretischen Informatik, SoSe 2008
1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)
Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER
Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit
PRÜFUNG FÜR ELEKTROINGENIEURE. Softwaretechnik I. Musterlösung SS 12. - Ohne Gewähr -
PRÜFUNG FÜR ELEKTROINGENIEURE Softwaretechnik I Musterlösung SS 12 - Ohne Gewähr - LfdNr. Thema Punkte Zeitbedarf in min 1 Analyse und Entwurf 15 30 2 Basistechniken und Test 15 30 3 Projektmanagement
Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken
Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen
Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.
Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,
Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems
Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Name: Bruno Handler Funktion: Marketing/Vertrieb Organisation: AXAVIA Software GmbH Liebe Leserinnen und liebe Leser,
Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv
Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag
AMS Alarm Management System
AMS Alarm Management System AMS ist das Alarm Management System für Mobotix Kamerasysteme. AMS ist speziell für die Verwendung in Einsatzzentralen bei Sicherheitsdiensten oder Werkschutzzentralen vorgesehen.
Präsentation DIN-EN 81-1/A1: 2005 DIN-EN 81-2/A1: 2005 (PESSRAL) 15. Juni 2008 VI. Schwelmer Liftsymposium
Präsentation DIN-EN 81-1/A1: 2005 DIN-EN 81-2/A1: 2005 (PESSRAL) 15. Juni 2008 VI. Schwelmer Liftsymposium PESSRAL: Programmable Electronic Systems in Safety Related Applications for Lifts (Programmierbare
FlowFact Alle Versionen
Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für
Kapitalerhöhung - Verbuchung
Kapitalerhöhung - Verbuchung Beschreibung Eine Kapitalerhöhung ist eine Erhöhung des Aktienkapitals einer Aktiengesellschaft durch Emission von en Aktien. Es gibt unterschiedliche Formen von Kapitalerhöhung.
Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?
Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt? Behandelte Fragestellungen Was besagt eine Fehlerquote? Welche Bezugsgröße ist geeignet? Welche Fehlerquote ist gerade noch zulässig? Wie stellt
Verarbeitung der Eingangsmeldungen in einem Callcenter
Q-up ist ein Produkt der: Anwendungsbeispiele Verarbeitung der Eingangsmeldungen in einem Callcenter Der Testdatengenerator Der Testdatengenerator Verarbeitung der Eingangsmeldungen in einem Callcenter
BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen
BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen Stand: 13.12.2010 Die BüroWARE SoftENGINE ist ab Version 5.42.000-060 in der Lage mit einem Microsoft Exchange Server ab Version 2007 SP1
AUF LETZTER SEITE DIESER ANLEITUNG!!!
BELEG DATENABGLEICH: Der Beleg-Datenabgleich wird innerhalb des geöffneten Steuerfalls über ELSTER-Belegdaten abgleichen gestartet. Es werden Ihnen alle verfügbaren Belege zum Steuerfall im ersten Bildschirm
Whitebox-Tests: Allgemeines
-Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv
Fachbericht zum Thema: Anforderungen an ein Datenbanksystem
Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank
Telling TestStories Modellbasiertes Akzeptanz Testen Serviceorientierter Systeme
Telling TestStories Modellbasiertes Akzeptanz Testen Serviceorientierter Systeme Michael Felderer Workshop Requirements Engineering meets Testing Bad Honnef, 5. Juni 2008 1 Überblick Grundbegriffe Motivation
Support-Tipp Mai 2010 - Release Management in Altium Designer
Support-Tipp Mai 2010 - Release Management in Altium Designer Mai 2010 Frage: Welche Aufgaben hat das Release Management und wie unterstützt Altium Designer diesen Prozess? Zusammenfassung: Das Glück eines
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte
Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht
Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur UML-Klassendiagramme als Werkzeug im Unterricht Blitzlicht? In welcher Programmiersprache(n) unterrichten Sie?? In welchem Umfang unterrichten Sie Objektorientierung??
Zulassung nach MID (Measurement Instruments Directive)
Anwender - I n f o MID-Zulassung H 00.01 / 12.08 Zulassung nach MID (Measurement Instruments Directive) Inhaltsverzeichnis 1. Hinweis 2. Gesetzesgrundlage 3. Inhalte 4. Zählerkennzeichnung/Zulassungszeichen
PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN
PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN Karlsruhe, April 2015 Verwendung dichte-basierter Teilrouten Stellen Sie sich vor, in einem belebten Gebäude,
GEVITAS Farben-Reaktionstest
GEVITAS Farben-Reaktionstest GEVITAS Farben-Reaktionstest Inhalt 1. Allgemeines... 1 2. Funktionsweise der Tests... 2 3. Die Ruhetaste und die Auslösetaste... 2 4. Starten der App Hauptmenü... 3 5. Auswahl
Suche schlecht beschriftete Bilder mit Eigenen Abfragen
Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere
1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
Schnittstelle DIGI-Zeiterfassung
P.A.P.A. die kaufmännische Softwarelösung Schnittstelle DIGI-Zeiterfassung Inhalt Einleitung... 2 Eingeben der Daten... 2 Datenabgleich... 3 Zusammenfassung... 5 Es gelten ausschließlich unsere Allgemeinen
Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen
Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.
Funktion Erläuterung Beispiel
WESTFÄLISCHE WILHELMS-UNIVERSITÄT WIRTSCHAFTSWISSENSCHAFTLICHE FAKULTÄT BETRIEBLICHE DATENVERARBEITUNG Folgende Befehle werden typischerweise im Excel-Testat benötigt. Die Beispiele in diesem Dokument
