69
FAKULTÄT FÜR INFORMATIK DER TECHNISCHEN UNIVERSITÄT MÜNCHEN Bachelorarbeit in Wirtschaftsinformatik Konzeption und Entwicklung einer Java EE- Anwendung zum Datenaustausch zwischen einer Performance-Simulationsumgebung und einer Per- formance-Analyseplattform Markus Dlugi

Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

FAKULTÄT FÜR INFORMATIK

DER TECHNISCHEN UNIVERSITÄT MÜNCHEN

Bachelorarbeit in Wirtschaftsinformatik

Konzeption und Entwicklung einer Java EE-

Anwendung zum Datenaustausch zwischen einer

Performance-Simulationsumgebung und einer Per-

formance-Analyseplattform

Markus Dlugi

Page 2: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

FAKULTÄT FÜR INFORMATIK

DER TECHNISCHEN UNIVERSITÄT MÜNCHEN

Bachelorarbeit in Wirtschaftsinformatik

Konzeption und Entwicklung einer Java EE-

Anwendung zum Datenaustausch zwischen einer

Performance-Simulationsumgebung und einer

Performance-Analyseplattform

Design and development of a Java EE application for

the data transfer between a performance simulation

environment and a performance analysis platform

Bearbeiter: Markus Dlugi

Themensteller: Prof. Dr. Helmut Krcmar

Betreuer: Andreas Brunnert, M.Sc.

Abgabedatum: 16. Dezember 2013

Page 3: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

Ich versichere, dass ich diese Bachelorarbeit selbständig verfasst und nur die angegebenen Quellen und Hilfsmittel verwendet habe.

Garching b. München, den 16.12.2013 ________________________

Ort, Datum Unterschrift

Page 4: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

III

Zusammenfassung

Um die Validierung von Performance-Modellen zu unterstützen, wird in dieser Arbeit ein

Tool namens Simulation Data Service entwickelt. Dieses ist in der Lage, Simulationsergeb-

nisse verschiedener Simulationswerkzeuge zu empfangen und einheitlich in einer Datenbank

abzulegen. Dieses Tool dient später als Grundlage für die Performance Management Work

Tools, eine Plattform, welche die einfache Validierung von Performance-Modellen ermögli-

chen soll. Neben dem Service wird zudem ein exemplarischer Client für ein spezifisches Si-

mulationswerkzeug entwickelt, um die Funktionsfähigkeit des Services zu demonstrieren.

Zunächst muss dafür untersucht werden, welche Daten für einen Vergleich von Simulations-

und Messergebnissen notwendig sind; dies geschieht durch ein Literaturreview, das statisti-

sche Verfahren bei der Performance Evaluation untersucht. Anschließend wird eine Work-

load-Definition aufgestellt, welche mithilfe des Kolmogorov-Smirnov-Tests validiert wird.

Mit diesen Daten wird daraufhin ein Datenmodell auf Grundlage des Structured Metrics Me-

tamodel (SMM) gebaut und mithilfe von JPA auf einem JBoss Application Server implemen-

tiert. Schließlich wird untersucht, welche Möglichkeiten es für die Übertragung der Daten

zum Server gibt; in der Arbeit wird JAX-WS in Kombination mit gzip verwendet. Der Wert

der Arbeit liegt damit neben der Entwicklung eines Tools für eine einfachere Validierung in

der erstmaligen dokumentierten Verwendung von SMM für Ergebnisse aus Performance-

Modellen.

Stichworte: Performance-Modell, PCM, Palladio, PMWT, Validierung, Simulation, Work-

load, SMM, Kolmogorov-Smirnov-Test, Java EE, JPA, JBoss, gzip, JAX-WS

In order to support the validation of performance models, a tool called Simulation Data Ser-

vice is developed in this thesis. It is capable of receiving simulation results from various

simulation tools and persisting them uniformly in a database. This tool will later build the

foundation for the Performance Management Work Tools, a platform designed to ease the

validation of performance models. In addition to this service, an exemplary client for a specif-

ic simulation tool is developed in order to demonstrate the effectiveness of the service. The

thesis starts off with an analysis to find out which data is necessary for a comparison of simu-

lation results and measurements; this is done by conducting a literature review examining

statistical methods used in performance evaluation. Subsequently, a workload definition is

given and validated using the Kolmogorov-Smirnov test. Using this data, a data model is built

on the basis of the Structured Metrics Metamodel (SMM) and implemented on a JBoss appli-

cation server using JPA. Ultimately, possibilities for sending the data to the server are re-

viewed; in the thesis, JAX-WS in combination with gzip is used. The value of this thesis,

besides developing a tool for easier validation, is the first documented use of SMM for results

gathered from performance models.

Keywords: performance model, PCM, Palladio, PMWT, validation, simulation, workload,

SMM, Kolmogorov-Smirnov test, Java EE, JPA, JBoss, gzip, JAX-WS

Page 5: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

IV

Inhaltsverzeichnis

Zusammenfassung ............................................................................................................... III

Abbildungsverzeichnis........................................................................................................ VI

Tabellenverzeichnis ............................................................................................................VII

Abkürzungsverzeichnis ................................................................................................... VIII

1 Einleitung ......................................................................................................................... 1

1.1 Motivation ................................................................................................................... 1

1.2 Struktur der Arbeit .................................................................................................... 2

2 Grundlagen ...................................................................................................................... 4

2.1 Performance-Modelle................................................................................................. 4

2.1.1 Allgemeines........................................................................................................... 4

2.1.2 Palladio Component Model................................................................................... 5

2.2 Java EE........................................................................................................................ 6

3 Evaluation von Performance-Modellen .................................................................... 8

3.1 Grundlagen der Evaluation....................................................................................... 8

3.2 Auswahl notwendiger Daten ..................................................................................... 8

3.3 Workload................................................................................................................... 11

3.3.1 Bedeutung von Workload.................................................................................... 11

3.3.2 Workload im Palladio Component Model .......................................................... 11

3.3.3 Definition von Workload .................................................................................... 12

3.3.4 Kolmogorov-Smirnov-Test ................................................................................. 15

3.3.5 Validierung der Definition .................................................................................. 16

3.4 Fazit ........................................................................................................................... 18

4 Datenaustausch zwischen einer Performance-Simulationsumgebung und

einer Performance-Analyseplattform ............................................................................. 20

4.1 Repräsentation von Performance-Daten................................................................ 20

4.1.1 Referenzmodelle.................................................................................................. 20

4.1.2 Common Information Model .............................................................................. 20

4.1.3 Structured Metrics Metamodel............................................................................ 22

4.1.4 Auswahl eines Referenzmodells ......................................................................... 23

4.1.5 Anpassung des Referenzmodells......................................................................... 24

4.2 Übertragung von Performance-Daten.................................................................... 27

4.2.1 Wahl eines Web Services .................................................................................... 27

4.2.2 Definition des Service-Interfaces ........................................................................ 28

4.2.3 Reduzierung des HTTP- und TCP-Overheads .................................................... 30

4.2.4 Reduzierung des Payloads................................................................................... 34

Page 6: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

V

4.3 Fazit ........................................................................................................................... 37

5 Architektur des Prototyps .......................................................................................... 39

5.1 Überblick ................................................................................................................... 39

5.2 Java Persistence API ................................................................................................ 39

5.2.1 Grundlagen .......................................................................................................... 39

5.2.2 Abbildung von Vererbung................................................................................... 41

5.2.3 Probleme der Vererbungs- und Generationsstrategie.......................................... 42

5.2.4 Effiziente Persistierung einer großen Zahl von Messungen................................ 43

5.3 Architektur des Clients ............................................................................................ 46

6 Fazit ................................................................................................................................. 49

6.1 Zusammenfassung .................................................................................................... 49

6.2 Ausblick..................................................................................................................... 49

Literaturverzeichnis ............................................................................................................ 51

Anhang ................................................................................................................................... 55

Anhang A Datenmodelle .............................................................................................. 56

Page 7: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

VI

Abbildungsverzeichnis

Abbildung 1: Schichtenmodell der PMWT................................................................................ 2

Abbildung 2: Entwickler-Rollen und Modelle im PCM ............................................................ 5

Abbildung 3: Schema des Java EE Container-Modells ............................................................. 6

Abbildung 4: Beispielhaftes PCM Usage Model ..................................................................... 12

Abbildung 5: Klassendiagramm der Workload-Definition ...................................................... 13

Abbildung 6: Beispielhaftes Objektdiagramm der Workload-Definition ................................ 14

Abbildung 7: Grundlegender Ansatz von CIM ........................................................................ 21

Abbildung 8: Grundlegender Ansatz von SMM ...................................................................... 22

Abbildung 9: Datenmodell des Simulation Data Service......................................................... 25

Abbildung 10: Interface des Simulation Data Service ............................................................. 30

Abbildung 11: Generierte SOAP-Nachrichten......................................................................... 31

Abbildung 12: Verbessertes Interface des Simulation Data Service ........................................ 32

Abbildung 13: SOAP-Nachricht des Aufrufs createTimeMeasurementCollection ................. 33

Abbildung 14: Verbesserte SOAP-Nachricht für createTimeMeasurementCollection ........... 34

Abbildung 15: Anteile der Verarbeitungszeit .......................................................................... 37

Abbildung 16: Observation-Klasse mit JPA-Annotationen ..................................................... 40

Abbildung 17: Beispiel für eine JPQL-Abfrage....................................................................... 41

Abbildung 18: INSERT-Zeit pro Messung bei verschiedenen Batch-Größen......................... 44

Abbildung 19: INSERT- und StringBuilder-Zeit pro Messung ............................................... 45

Abbildung 20: Code-Fragment des PMWTJobs ...................................................................... 47

Abbildung 21: Screenshot der Konfiguration des PMWT-Plugins.......................................... 47

Abbildung 22: CIM Metrics Schema 2.38.0 ............................................................................ 56

Abbildung 23: SMM Kernklassen............................................................................................ 57

Abbildung 24: SMM Measure Klassendiagramm.................................................................... 58

Abbildung 25: SMM Collective Measures Klassendiagramm................................................. 59

Page 8: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

VII

Tabellenverzeichnis

Tabelle 1: Statistische Verfahren in wissenschaftlichen Publikationen..................................... 9

Tabelle 2: Performance-Metriken in wissenschaftlichen Publikationen.................................. 10

Tabelle 3: Beispielhafte Zahl von Systemaufrufen .................................................................. 14

Tabelle 4: Für die Validierung verwendete Workloads ........................................................... 16

Tabelle 5: Ergebnisse des KS-Tests für 10.000, 20.000 und 600.000 Messungen .................. 17

Tabelle 6: Ergebnisse des KS-Tests für 600.000, 900.000 und 1,2 Mio. Messungen ............. 18

Tabelle 7: Ergebnisse der Optimierung der Übertragung ........................................................ 36

Tabelle 8: Hypothetische Ergebnisse für einen praxisnahen Simulationsdurchlauf ................ 36

Page 9: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

VIII

Abkürzungsverzeichnis

ACM Association for Computing Machinery

API Application Programming Interface

CBSE Component-Based Software Engineering

CDF Cumulative Distribution Function

CLOB Character Large Object

CORBA Common Object Request Broker Architecture

DMTF Distributed Management Task Force

EJB Enterprise Java Bean

EMF Eclipse Modeling Framework

HTTP Hypertext Transfer Protocol

IEEE Institute of Electrical and Electronics Engineers

IETF Internet Engineering Task Force

Java EE Java Platform, Enterprise Edition

Java SE Java Platform, Standard Edition

JAX-RS Java API for RESTful Web Services

JAX-WS Java API for XML Web Services

JDBC Java Database Connectivity

JPA Java Persistence API

JPQL Java Persistence Query Language

JSON JavaScript Object Notation

JSP Java Server Pages

KS-Test Kolmogorov-Smirnov-Test

LZ77 Lempel-Ziv 77

LZSS Lempel-Ziv-Storer-Szymanski

MIME Multipurpose Internet Mail Extensions

MOF Meta Object Facility

OCL Object Constraint Language

OMG Object Management Group

ORM Object-Relational Mapping

PCM Palladio Component Model

PDF Probability Density Function

PMWT Performance Management Work Tools

POJO Plain Old Java Object

QN Queuing Network

REST Representational State Transfer

RFC Request for Comments

Page 10: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

IX

RPC Remote Procedure Call

SPE Software Performance Engineering

TCP Transmission Control Protocol

UML Unified Modeling Language

UML-MARTE UML Profile for Modeling and Analysis of Real-Time and Embedded

systems

UML-SPT UML Profile for Schedulability, Performance, and Time Specification

URI Uniform Resource Identifier

URL Uniform Resource Locator

XML Extensible Markup Language

Page 11: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

1

Einleitung

Motivation

Im traditionellen Software Engineering nimmt die Performance (in Form von Antwortzeiten,

Durchsatz oder Ressourcenverbrauch) der zu entwickelnden Software häufig eine Nebenrolle

ein. Viele Software-Entwickler beschäftigen sich erst mit der Performance, wenn das Projekt

sich dem Ende zuneigt und die Performance nicht dem gewünschten Niveau entspricht (Smith

2007, 396). Daher sucht die Forschung im Bereich des Software Performance Engineerings

(SPE) schon seit vielen Jahren nach Möglichkeiten, die Performance einer Software früher im

Entwicklungsprozess abschätzen zu können; dadurch können bessere Designentscheidungen

getroffen und daraus resultierende Fehlentwicklungen verhindert werden. In der Forschung

wird dazu häufig der Einsatz von Performance-Modellen vorgeschlagen, welche eine Reprä-

sentation eines Software-Systems darstellen und durch deren Lösung eine Abschätzung der

Performance möglich wird (Smith 2007, 397).

Während Performance-Modelle in der Forschung weit verbreitet sind, haben sie in der Praxis

bisher kaum Verwendung gefunden (Woodside et al. 2007). Dies liegt zum einen an der gro-

ßen Zahl unterschiedlicher Modelle und Ansätze, welche im Laufe der Zeit entwickelt wur-

den, angefangen von Queueing Networks (QNs) bis hin zu simulationsbasierten Ansätzen.

Infolgedessen wurde eine Fülle an Tools entwickelt, die diese Ansätze implementieren, was

zu einem hohen Grad an Diversität und damit einer mangelnden Standardisierung geführt hat

(Woodside et al. 2007), trotz Standardisierungsversuchen wie dem Unified Modeling Langu-

age (UML) Profile for Schedulability, Performance, and Time Specification (UML-SPT) und

dem UML Profile for Modeling and Analysis of Real-Time and Embedded systems (UML-

MARTE) (Object Management Group 2005a, 2005b). Neben der fehlenden Standardisierung

ist ein weiteres Problem von Performance-Modellen, dass für einen korrekten Einsatz ihre

Validität überprüft werden muss – es muss sichergestellt werden, dass das Modell tatsächlich

dem modellierten System entspricht und die erhaltenen Ergebnisse plausibel sind. Diese Eva-

luation stellt eine der größten Herausforderungen und zugleich einen der kritischen Erfolgs-

faktoren bei der Verwendung von Performance-Modellen dar (Smith 2007, 409). Für die

Evaluation bietet sich der Vergleich der aus den Modellen gewonnenen Ergebnissen mit den

tatsächlich gemessenen Werten an (Woodside et al. 2007). Aufgrund fehlender Standards ist

es bislang jedoch meist mit einem hohen Aufwand verbunden, die Ergebnisse aus verschiede-

nen Werkzeugen miteinander zu vergleichen.

Das Ziel dieser Arbeit ist es, einen Beitrag zur Lösung dieser Probleme bei der Verwendung

von Performance-Modellen zu leisten. Dazu wird ein Service entwickelt, der Simulationser-

gebnisse verschiedener Performance-Werkzeuge empfangen und einheitlich in einer Daten-

bank ablegen kann. Dieser Service, der als Teil einer Plattform namens Performance

Management Work Tools (PMWT) entwickelt wird, dient dabei als Grundlage zur späteren

Analyse und Evaluation von Simulationsergebnissen verschiedenster Herkunft. Zusätzlich

wird im Rahmen dieser Arbeit ein erster exemplarischer Client umgesetzt, um die Funktions-

fähigkeit des Services zu demonstrieren; dieser wird für das Simulationswerkzeug Palladio-

Bench entwickelt. Damit trägt diese Arbeit dazu bei, eine einfachere Verwendung von Per-

formance-Modellen in der industriellen Praxis zu ermöglichen.

Page 12: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

2

Struktur der Arbeit

Wie im vorherigen Abschnitt erläutert, beinhaltet die Arbeit eine Reihe von unterschiedlichen

Bestandteilen. Wichtigster Bestandteil ist der Simulation Data Service, welcher Daten ver-

schiedener Simulationswerkzeuge empfängt und strukturiert ablegt. Abbildung 1 stellt das

konzeptuelle Schichtenmodell der PMWT einschließlich dem Simulation Data Service dar.

Abbildung 1: Schichtenmodell der PMWT

Quelle: Eigene Darstellung

Der Simulation Data Service wird in einem ersten Schritt an die Palladio-Bench angebunden.

Gleichzeitig wird der Dienst jedoch so allgemein gehalten, dass später zusätzliche Werkzeuge

mit geringem Aufwand hinzugefügt werden können. Wie weiterhin aus der Abbildung her-

vorgeht, existiert daneben zum einen der Load-Test Data Service, welcher analog zum Simu-

lation Data Service für die Persistierung von Lasttestergebnissen zuständig ist; und zudem das

Model Evaluation Tool, das für die Evaluation der übertragenen Modelle verantwortlich ist.

Der Fokus dieser Arbeit liegt jedoch auf dem Simulation Data Service und den in der Grafik

fett hervorgehobenen Abhängigkeiten.

Damit lässt sich die Arbeit in drei wesentliche Bestandteile gliedern. Diese sind

1. die Entwicklung eines Plugins für die Palladio-Bench, welches die relevanten Ergeb-

nisse einer Simulation extrahiert, aufbereitet und an den Service schickt,

2. die Konzeption und Entwicklung des Simulation Data Services, inkl. einem Datenmo-

dell, das eine einheitliche Repräsentation der Ergebnisdaten ermöglicht, sowie

3. die Wahl einer geeigneten Übertragungsmethode zwischen Client und Server.

Zur strukturierten Bearbeitung wurden zu Beginn der Arbeit drei Forschungsfragen formu-

liert. Diese beinhalten die wissenschaftlichen Fragestellungen, die im Laufe der Arbeit be-

antwortet werden sollen. Jede der Fragen gehört dabei zu einem der drei oben aufgeführten

Bestandteile:

Page 13: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

3

1. Welche Daten sind für den Vergleich von Performance-Simulations- und -Mess-

ergebnissen relevant?

2. Wie können die in Forschungsfrage 1 gefundenen Daten in einem einheitlichen For-

mat repräsentiert werden?

3. Wie können die relevanten Performance-Daten aus einem Simulationswerkzeug an die

Performance Management Work Tools übertragen werden?

Zunächst werden in Kapitel 2 „Grundlagen“ die theoretischen Grundlagen der Arbeit erläu-

tert. Danach wird in Kapitel 3 „Evaluation von Performance-Modellen“ die erste Forschungs-

frage behandelt; konkret wird untersucht, welche Daten für eine Evaluation von Performance-

Modellen notwendig sind und wie sich Workloads darstellen lassen. In Kapitel 4 „Datenaus-

tausch zwischen einer Performance-Simulationsumgebung und einer Performance-

Analyseplattform“ wird zunächst in Abschnitt 4.1 die zweite Forschungsfrage behandelt. Da-

zu wird untersucht, welche Möglichkeiten es zur Repräsentation von Messdaten gibt; an-

schließend werden die Möglichkeiten verglichen, und das ausgewählte Modell dient

schließlich als Grundlage für die Entwicklung eines eigenen Datenmodells. In Abschnitt 4.2

wird die dritte Forschungsfrage behandelt. Dazu werden erst mögliche Web Service-Typen

beschrieben, um dann einen davon für die weitere Bearbeitung auszuwählen; anschließend

wird ein Interface für den ausgewählten Service entwickelt. Schließlich wird analysiert, wie

die Übertragungsmenge sowohl in Bezug auf den Overhead als auch den Payload reduziert

werden kann. Nachdem die Behandlung der Forschungsfragen abgeschlossen ist, wird in Ka-

pitel 5 „Architektur des Prototyps“ auf die konkreten Eigenschaften der Implementierung,

speziell im Bereich der Persistenz, eingegangen. Schließlich werden in Kapitel 6 „Fazit“ zu-

sammenfassend die Ergebnisse präsentiert und ein Ausblick auf mögliche Erweiterungen ge-

geben.

Page 14: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

4

Grundlagen

Performance-Modelle

Allgemeines

Ein Performance-Modell ist ein Abbild eines realen oder gedachten Software-Systems, wel-

ches das Verhalten des Systems in Bezug auf seine Performance repräsentiert (Menascé et al.

1994, 76). Ist ein Modell erst formuliert, lässt es sich mithilfe verschiedener Verfahren lösen,

um zu verschiedenen Performance-Metriken zu gelangen. Diese Performance-Metriken tref-

fen eine Aussage darüber, wie gut oder schlecht die Performance des Systems, auf das sie sich

beziehen, ist. Die am häufigsten verwendeten Metriken sind die Antwortzeit, die Ressourcen-

nutzung und der Durchsatz.

Performance-Modelle wurden in den 1970er Jahren entwickelt. 1971 wurde erstmals der Ein-

satz von QNs zur Repräsentation von Performance-Modellen eingesetzt (Buzen 1971). Seither

wurden viele verschiedene Möglichkeiten zur Erstellung von Performance-Modellen entwi-

ckelt. Einerseits existieren Modelle, welche größtenteils analytisch gelöst werden, um Aussa-

gen über die Performance treffen zu können; die wichtigsten Vertreter dieser Kategorie sind

QNs, stochastische Prozessalgebren und stochastische Petri-Netze (Balsamo et al. 2004, 298-

302). Daneben gibt es noch simulationsbasierte Ansätze, welche das Modell in ausführbaren

Code umwandeln und die Performance anschließend während der Ausführung messen; ein

Beispiel dafür ist das Palladio Component Model (PCM) (Becker et al. 2009). Während ana-

lytische Verfahren in der Regel genauer und wesentlich schneller sind als Simulationen, ha-

ben sie den Nachteil, dass sich komplexe Systeme, wie sie in der Realität auftreten, oftmals

nicht analytisch lösen lassen (Becker et al. 2009). Dies trifft insbesondere auf Systeme zu, die

mittels Component-Based Software Engineering (CBSE) entwickelt werden (Chen et al.

2005, 35).

CBSE ist ein Paradigma, nach welchem die zu entwickelnde Software in Komponenten unter-

teilt wird. In der Fachwelt hat sich bisher keine allumfassende Definition für den Begriff der

Komponente durchgesetzt; für den Zweck dieser Arbeit seien Komponenten nahezu unabhän-

gige und austauschbare Bausteine, welche eine klar definierte Funktion erfüllen

(Brown/Wallnau 1998, 38). Ein großer Teil der modernen Software-Systeme arbeitet kompo-

nentenbasiert (Chen et al. 2005, 35). Bei solchen Systemen beeinflusst die Architektur die

Performance wesentlich. Allerdings sind Änderungen an der Architektur nach der Implemen-

tierung nur selten möglich (Becker et al. 2006, 169f); daher ist eine fundierte Performance-

Analyse bei komponentenbasierten Systemen besonders wichtig. Gerade CBSE ist jedoch

besonders problematisch im Hinblick auf SPE. Dies liegt u.a. daran, dass die Komponenten

oft in eine besondere Infrastruktur eingebettet werden, wie z.B. bei der Java Enterprise Editi-

on (Java EE). Diese Infrastruktur beeinflusst die Performance der Komponenten, was bei ei-

ner Evaluation mitberücksichtigt werden muss (Chen et al. 2005, 36). Zwar lassen sich

derartige Systeme auch mittels klassischer QNs oder stochastischer Prozessalgebren modellie-

ren, jedoch gibt es Alternativen, die eigens für die Spezifikation von komponentenbasierten

Systemen konzipiert wurden (Becker et al. 2006, 169; Koziolek 2010). Ein solches Modell ist

das Palladio Component Model.

Page 15: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

5

Palladio Component Model

Das Palladio Component Model (PCM) ist ein Metamodell, welches 2007 in einem internen

Bericht der Universität Karlsruhe erstmals vorgestellt wurde (vgl. Reussner et al. 2007); erste

Grundlagenarbeit durch die Definition von sog. Service Effect Specifications (SEFFs) wurde

bereits 2001 geleistet (vgl. Reussner 2001). Es erlaubt die Spezifikation von Informationen,

welche für die Performance einer komponentenbasierten Architektur relevant sind (Becker et

al. 2007, 54f). Dabei berücksichtigt PCM die Informationsverteilung innerhalb eines typi-

schen Entwickler-Teams, indem es die Spezifikation des Systems in mehrere Modelle unter-

teilt, welche von jeweils unterschiedlichen Personen erstellt werden. Eine Übersicht der

verschiedenen Entwickler-Rollen und der zugehörigen Modelle ist in Abbildung 2 zu sehen.

Abbildung 2: Entwickler-Rollen und Modelle im PCM

Quelle: Reussner et al. (2007, 9)

Dieser Ansatz bringt einige Vorteile mit sich. So lassen sich bspw. sehr einfach Analysen im

Hinblick auf die Eignung verschiedener Architekturoptionen durchführen, da jeweils nicht

das komplette Modell geändert werden muss. Zudem sind die verschiedenen Modelle stark an

die Modelle der UML angelehnt, welche in der Praxis bereits häufig eingesetzt werden, so-

dass nur eine geringe Einarbeitungszeit notwendig ist, um lauffähige Modelle erstellen zu

können.

Auf Basis von PCM ist eine Software namens Palladio-Bench entstanden, welche neben den

reinen Metamodellen auch Methoden anbietet, um die erzeugten Modelle zu lösen. Palladio-

Bench ist ein Plugin für die Java-Entwicklungsumgebung Eclipse, welches das Eclipse Mode-

ling Framework (EMF) zur Spezifikation der Meta-Modelle verwendet (Palladio Team o.J.).

Zusätzlich zur analytischen Lösung wird auch das Erzeugen von Prototypen und insbesondere

die Durchführung von Simulationen mithilfe des Frameworks SimuCom bereitgestellt

(Becker et al. 2009). Bei der Durchführung von Simulationen mit SimuCom werden die Mo-

delle mittels Model-2-Text-Transformation in ausführbaren Java-Code umgewandelt und bei

der Ausführung die Performance-Metriken gemessen (Becker 2008, 127). Dabei liegt der Si-

mulation ein Queueing Network zugrunde (Becker 2008, 109).

Page 16: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

6

Java EE

Die Java Platform, Enterprise Edition ist die Spezifikation einer Middleware-Plattform, wel-

che für die Verwendung in Unternehmen entwickelt wurde, mit dem Ziel, die Entwicklung

von Unternehmensanwendungen zu vereinfachen und dadurch Kosten zu sparen (Oracle

2013, 1). Sie baut auf der Java Platform, Standard Edition (Java SE) auf und erweitert diese.

Java EE ermöglicht die Entwicklung von Desktop-Anwendungen, Browser-Anwendungen

und Web Services (Oracle 2013, 8). Dazu enthält die Plattform verschiedene Container, wel-

che den Applikationen eine Laufzeitumgebung und verschiedene Dienste zur Verfügung stel-

len. Ein Schema der Container und der bereitgestellten Dienste ist in Abbildung 3 zu sehen.

Abbildung 3: Schema des Java EE Container-Modells

Quelle: (Oracle 2013, 6)

In der Abbildung sind der Applet Container, der Web Container, der Application Client Con-

tainer und der Enterprise Java Beans (EJB) Container dargestellt. Der Applet Container ist für

Page 17: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

7

die Ausführung von Java Applets, also Java-Applikationen in einem Web Browser, zuständig.

Der Application Client Container steuert die Ausführung von Java Desktop-Anwendungen

und kann dazu mit dem Web Container, dem EJB Container und der Datenbank kommunizie-

ren. Der Web Container ist verantwortlich für die Bereitstellung von Web Services wie Java

Server Pages (JSP) und Servlets; auch er hat Zugriff auf den EJB Container und die Daten-

bank. Der EJB Container schließlich enthält häufig die Geschäftslogik in Form von EJBs,

während die anderen Applikationen nur auf die von den EJBs bereitgestellten Funktionalitä-

ten zugreifen (Oracle 2013, 9). Allerdings kann die Logik auch in der Applikation selbst ab-

gelegt werden, da alle Container (bis auf den Applet Container) auch selbst Zugriff auf die

Datenbank haben.

Es gibt mehrere Produkte verschiedener Hersteller, die die Java EE-Spezifikation implemen-

tieren. In dieser Arbeit wird der JBoss Application Server 7 als Grundlage verwendet, um den

Simulation Data Service zu entwickeln und auszuführen. Dabei wird der Service als Servlet

umgesetzt; somit wird der Service im Web Container ausgeführt werden. Die Geschäftslogik

wird im Servlet selbst implementiert, also ohne die Erstellung einer zusätzlichen EJB, da die

Logik nicht so umfangreich ist. Weitere Details der Implementierung werden in Kapitel 4 und

5 behandelt.

Nachdem nun die theoretischen Grundbegriffe der Arbeit erläutert wurden, wird im folgenden

Kapitel die Evaluation von Performance-Modellen untersucht, um herauszufinden, welche

Daten der Simulation Data Service später verarbeiten muss.

Page 18: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

8

Evaluation von Performance-Modellen

Grundlagen der Evaluation

Für eine korrekte Verwendung von Performance-Modellen ist deren Verifikation und Validie-

rung von essentieller Bedeutung (Smith 2007, 409). Verifikation beantwortet dabei die Frage

„bauen wir das Modell richtig?“, z.B. in Bezug auf die Abschätzung der Ressourcennutzung

oder des Nutzungsverhaltens. Damit entscheidet die Verifikation darüber, ob die erhaltenen

Ergebnisse exakt die Performance des Systems widerspiegeln. Demgegenüber steht die Vali-

dierung, die die Frage „bauen wir das richtige Modell?“ beantwortet. Hier ist von Bedeutung,

ob das Modell eine valide Repräsentation des modellierten Systems darstellt, d.h. dass alle für

die Performance relevanten Aspekte des Systems korrekt im Modell abgebildet wurden

(Smith 2007, 408f). Im Folgenden wird zusammenfassend für beide Aspekte der Begriff

„Evaluation“ verwendet.

Wird keine Evaluation durchgeführt, kann nicht sichergestellt werden, dass die aus der Lö-

sung des Performance-Modells resultierenden Ergebnisse in irgendeiner Relation zum model-

lierten System stehen. Daher sollte nach der Erstellung des Modells stets zunächst eine

Evaluation durchgeführt werden. In der Regel erfolgt diese iterativ, d.h. es wird eine Evalua-

tion vorgenommen, welche wiederum als Grundlage für Änderungen am Modell dient, wo-

raufhin eine erneute Evaluation durchgeführt werden muss, bis das Modell valide ist (Kounev

2005, 167). Die einfachste Möglichkeit der Evaluation ist, die Ergebnisse, die aus dem Per-

formance-Modell gewonnen wurden, mit denen des realen Systems zu vergleichen (Kounev

2005, 144). Voraussetzung dafür ist, dass ein reales System existiert, auf dem Messungen

durchgeführt werden können – bei Systemen, die sich in der Entwicklung befinden, ist dies in

der Regel nicht der Fall; dann muss auf Prototypen oder ältere Versionen des entwickelten

Systems zurückgegriffen werden. Ist ein reales System vorhanden, sollten aber Messungen für

einige repräsentative Workloads und Konfigurationen durchgeführt werden (Kounev 2006,

495; Lavenberg 1983, 10).

Wurden sowohl die Ergebnisse des Performance-Modells als auch Messdaten eines Referenz-

systems erhoben, kann der Vergleich dieser Daten auf vielfältige Weise geschehen; in der

Praxis wird eine große Bandbreite an statistischen Methoden angewandt. Die Wahl der Me-

thode hängt maßgeblich davon ab, für welchen Zweck das Performance-Modell erstellt wurde

(Kobayashi/Mark 2009, 702). Häufig wird der Vergleich anhand des Mittelwertes einer vor-

her festgelegten Metrik durchgeführt, z.B. der mittleren Antwortzeit. Mittels statistischer

Techniken wie der Varianzanalyse oder dem t-Test kann daraufhin bestimmt werden, ob sich

die Ergebnisse statistisch signifikant unterscheiden. Es können auch rigorosere Untersuchun-

gen vorgenommen werden, die mehr als nur den Mittelwert einer Variable berücksichtigen;

Beispiele für solche Methoden sind der Chi-Square-Test und der Kolmogorov-Smirnov-Test

(Kobayashi/Mark 2009, 702), welche beide zu den Tests der Anpassungsgüte (engl. „good-

ness-of-fit tests“) gehören.

Auswahl notwendiger Daten

Die PMWT werden den Vergleich von Modell- und Messergebnissen ebenfalls in Form des

Model Evaluation Tool unterstützen. Allerdings wurde noch kein spezifisches Verfahren dazu

Page 19: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

9

ausgewählt; jedoch ist es sinnvoll, dass alle Verfahren unterstützt werden, die auch in der

Praxis gängig sind. Daher muss zunächst geklärt werden, welche statistischen Verfahren vor-

rangig für den Vergleich von Modell- und Messergebnissen in der wissenschaftlichen Praxis

verwendet werden. Daraufhin kann bestimmt werden, welche Daten für die gängigen Verfah-

ren benötigt werden und damit bei einer Übertragung von Ergebnissen an den Simulation Da-

ta Service mitberücksichtigt werden müssen.

Zu diesem Zweck wurde ein Literaturreview durchgeführt, das eine Auswahl an wissenschaft-

lichen Publikationen im Bereich der Performance Prediction auf die verwendeten statistischen

Verfahren hin untersucht. Dabei wurden die Literatur-Datenbanken Google Scholar, ACM

Digital Library und IEEE Xplore mit den Stichworten „software performance model predic-

tion“, „software performance model evaluation“, „software performance model validation“

und ähnlichen Kombinationen durchsucht. Die dabei gefundenen Publikationen dienten wei-

terhin als Grundlage für die Suche nach ähnlichen Publikationen derselben Forschungsgrup-

pen. Dies führte schließlich zu einer Auswahl von zwölf wissenschaftlichen Publikationen,

welche eine Evaluation von Performance-Modellen mittels Vergleich von Ergebnissen bein-

halten.

Bei der Untersuchung fiel auf, dass viele Publikationen die Methodik bei der Evaluation nicht

genau dokumentieren. Dies ist problematisch, da die Ergebnisse der Evaluation damit für an-

dere Forscher nicht immer nachvollziehbar sind und sich nicht reproduzieren lassen (Georges

et al. 2007, 59). In diesen Fällen wurde versucht, die verwendeten Verfahren aus den Ergeb-

nissen zu erschließen. Die Ergebnisse der Untersuchung finden sich in Tabelle 1. Dabei kenn-

zeichnet ein „X“, dass die angegebene Publikation das angegebene Verfahren verwendet; das

Fehlen eines „X“ kennzeichnet, dass die Publikation das Verfahren nicht verwendet bzw. die

Anwendung des Verfahrens nicht dokumentiert wurde.

A B C D E F G H I J K L

Arithmetisches Mittel X X X X X X X X X

Fehlerspanne X X X X X X X X

Median X

Quartile X

Standardabweichung X X X

Konfidenzintervall X X X

Bestimmtheitsmaß X

Histogramm / PDF1 / CDF2 X X X X

Kolmogorov-Smirnov-Test X

Tabelle 1: Statistische Verfahren in wissenschaftlichen Publikationen

Quelle: Eigene Erhebung 3

1 Probability Density Function, dt. Dichtefunktion

2 Cumulative Distribution Function, dt. Verteilungsfunktion

3 A: Noorshams et al. (2013); B: Kounev (2005); C: Koziolek et al. (2007); D: Becker et al. (2009); E: Brosig et

al. (2009); F: Chen et al. (2005); G: Franks et al. (2009); H: Gilly et al. (2012); I: Snavely et al. (2002); J: Wu

(2003); K: Gradl (2012); L: Mayer (2013)

Page 20: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

10

Aus der Tabelle ist ersichtlich, dass ein sehr großer Teil der Publikationen den Vergleich mit-

hilfe des arithmetischen Mittels durchführt, d.h. es werden die Mittelwerte einer oder mehre-

rer Performance-Metriken direkt miteinander verglichen. Dies wird häufig ergänzt durch die

Angabe einer Fehlerspanne (engl. „margin of error“). Die anderen Verfahren wie die Angabe

von Konfidenzintervallen oder die Durchführung von Tests der Anpassungsgüte werden nur

vereinzelt durchgeführt. Einzig der Vergleich von Histogrammen, Dichte- oder Verteilungs-

funktionen wird etwas häufiger durchgeführt; die formalisierte Variante in Form des Kolmo-

gorov-Smirnov-Tests wurde allerdings nur einmal dokumentiert. Fasst man die tiefergehen-

tiefergehenden Verfahren zusammen, wird jedoch in mehr als der Hälfte der Publikationen ein

Verfahren eingesetzt, welches über die Berechnung des arithmetischen Mittels hinausgeht.

Als erstes Ergebnis lässt sich somit festhalten, dass die Mehrheit der Publikationen tieferge-

hende Analysen in irgendeiner Form durchführt, die Art der Analyse variiert jedoch relativ

stark. Ein kleiner Teil der Publikationen führt Validierungen lediglich mithilfe des arithmeti-

schen Mittelwerts ohne die Anwendung weiterer Verfahren durch; für eine statistisch rigorose

Untersuchung wird jedoch zumindest die Bildung von Konfidenzintervallen empfohlen

(Georges et al. 2007, 65f). Ohne die Angabe eines Konfidenzintervalls kann das Ergebnis

einer Simulation erheblichen Ungenauigkeiten aufgrund statistischer Schwankungen unterlie-

gen (Sauer/MacNair 1983, 56). Aufgrund dieser Tatsachen sollten die PMWT Verfahren wie

die Bildung von Konfidenzintervallen oder die Durchführung von Tests der Anpassungsgüte

ebenfalls unterstützen. Die Voraussetzung dafür ist, dass alle Simulationsergebnisse übertra-

gen werden. Damit ist eine Reduktion der Ergebnisdaten auf Teile oder gar nur Mittelwerte

bestimmter Metriken nicht sinnvoll.

In diesem Zusammenhang ergibt sich weiterhin die Frage, ob es reicht, bspw. nur die Ant-

wortzeiten zu übertragen, da die anderen Performance-Metriken in der Praxis vielleicht nicht

analysiert werden. Daher wurde zusätzlich zur Untersuchung der verwendeten statistischen

Verfahren ebenfalls eine Analyse der Publikationen im Hinblick auf die untersuchten Perfor-

mance-Metriken durchgeführt. Die Ergebnisse dieser Untersuchung finden sich in Tabelle 2;

die Matrix ist analog zu interpretieren wie Tabelle 1.

A B C D E F G H I J K L

Antwortzeiten X X X X X X X X X X X

Ressourcennutzung X X X X X

Durchsatz X X X X

Tabelle 2: Performance-Metriken in wissenschaftlichen Publikationen

Quelle: Eigene Erhebung

Es ist offensichtlich, dass die Antwortzeiten als wichtigste Metrik angesehen werden, da sie

fast ausnahmslos untersucht wurden. Im Vergleich dazu werden Ressourcennutzung und

Durchsatz wesentlich seltener in die Betrachtung miteinbezogen; betrachtet man sie jedoch

zusammen, kann auch hier festgehalten werden, dass zumindest eine der beiden Metriken in

der Mehrheit der Publikationen untersucht wurde. Damit sollten auch diese Metriken, sofern

sie in den Simulationsergebnissen vorhanden sind, an den Simulation Data Service übertragen

werden.

Page 21: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

11

Zusammenfassend kann gesagt werden, dass alle Ergebnisdaten, die bei einer Simulation ent-

stehen, übertragen werden sollten, um eine statistisch gesicherte Evaluation der Performance-

Modelle durchführen zu können. Neben den Performance-Metriken bezieht sich das vor allem

auch auf die Werte der Metriken; diese sollten nicht nur im Mittel oder in Teilen, sondern in

ihrem kompletten Zeitverlauf übertragen werden.

Workload

Bedeutung von Workload

Eine wichtige Eigenschaft von Performance-Modellen, die bisher noch nicht betrachtet wur-

de, ist der Workload. Der Workload beschreibt die Last, mit welcher ein Computer-System

durch die Anfragen, die daran gerichtet werden, belastet wird (Menascé et al. 1994, 76). Es

gibt verschiedene Workload-Parameter, welche bei der Belastung des Systems eine Rolle

spielen – einer der wichtigsten Parameter ist die Anzahl der User, die gleichzeitig auf das Sys-

tem zugreifen. Andere Faktoren sind aber ebenfalls von Bedeutung, z.B. auf welche Teile des

Systems ein Nutzer konkret zugreift. Jede Funktion des Systems verursacht eine andere Last;

daher spielt das Nutzerverhalten ebenfalls eine zentrale Rolle bei der Beschreibung von Wor-

kload.

Für die Evaluation von Performance-Modellen spielt der Workload eine besonders wichtige

Rolle. Denn bei der Evaluation werden, wie bereits beschrieben, Modell- und Messergebnisse

miteinander verglichen. Es macht jedoch keinen Sinn, Modellergebnisse, welche bei einer

Belastung mit 100 Nutzern entstanden sind, mit Messergebnissen, welchen ein Workload von

1000 Nutzern zugrunde lag, zu vergleichen. Wenn der Workload der beiden Ergebnisse nicht

derselbe ist, sind die Ergebnisse nicht vergleichbar und eine Evaluation damit nicht möglich.

Daher ist neben den Ergebnisdaten für jedes Simulationsergebnis auch der Workload festzu-

halten, der Grundlage dieser Ergebnisse war; nur so kann festgestellt werden, ob zwei Ergeb-

nisse vergleichbar sind. Dabei tritt allerdings das Problem auf, dass ein Vergleich von

Workloads schwierig ist, wenn diese qualitative Größen wie das Nutzerverhalten beinhalten.

Aus diesem Grund muss zunächst eine quantifizierbare Definition von Workloads erfolgen.

Workload im Palladio Component Model

Um eine eigene Workload-Definition zu erstellen, wird zunächst betrachtet, wie Workload in

PCM behandelt wird. In PCM wird das sog. Usage Model verwendet, um den Workload eines

Systems zu beschreiben. Das Usage Model enthält mindestens ein UsageScenario. Dieses

besteht aus zwei Komponenten: dem ScenarioBehaviour, das das Verhalten der Nutzer be-

schreibt, und den sog. Intensitätsparametern, welche im Modell als Workload bezeichnet wer-

den (Becker et al. 2007, 57). Die Beschreibung des Nutzerverhaltens erfolgt mithilfe von

modifizierten UML Aktivitätsdiagrammen, welche neben den Funktionen, die ein Nutzer auf-

ruft, auch die Wahrscheinlichkeit, mit welcher er dies tut, beinhalten (Reussner et al. 2007,

69). Damit können auch komplexe Verhaltensmuster abgebildet werden. Die Art der Intensi-

tätsparameter wird von der Klassifizierung des Workloads bestimmt. Im Allgemeinen werden

Workloads wie folgt klassifiziert:

Page 22: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

12

- Offene Workloads sind durch eine Arrival-Rate, welche üblicherweise als λ bezeich-

net wird, gekennzeichnet. Diese drückt aus, wie viele Nutzer auf das System pro Zeit-

einheit zugreifen (Kounev 2005, 136).

- Geschlossene Workloads haben im Gegensatz dazu eine fixe Population, welche aus-

drückt, wie viele Nutzer gleichzeitig auf das System zugreifen. Zusätzlich haben sie

eine Think Time, welche ausdrückt, wie lange ein Nutzer im Schnitt wartet, bevor er

eine neue Anfrage an das System schickt (Kounev 2005, 136).

In Abbildung 4 ist ein Beispiel für ein einfaches PCM Usage Model zu sehen.

Abbildung 4: Beispielhaftes PCM Usage Model

Quelle: Eigene Darstellung

Das in der Abbildung dargestellte Modell enthält ein UsageScenario mit dem Namen „Dea-

lerships-Driver Workload“. In dem rechten Kasten ist der Workload dargestellt; in diesem

Fall handelt es sich um einen geschlossenen Workload mit einer Population von 2.000 Nut-

zern und einer Think Time von 9,7 Sekunden. Links davon ist das ScenarioBehaviour abge-

bildet. Der Nutzer wird darin so charakterisiert, dass er zufällig auf eine von drei

verschiedenen Funktionen zugreift: die Funktion „iDealerDriver.browse“ ruft er mit einer

Wahrscheinlichkeit von 50% auf, die Funktionen „iDealerDriver.purchase“ und „iDealerDri-

ver.manage“ mit Wahrscheinlichkeiten von jeweils 25%.

Definition von Workload

Wie in der Workload-Definition des PCM Usage Models zu sehen ist, reicht es, einen Work-

load neben der Intensität durch das Verhalten der Nutzer zu charakterisieren. Während die

Intensitätsparameter in dieser Form auch in anderen Modellen enthalten sind oder gemessen

werden können, ist dies beim Nutzerverhalten nicht so einfach. Zwar ist eine Umwandlung

von anderen Workload-Modellen oder Messergebnissen in das PCM Usage Model theoretisch

denkbar, es erfordert aber jeweils einen immensen Aufwand. Aus diesem Grund ist es sinn-

Page 23: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

13

voll, eine eigene Definition von Workload zu erstellen, in welcher das Nutzerverhalten auf die

wesentlichen Komponenten reduziert repräsentiert wird.

Diese selbsterstellte Definition wird im Folgenden vorgestellt. Sie entspricht dabei insofern

der Definition des PCM Usage Models, als dass sich der Workload durch die Intensitätspara-

meter und das Nutzerverhalten abbilden lässt. Das Nutzerverhalten wird allerdings reduziert

auf die Anzahl der Systemfunktionen und der Häufigkeit, mit der diese aufgerufen werden.

Das dazugehörige Klassendiagramm dieser Definition ist in Abbildung 5 dargestellt.

Abbildung 5: Klassendiagramm der Workload-Definition

Quelle: Eigene Darstellung

Im linken Teil des Diagramms finden sich die Intensitätsparameter des Workloads wieder. So

gehört zu jedem Modell genau ein Workload; dieser ist entweder ein offener oder ein ge-

schlossener Workload. Offene Workloads werden durch eine arrivalRate gekennzeichnet,

während geschlossene Workloads durch eine population und eine thinkTime charakterisiert

werden. Neben diesen fixen Parametern, die in der Regel aus dem Modell entnommen werden

können, findet sich rechts davon die Repräsentation des Nutzerverhaltens. Demnach besteht

ein Workload aus einer gewissen Anzahl an Systemfunktionen. Systemfunktionen sind in

diesem Zusammenhang Funktionen, welche der Nutzer selbst aufruft; die Definition schließt

explizit Funktionen aus, welche nicht direkt durch den Benutzer aufgerufen werden. Im Mo-

dell dient die Klasse Systemfunktion dabei lediglich dazu, die Anzahl der Aufrufe, die diese

spezifische Funktion im gesamten Simulationszeitraum erfahren hat, zu speichern. Dies er-

folgt durch die Komposition mit der Klasse Batch; die Aufteilung in Batches dient dabei der

Beschreibung des zeitlichen Verlaufs der Systemaufrufe. So besteht ein Batch aus einer

batchTime und einem batchCount. Im Attribut batchCount wird die Anzahl der Aufrufe ge-

speichert, die die Systemfunktion zum Zeitpunkt batchTime erfahren hat. So ist die gesamte

Zahl der Aufrufe, die eine bestimmte Systemfunktion erfahren hat, durch die Summe der

batchCounts aller der Systemfunktion zugeordneten Batches definiert.

Als Verdeutlichung diene folgendes Beispiel: ein System biete dem Nutzer die drei Funktio-

nen „browse“, „purchase“ und „manage“. Es wurde eine Simulation mit einer Simulationszeit

Page 24: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

14

von drei Sekunden durchgeführt. Nach der Simulation wird die Zahl der Aufrufe der drei

Funktionen gezählt; das Ergebnis der Zählung findet sich in Tabelle 3.

Zeitabschnitt 1 Zeitabschnitt 2 Zeitabschnitt 3 Summe

browse 10.000 5.000 5.000 20.000

purchase 5.000 2.500 2.500 10.000

manage 5.000 2.500 2.500 10.000

Tabelle 3: Beispielhafte Zahl von Systemaufrufen

Quelle: Eigene Darstellung

Aus der Tabelle lässt sich entnehmen, dass die Funktion browse im Zeitabschnitt 1 genau

10.000 Mal aufgerufen wurde, während die Funktionen purchase und manage im selben Zeit-

raum jeweils nur halb so oft aufgerufen wurden. Betrachtet man die Summe der Aufrufe, las-

sen sich Wahrscheinlichkeiten analog zu den stochastischen Ergänzungen des PCM Usage

Models ausdrücken: die Funktion browse wird mit einer Wahrscheinlichkeit von 50% aufge-

rufen, während die Funktionen purchase und manage nur mit jeweils 25-prozentiger Wahr-

scheinlichkeit aufgerufen werden. Die Aufteilung in Zeitabschnitte dient als zusätzliches

Unterscheidungskriterium, wenn zwei Verteilungen sich zwar in der Summe der Aufrufe äh-

neln, aber im Zeitverlauf unterscheiden. So wäre eine Verteilung, bei der browse in den drei

Zeitabschnitten die Aufrufe 5.000, 5.000 und 10.000 erfahren hätte, zwar in Summe identisch

mit der obigen Verteilung, dennoch läge dieser Verteilung ein anderes Nutzerverhalten und

damit ein anderer Workload zugrunde. Statt nur die Summe zu betrachten, werden daher auch

Batches mit dem Zeitverlauf der Aufrufe gespeichert, um derartige Unterscheidungen treffen

und den Vergleich verbessern zu können.

Nachfolgend ist in Abbildung 6 ein Objektdiagramm dargestellt, welches beschreibt, wie das

obige Beispiel gemäß dem Klassendiagramm aus Abbildung 5 repräsentiert werden würde.

Dem geschlossenen Workload, welcher zwei beliebige Intensitätsparameter enthält, ist eine

Systemfunktion zugeordnet, welche der Funktion browse aus dem obigen Beispiel entspricht.

Die Funktionen purchase und manage sowie das Modell-Objekt sind der Übersichtlichkeit

halber in dieses Diagramm nicht dargestellt. Der Systemfunktion sind schließlich drei Batches

zugeordnet, welche den drei Zeitpunkten des obigen Beispiels entsprechen.

Abbildung 6: Beispielhaftes Objektdiagramm der Workload-Definition

Quelle: Eigene Darstellung

Page 25: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

15

Dieser Ansatz zur Repräsentation von Workload hat den Vorteil, dass er unabhängig vom

jeweiligen Workload-Modell ist. Die Anzahl der Aufrufe lässt sich generell bei jeder Art von

Performance-Ergebnisdaten feststellen, unabhängig davon, ob diese durch eine Simulation

oder eine Messung entstanden sind. Zudem ist die Bestimmung vergleichsweise einfach, da

keine komplizierten Berechnungen durchgeführt werden müssen, um das Nutzerverhalten zu

bestimmen. Jedoch muss zuerst nachgewiesen werden, dass dieser Ansatz zur Repräsentation

von Workloads auch wirklich funktioniert. Daher wird in den nächsten Abschnitten die Vali-

dierung dieser Definition durchgeführt.

Kolmogorov-Smirnov-Test

Im Folgenden muss nachgewiesen werden, dass eine Definition des Workloads mittels Inten-

sitätsparametern und Nutzerverhalten, welches durch die Anzahl der Systemaufrufe im zeitli-

chen Verlauf beschrieben wird, einen Workload identifiziert und damit den Vergleich von

Workloads zulässt. Zu diesem Zweck werden mehrere Simulationen mit jeweils unterschied-

lichen Workloads durchgeführt, und anschließend verglichen, ob sich die gemessenen Work-

loads statistisch signifikant unterscheiden. Zur Untersuchung der Ähnlichkeit der Workloads

wird der Kolmogorov-Smirnov-Test eingesetzt, welcher nachfolgend beschrieben wird.

Der Kolmogorov-Smirnov-Test wurde von Kolmogorov (1933) erstmals in einem italieni-

schen Journal-Artikel veröffentlicht und später von Smirnov (1936) durch Berechnung wich-

tiger Tabellenwerte verbessert. Obwohl die ursprüngliche Arbeit die Verwendung als Test

nicht vorsah, bildete sie die Grundlage für die Entwicklung von Tests der Anpassungsgüte,

welchen die empirische Verteilungsfunktion zugrunde liegt (Stephens 1992, 5f). Dabei ist die

empirische Verteilungsfunktion, auch Summenhäufigkeit genannt, definiert als

( )

Formel 1: Empirische Verteilungsfunktion

Quelle: (Dehling/Haupt 2004, 197)

Für zwei unabhängige Stichproben der Größe n respektive m nehme man an, dass Fn(x) und

Gm(x) deren empirische Verteilungsfunktionen sind. Zusätzlich sei Dm,n die größte absolute

Differenz zwischen den Funktionen Fn(x) und Gm(x), also:

( ) ( )

Formel 2: Kolmogorov-Smirnov-Statistik für zwei Stichproben

Quelle: (Stephens 1992, 7)

Dann gilt die Nullhypothese, nach welcher beide Stichproben derselben Population entstam-

men, als angenommen, wenn gilt:

( ) ( )

∑ ( ) ( )⁄

Formel 3: Kolmogorov-Smirnov-Test für zwei Stichproben

Quelle: (Stephens 1992, 4-7; Smirnov 1948, 279)

Page 26: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

16

Die Werte für Φ(λ) sind dabei tabellarisch festgehalten; für ein Signifikanzniveau von 5% hat

Φ(λ) den Wert 1,36 (Smirnov 1948, 280). Mithilfe dieses Tests kann festgestellt werden, ob

sich zwei Stichproben statistisch signifikant unterscheiden. Wenn im Folgenden die beiden

Workloads zweier Simulationen miteinander verglichen werden sollen, wird dieser Test für

jede Systemfunktion der beiden Workloads durchgeführt; wird die Nullhypothese bei mindes-

tens einer der Systemfunktionen verworfen, so wird davon ausgegangen, dass die Workloads

sich unterscheiden, ansonsten gehören die Workloads derselben Population an.

Validierung der Definition

Nachfolgend wird die Validierung der Definition aus Abschnitt 3.3.2 durchgeführt. Dazu

werden mithilfe der Palladio-Bench mehrere Simulationen mit unterschiedlichen Workloads

durchgeführt; anschließend wird für jedes Simulationsergebnis der Workload gemäß der

Workload-Definition aus dem vorherigen Abschnitt gebildet, und schließlich mithilfe des

Kolmogorov-Smirnov-Tests untersucht, ob die Workloads sich statistisch signifikant unter-

scheiden. Dabei werden sowohl Ergebnisse, die demselben Workload zugrunde liegen, als

auch Ergebnisse unterschiedlicher Workloads verglichen. Wenn die verwendete Workload-

Definition valide ist, dann ist zu erwarten, dass sich Ergebnisse mit demselben Workload

nicht statistisch signifikant unterscheiden, während der Vergleich von Ergebnissen unter-

schiedlicher Workloads einen Unterschied mit statistischer Signifikanz nachweisen sollte.

Neben diesem einfachen Vergleich soll geprüft werden, ob bei Ergebnissen, bei denen dersel-

be Workload, aber eine unterschiedliche Laufzeit zugrunde liegt, die Nullhypothese ebenfalls

angenommen wird. Dafür wird jede Simulation mit drei unterschiedlichen Laufzeiten durch-

geführt, und schließlich jedes Simulationsergebnis mit jedem anderen Simulationsergebnis

verglichen. Zudem wird jede Simulation zwei Mal durchgeführt, um prüfen zu können, ob der

Vergleich auch bei Ergebnissen funktioniert, welchen derselbe Workload und dieselbe Lauf-

zeit zugrunde liegen.

Als Grundlage für die Simulationen dient ein PCM-Modell des Benchmarks SPECjEnterprise

2010, dessen Usage Model bereits in Abbildung 4 vorgestellt wurde. Für den Kolmogorov-

Smirnov-Test wurde das Signifikanzniveau 5% gewählt; damit wird die Nullhypothese akzep-

tiert, und die Workloads sind gleich, wenn der errechnete Wert bei jeder Systemfunktion un-

ter 1,36 liegt. Jeder Simulationsdurchlauf wird, wie oben erläutert, variiert in Bezug auf die

Laufzeit und den zugrundeliegenden Workload. Die Laufzeiten wurden auf 10.000 Messun-

gen (abgekürzt als 10k), 20.000 Messungen (20k) und 600.000 Messungen (600k) festgelegt.

Es werden zwei verschiedene Workloads verwendet; während die Intensitätsparameter bei

beiden gleich sind (Population von 2.000 Nutzern und Think Time von 9,7 Sekunden), ist das

Nutzerverhalten jeweils leicht unterschiedlich, wie in Tabelle 4 zu sehen ist.

Workload 1 (WL1) Workload 2 (WL2)

browse 50% 60%

purchase 25% 20%

manage 25% 20%

Tabelle 4: Für die Validierung verwendete Workloads

Quelle: Eigene Darstellung

Page 27: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

17

Die Ergebnisse der Untersuchung sind in Tabelle 5 zu sehen, angegeben ist jeweils das Ma-

ximum der Testdurchläufe aller Systemfunktionen. Bei grün unterlegten Feldern wurde die

Nullhypothese wie erwartet angenommen; bei rot unterlegten Feldern wurde die Nullhypothe-

se wie erwartet abgelehnt; und bei gelb unterlegten Feldern wurde die Nullhypothese wider

Erwarten angenommen oder abgelehnt.

WL1 WL2

10k 20k 600k 10k 20k 600k

WL1 10k 0,47

20k 1,48 0,62

600k 3,82 3,43 0,81

WL2 10k 1,30 2,26 4,85 0,56

20k 1,53 2,56 6,58 1,42 0,76

600k 3,83 4,31 24,30 4,41 3,79 0,79

Tabelle 5: Ergebnisse des KS-Tests für 10.000, 20.000 und 600.000 Messungen

Quelle: Eigene Erhebung

Bei Betrachtung der Ergebnisse fällt zunächst auf, dass die Unterscheidung der Workloads 1

und 2 in acht von neun Fällen (rote Felder) funktioniert hat. In einem Fall wurde die Nullhy-

pothese fälschlicherweise angenommen, der errechnete Wert lag jedoch nur knapp unter dem

kritischen Wert von 1,36. Anders sieht es hingegen aus, wenn dieselben Workloads vergli-

chen wurden; hier wurde die Nullhypothese ausschließlich akzeptiert, wenn die Laufzeiten

der Simulationen identisch waren (grüne Felder). Damit wurde derselbe Workload nur in

sechs von zwölf Fällen richtig erkannt. Wenn die Laufzeiten identisch waren, lag der Ver-

gleichswert jedoch immer deutlich unter dem kritischen Grenzwert.

Bei näherer Untersuchung der Werte lässt sich zusätzlich zu den bereits getroffen Beobach-

tungen ein deutliches Gefälle feststellen. Betrachtet man nur die roten Felder, so sieht man,

dass die Werte sowohl von links nach rechts als auch von oben nach unten hin zunehmen; der

höchste Wert steht in der Ecke rechts unten. Die Äquivalenz von Workload 1 und Workload 2

bei jeweils 600.000 Messungen wird mit 24,3 sehr deutlich abgelehnt, während die Nullhypo-

these akzeptiert wird, wenn identische Workloads mit jeweils 600.000 Messungen miteinan-

der verglichen werden. Dies deutet darauf hin, dass der Test mit zunehmender Stich-

probengröße empfindlicher auf Unterschiede reagiert. Betrachtet man die gelben Felder, so

kann schließlich noch festgehalten werden, dass die Nullhypothese am stärksten abgelehnt

wird, wenn der Unterschied in den Laufzeiten am größten ist.

Das fälschliche Akzeptieren oder Ablehnen der Nullhypothese bei niedrigen Laufzeiten sowie

das Gefälle innerhalb der verschiedenen Bereiche deuten darauf hin, dass die niedrigen Lauf-

zeiten die Ursache für die hohe Fehlerquote ist. In der Tat spielt bei Simulationen mit derart

kurzen Laufzeiten ein Phänomen eine Rolle, welches in der Literatur als „Ramp-Up“- oder

„Start-Up“-Phase bezeichnet wird (Georges et al. 2007, 65; Kounev 2005, 140). Demnach

schwankt die Performance eines Systems stark, wenn das System gestartet wird, während sich

nach einiger Zeit ein gewisses Gleichgewicht einstellt; daher sollten Messungen erst durchge-

führt werden, wenn sich das System in einem stabilen Zustand befindet (Kounev 2005, 140).

Page 28: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

18

Alternativ kann ein gewisser Teil der Messungen verworfen werden, um sicherzugehen, dass

alle Messungen sich auf die stabile Performance des Systems beziehen.

Da es in der Praxis oft nicht ganz einfach ist, festzustellen, ab wann sich das System in einem

stabilen Zustand befindet, und da die Ramp-Up-Phase der Simulationsläufe unterschiedlich

lang sein kann, werden an dieser Stelle keine Messungen verworfen. Stattdessen wird die Va-

lidierung ein zweites Mal durchgeführt, jedoch dieses Mal mit längeren Simulationslaufzei-

ten. Dies verringert den Einfluss der Ramp-Up-Phase auf das Ergebnis, da sie einen

geringeren Anteil an der Gesamtlaufzeit hat, sodass mit einer Verbesserung der Ergebnisse

durch längere Laufzeiten zu rechnen ist. Für die zweite Validierung wurden die Laufzeiten

auf 600.000 Messungen (abgekürzt als 600k), 900.000 Messungen (900k) und 1.200.000

Messungen (1200k) festgesetzt. Die Workloads entsprechen denen aus dem ersten Durchlauf.

Das Ergebnis ist in Tabelle 6 zu sehen.

WL1 WL2

600k 900k 1200k 600k 900k 1200k

WL1 600k 0,81

900k 0,84 0,82

1200k 0,79 1,13 1,31

WL2 600k 24,3 26,92 28,63 0,79

900k 26,23 29,67 31,87 1,04 0,94

1200k 27,71 31,75 34,19 1,23 0,75 0,79

Tabelle 6: Ergebnisse des KS-Tests für 600.000, 900.000 und 1,2 Mio. Messungen

Quelle: Eigene Erhebung

Bei der zweiten Validierung ist das Ergebnis wie erwartet. Die Nullhypothese wird in 100%

der Fälle jeweils korrekt akzeptiert oder abgelehnt. Betrachtet man die Werte genauer, fallen

hier allerdings teilweise große Schwankungen auf. So liegt der Wert von (WL1, 1200k; WL1,

1200k) mit 1,31 nur sehr knapp unter dem kritischen Grenzwert; andererseits liegt der dazu-

gehörige Wert von Workload 2 mit 0,79 jedoch deutlich unter der Schwelle. Ähnlich verhält

es sich mit den Werten (WL1, 1200k; WL1, 600k) und (WL2, 1200k; WL2, 600k). Die nahe-

liegendste Erklärung dafür ist, dass diese Unterschiede entweder durch die Ramp-Up-Phase

verursacht werden oder als statistische Schwankungen einzustufen sind. Neben diesen

Schwankungen ist in den grünen Bereichen jedoch kein eindeutiges Muster bzgl. der Laufzei-

ten erkennbar. Im roten Bereich ist dagegen immer noch das Gefälle vorhanden, welches auch

schon während der ersten Validierung auftrat; die Stärke der Ablehnung nimmt mit der Zahl

der Messungen zu.

Fazit

Als Fazit lässt sich festhalten, dass die Workload-Definition aus Abschnitt 3.3.2 valide ist und

damit als Grundlage für das Datenmodell dienen kann, welches im nächsten Kapitel erläutert

wird. Der Kolmogorov-Smirnov-Test hat wie erwartet bei identischen Workloads die Nullhy-

pothese akzeptiert, während dieselbe bei unterschiedlichen Workloads verworfen wurde. Da-

mit ist der Kolmogorov-Smirnov-Test auch ein mögliches Verfahren zum Vergleich von

Workloads in den PMWT; da auch dort nur der Vergleich von Ergebnissen mit demselben

Page 29: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

19

Workload möglich sein soll, ist auch für die PMWT die Implementierung eines statistischen

Verfahrens notwendig. Ohne genauere Untersuchungen ist es an dieser Stelle allerdings nicht

möglich, sich auf ein Verfahren festzulegen oder eine Empfehlung auszusprechen. Dazu müs-

sen zuerst andere statistische Verfahren untersucht und in Bezug auf ihre Eignung evaluiert

werden. Wenn ein Vergleich mithilfe des Kolmogorov-Smirnov-Tests auch möglich er-

scheint, so kann die starke Ablehnung von unterschiedlichen Workloads, wie sie in Tabelle 5

und Tabelle 6 gut sichtbar ist, auch zu Problemen beim Einsatz als Vergleichswerkzeug füh-

ren. Es besteht die Vermutung, dass der Test die Nullhypothese generell ablehnen wird, wenn

die Workloads nicht fast identisch und die Größe der Stichproben sehr hoch ist. Da die

PMWT Mess- und Simulationsergebnisse vergleichen sollen, welche naturgemäß keine exakt

identischen Workloads haben, kann ein so strikter Test das Werkzeug komplett unbrauchbar

machen. Daher wird auch im Simulation Data Service zunächst keine Funktion implementiert,

um für einen gegebenen Simulationslauf direkt ähnliche Simulationsläufe zu finden; zunächst

müssen weitere Untersuchungen stattfinden, welche Aufschluss darüber geben werden, ob der

Kolmogorov-Smirnov-Test für solche Zwecke geeignet ist.

Neben der Validierung der Workload-Definition wurde in Abschnitt 3.2 mithilfe des Litera-

turreviews festgestellt, dass eine Reduzierung der Simulationsergebnisse auf bestimmte Met-

riken oder Teile der Daten nicht sinnvoll ist. Nachdem somit in diesem Kapitel geklärt wurde,

welche Ergebnisdaten und welche Workloaddaten für eine statistisch korrekte Evaluation von

Performance-Modellen notwendig sind, dienen diese Ergebnisse als Grundlage für das nächs-

te Kapitel, in welchem untersucht wird, wie all diese Daten in einem einheitlichen Datenmo-

dell repräsentiert werden können.

Page 30: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

20

Datenaustausch zwischen einer Performance-

Simulationsumgebung und einer Performance-Analyseplattform

Repräsentation von Performance-Daten

Referenzmodelle

Im vorherigen Kapitel wurde untersucht, welche Daten für eine Evaluation von Performance-

Modellen benötigt werden. In diesem Kapitel wird dieses Wissen genutzt, um ein Datenmo-

dell zu entwickeln, welches sowohl Simulations- als auch Messergebnisse repräsentieren

kann.

Prinzipiell ist es möglich, ein von Grund auf neues Datenmodell für diesen Zweck zu erstel-

len. Es gibt jedoch bereits Datenmodelle, welche eigens zur Speicherung von Messdaten kon-

zipiert und kreiert wurden und als Grundlage für ein eigenes Modell genutzt werden können.

Derartige Modelle nennt man Referenzmodelle. Nach Becker/Schütte (1997, 428) ist ein Re-

ferenzmodell „das immaterielle Abbild der in einem realen oder gedachten betrieblichen Ob-

jektsystem verarbeiteten Informationen, das für Zwecke des Informationssystem- und

Organisationsgestalters Empfehlungscharakter besitzt und als Bezugspunkt für unternehmens-

spezifische Informationsmodelle dienen kann“.

Während der Bearbeitung wurden zwei spezifische Referenzmodelle identifiziert, welche als

Grundlage zur Erstellung eines eigenen Datenmodells dienen können: das Common Informa-

tion Model (CIM) und das Structured Metrics Metamodel (SMM). Nachfolgend werden beide

Modelle beschrieben. Anschließend werden ihre jeweiligen Vor- und Nachteile erörtert, um

schließlich eines der beiden Modelle für die weitere Verwendung auszuwählen.

Common Information Model

CIM wurde von der Distributed Management Task Force (DMTF) entwickelt, einer Nor-

mungsorganisation verschiedener IT-Unternehmen, welcher u.a. Microsoft, Intel und HP an-

gehören. Der Standard als solcher wurde bereits 1998 veröffentlicht und ist ein konzeptuelles

Informationsmodell, welches alle für das Management von Informationssystemen wichtigen

Daten repräsentiert, unabhängig von einer spezifischen Implementierung (Distributed

Management Task Force 2013a). CIM besteht aus einer Reihe von Schemata, welche jeweils

unterschiedliche Teile von Informationssystemen beschreiben und über das Core-Schema

miteinander verknüpft sind. Die neueste Version des Schemas, 2.38.0, wurde im August 2013

veröffentlicht (Distributed Management Task Force 2013b).

Für die Darstellung von Messdaten gibt es ein sog. Metrics Schema; eine Darstellung des

grundlegenden Konzepts und der wichtigsten Klassen ist in Abbildung 7 zu sehen, während

das gesamte Schema in Anhang A.1 zu finden ist. Die zentrale Einheit des Schemas ist die

sog. UnitOfWork. In der ursprünglichen Definition des Modells diente diese Klasse zur Re-

präsentation der Antwortzeiten von Transaktionen, jedoch wurde die Definition später allge-

mein auf jegliche „Arbeit“ ausgeweitet, welche ein messbares Ergebnis liefert (Distributed

Management Task Force 2003, 10). Im aktuellen Modell könnte eine Antwortzeit im Attribut

elapsedTime gespeichert werden; wenn eine eigene Metrik definiert wurde (MetricDefinition),

Page 31: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

21

so wird der Messwert in der Assoziationsklasse UoWMetric abgelegt. Jedes UnitOfWork-

Element beinhaltet dabei nur einen Messwert; die zugehörige UnitOfWorkDefinition spezifi-

ziert genauer, um was für einen Messwert es sich handelt und welchem LogicalElement er

zugeordnet ist. Eine weitere zentrale Rolle spielt die Assoziation SubUoW, welche die Korre-

lation von UnitOfWork-Elementen erlaubt (Distributed Management Task Force 2003, 12).

So kann bspw. die Antwortzeit des Aufrufs einer bestimmten Funktion von einer Datenbank-

abfrage abhängen, welche in dieser Funktion durchgeführt wird. In diesem Fall wäre die Da-

tenbankabfrage dann eine SubUoW der ursprünglichen UnitOfWork. Diese Art der

Verknüpfung ist jedoch nicht für die Abbildung von sequentiellen Abläufen gedacht

(Distributed Management Task Force 2003, 13). Schließlich existieren noch LogicalElements,

durch welche es möglich ist, die UnitOfWork-Elemente mehreren Anwendungsbereichen

zuzuordnen; so könnte eine UnitOfWork für eine Datenbankabfrage in mehreren Funktionen

verwendet werden.

Abbildung 7: Grundlegender Ansatz von CIM

Quelle: In Anlehnung an (Distributed Management Task Force 2003, 12)

Page 32: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

22

Structured Metrics Metamodel

SMM wurde von der Object Management Group (OMG) entwickelt, einem Konsortium, wel-

ches bereits erfolgreiche Standards wie UML oder Common Object Request Broker Architec-

ture (CORBA) veröffentlicht hat. SMM wurde 2012 veröffentlicht und ist damit ein sehr

junger Standard. Im Gegensatz zu CIM bezieht es sich lediglich auf die Repräsentation von

Messdaten und geht nicht auf weitere Teilbereiche von Informationssystemen ein. Eine Dar-

stellung des grundlegenden Ansatzes von SMM ist in Abbildung 8 zu sehen. Eine Übersicht

aller Kernklassen von SMM findet sich in Anhang A.2.

Abbildung 8: Grundlegender Ansatz von SMM

Quelle: In Anlehnung an (Object Management Group 2012, 7)

Eine Beobachtung, im Modell Observation, ist dabei das zentrale Element des Modells. Zu

einer Beobachtung gehört eine gewisse Zahl an ObservedMeasures, also beobachtbare Werte,

welche ein Measure eingenommen hat. Ein Measure ist dabei eine festgelegte Metrik, z.B. die

Lines of Code eines Software-Projekts oder die Antwortzeit. SMM hat dabei ein ausgeprägtes

Modell zur Repräsentation von Measures (vgl. Anhang A.3 und A.4), in welchem sich Metri-

ken als Aggregation von Basismetriken darstellen lassen. Zusätzlich können die Measure-

Definitionen um Berechnungsmethoden erweitert werden, welche in Skriptsprachen wie Ob-

ject Constraint Language (OCL) oder XQuery angegeben werden. Dadurch besteht die Mög-

lichkeit, Metriken allein mithilfe des Modells zu berechnen. Neben Measures gibt es auch

Measurements, also Messungen, welche als konkrete Ausprägung einer Metrik interpretiert

werden können. Es gibt auch verschiedene Arten von Measurements, welche verschiedene

Werte beinhalten können, je nachdem, zu welcher Measure sie gehören; einfache Fließkom-

mazahlen können mittels DimensionalMeasurements abgebildet werden. Schließlich ist jeder

Messung auch ein Messobjekt zugeordnet; in SMM kann dabei jedes Meta Object Facility

(MOF) Objekt als Messobjekt verwendet werden.

Page 33: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

23

Auswahl eines Referenzmodells

Nachfolgend muss eines der beiden Modelle ausgewählt werden, um als Grundlage für die

Entwicklung eines eigenen Datenmodells zu dienen. Zu diesem Zweck werden die Vor- und

Nachteile der jeweiligen Modelle im Detail erörtert.

CIMs größter Vorteil ist, dass es ein sehr alter Standard ist. Aufgrund seines hohen Alters hat

CIM eine hohe Verbreitung in vielen Unternehmen gefunden, was die Portabilität des Mo-

dells begünstigt; zudem kann dadurch davon ausgegangen werden, dass der Standard erprobt

ist. Das zentrale Element, UnitOfWork, passt sehr gut zu den Messergebnissen, welche im

Rahmen von Simulationen erhoben werden. Diese bestehen aus einem Zeitpunkt, zu welchem

die Messung durchgeführt wurde, und dem Messwert selbst; dies lässt sich in CIM durch die

Attribute startTime und elapsedTime oder durch Verwendung der Klasse UoWMetric sehr gut

abbilden. CIM hat jedoch auch einige Nachteile. Durch sein hohes Alter hat CIM mit der Zeit

zahlreiche Erweiterungen erfahren, welche vorgenommen wurden, um weitere Elemente von

Informationssystemen innerhalb desselben Modells darstellen zu können; daher ist das gesam-

te CIM-Schema recht groß. Die zentrale Klasse des CIM-Schemas, ManagedElement, besitzt

dadurch ebenfalls eine sehr große Zahl an Assoziationen. Diese Assoziationen werden auch

im Metrics Schema verwendet, da alle Klassen direkt oder indirekt von ManagedElement er-

ben, sodass das Modell unnötig aufgebläht wird; hier müsste evtl. eine Reduzierung des Mo-

dells auf notwendige Elemente stattfinden. Und schließlich hat CIM den Nachteil, dass sich

eine sequentielle Reihe von Messwerten nicht mit der eigenen SubUoW-Konstruktion abbil-

den lässt; alle Messwerte sind einem LogicalElement zugeordnet. Dieses hat jedoch nicht die

Semantik eines „Messdurchlaufs“, welche benötigt wird, um Simulationsläufe zu speichern,

sondern vielmehr die eines Messobjekts; daher müsste ein solches Konzept hinzugefügt wer-

den.

SMM besitzt den Vorteil, dass es einzig und allein für die Repräsentation von Messdaten

konzipiert wurde. Dadurch ist SMM im Gegensatz zu CIM auch wesentlich kompakter. Zu-

dem hat SMM den Vorteil, dass es das Konzept eines „Messdurchlaufs“, welches CIM fehlt,

in Form der zentralen Observation-Klasse beinhaltet. In der Form der ObservationScope-

Klasse bietet SMM bereits von Haus aus eine Möglichkeit, um das Modell, welches die

Grundlage einer Messung war, zu speichern. Weiterhin ermöglicht es SMM, neue Metriken

durch seine extensive Measure-Hierarchie zu definieren; dies ist zwar auch in CIM durch die

Verwendung der MetricDefinition-Klasse möglich, durch die Möglichkeit der Definition von

aggregierten Metriken ist SMM in dieser Hinsicht allerdings noch mächtiger. Gleichzeitig ist

dies auch ein Nachteil von SMM, da die Möglichkeiten zur dynamischen Berechnung von

Metriken und die detaillierte Repräsentation von Metrik-Definitionen in einem Datenmodell,

wie es für diese Arbeit benötigt wird, nicht notwendig sind. Daher kann auf einen großen Teil

dieser Klassen verzichtet werden. Eine wesentliche Einschränkung ist, dass SMM von Haus

aus keine Möglichkeit bietet, einem Measurement einen Zeitpunkt zuzuordnen; diese Mög-

lichkeit besteht bei SMM nur für Observations und müsste daher nachgerüstet werden. Ein

weiterer Nachteil von SMM ist die Verwendung von MOF-Elementen an verschiedenen Stel-

len, z.B. bei der Repräsentation von Messobjekten; sofern nicht bereits MOF verwendet wird,

führt dies zu zusätzlichen Abhängigkeiten. Und schließlich hat SMM den Nachteil, dass es

ein sehr junger und bisher kaum verbreiteter Standard ist.

Page 34: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

24

Nach Abwägung der diversen Vor- und Nachteile wurde die Verwendung von SMM als

Grundlage für ein eigenes Datenmodell beschlossen. Neben der Tatsache, dass bis auf die

Darstellung von Messzeitpunkten alle wesentlichen Konzepte bereits enthalten sind, hat hier

besonders auch das junge Alter des Standards eine wesentliche Rolle gespielt. Denn dadurch

bietet sich für diese Arbeit die Chance, die Eignung von SMM für die Repräsentation von

Messergebnissen, welche durch Performance-Modelle generiert wurden, zu zeigen.

Anpassung des Referenzmodells

Während SMM zwar ein geeigneter Kandidat für die Verwendung als Datenmodell ist, muss

das Datenmodell dennoch angepasst werden, um eine Repräsentation aller notwendigen Kon-

zepte zu ermöglichen. Bei allen Anpassungen wurde versucht, diese mittels Vererbung durch-

zuführen und das ursprüngliche Datenmodell so wenig wie möglich zu verändern, um die

Kompatibilität zur Standardausprägung des SMM beizubehalten. Das finale Datenmodell ist

in Abbildung 9 zu sehen. Dabei sind die Klassen, welche mit einer diagonalen Schraffur ver-

sehen sind, Teile des SMM; alle anderen Klassen sind eigene Ergänzungen. In dem Modell

nicht dargestellt ist die abstrakte Klasse SmmElement; diese ist die Wurzelklasse des Modells

und direkt oder indirekt Oberklasse aller in dem Modell vorhandenen Klassen. Dadurch erhält

jede Klasse des Modells eine eindeutige Identifikationsnummer, einen optionalen Namen und

eine optionale Beschreibung sowie die Möglichkeit, die Klassen durch Attribute und Annota-

tionen zu erweitern (Object Management Group 2012, 15f).

Die erste Ergänzung des SMM stellen die Klassen TimeMeasure und TimeMeasurement dar.

Diese dienen dazu, den Zeitpunkt, während der eine Measurement stattgefunden hat, festzu-

halten. Vor der hier dargestellten Lösung mittels eigener Klassen wurde zunächst versucht,

die DimensionalMeasurement-Klasse mittels einer Attribut-Klasse um diese Funktionalität zu

erweitern; dadurch wurde die für die Persistierung der Daten benötigte Zeit jedoch um ein

Vielfaches erhöht, sodass eigene Klassen von DimensionalMeasurement abgeleitet wurden.

Die Zeit wird dabei als Fließkommazahl im Attribut eventTime gespeichert.

Eine zweite Ergänzung ist die Speicherung der Performance-Modelle. Es ist sinnvoll, zu je-

dem Simulationslauf gleichzeitig das Modell, welches die Ergebnisse erzeugt hat, zu spei-

chern; dadurch ist später direkt ersichtlich, welche Modelle für welche Ergebnisse

verantwortlich sind und es ermöglicht die einfache Wiederholung der Simulationen. Aller-

dings können die Modelle bisweilen sehr groß werden; daher sollte die redundante Persistie-

rung der Modelle vermieden werden. Zu diesem Zweck wurde zunächst eine Klasse

HashScope von ObservationScope abgeleitet, welche ein Performance-Modell eindeutig

durch einen Hash identifiziert. Damit kann vor einer Persistierung geprüft werden, ob das

Modell bereits vorhanden ist. Daraufhin wurde schließlich die konkrete Klasse PCMModelS-

cope von HashScope abgeleitet, welche die einzelnen Elemente eines PCM-Modells persis-

tiert. Diese sind das Usage Model, das Allocation Model, das System Model sowie die

Resource Environment; dazu kommen noch mehrere Repository Modelle. Die Modelle, wel-

che in PCM EMF-Objekte vorliegen, werden durch den Client in Extensible Markup Langu-

age (XML) umgewandelt und in der Datenbank als Character Large Objects (CLOB)

persistiert. Wenn der Simulation Data Service um die Unterstützung für weitere Simulations-

werkzeuge nachgerüstet wird, müssen entsprechend zusätzliche Klassen von HashScope oder

ObservationScope abgeleitet werden, um die neuen Modelle darstellen zu können.

Page 35: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

25

Abbildung 9: Datenmodell des Simulation Data Service

Quelle: In Anlehnung an (Object Management Group 2012)

Page 36: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

26

Die dritte Ergänzung des SMM ist die Repräsentation des Workloads. Wie in Kapitel 3 fest-

gestellt wurde, muss zu jedem Simulationsdurchlauf auch der Workload festgehalten werden,

der die Ergebnisse verursacht hat. Das Modell für die Repräsentation des Workloads wurde

bereits in Abschnitt 3.3.3 vorgestellt; bis auf die Umbenennung der Klasse „Systemfunktion“

in „EntryLevelSystemCall“ ist dieses Modell so exakt im Datenmodell des Simulation Data

Service wiederzufinden. Allerdings wurde zusätzlich eine Trennung zwischen „gemessenem

Workload“ und „modelliertem Workload“ vorgenommen. Denn während die Intensitätspara-

meter direkt dem Performance-Modell entnommen werden können und daher mit einer Asso-

ziation zum ObservationScope an das Modell angebunden werden können, ist die zeitliche

Verteilung der Aufrufe der Systemfunktionen, welche in der Workload-Definition durch die

Batches dargestellt werden, nicht an das Performance-Modell gebunden. So können verschie-

dene Simulationsdurchläufe eine unterschiedliche Verteilung der Batches vorweisen, auch

wenn ihnen dasselbe Modell zugrunde liegt, da der Workload gemessen wurde. Daher befin-

det sich der gemessene Workload auf der anderen Seite des Datenmodells, abgeleitet von der

Klasse NamedMeasurand. Ein NamedMeasurand ist dabei von MofElement abgeleitet. Diese

Klasse wurde nicht in Measurand umbenannt, um nicht zu stark vom ursprünglichen Modell

abzuweichen, auch wenn kein MOF zur Repräsentation der Messobjekte verwendet wird. In

der restlichen Arbeit wird jedoch von Measurand gesprochen.

Die letzte Anpassung des Datenmodells betrifft die Klasse MofElement selbst. Diese ist in der

Spezifikation des SMM der Klasse Measurement zugeordnet; im Datenmodell des Simulation

Data Service ist sie stattdessen der Klasse ObservedMeasure zugeordnet. Dies ist die einzige

Anpassung, bei welcher das Datenmodell der SMM-Spezifikation nicht erweitert, sondern

geändert wurde. Daher weist die Klasse MofElement in der Abbildung auch eine andere

Schraffur auf.

Der Grund für diese Anpassung ist, dass bei einer Assoziation zu Measurement die Perfor-

mance des implementierten Systems wesentlich gemindert wurde. Dies hängt mit der hohen

Zahl an Messungen zusammen, welche durch einen einzelnen Simulationsdurchlauf erzeugt

werden. Wird in der Palladio-Bench bspw. eine Simulation gestartet, welche nach 10.000

Messungen abgebrochen wird, so enthält das Endergebnis in Summe über 1 Mio. Measure-

ments; in der Praxis ist die Zahl der Messungen in der Regel noch wesentlich höher. Wird zu

jeder dieser Measurements ein Measurand gespeichert, so wird die Anzahl der Felder, die in

die Datenbank eingefügt werden müssen, verdoppelt. Zudem wird der Measurand bei der

Übertragung der Daten jeder Measurement hinzugefügt; wenn die Messungen einer Obser-

vedMeasure sich aber alle auf denselben Measurand beziehen, wird damit die Übertragung

unnötig verzögert. Neben der Performance bei der Übertragung und beim Einfügen neuer Da-

ten in die Datenbank erschwerte diese Konstruktion auch Abfragen in der Datenbank. Sollen

bspw. alle EntryLevelSystemCalls einer Observation abgefragt werden, muss bei der Kon-

struktion gemäß der Spezifikation die komplette Reihe an Messungen auf mögliche EntryLe-

velSystemCall-Objekte untersucht werden. Eine solche Abfrage bei einem Simulations-

durchlauf mit einer Größe von 10.000 Messungen benötigte daher mehr als zehn Sekunden.

Durch die Änderung der Assoziation wird die Performance wesentlich verbessert, dieselbe

Abfrage benötigte daraufhin weniger als eine Sekunde. Muss eine Instanz des Datenmodells

standardmäßig vorliegen, ist immer noch eine einfache Umwandlung in das Referenzmodell

Page 37: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

27

möglich; daher wurde beschlossen, die Änderung des Referenzmodells in Kauf zu nehmen

und die Klasse MofElement stattdessen der Klasse ObservedMeasure zuzuordnen.

Damit sind schließlich alle notwendigen Konzepte im Datenmodell enthalten. Somit ist es nun

geeignet, um sowohl Simulationsergebnisse als auch die Performance-Modelle sowie den

Workload, welche diese Ergebnisse erzeugt haben, zu repräsentieren. Das entwickelte Daten-

modell dient als Grundlage der Datenbank und wird mittels Java Persistence API (JPA) im-

plementiert; wie dies im Detail funktioniert, wird in Kapitel 5 näher erläutert. In den

vorangegangenen Kapiteln wurde untersucht, welche Daten für einen Vergleich von Simula-

tions- und Messergebnissen notwendig sind und wie diese in einem einheitlichen Datenmo-

dell repräsentiert werden können. Da diese Fragen nun geklärt sind, muss schließlich noch ein

Weg gefunden werden, um die Daten optimal vom Client zum Server übertragen zu können.

Dies wird im folgenden Abschnitt untersucht.

Übertragung von Performance-Daten

Wahl eines Web Services

In diesem Kapitel wird untersucht, welche Möglichkeiten es bei der Übertragung von Daten

von einem Client zu einem Server gibt. Der Server soll dabei als Web Service realisiert wer-

den; daher werden unterschiedliche Web Services untersucht und gegeneinander abgewogen.

Wie in Abschnitt 2.2 bereits erläutert, wird der JBoss Application Server 7 als Java EE-Server

verwendet. Zur Übertragung soll ein Web Service verwendet werden; JBoss verwendet eine

angepasste Version von Apache CXF für die Bereitstellung von Web Services. Apache CXF

bietet sowohl die Java API for XML Web Services (JAX-WS) als auch die Java API for

RESTful Web Services (JAX-RS), um Web Services bereitzustellen (Apache Software

Foundation o.J.). Nachfolgend werden beide Alternativen kurz beschrieben.

JAX-WS ist ein Standard zur Integration von Unternehmensanwendungen mithilfe von Web

Services (Pautasso et al. 2008, 805). Zentrales Element jedes JAX-WS Web Services ist die

Web Services Description Language (WSDL) Definition; WSDL ist eine auf XML aufbauen-

de Beschreibungssprache zur syntaktischen Definition von Interfaces (Pautasso et al. 2008,

806). In dieser werden neben den Methoden, die ein Webservice bietet, auch alle Datenstruk-

turen beschrieben, die zur Benutzung des Services notwendig sind. Zur Übertragung der Da-

ten wird bei JAX-WS SOAP verwendet. SOAP ist ein Netzwerkprotokoll, welches ebenfalls

auf XML basiert; eine SOAP-Nachricht besteht aus einem Envelope, welcher aufgeteilt ist in

einen Header und einen Body. Der Header kann Informationen enthalten, die für das Routing

oder die Konfiguration verwendet werden können; der Body enthält den eigentlichen Payload

(Pautasso et al. 2008, 806). Die Kommunikation zwischen Client und Server kann über Nach-

richten geschehen, oder, was häufiger der Fall ist, in Form von Remote Procedure Calls

(RPCs) (Pautasso et al. 2008, 805). Es gibt verschiedene Protokolle, welcher zur Übertragung

von SOAP-Nachrichten verwendet werden können, der Standard ist jedoch der Einsatz des

Hypertext Transfer Protocol (HTTP).

JAX-RS verwendet Representational State Transfer (REST) zur Kommunikation zwischen

Client und Server. REST ist ein Architekturstyle, in welchem es sehr viele Ressourcen gibt,

Page 38: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

28

die alle durch einen eigenen Uniform Resource Identifier (URI) identifiziert werden, und auf

jede dieser Ressourcen nur mit vier grundlegenden Operationen zugegriffen werden kann:

PUT, POST, GET und DELETE (Zur Muehlen et al. 2005, 19). Damit erfolgt die Kommuni-

kation ausschließlich über RPCs. Die Kommunikation ist dabei zustandslos, der Service ver-

waltet keine Sessions. Die Nutzdaten werden meistens als XML übertragen, es sind jedoch

auch andere Formate wie JavaScript Object Notation (JSON) oder Multipurpose Internet Mail

Extensions (MIME) möglich (Pautasso et al. 2008, 811). Als Übertragungsprotokoll kann

jedoch nur HTTP verwendet werden.

Beide Implementierungen werden häufig verwendet, und da ein quantitativer Vergleich der

Konzepte schwierig ist, ist die Diskussion über ihre Eignung oft durch persönliche Meinun-

gen und Erfahrungen gekennzeichnet (Pautasso et al. 2008, 805). JAX-RS gilt als leichtge-

wichtiger und auch einfacher, da es lediglich vier Operationen gibt, und im Gegensatz zu

JAX-WS die aufwendige Interface-Definition entfällt (Zur Muehlen et al. 2005, 22). Zudem

gilt SOAP, welches bei JAX-WS verwendet wird, als schwergewichtig, da der SOAP Envelo-

pe und die Beschreibung mittels XML einen großen Overhead erzeugen. Ein Vorteil von

JAX-WS ist jedoch, dass es durch die vielfältigen Möglichkeiten bei der Definition von

WSDLs flexibler ist und dadurch komplexe Operationen hinter einer Fassade verbergen kann;

dies setzt allerdings wiederum voraus, dass der Client die verfügbaren Operationen und ihre

Semantik schon vorher kennt (Zur Muehlen et al. 2005, 24). JAX-RS verfolgt damit ein etwas

anderes Paradigma als JAX-WS. Bei JAX-RS werden die bereitgestellten Ressourcen durch

die URIs ein Teil des Webs, welche sich durch die Links zwischen den Ressourcen „erfor-

schen“ lassen, wie dies beim World Wide Web üblich ist; dagegen versteht JAX-WS das Web

ausschließlich als Kommunikationsmedium, welches als Tunnel verwendet wird, wodurch die

Services aber „außerhalb“ des Webs bleiben (Pautasso et al. 2008, 808; Zur Muehlen et al.

2005, 11).

Primär aufgrund der größeren Flexibilität bei der Definition der Interfaces wird für die Erstel-

lung des Simulation Data Service in dieser Arbeit JAX-WS verwendet. Eine Verwendung von

JAX-RS wäre allerdings ebenso möglich gewesen. Die evtl. schlechtere Performance durch

die Verwendung von SOAP ist, wie später gezeigt werden wird, vernachlässigbar.

Definition des Service-Interfaces

Da JAX-WS für die Implementierung des Services gewählt wurde, ist die Erstellung einer

WSDL-Definition essentiell. Generell gibt es dabei zwei mögliche Vorgehensweisen: top-

down und bottom-up (Pautasso et al. 2008, 809). Während bei einer top-down-Vor-

gehensweise mit der Erstellung einer WSDL-Definition begonnen wird und daraus später ein

Codeskelett generiert wird, wird bei einer bottom-up-Vorgehensweise von einem bereits vor-

handenen Interface ausgegangen, welches anschließend in eine WSDL-Definition übersetzt

wird. Im Folgenden wird der bottom-up-Ansatz verfolgt, daher wird mit der Erstellung eines

Interfaces begonnen.

Bei der Konzeption eines Interfaces für den Simulation Data Service wird zunächst, ausge-

hend vom Datenmodell aus Abschnitt 4.1.5, der Ablauf zur Persistierung einer Modellinstanz

nachvollzogen. Ausgehend von diesem Ablauf können dann die Methoden, welche für eine

Page 39: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

29

Realisierung des Ablaufs notwendig sind, abgeleitet werden. Nachfolgend ein möglicher Ab-

lauf:

1. Da die Observation das zentrale Element des Modells ist, muss dieses als erstes ange-

legt werden; ohne Observation-Objekt haben die anderen Objekte des Datenmodells

keine Referenz, auf welche sie sich beziehen können.

2. Als nächstes wird das Performance-Modell gespeichert und der Observation zugeord-

net. Dieser Schritt kann alternativ auch am Ende erfolgen. Er besteht aus drei Teilen:

a. Es wird anhand des im Client berechneten Hashwertes geprüft, ob das Modell

schon im Persistenzkontext enthalten ist.

b. Falls das Modell noch nicht vorhanden ist, wird das Modell übertragen und ge-

speichert.

c. Falls das Modell bereits vorhanden ist, muss im Persistenzkontext eine Ver-

knüpfung der angelegten Observation mit dem vorhandenen Modell erfolgen.

3. Daraufhin wird ein ObservedMeasure-Objekt angelegt und der Observation zugeord-

net. Dieses enthält bereits Referenzen auf die verwendete Measure und den Mea-

surand, welche somit mitübertragen werden. Dieser Schritt wird für jeden Measurand

des Simulationsergebnisses wiederholt.

4. Schließlich wird ein Measurement-Objekt angelegt und dem ObservedMeasure-Objekt

zugeordnet. Dieser Schritt wird für jedes Measurement-Objekt der ObservedMeasure

wiederholt.

Auf Grundlage dieses Ablaufs wurde ein Interface für den Simulation Data Service erstellt,

welches in der nachfolgenden Abbildung 10 dargestellt ist. Jeder der obigen Ablaufpunkte

findet sich in exakt einer der aufgeführten Methoden wieder. Für den ersten Punkt existiert

die Methode createObservation; für den zweiten Punkt gibt es die Methoden existsHashSco-

pe, createObservationScope und addHashScopeToObservation; für den dritten Punkt gibt es

die Methode createObservedMeasure; und für den letzten Punkt gibt es die Methode create-

Measurement.

Aus dem angegebenen Service-Interface generiert der JBoss Application Server bei der Aus-

führung nun automatisch die WSDL-Definition, welche die Methoden beinhaltet, die die

WebMethod-Annotation haben. Zusätzlich zu den Methoden enthält die WSDL-Definition die

Beschreibung aller Klassen, die durch das Interface referenziert werden. Damit ist bereits ein

funktionstüchtiger Service vorhanden, der nur noch um die Implementierung des Interfaces

ergänzt werden muss. Zur Verwendung in einem Client müssen noch sog. Stub-Klassen gene-

riert werden, sodass die benötigten Entitäten auch im Client verwendet werden können. Dazu

kann das Java-Tool wsimport benutzt werden, dass die Stub-Klassen automatisch aus der

WSDL-Definition generiert.

Page 40: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

30

Abbildung 10: Interface des Simulation Data Service

Quelle: Eigene Darstellung

Reduzierung des HTTP- und TCP-Overheads

Nachdem das Interface definiert wurde, wird nun untersucht, ob es Möglichkeiten gibt, die

Übertragungszeit zu reduzieren. Dazu wird zunächst eine Messung durchgeführt, die Auf-

schluss darüber geben soll, wie lange der Vorgang zur Übertragung und Persistierung eines

Simulationsdurchlaufs insgesamt dauert; sollte die Übertragung zu lange dauern, werden die

generierten SOAP-Nachrichten analysiert, um Verbesserungsmöglichkeiten zu finden.

Für die Messung wurde ein exemplarischer Simulationsdurchlauf verwendet, welcher nach

Erreichen von 10.000 Messungen gestoppt wurde und der in Summe ca. 1,4 Mio. Messungen

besitzt. Grundlage der Messung war zunächst noch eine ältere Version des Datenmodells, in

welcher der Measurand noch mit der Klasse Measurement assoziiert war. Der Client und der

Server wurden bei der Messung auf zwei verschiedenen Rechnern ausgeführt, die Übertra-

gung fand über ein lokales Funknetzwerk nach dem Standard 802.11n statt. Unter diesen Be-

dingungen dauerte der gesamte Vorgang mehr als 18 Stunden; nach dieser Zeit wurde die

Messung schließlich abgebrochen.

Um Möglichkeiten zur Optimierung zu finden, werden zunächst die SOAP-Nachrichten un-

tersucht, die bei der Übertragung verschickt werden. Dazu wird das frei verfügbare Netzwerk-

Analyse-Programm Wireshark verwendet. Aufgrund der enormen Dateigröße lässt sich je-

doch nicht der Mitschnitt der Übertragung des gesamten Simulationsdurchlaufes analysieren,

da der Arbeitsspeicher des verwendeten Rechners hierfür nicht ausreicht. Daher werden nur

die Nachrichten eines einzelnen Measurands des Durchlaufs analysiert, welcher 6.020 Mes-

sungen beinhaltet. Die SOAP-Nachrichten dieses Durchlaufs sind in Abbildung 11 dargestellt.

@WebService

public interface SimulationDataService {

@WebMethod

public long createObservation(Observation observation);

@WebMethod

public long createObservedMeasure(long observationId,

ObservedMeasure observedMeasure);

@WebMethod

public long createMeasurement(long observedMeasureId,

Measurement measurement);

@WebMethod

public boolean existsHashScope(String hash);

@WebMethod

public void createObservationScope(long observationId,

ObservationScope observationScope);

@WebMethod

public void addHashScopeToObservation(long observationId,

String hash);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Page 41: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

31

Abbildung 11: Generierte SOAP-Nachrichten

Quelle: Eigene Darstellung

Zu sehen sind die SOAP-Nachrichten für die drei Aufrufe der Methoden createObservation

(Zeile 1 bis 12), createObservedMeasure (Zeile 14 bis 29) und createMeasurement (Zeile 31

bis 49). Die Nachrichten enthalten neben dem XML-Overhead den Tool-Namen und das Be-

obachtungsdatum als Parameter für createObservation, die observationId und ein Measure-

Objekt als Parameter für createObservedMeasure sowie eine observedMeasureId und ein

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<S:Body>

<ns2:createObservation

xmlns:ns2="http://service.sds.performance.fortiss.org/">

<arg0>

<tool>PCM</tool>

<whenObserved>2013-10-27T15:39:04.603+01:00</whenObserved>

</arg0>

</ns2:createObservation>

</S:Body>

</S:Envelope>

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<S:Body>

<ns2:createObservedMeasure

xmlns:ns2="http://service.sds.performance.fortiss.org/">

<arg0>1</arg0>

<arg1>

<measure xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance" xsi:type="ns2:timeMeasure">

<name>ResponseTime</name>

<visible>false</visible>

</measure>

</arg1>

</ns2:createObservedMeasure>

</S:Body>

</S:Envelope>

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<S:Body>

<ns2:createMeasurement

xmlns:ns2="http://service.sds.performance.fortiss.org/">

<arg0>6026</arg0>

<arg1 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:type="ns2:timeMeasurement">

<measurand xsi:type="ns2:namedMeasurand">

<name>Response Time of Call_browse0

&lt;EntryLevelSystemCall id: _tvpegOWIEeGF2-

HmZLMMNA&gt;</name>

</measurand>

<value>11.461257</value>

<eventTime>21.161257</eventTime>

</arg1>

</ns2:createMeasurement>

</S:Body>

</S:Envelope>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

Page 42: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

32

Measurement-Objekt für createMeasurement. Das Measurement-Objekt besteht neben dem

Measurand aus einem value und einer eventTime. Da der untersuchte Measurand 6.020 Mes-

sungen enthält, werden noch 6.119 weitere createMeasurement-Nachrichten derselben Größe

versendet.

Die Größe der gesamten Transmission Control Protocol (TCP)-Konversation beträgt laut

Wireshark 8.344.774 Bytes, das entspricht 8,0 MiB. Rechnet man dies auf einen praxisnahen

Simulationsdurchlauf mit einer Größe von 1 Mio. Messungen um, ergibt dies eine hypotheti-

sche Übertragungsmenge von ca. 180 GiB.

Die Größe aller 6.020 Nachrichten des Aufrufs createMeasurement beträgt laut Wireshark

8.325.591 Bytes, das entspricht 7,9 MiB. Zählt man die Zeichen der Nachricht, so ergibt das

für 6.020 Nachrichten eine Payload-Größe von 3.593.940 Bytes oder 3,4 MiB, und damit ei-

nen durch HTTP und TCP verursachten Overhead von 4.731.651 Bytes oder 4,5 MiB. Damit

ist mit dem aktuellen Modell der Overhead größer als der Payload.

Die Vermutung liegt nahe, dass die große Zahl an Aufrufen der Methode createMeasurement

den hohen Overhead und damit die schlechte Performance erzeugt. Daher wird das Interface

angepasst, um statt einzelnen Measurements eine ganze Liste an Measurements übertragen zu

können. Eine verbesserte Version des Service-Interfaces ist in Abbildung 12 zu sehen.

Abbildung 12: Verbessertes Interface des Simulation Data Service

Quelle: Eigene Darstellung

Die neu hinzugefügte Methode in Zeile 12, welche für das Persistieren einer Liste von Measu-

rements genutzt wird, verwendet bewusst die Klasse TimeMeasurement als Typparameter und

nicht etwa die abstrakte Klasse Measurement oder einen kovarianten Typparameter. Der

@WebService

public interface SimulationDataService {

@WebMethod

public long createObservation(Observation observation);

@WebMethod

public long createObservedMeasure(long observationId,

ObservedMeasure observedMeasure);

@WebMethod

public long createTimeMeasurementCollection(long

observedMeasureId,

Collection<TimeMeasurement> measurement);

@WebMethod

public boolean existsHashScope(String hash);

@WebMethod

public void createObservationScope(long observationId,

ObservationScope observationScope);

@WebMethod

public void addHashScopeToObservation(long observationId,

String hash);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

Page 43: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

33

Grund hierfür ist, dass nach einer wiederholten Messung die Laufzeit immer noch mehrere

Stunden betrug; nach näherer Untersuchung des Codes wurde die Persistierung von JPA dafür

verantwortlich gemacht. Daher wurde die Methode in der Implementierung geändert, sodass

die Messungen direkt in die Datenbank eingefügt werden und der Persistenzkontext von JPA

übergangen wird. Für diese Vorgehensweise ist das Einfügen in die spezifische Datenbankta-

belle der Klasse TimeMeasurement notwendig. Während der Ausführung kann aufgrund der

Type Erasure von Java jedoch der Typparameter der übergebenen Collection nicht festgestellt

werden. Damit kann mit einem abstrakten Typparameter zur Laufzeit nicht herausgefunden

werden, in welche Datenbanktabelle die Daten eingefügt werden müssen. Aus diesem Grund

wurde für das Interface eine spezifische Methode gewählt, auch wenn eine Methode mit abs-

traktem Typparameter wesentlich flexibler gewesen wäre.

Nach Änderung der Implementierung und Hinzufügen der neuen Methode im Interface wird

die Messung mit demselben exemplarischem Simulationsdurchlauf wiederholt. Bei diesem

Anlauf ist die Performance wesentlich besser, im Schnitt benötigt die Übertragung und Persis-

tierung des Durchlaufs 3 Minuten und 55 Sekunden. Die Gesamtmenge der zu übertragen-

den Daten beträgt nun nur noch 1,9 MiB; davon nimmt der durch HTTP und TCP verursachte

Overhead 95 KiB ein. Die neue SOAP-Nachricht, welche jetzt beim Aufruf von crea-

teTimeMeasurementCollection generiert wird, ist in der folgenden Abbildung 13 dargestellt.

Abbildung 13: SOAP-Nachricht des Aufrufs createTimeMeasurementCollection

Quelle: Eigene Darstellung

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<S:Body>

<ns2:createTimeMeasurementCollection

xmlns:ns2="http://service.sds.performance.fortiss.org/">

<arg0>2</arg0>

<arg1 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:type="ns2:timeMeasurement">

<measurand xsi:type="ns2:namedMeasurand">

<name>Response Time of Call_browse0

&lt;EntryLevelSystemCall id: _tvpegOWIEeGF2-

HmZLMMNA &gt;</name>

</measurand

<value>11.461257</value>

<eventTime>21.161257</eventTime>

</arg1>

<arg1 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:type="ns2:timeMeasurement">

<measurand xsi:type="ns2:namedMeasurand">

<name>Response Time of Call_browse0

&lt;EntryLevelSystemCall id: _tvpegOWIEeGF2-

HmZLMMNA &gt;</name>

</measurand>

<value>11.461257</value>

<eventTime>21.161257</eventTime>

</arg1>

...

</ns2:createMeasurementCollection>

</S:Body>

</S:Envelope>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

Page 44: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

34

Reduzierung des Payloads

Weitere Optimierungen durch Verbesserung des Interfaces sind an dieser Stelle nicht mehr

möglich. Der durch HTTP und TCP verursachte Overhead ist durch die Übertragung einer

Measurement-Liste bereits minimal. Stattdessen kann versucht werden, den Payload bei der

Übertragung zu minimieren. Eine Möglichkeit dazu ist die Reduktion des Payloads durch Än-

derungen am Datenmodell; ein Beispiel für eine solche Änderung ist die Referenzierung des

Measurands aus der ObservedMeasure-Klasse heraus, und nicht aus der Klasse Measurement.

Diese Änderung wurde beim vorgestellten Datenmodell in Abschnitt 4.1.5 bereits erläutert,

die bisherigen Messungen fanden aber auf Grundlage einer älteren Version des Datenmodells

statt. So ist an der SOAP-Nachricht in Abbildung 13 zu sehen, dass der Measurand in jedem

Measurement-Objekt vorkommt, obwohl er für jedes dieser Objekte identisch ist. Dadurch

wird sehr viel Platz für die Übertragung von redundanten Daten verschwendet. Wird das ak-

tuelle Datenmodell verwendet, sehen die SOAP-Nachrichten für den Aufruf der Methode cre-

ateTimeMeasurementCollection wie in Abbildung 14 dargestellt aus.

Abbildung 14: Verbesserte SOAP-Nachricht für createTimeMeasurementCollection

Quelle: Eigene Darstellung

Durch die Extraktion der Measurand-Referenz ist die Nachricht wesentlich kompakter; der

durch Zählen der Zeichen bestimmte Payload liegt bei 906 KiB. Durch die Reduktion des

Payloads wird auch die Anzahl der zur Übertragung benötigten Pakete reduziert, wodurch

wiederum der Overhead sinkt; dieser beträgt bei der Messung 45 KiB. Die Übertragung des

gesamten exemplarischen Simulationsdurchlaufs benötigt mit diesem Modell im Schnitt 1

Minute und 32 Sekunden, dabei werden ca. 216 MiB übertragen. Rechnet man dies erneut

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<S:Body>

<ns2:createMeasurementCollection

xmlns:ns2="http://service.sds.performance.fortiss.org/">

<arg0>2</arg0>

<arg1 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:type="ns2:timeMeasurement">

<value>11.461257</value>

<eventTime>21.161257</eventTime>

</arg1>

<arg1 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:type="ns2:timeMeasurement">

<value>11.461257</value>

<eventTime>21.161257</eventTime>

</arg1>

<arg1 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:type="ns2:timeMeasurement">

<value>11.461257</value>

<eventTime>21.161257</eventTime>

</arg1>

...

</ns2:createMeasurementCollection>

</S:Body>

</S:Envelope>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

Page 45: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

35

auf einen praxisnahen Workload mit 1 Mio. Messungen um, ergibt dies immer noch eine Da-

tenmenge von etwa 21 GiB, die dafür transferiert werden müssen.

Eine letzte Möglichkeit zur Reduzierung des Payloads ist der Einsatz von Daten-

Kompression. Es gibt verschiedene Verfahren, um die bei der Übertragung mittels HTTP ver-

sendeten Daten zu komprimieren; eines der am häufigsten verwendeten Verfahren ist gzip,

welches den deflate-Algorithmus zur Kompression der Daten verwendet. Der deflate-

Algorithmus wurde von Phil Katz entwickelt und später als Request For Comments (RFC)

Nummer 1951 von der Internet Engineering Task Force (IETF) veröffentlicht (Internet

Engineering Task Force 1996). Er basiert auf dem Lempel-Ziv-Storer-Szymanski (LZSS)-

Algorithmus (vgl. Storer/Szymanski 1982), welcher eine verbesserte Variante des bekannten

Lempel-Ziv 77 (LZ77)-Algorithmus ist, und der Huffman-Kodierung (vgl. Huffman 1952).

Der LZSS-Algorithmus dient dabei dazu, sich wiederholende Zeichenketten durch den Ein-

satz von Referenzen zu komprimieren; die anschließende Huffman-Kodierung optimiert die

Anzahl der Bits, welche jede Referenz einnimmt, mittels Präfixcodes (Internet Engineering

Task Force 1996).

Wird gzip zur Kompression der obigen Nachrichten verwendet, ist davon auszugehen, dass

die Kompression sehr gute Ergebnisse erzielt. Denn die Nachrichten enthalten sehr viele sich

wiederholende Zeichenfolgen, welche durch den LZSS-Algorithmus eliminiert werden kön-

nen. Das gzip-Verfahren wird von einer großen Zahl von Bibliotheken und Umgebungen un-

terstützt, die Art und Weise der Aktivierung des Verfahrens ist jedoch unterschiedlich

innerhalb der verschiedenen Umgebungen. Während es im Client-Plugin reicht, die HTTP-

Header-Felder Accept-Encoding und Content-Encoding vor der Übertragung auf den Wert

„gzip“ zu setzen, muss bei JBoss ein sog. GZIPInInterceptor eingesetzt werden, um mit gzip

komprimierte Datenströme verarbeiten zu können. Dieser ist nicht in JBossWS, der JBoss-

eigenen Apache CXF-Variante, enthalten, jedoch in der Standardausführung von Apache

CXF; daher muss zunächst Apache CXF aktiviert werden, z.B. durch den Einsatz einer ent-

sprechenden JBoss Deployment Structure.

Nach Aktivierung von gzip wurde die Messung schließlich erneut durchgeführt. Die Daten-

menge bei der Übertragung des exemplarischen Measurands beträgt nun nur noch 49 KiB;

dies ist die Größe der kompletten TCP-Konversation. Vor der Aktivierung von gzip wurden

für den Measurand 951 KiB übertragen. Die Übertragung des gesamten Simulationsdurchlau-

fes, welche vor der Kompression etwa 220 MiB an Daten übertragen hat, wird mit aktivierter

Kompression auf eine Datenmenge von 4,5 MiB reduziert; damit ergibt sich eine Kompressi-

onsrate von etwa 98%. Der gesamte Vorgang der Übertragung und Persistierung des exemp-

larischen Simulationsdurchlaufes dauert nun durchschnittlich 1 Minute und 10 Sekunden,

wovon etwas mehr Zeit für die Persistierung und nicht für die Übertragung aufgewendet wird.

Werden diese Werte auf den hypothetischen, praxisnahen Simulationsdurchlauf mit 1 Mio.

Messungen umgerechnet, so werden bei diesem Durchlauf 450 MiB an Daten übertragen; der

Vorgang dauert etwa 2 Stunden.

Page 46: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

36

Laufzeit Overhead Payload Σ Datenmenge

Erster Test N/A 1 GiB 790 MiB 1,8 GiB

Measurement-Liste 3min 55s 22 MiB 419 MiB 441 MiB

Measurand 1min 32s 10 MiB 206 MiB 216 MiB

gzip 1min 10s N/A N/A 4,5 MiB

Tabelle 7: Ergebnisse der Optimierung der Übertragung

Quelle: Eigene Erhebung

Die Ergebnisse der Messungen sind noch einmal in Tabelle 7 zusammengefasst. Dabei ist in

der ersten Spalte jeweils angegeben, welche Optimierung erfolgt ist, bevor die Messung

durchgeführt wurde. Alle Angaben beziehen sich auf den exemplarischen Simulationsdurch-

lauf mit einer Größe von 10.000 Messungen, die Angaben zur Datenmenge wurden bei den

ersten beiden Messungen jeweils aus dem Measurand mit 6.020 Messungen hochgerechnet. In

Tabelle 8 findet sich eine Auflistung der Ergebnisse, welche für den praxisnahen Simulati-

onsdurchlauf mit 1 Mio. Messungen hochgerechnet wurden.

Laufzeit Datenmenge

Erster Test N/A 180 GiB

Measurement-Liste 6,5h 43 GiB

Measurand 2,5h 21 GiB

gzip 2h 450 MiB

Tabelle 8: Hypothetische Ergebnisse für einen praxisnahen Simulationsdurchlauf

Quelle: Eigene Erhebung

Dies zeigt, dass die Verwendung von SOAP bzw. allgemein die Verwendung von XML kei-

nen übermäßig negativen Einfluss auf die Performance der Anwendung hat, sofern eine

Kompression der Daten stattfindet. Eine Datenkompression mittels gzip ist allerdings nicht

immer sinnvoll einsetzbar, da Nachrichten, welche komprimiert werden sollen, eine gewisse

Mindestgröße aufweisen sollten, um eine effektive Kompression zu erreichen. Zudem ist eine

Kompression von Client Requests, wie sie in diesem Fall geschehen ist, eher unüblich, da

dazu in der Regel vorher eine Abfrage stattfinden muss, ob der Server dies unterstützt. In die-

sem Fall wurde jedoch darauf verzichtet, da die Clients speziell für den Server programmiert

werden; und da die Kompression so wichtig für die Funktionsfähigkeit des Services ist, kön-

nen die Clients in diesem Fall stets davon ausgehen, dass der Server gzip-komprimierte Da-

tenströme unterstützt.

Dennoch zeigt das Beispiel, welchen großen Einfluss eine sorgfältige Planung und Optimie-

rung des Service-Interfaces und des Datenmodells haben können. Dies ist besonders gut an

dem Beispiel des hypothetischen, praxisnahen Simulationsdurchlaufes sichtbar: die Dauer der

ersten Version zur Übertragung und Persistierung des Durchlaufs hätte in der Größenordnung

von Tagen (wenn nicht Wochen) gelegen, da schon ein Durchlauf mit nur 10.000 Messungen

über 18 Stunden benötigte. Theoretisch hätte dabei eine Datenmenge von ca. 180 GiB über-

tragen werden müssen. Durch die verschiedenen Optimierungen sowohl des Overheads als

auch des Payloads konnte dies letztendlich auf etwa 450 MiB und eine Dauer von knapp 2

Stunden reduziert werden; dies entspricht einer Reduktion der ursprünglichen Datenmenge

um 99,8%.

Page 47: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

37

Abbildung 15: Anteile der Verarbeitungszeit

Quelle: Eigene Erhebung

Abschließend ist in Abbildung 15 noch ein Kreisdiagramm dargestellt, welches die Anteile

der Operationen an der Verarbeitungszeit beinhaltet. Grundlage der Berechnung sind die ak-

tuellsten Versionen des Datenmodells und des Interfaces, durch welche die Laufzeit des

exemplarischen Simulationsdurchlaufs bei durchschnittlich 1 Minute und 10 Sekunden liegt.

Im Diagramm entspricht der blaue Teil dem Anteil, den die Kompression, Übertragung und

Dekompression der Daten an der gesamten Verarbeitungszeit haben; dies entspricht 34 Se-

kunden oder 49%. Auf der linken Seite ist der Anteil dargestellt, welchen allein die Persistie-

rung an der Verarbeitungszeit hat; dies entspricht 36 Sekunden oder 51%. Dies zeigt, dass

beide Teile der Verarbeitung im aktuellen Modell relativ gleichwertig sind. Allerdings ist zu

betonen, dass eine Optimierung der Kompression und Übertragung kaum noch möglich sein

wird; auch wenn nur 4,5 MiB letzten Endes übertragen werden, so müssen doch knapp 220

MiB komprimiert und wieder dekomprimiert werden, damit die Übertragung vollständig ist.

Dagegen kann die Zeit, welche für die Persistierung aufgewendet wird, durch den Einsatz

eines richtigen Datenbankservers und weiterer systemspezifischer Optimierungen sicherlich

noch weiter reduziert werden.

Fazit

In diesem Kapitel wurde zunächst in Abschnitt 4.1 ein Datenmodell entwickelt. Dazu wurden

als erstes die beiden Alternativen für die Verwendung als Referenzmodell, CIM und SMM,

beschrieben, und anschließend gegeneinander abgewogen. Aufgrund seiner etwas besseren

Eignung wurde dabei SMM ausgewählt. Daraufhin wurde SMM als Grundlage für die Ent-

wicklung eines eigenen Datenmodells verwendet; dabei wurden die fehlenden Konzepte wie

die Repräsentation von Messzeitpunkten, Workloads und Performance-Modellen hinzugefügt.

Im zweiten Teil dieses Kapitels wurde die Übertragung der Daten zwischen Client und Server

betrachtet. Dazu wurden zunächst die beiden möglichen Alternativen bei der Implementierung

von Web Services, JAX-WS und JAX-RS, beschrieben. Beide Alternativen wurden als

gleichwertig bezeichnet, wegen der breiteren Konfigurationsmöglichkeiten wurde jedoch

34

36

Anteile der Verarbeitungszeit

Kompression & Übertragung Persistierung

Page 48: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

38

JAX-WS als Standard für die Implementierung des Web Services ausgewählt. Danach wurde

ein Interface für den Simulation Data Service entwickelt, aus welchem später die WSDL-

Definition erstellt werden kann. Schließlich wurde untersucht, wie die Übertragung optimiert

und damit die Übertragungszeit minimiert werden kann. Durch Anpassungen des Interfaces,

des Datenmodells sowie durch Aktivierung von gzip-Kompression konnte letztendlich eine

erhebliche Reduktion sowohl des Overheads als auch des Payloads erzielt werden.

Mit dem Ende dieses Kapitels wurde nun die letzte der drei Forschungsfragen, welche zu Be-

ginn der Arbeit aufgestellt wurden, beantwortet. Im nächsten Kapitel wird schließlich betrach-

tet, welche konkreten Eigenschaften die Implementierung des Prototyps aufweist; ins-

besondere die technische Umsetzung des Datenmodells aus Abschnitt 4.1 wird dort behandelt.

Page 49: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

39

Architektur des Prototyps

Überblick

Nachfolgend wird zunächst ein kurzer Überblick über die Architektur gegeben, die für die

Entwicklung des Prototyps des Simulation Data Service verwendet wurde; anschließend wer-

den konkrete Details der Implementierungen, Herausforderungen und Designentscheidungen

behandelt.

Der Prototyp des Simulation Data Service basiert auf der Client-Server-Architektur. Clients

des Services sind dabei verschiedene Simulationswerkzeuge, welche ihre Simulationsergeb-

nisse an den Service senden. Ein Teil der Entwicklung des Prototyps war die Implementie-

rung eines Plugins für die Palladio-Bench, um die Funktionsfähigkeit des Services

demonstrieren zu können; wie die konkrete Implementierung des Plugins gehandhabt wurde,

wird in Abschnitt 5.3 näher erläutert. Der Simulation Data Service selbst läuft, wie in Kapitel

2 bereits erklärt wurde, als Web Service auf dem JBoss Application Server 7; als Datenbank-

managementsystem (DBMS) wird MySQL verwendet. Die Implementierung des Web Ser-

vices und die Kommunikation mit den Clients erfolgt dabei auf Basis von JAX-WS, wie im

vorangegangen Kapitel beschrieben. Da das Interface des Simulation Data Services bereits

erörtert wurde, wird an dieser Stelle nicht weiter darauf eingegangen. Vielmehr wird im Fol-

genden beschrieben, wie die praktische Implementierung des theoretischen Datenmodells

erfolgt ist. Zu diesem Zweck wird im kommenden Abschnitt die Java Persistence API be-

schrieben.

Java Persistence API

Grundlagen

Zur Implementierung des Datenmodells, welches in Kapitel 4 entwickelt wurde, wird die Java

Persistence API (JPA) eingesetzt. Ähnlich wie bei der Java EE-Spezifikation wird die JPA-

Spezifikation von mehreren sog. Persistence Providern implementiert; in dieser Arbeit wird

Hibernate verwendet. JPA dient dem Management von Persistenz in Java EE und Java SE und

bietet diesen Plattformen ein Object-Relational Mapping (ORM) (Sun Microsystems 2009,

19). Der Zweck eines ORM ist die Abbildung von objektorientierten Strukturen in relationa-

len Datenbanken, wie sie in der Praxis in der Regel eingesetzt werden. Dazu werden Plain

Old Java Objects (POJOs) verwendet, die um entsprechenden Annotationen erweitert werden.

Die grundlegende Annotation von JPA ist die Entity-Annotation. Durch sie wird gekenn-

zeichnet, dass eine Klasse Teil des ORM ist und persistiert werden soll. Dabei werden alle

objektorientierten Konzepte unterstützt, welche normalerweise in relationalen Datenbanken

nicht vorkommen, insbesondere Vererbung und Polymorphie (Sun Microsystems 2009, 22).

Zusätzlich braucht jede Klasse eine ID, welche sie eindeutig identifiziert; dazu kann unter

anderem die Id-Annotation verwendet werden. Existieren diese beiden Annotationen, kann

eine Java-Klasse bereits persistiert werden; es gibt jedoch noch eine Vielzahl an weiteren An-

notationen, mit denen das ORM präziser gesteuert werden kann. Insbesondere sind häufig die

Annotation OneToOne, OneToMany bzw. ManyToOne und ManyToMany anzutreffen; diese

Page 50: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

40

dienen der Spezifikation der Multiplizitäten von Assoziationen und steuern damit, wie die

Referenzen zwischen zwei Objekten abgebildet werden.

Ein Beispiel für eine mit JPA-Annotationen versehene Klasse findet sich in Abbildung 16.

Abbildung 16: Observation-Klasse mit JPA-Annotationen

Quelle: Eigene Darstellung

Im Beispiel ist die Klasse Observation abgebildet. Diese enthält vor der Klassen-Definition

die Annotationen Entity, um sie als JPA Entity zu kennzeichnen, und Table, um den Namen

der Datenbanktabelle, in welcher die Entität persistiert wird, festzulegen. Die Klasse besitzt

keine Id-Annotation, da die ID aus der Oberklasse SmmElement vererbt wird. Zudem besitzt

sie zwei Referenzen zu anderen Klassen, nämlich zu der Klasse ObservationScope und zu der

Klasse ObservedMeasure. Diese sind mit einer ManyToMany-Annotation bzw. mit einer O-

neToMany-Annotation annotiert, die die Multiplizität kennzeichnen. Zusätzlich ist bei beiden

Referenzen der CascadeType angegeben; dieser sagt aus, ob Änderungen an einem Objekt an

die referenzierten Objekten weitergegeben werden. Z.B. ist das Attribut scopes mit dem

CascadeType PERSIST annotiert; dadurch wird bei der Persistierung des Observation-Objekts

auch der ObservationScope persistiert, sofern das Observation-Objekt einen ObservationSco-

pe besitzt. Schließlich ist bei dem Attribut observedMeasures der FetchType angegeben; der

FetchType LAZY drückt aus, dass das Attribut erst in den Persistenzkontext werden soll, wenn

darauf zugegriffen wird.

Durch die Verwendung von JPA wird eine Abstraktionsschicht erzeugt, sodass das Datenmo-

dell unabhängig von einem spezifischen Datenbankmanagementsystem ist. Damit kann das

zugrundeliegende DBMS ausgetauscht werden, ohne die Anwendung anpassen zu müssen.

Der Zugriff auf Objekte erfolgt über den sog. EntityManager, der den Persistenzkontext ver-

waltet. Objekte können, sofern ihre ID vorliegt, direkt mithilfe der find-Methode aus dem

Persistenzkontext abgerufen werden; komplexere Abfragen sind mithilfe der Java Persistence

Query Language (JPQL) möglich. JPQL ist vom Aufbau her stark an SQL angelehnt, welches

in den meisten DBMS verwendet wird.

Ein Beispiel für eine einfache JPQL-Abfrage ist in Abbildung 17 zu finden.

@Entity

@Table(name = "observation")

public class Observation extends SmmElement {

private String observer;

private String tool;

private Date whenObserved;

@ManyToMany(cascade = CascadeType.PERSIST)

public Collection<ObservationScope> scopes;

@OneToMany(cascade = CascadeType.REMOVE, fetch =

FetchType.LAZY)

public Collection<ObservedMeasure> observedMeasures;

...

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Page 51: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

41

Abbildung 17: Beispiel für eine JPQL-Abfrage

Quelle: Eigene Darstellung

Im Beispiel wird eine Abfrage durchgeführt, um alle Measurands zu erhalten, welche einen

bestimmten Namen haben und einer konkreten Observation-Instanz zugeordnet sind. Neben

der Parametrisierung der Query durch die Felder observationId und measurandName fällt auf,

dass im Gegensatz zu SQL die Joins über die Objekte selbst statt über die Fremdschlüssel

durchgeführt werden. Zudem ist Vererbung selbstverständlich möglich; eine ähnliche Abfrage

in SQL zu schreiben, würde eine größere Zahl komplexer Joins erfordern, um alle Unterklas-

sen der Klasse MofElement abfragen zu können. JPQL und JPA erledigen die Umwandlung

in SQL selbstständig. Die Performance solcher Abfragen hängt aber wesentlich davon ab, wie

die Vererbung in der relationalen Datenbank umgesetzt ist. Die verschiedenen Möglichkeiten

der Abbildung werden im nächsten Abschnitt beschrieben.

Abbildung von Vererbung

In JPA gibt es verschiedene Möglichkeiten zur Abbildung von Vererbung. Vererbung ist ein

besonderes Thema, da es in relationalen Datenbanken von Haus aus keinen Mechanismus für

Vererbung gibt. JPA bietet drei grundlegende Strategien zur Abbildung von Vererbung: Sin-

gle Table, Joined Subclass und Table per Concrete Class (Sun Microsystems 2009, 56).

Bei Single Table-Vererbung werden alle Klassen einer Vererbungshierarchie in einer Daten-

banktabelle gespeichert. Diese Tabelle enthält alle Attribute aller Klassen der Hierarchie;

folglich hat eine Zeile einer solchen Tabelle in der Regel sehr viele Null-Werte. Zusätzlich

gibt es eine Unterscheidungsspalte, welche kennzeichnet, welcher der Unterklassen eine Ta-

bellenzeile angehört. Single Table-Vererbung bietet den Vorteil, dass Abfragen, welche meh-

rere Klassen der Hierarchie betreffen, sehr schnell sind (Sun Microsystems 2009, 56); daher

ist es die Standard-Strategie zur Abbildung von Vererbung.

Bei Joined Subclass-Vererbung besitzt die Wurzelklasse einer Vererbungshierarchie eine ei-

gene Tabelle, welche allerdings im Gegensatz zu Single Table-Vererbung nur die Attribute

der Wurzelklasse als Felder enthält. Jede Unterklasse wird mit einer eigenen Tabelle abgebil-

det, welche neben dem Primärschlüssel nur die Attribute der jeweiligen Klasse enthält, also

keines der geerbten Attribute. Diese Strategie hat den Nachteil, dass die Instanziierung einer

Unterklasse mehrere Joins erfordert und damit sehr langsam ist (Sun Microsystems 2009, 56)

Bei Table per Concrete Class-Vererbung erhält jede nicht-abstrakte Klasse der Vererbungs-

hierarchie eine eigene Tabelle, welche alle Attribute enthält, die die Klasse besitzt, also auch

...

TypedQuery<MofElement> query = em.createQuery(

"SELECT m FROM Observation o JOIN "

+ "o.observedMeasures om JOIN om.measurand m"

+ " WHERE o.id = :observationId"

+ " AND m.name = :measurandName", MofElement.class);

query.setParameter("observationId", observationId);

query.setParameter("measurandName", measurandName);

List<MofElement> measurands = query.getResultList();

...

1

2

3

4

5

6

7

8

9

10

11

12

Page 52: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

42

geerbte Attribute. Abstrakte Klassen werden nicht in der Hierarchie abgebildet. Dadurch er-

fordern Abfragen, welche die Hierarchie umfassen, in der Regel mehrere Joins und sind damit

nicht sehr performant (Sun Microsystems 2009, 57).

Welche der Strategien eingesetzt wird, hängt zum einen davon ab, wie die Klassenhierarchie

aufgebaut ist, aber auch davon, welche Abfragen auf der Hierarchie durchgeführt werden. Für

die Abbildung des Datenmodells des Simulation Data Service wurde die Table per Concrete

Class-Strategie gewählt.

Single Table-Vererbung ist für das Datenmodell nicht gut geeignet, da jede Klasse des Mo-

dells von der Klasse SmmElement erbt; dadurch besteht die Datenbank bei Verwendung die-

ser Strategie nur aus der Tabelle smmelement und einigen Join-Tabellen. Da besonders die

Measurement-Klasse sehr viele Instanzen beinhalten wird, würde diese Tabelle nach der Per-

sistierung von wenigen Simulationsdurchläufen schon so groß sein, dass das Auffinden ande-

rer Objekte sehr lange dauern wäre.

Joined Subclass-Vererbung ist ebenfalls nicht gut anwendbar, da dies zu einer zu großen Zahl

an Joins führt. Wenn z.B. alle Measurements einer Observation abgefragt werden, müssen

sehr viele Joins durchgeführt werden, da die Zuordnung zur ObservedMeasure in der abstrak-

ten Klasse Measurement gespeichert ist, während der Wert der Measurement in der Klasse

DimensionalMeasurement abgelegt ist, während der Zeitpunkt in der Klasse TimeMeasure-

ment festgehalten ist. Daher würde die Verwendung der Joined Subclass-Strategie ebenfalls

zu einer schlechten Performanz führen.

Somit ist die Table per Concrete Class-Strategie die beste mögliche Lösung zur Abbildung

der Vererbung des verwendeten Datenmodells in der Datenbank. Denn nur mit dieser Strate-

gie sind die Measurements, die bei weitem den größten Teil der Daten ausmachen, getrennt

von den restlichen Klassen und gleichzeitig schnell instantiierbar. Dafür muss der Nachteil in

Kauf genommen werden, dass Abfragen, die mehrere Unterklassen umfassen, mehrere Joins

benötigen; doch die Zahl solcher Abfragen wird beim verwendeten Datenmodell voraussicht-

lich gering sein, sodass der Trade-off in dieser Beziehung positiv ist.

Probleme der Vererbungs- und Generationsstrategie

Ein Nachteil der Table per Concrete Class-Strategie ist, dass sie bei Hibernate, dem verwen-

deten Persistence Provider, die Wahl des GenerationType bei generierten IDs einschränkt.

Wie in Abschnitt 5.2.1 beschrieben, dienen IDs dazu, jedes Objekt eindeutig identifizierbar zu

machen. Häufig wird bei der Verwendung von IDs auch die Annotation GeneratedValue ver-

wendet, um die ID durch den Persistence Provider generieren zu lassen; dadurch muss sich

die Anwendung nicht um die Verwaltung der IDs kümmern. Die Annotation GenerationType

steuert dann die Art und Weise, wie IDs generiert werden. Für MySQL-Datenbanken wird in

der Regel der GenerationType IDENTITY verwendet; dieser wird auch verwendet, wenn der

Typ auf AUTO gestellt wird. Durch den GenerationType IDENTITY wird die Generierung

von IDs mithilfe eines ID-Feldes, das vom DBMS verwaltet wird, durchgeführt (Sun

Microsystems 2009, 375). In MySQL erhält dabei das ID-Feld das Flag auto_increment und

wird bei neuen Einträgen in die Tabelle automatisch durch MySQL inkrementiert.

Page 53: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

43

Wird nun die Table per Concrete Class-Vererbungsstrategie verwendet, ist in Hibernate keine

Verwendung des GenerationTypes IDENTITY mehr möglich (Hibernate Team 2013). Der

Grund hierfür ist, dass alle Unterklassen einer Klassenhierarchie an Stelle der Wurzelklasse

treten können; damit muss die ID eindeutig für die gesamte Klassenhierarchie sein, um Kon-

flikte zu vermeiden. Daher ist keine ID-Verwaltung innerhalb der individuellen Klassen mehr

möglich. Stattdessen kann der GenerationType TABLE verwendet werden. Wird der Genera-

tionType TABLE verwendet, benutzt Hibernate eine eigene Datenbanktabelle zur Speiche-

rung der hierarchieübergreifenden ID.

Der GenerationType TABLE hat jedoch den Nachteil, dass die Performance von INSERT-

Operationen darunter leidet. Wird mithilfe des EntityManagers ein neues Objekt in der Da-

tenbank persistiert, würde normalerweise nur ein einziges INSERT-Statement ausgeführt

werden, wenn das Objekt keine Referenzen in Join-Tabellen besitzt. Durch die Verwendung

des GenerationType TABLE führt Hibernate zunächst ein SELECT-Statement aus, um die

aktuelle ID aus der Datenbank auszulesen, daraufhin das INSERT-Statement und zum Schluss

noch ein UPDATE-Statement, um die neue ID auch in der Datenbank zu aktualisieren. Damit

wird die Zahl der Operationen effektiv verdreifacht. Während dies kein Problem darstellt,

wenn das Einfügen neuer Objekte nicht zeitkritisch ist, ist dies für die Verwendung im Simu-

lation Data Service sehr problematisch; selbst kleine Simulationsdurchläufe haben mehrere

Millionen Messungen, welche alle in die Datenbank eingefügt werden müssen. Dies ver-

schärft das Problem, dass mehrere Millionen einzelne INSERT-Operationen schon sehr inper-

formant sind, noch zusätzlich. Dieses Problem war auch die Ursache dafür, dass die Laufzeit

der ersten Versuchsläufe in Abschnitt 4.2.3 überdurchschnittlich hoch war.

Effiziente Persistierung einer großen Zahl von Messungen

Eine Lösung für dieses Problem ist die Verwendung von Batch INSERTs, also eine stapel-

weise Verarbeitung der INSERT-Operationen; so können mehrere Messungen mit einem ein-

zigen INSERT-Befehl persistiert werden. Zu diesem Zweck wird beim Aufruf der Methode

createTimeMeasurementCollection, welche das Service-Interface bereitstellt, nicht Hibernate

zur Persistierung der Messungen verwendet, sondern Java Database Connectivity (JDBC).

JDBC stellt eine einheitliche Schnittstelle für den Zugriff auf relationale Datenbanken dar. Es

stellt Methoden bereit, um eigene SQL-Anfragen in der Datenbank durchzuführen. Somit

können mit JDBC Batch INSERTs umgesetzt werden, welche eine schnelle Persistierung ei-

ner großen Zahl von Messungen ermöglichen.

Zu diesem Zweck wurde zunächst untersucht, was eine gute Batch-Größe für die Persistie-

rung der Messungen ist. Denn umso mehr Messungen mit einem einzigen INSERT verarbeitet

werden können, umso geringer sollte theoretisch die Zeit pro Messung sein. Um dies zu über-

prüfen, wurde ein Measurand mit einer großen Zahl an Messungen mittels JDBC persistiert.

Dabei wurde iterativ die Batch-Größe verändert, beginnend von 0 und anschließender Inkre-

mentierung in 100er-Schritten. Für jede INSERT-Query wurde die Dauer in Nanosekunden

gemessen, die diese zur Persistierung benötigte. Das Ergebnis dieser Messung ist in Abbil-

dung 18 zu sehen.

Page 54: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

44

Abbildung 18: INSERT-Zeit pro Messung bei verschiedenen Batch-Größen

Quelle: Eigene Erhebung

Das Diagramm stellt die Zeit dar, die jeweils für eine INSERT-Operation benötigt wurde, in

Relation zur Batch-Größe. Die ersten beiden Messungen sowie die letzten Messungen werden

aufgrund von Ausreißern nicht angezeigt. Die Batch-Größe bewegt sich bis auf einige Aus-

reißer im Rahmen von 0,05 bis 0,1 Nanosekunden pro Messung. Die orange dargestellte line-

are Regressionsgerade zeigt, dass die Annahme, dass die Zeit pro Messung mit steigender

Batch-Größe sinkt, stimmt. Somit ist es für eine optimale Persistierung einer großen Zahl von

Messwerten sinnvoll, eine möglichst große Batch-Größe zu verwenden.

Bei der Ausführung trat bei einer Batch-Größe von knapp 21.000 eine Exception auf, da das

System nicht mehr genug Speicher hatte. Das Problem lag jedoch nicht am DBMS, sondern

viel mehr am StringBuilder, welcher verwendet wird, um die Query zu bauen. Dieser verhält

sich quasi entgegengesetzt im Vergleich zu den Ausführungszeiten der INSERT-Query; mit

jedem weiteren String, welcher an die INSERT-Query angefügt wird, wird mehr Speicher

benötigt, was bei einem Speichermangel zu höheren Ausführungszeiten führt. In der nachfol-

genden Abbildung 19 ist ein Diagramm abgebildet, dass der Ausführungszeit der INSERT-

Query die Ausführungszeit des StringBuilders pro Messung gegenüberstellt.

Wie dabei gut zu sehen ist, ist die Zeit pro Messung des StringBuilders initial wesentlich

niedriger als die Ausführungszeit der Query. Somit hat der StringBuilder bis zu einer Batch-

Größe von ca. 7.000 Messungen keinen nennenswerten Anteil an der gesamten Ausführungs-

zeit. Ab der Marke von etwa 7.000 Messungen kommen deutliche Ausreißer nach oben hinzu,

während die Ausführungszeit der Query davon unberührt bleibt. Mit steigender Batch-Größe

nimmt die Häufigkeit der Ausreißer zu, bis schließlich bei etwa 20.000 Messungen der Punkt

0

0,05

0,1

0,15

0,2

0,25

0,3

0,35

0,4

1 1600 3200 4800 6400 8000 9600 11200 12800 14400 16000 17600

INSERT-Zeit / Messung

Page 55: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

45

erreicht ist, an dem die Ausreißer keine Ausreißer mehr sind. Dabei ist auch zu sehen, dass ab

etwa 18.000 Messungen auch die Ausführungszeit der Query unter dem Speichermangel des

Systems leidet. Bei etwa 21.000 Messungen ist das System schließlich voll ausgelastet und

kann den Speicherbedarf des StringBuilders nicht mehr bedienen, sodass es zum Abbruch

kommt.

Abbildung 19: INSERT- und StringBuilder-Zeit pro Messung

Quelle: Eigene Erhebung

Es wäre zwar möglich gewesen, die Größe des Arbeitsspeichers, der Java zur Verfügung

steht, zu erhöhen, um diesem Problem zu entgehen; doch dies hätte das Problem nur verscho-

ben, da der Speichermangel dadurch lediglich später eingetreten wäre. Am grundlegenden

Problem, welches in der Grafik gut sichtbar ist, ändert dies jedoch nichts: die Batch-Größe ist

ein Trade-Off zwischen der Zeit, die durch das gleichzeitige Einfügen vieler Element in die

Datenbank gewonnen wird, und der Zeit, die für die Vorbereitung des Einfügens verloren

geht. Für das hier untersuchte System, an dem keinerlei Optimierungen vorgenommen wur-

den, scheint eine Batch-Größe von etwa 10.000 Messungen ein guter Kompromiss zu sein, da

die Ausreißer des StringBuilders bei dieser Marke nur recht sporadisch auftreten. Es ist je-

doch nicht sinnvoll, zu versuchen, das hier untersuchte System zu optimieren und höhere

Batch-Größen zu erreichen; dieses System unterscheidet sich wesentlich von einem Produk-

tivsystem, welches für den Einsatz als Datenbankserver konzipiert wurde. Jegliche weiteren

Optimierungen hängen wesentlich von den Parametern eines Systems ab und müssen daher

für ein spezifisches System vollzogen werden. Zudem würde eine wissenschaftliche Untersu-

chung aller möglichen Parameter eines DBMS, durch welche eine Verbesserung der Ausfüh-

rungszeit von INSERT-Queries erreicht werden kann, den Rahmen dieser Arbeit sprengen.

0

0,05

0,1

0,15

0,2

0,25

0,3

0,35

0,4

0,45

0,5

200 1800 3400 5000 6600 8200 9800 11400 13000 14600 16200 17800 19400 21000

INSERT-Zeit / Messung StringBuilder-Zeit / Messung

Page 56: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

46

Mit der hier ermittelten Batch-Größe von 10.000 Messungen kann aber zumindest eine eini-

germaßen effiziente Verarbeitung der Simulationsergebnisse erreicht werden, wie an den

Messungen der Laufzeit in Abschnitt 4.2.4 zu sehen ist. Die Performance des Simulation Data

Service ist damit zumindest in einem akzeptablen Bereich; ausgehend davon können, wie

oben beschrieben, systemspezifische Optimierungen durchgeführt werden, um weitere Per-

formanceverbesserungen zu erreichen.

Damit wurde die Funktionsweise des Prototyps des Simulation Data Service hinreichend be-

trachtet. Neben dem Service wurde, wie zu Beginn des Kapitels erwähnt, auch ein Client-

Plugin für die Palladio-Bench entwickelt. Im Folgenden wird knapp auf die Architektur des

Clients eingegangen.

Architektur des Clients

Die Palladio-Bench ist, wie bereits in Kapitel 2 erläutert, ein Plugin für die Java-

Entwicklungsumgebung Eclipse. Daher wurde ein weiteres Plugin für Eclipse entwickelt,

welches die Palladio-Bench erweitert und damit die Möglichkeit bietet, Simulationsergebnisse

an den Simulation Data Service zu übertragen. Im Folgenden wird dieses Plugin als PMWT-

Plugin bezeichnet.

Bei der Entwicklung des PMWT-Plugins wurde besonderen Wert darauf gelegt, die Zahl der

Änderungen am bestehenden Code der Palladio-Bench so gering wie möglich zu halten, um

eine einfache Anpassung des Plugins an neue Palladio-Versionen zu ermöglichen. Daher

wurde die Anbindung des Plugins an die Palladio-Bench mithilfe der sog. Workflow Engine

von Palladio realisiert. Die Workflow Engine ist dabei eine Infrastruktur, welche verwendet

werden kann, um sowohl simple als auch komplexe Jobs zu erstellen (Palladio Team 2013).

Nachdem sie ursprünglich als Teil der Palladio-Bench entwickelt wurde, hat sie sich mittler-

weile zu einem eigenständigen Projekt entwickelt, welches auch von anderen Software-

Projekten verwendet wird (Palladio Team 2013).

Durch die Verwendung der Workflow Engine ist eine nahtlose Integration in die Palladio-

Bench möglich, indem sog. Workflow Hooks verwendet werden. An bestimmten Stellen im

Code der Palladio-Bench werden dabei die vordefinierten Hooks aufgerufen, und alle Jobs,

welche sich an einen der Hooks gehängt haben, werden ausgeführt. Das PMWT-Plugin bspw.

hängt sich bei der Ausführung an den Hook „simucom.after.simulation“ und wird dadurch

jedes Mal aufgerufen, wenn eine Simulation beendet wird. Dadurch ist eine optimale Integra-

tion gegeben, da selbst komplexere Funktionalitäten der Palladio-Bench wie die Sensitivitäts-

analyse nicht berücksichtigt werden müssen, da sie automatisch funktionieren.

Der Hook ruft die selbstdefinierte Klasse PMWTJob auf, welche alle weiteren Jobs zur Über-

tragung der Simulationsergebnisse definiert und ausführt. Ein Code-Fragment dieser Definiti-

on ist in Abbildung 20 dargestellt. Darin ist zu sehen, dass für die Übertragung der Ergebnisse

zunächst der aktuellste ExperimentRun aus dem Kontext geladen werden muss; anschließend

wird die Verbindung zum Simulation Data Service hergestellt. Daraufhin wird zunächst ein

Instanz der Observation-Klasse erzeugt und an den Server geschickt. Anschließend werden

die Modelldaten übertragen, sofern sie noch nicht auf dem Server vorhanden sind. Schließlich

werden alle ObservedMeasures erstellt und daraufhin mit den Measurements übertragen.

Page 57: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

47

Abbildung 20: Code-Fragment des PMWTJobs

Quelle: Eigene Darstellung

Die Version der Palladio-Bench, auf deren Grundlage das PMWT-Plugin entwickelt wurde,

ist die Version 3.4.0. In dieser ist noch nicht die neue Workflow Engine 2.0 enthalten; diese

bietet zusätzliche neue Features. So lassen sich bspw. sowohl sequentielle als auch parallel

abgearbeitete Jobs erstellen; wenn das PMWT-Plugin auf eine neue Version der Palladio-

Bench aktualisiert wird, kann so einfach geprüft werden, ob eine parallele Übertragung der

Simulationsergebnisse die Performance verbessert oder verschlechtert.

Ganz ohne Änderungen am vorhandenen Code funktioniert das PMWT-Plugin nicht. Es gibt

eine Reihe an Konfigurationseinstellungen, welche eine detaillierte Kontrolle über das Plugin

geben; so lässt sich das Plugin bspw. einfach aktivieren oder deaktivieren oder die Adresse

des Servers anpassen. Für diese Konfigurationseinstellungen mussten die Konfigurations-

klassen von SimuCom geändert werden. Die Änderungen beschränken sich jedoch auf 2 Pa-

kete, sodass bei einer Versionsaktualisierung nicht viel Code angepasst werden muss.

Abbildung 21: Screenshot der Konfiguration des PMWT-Plugins

Quelle: Eigene Darstellung

// Create all the jobs

this.logger.info("Sending simulation results to PMWT");

this.addJob(new LoadNewestExperimentRunJob(ctx));

this.addJob(new EstablishConnectionToSDSJob(ctx));

this.addJob(new SendObservationJob(ctx));

this.addJob(new SendModelsJob(ctx));

this.addJob(new SendObservedMeasuresJob(ctx));

// RUN!

super.execute(monitor);

1

2

3

4

5

6

7

8

9

10

Page 58: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

48

Ein Screenshot des Konfigurationsdialoges findet sich in der Abbildung 21. Darin sind zu-

nächst die verschiedenen Simulationseinstellungen der Palladio-Bench zu sehen. Im unteren

Teil des Fensters befindet sich der Bereich „Performance Management Work Tools“. Dieser

enthält zunächst eine Checkbox, mit welcher die Übertragung von Simulationsergebnissen an

den Simulation Data Service einfach aktiviert bzw. deaktiviert werden kann. Über den Konfi-

gurationsparameter „WSDL URL“ kann die Adresse des Servers bei Bedarf einfach angepasst

werden, indem der Uniform Resource Locator (URL) der WSDL-Definition angegeben wird.

Mithilfe des Parameters „Maximum Batch Size“ kann gesteuert werden, wie viele Messungen

höchstens auf einmal verschickt werden sollen. Und schließlich existiert ein Feld, mit dem die

Kompression der Daten mittels gzip aktiviert bzw. deaktiviert werden kann.

Zur einfachen Installation des Plugins wurde ein Eclipse Feature erstellt, welches den Code

des Plugins beinhaltet. Die beiden Pakete, welche für die Konfigurationseinstellungen ange-

passt werden mussten, werden als Eclipse Feature Patch ausgeliefert. Über den Eclipse-

Menüpunkt „Install New Software…“ kann das PMWT-Plugin so mit wenigen Klicks instal-

liert werden.

Page 59: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

49

Fazit

Zusammenfassung

Im Rahmen dieser Arbeit wurde ein Web Service entwickelt, der für die Übertragung und

Persistierung von Simulationsergebnissen verantwortlich ist. Dazu wurde in Kapitel 3 unter-

sucht, welche Daten speziell für den Vergleich von Performance-Simulations- und Mess-

ergebnissen notwendig sind. Das Ergebnis war, dass eine Reduktion der Daten im Rahmen

einer statistisch rigorosen Evaluation nicht sinnvoll ist, und dass zudem der Workload not-

wendig ist, um feststellen zu können, ob zwei Ergebnisse vergleichbar sind. Daraufhin wurde

ein Workload-Modell entwickelt, welches mithilfe des Kolmogorov-Smirnov-Tests erfolg-

reich validiert wurde. Auf Basis dieser Daten wurde in Abschnitt 4.1 ein Datenmodell auf

Basis von SMM entwickelt, das alle für die Evaluation von Performance-Modellen notwendi-

gen Daten beinhaltet. Dazu wurde das SMM um eigene Konstruktionen zur Repräsentation

von Messzeitpunkten, Performance-Modellen und Workloads erweitert. Anschließend wurde

in Abschnitt 4.2 zunächst untersucht, welche unterschiedlichen Arten von Web Services es

gibt und welche dieser Typen für die Implementierung des Simulation Data Service geeignet

sind. Daraufhin wurde ein Interface für den Service auf Grundlage von JAX-WS und dem

zuvor erstellten Datenmodell erstellt. Dieses Interface sowie die Übertragung an sich wurden

schließlich mithilfe von Netzwerk-Analysen optimiert, um eine minimale Übertragungszeit zu

erreichen. Abschließend wurde in Kapitel 5 auf die Architektur des Prototyps eingegangen,

speziell auf die Implementierung des Datenmodells mithilfe von JPA.

Ausblick

Der im Rahmen dieser Arbeit entwickelte Simulation Data Service ist die Grundlage für die

Entwicklung der Performance Management Work Tools. Das Ziel der PMWT ist letztendlich

die Vereinfachung der Evaluation von Performance-Modellen sowie die einfache Verwaltung

von Simulations- und Messergebnissen, welche mithilfe unterschiedlicher Werkzeuge erho-

ben wurden. Um dieses Ziel zu erreichen, ist jedoch noch weitere Arbeit notwendig; neben

der Entwicklung des Load-Test Data Service und des Model Evaluation Tools, welche aktuell

bereits stattfindet, kann auch der Simulation Data Service weiterentwickelt werden. So ist

eine wichtige Aufgabe die systemspezifische Optimierung der Persistierung von Simulations-

ergebnissen, welche in Kapitel 5 erläutert wurde, um die Performance des Systems weiter zu

steigern und damit die Nutzbarkeit zu erhöhen. Weiterhin muss untersucht werden, welche

statistischen Verfahren für einen Vergleich von Workloads geeignet sind; wie in Kapitel 3

dargelegt wurde, sollte der Simulation Data Service auch in der Lage sein, zu einem Simulati-

onsergebnis ähnliche Simulationsergebnisse auf Grundlage des Vergleichs der Workloads zu

liefern. Um dies erreichen zu können, muss geprüft werden, ob der Kolmogorov-Smirnov-

Test, welcher für die Validierung der entwickelten Workload-Definition verwendet wurde,

auch für den Vergleich von Workloads verschiedener Simulationswerkzeuge oder sogar den

Vergleich von Workloads von Simulations- und Lasttestwerkzeugen geeignet ist. Neben die-

sen spezifischen Aufgaben gibt es viele weitere Teilbereiche der PMWT, welche noch in Pla-

nung sind und zusätzliche Services bieten werden. Werden all diese Ziele erreicht, so besitzen

die PMWT die Möglichkeit, die Erstellung, Verwendung, Verwaltung und Auswertung von

Performance-Modellen wesentlich zu vereinfachen.

Page 60: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

50

Zusätzlich zu den Beiträgen für die PMWT liegt der Wert dieser Arbeit auch in der Verwen-

dung von SMM für die Repräsentation von Simulationsergebnissen, welche mithilfe von Per-

formance-Modellen erhoben wurden; dadurch eröffnet diese Arbeit Möglichkeiten für weitere

Anwendungen von SMM in der Performance-Forschung, welche wiederum in Verbesserun-

gen der Nutzbarkeit resultieren können. Und dadurch hat diese Arbeit sowohl einen theoreti-

schen als auch praktischen Beitrag dazu geleistet, dass Performance-Modelle in Zukunft nicht

mehr nur von Wissenschaftlern benutzt werden; einen Beitrag zur Verbesserung und Verbrei-

tung von Performance-Modellen, sodass sie helfen können, viele der heutigen Probleme in der

Software-Entwicklung zu lösen.

Page 61: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

51

Literaturverzeichnis

Apache Software Foundation (o.J.): Apache CXF Project Website. http://cxf.apache.org/,

zugegriffen am 14.12.2013.

Balsamo, S.; di Marco, A.; Inverardi, P.; Simeoni, M. (2004): Model-Based Performance Prediction in Software Development: A Survey. In: Software Engineering, IEEE

Transactions on, Band 30 (2004) Nr. 5, S. 295-310.

Becker, J.; Schütte, R. (1997): Referenz-Informationsmodelle für den Handel: Begriff,

Nutzen und Empfehlungen für die Gestaltung und unternehmensspezifische Adaption von Referenzmodellen. In: Wirtschaftsinformatik’97. Hrsg. Springer 1997, S. 427-448.

Becker, S. (2008): Coupled model transformations for QoS enabled component-based software design. Diss., Carl von Ossietzky University of Oldenburg 2008.

Becker, S.; Grunske, L.; Mirandola, R.; Overhage, S. (2006): Performance Prediction of Component-Based Systems. In: Architecting Systems with Trustworthy Components (Band 3938). Hrsg.: Reussner, R.; Stafford, J.; Szyperski, C. Springer Berlin

Heidelberg 2006, S. 169-192.

Becker, S.; Koziolek, H.; Reussner, R. (2007): Model-Based Performance Prediction with

the Palladio Component Model. Vorgestellt in: Proceedings of the 6th international workshop on Software and performance, S. 54-65.

Becker, S.; Koziolek, H.; Reussner, R. (2009): The Palladio component model for model-

driven performance prediction. In: Journal of Systems and Software, Band 82 (2009) Nr. 1, S. 3-22.

Brosig, F.; Kounev, S.; Krogmann, K. (2009): Automated Extraction of Palladio Component Models from Running Enterprise Java Applications. Vorgestellt in: Proceedings of the Fourth International ICST Conference on Performance Evaluation

Methodologies and Tools, S. 10.

Brown, A.W.; Wallnau, K.C. (1998): The Current State of CBSE. In: Software, IEEE, Band

15 (1998) Nr. 5, S. 37-46.

Buzen, J.P. (1971): Queueing Network Models of Multiprogramming. Master's Thesis, Harvard 1971.

Chen, S.; Liu, Y.; Gorton, I.; Liu, A. (2005): Performance prediction of component-based applications. In: Journal of Systems and Software, Band 74 (2005) Nr. 1, S. 35-43.

Dehling, H.; Haupt, B. (2004): Einführung in die Wahrscheinlichkeitstheorie und Statistik, Springer, Berlin 2004.

Distributed Management Task Force (2003): CIM Metrics Model White Paper.

http://www.dmtf.org/sites/default/files/standards/documents/DSP0141.pdf, zugegriffen am 14.12.2013.

Page 62: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

52

Distributed Management Task Force (2013a): CIM Frequently Asked Questions. http://dmtf.org/about/faq/cim_faq, zugegriffen am 14.12.2013.

Distributed Management Task Force (2013b): CIM Schema: Version 2.38.0. http://dmtf.org/standards/cim/cim_schema_v2380, zugegriffen am 14.12.2013.

Franks, G.; Al-Omari, T.; Woodside, M.; Das, O.; Derisavi, S. (2009): Enhanced

Modeling and Solution of Layered Queueing Networks. In: Software Engineering, IEEE Transactions on, Band 35 (2009) Nr. 2, S. 148-161.

Georges, A.; Buytaert, D.; Eeckhout, L. (2007): Statistically Rigorous Java Performance Evaluation. In: ACM SIGPLAN Notices, Band 42 (2007) Nr. 10, S. 57-76.

Gilly, K.; Brosig, F.; Nou, R.; Kounev, S.; Juiz, C. (2012): Online Prediction: Four Case

Studies. In: Resilience Assessment and Evaluation of Computing Systems. Hrsg. Springer 2012, S. 185-202.

Gradl, S. (2012): Performance-Modellierung und Simulation eines SAP-ERP-Systems. Diss., Technische Universität München 2012.

Hibernate Team (2013): Hibernate Reference Documentation.

http://docs.jboss.org/hibernate/orm/4.2/manual/en-US/html/, zugegriffen am 14.12.2013.

Huffman, D.A. (1952): A Method for the Construction of Minimum-Redundancy Codes. In: Proceedings of the IRE, Band 40 (1952) Nr. 9, S. 1098-1101.

Internet Engineering Task Force (1996): RFC 1951 - DEFLATE Compressed Data Format

Specification version 1.3. http://tools.ietf.org/html/rfc1951, zugegriffen am 14.12.2013.

Kobayashi, H.; Mark, B.L. (2009): System Modeling and Analysis: Foundations of System Performance Evaluation. (1 Aufl.), Pearson Education International 2009.

Kolmogorov, A.N. (1933): Sulla determinazione empirica di una legge di distribuzione. In:

Giornale dell’Istituto Italiano degli Attuari, Band 4 (1933) Nr. 1, S. 83-91.

Kounev, S. (2005): Performance Engineering of Distributed Component-Based Systems.

Diss., Technische Universität Darmstadt 2005.

Kounev, S. (2006): Performance Modeling and Evaluation of Distributed Component-Based Systems Using Queueing Petri Nets. In: Software Engineering, IEEE Transactions on,

Band 32 (2006) Nr. 7, S. 486-502.

Koziolek, H. (2010): Performance Evaluation of Component-based Software Systems: A

Survey. In: Performance Evaluation, Band 67 (2010) Nr. 8, S. 634-658.

Koziolek, H.; Becker, S.; Happe, J. (2007): Predicting the Performance of Component-Based Software Architectures with different Usage Profiles. In: Software

Architectures, Components, and Applications. Hrsg. Springer 2007, S. 145-163.

Page 63: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

53

Lavenberg, S. (1983): Computer Performance Modeling Handbook (Band 4), Academic Press Inc 1983.

Mayer, M. (2013): Performance-Modellierung und Simulation eines SAP-Netweaver-Portal-Systems. Diss., Technische Universität München 2013.

Menascé, D.A.; Almeida, V.A.F.; Dowdy, L.W. (1994): Capacity Planning and Performance

Modeling: From Mainframes to Client-Server Systems, Prentice-Hall, Inc. 1994.

Noorshams, Q.; Bruhn, D.; Kounev, S.; Reussner, R. (2013): Predictive Performance

Modeling of Virtualized Storage Systems using Optimized Statistical Regression Techniques. Vorgestellt in: Proceedings of the ACM/SPEC international conference on performance engineering, S. 283-294.

Object Management Group (2005a): UML Profile for Modeling and Analysis of Real-Time and Embedded systems (MARTE). http://www.omg.org/cgi-bin/doc?realtime/2005-2-

6, zugegriffen am 14.12.2013.2013.

Object Management Group (2005b): UML Profile for Schedulability, Performance, and Time Specification. http://www.omg.org/cgi-bin/doc?formal/2005-01-02, zugegriffen

am 14.12.2013.2013.

Object Management Group (2012): Structed Metrics Metamodel (SMM).

http://www.omg.org/spec/SMM/1.0/PDF, zugegriffen am 14.12.2013.

Oracle (2013): Java™ Platform, Enterprise Edition (Java EE) Specification, v7. https://java.net/downloads/javaee-spec/JavaEE_Platform_Spec_FR_candidate.pdf,

zugegriffen am 14.12.2013.

Palladio Team (2013): Palladio Workflow Engine - SDQ Wiki.

http://sdqweb.ipd.kit.edu/wiki/Palladio_Workflow_Engine, zugegriffen am 14.12.2013.

Palladio Team (o.J.): Palladio Simulator Website. http://www.palladio-

simulator.com/de/tools/, zugegriffen am 09.12.2013.

Pautasso, C.; Zimmermann, O.; Leymann, F. (2008): RESTful Web Services vs. "Big"

Web Services: Making the Right Architectural Decision. Proceedings of the 17th international conference on World Wide Web (S. 805-814). Beijing, China: ACM.

Reussner, R. (2001): Parametrisierte Verträge zur Protokolladaption bei Software-

Komponenten, Logos Berlin 2001.

Reussner, R.; Becker, S.; Happe, J.; Koziolek, H.; Krogmann, K.; Kuperberg, M.

(2007): The Palladio Component Model (Interner Bericht 21). Universität Karlsruhe (TH), 2007.

Sauer, C.H.; MacNair, E.A. (1983): Simulation of Computer Communication Systems,

Prentice Hall Professional Technical Reference 1983.

Smirnov, N.V. (1936): Sur la distribution de w2. In: CR Acad. Sci. Paris, Band 202 (1936),

S. 449.

Page 64: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

54

Smirnov, N.V. (1948): Table for Estimating the Goodness of Fit of Empirical Distributions. In: The Annals of Mathematical Statistics, Band 19 (1948) Nr. 2, S. 279-281.

Smith, C.U. (2007): Introduction to Software Performance Engineering: Origins and Outstanding Problems. In: Formal Methods for Performance Evaluation (Band 4486). Hrsg.: Bernardo, M.; Hillston, J. Springer Berlin Heidelberg 2007, S. 395-428.

Snavely, A.; Carrington, L.; Wolter, N.; Labarta, J.; Badia, R.; Purkayastha, A. (2002): A Framework for Performance Modeling and Prediction. Vorgestellt in:

Supercomputing, ACM/IEEE 2002 Conference.

Stephens, M.A. (1992): An Appreciation of Kolmogorov's 1933 Paper (Technical Report 453). Stanford University, 1992.

Storer, J.A.; Szymanski, T.G. (1982): Data Compression via Textual Substitution. In: J. ACM, Band 29 (1982) Nr. 4, S. 928-951.

Sun Microsystems (2009): JSR 317: Java™ Persistence API, Version 2.0. http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-eval-oth-JSpec/, zugegriffen am 14.12.2013.

Woodside, M.; Franks, G.; Petriu, D.C. (2007): The Future of Software Performance Engineering. 2007 Future of Software Engineering (S. 171-187): IEEE Computer

Society.

Wu, P. (2003): A Performance Model for a Network of Prototype Software Routers. Master's Thesis, Carleton University 2003.

Zur Muehlen, M.; Nickerson, J.V.; Swenson, K.D. (2005): Developing web services choreography standards—the case of REST vs. SOAP. In: Decision Support Systems,

Band 40 (2005) Nr. 1, S. 9-29.

Page 65: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

55

Anhang

Page 66: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

56

Anhang A Datenmodelle

Anhang A.1 CIM Metrics Schema 2.38.0

Abbildung 22: CIM Metrics Schema 2.38.0

Quelle: (Distributed Management Task Force 2013b)

Page 67: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

57

Anhang A.2 SMM Kernklassen

Abbildung 23: SMM Kernklassen

Quelle: (Object Management Group 2012, 9)

Page 68: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

58

Anhang A.3 SMM Measures

Abbildung 24: SMM Measure Klassendiagramm

Quelle: (Object Management Group 2012, 12)

Page 69: Konzeption und Entwicklung einer Java EE-Anwendung zum …download.fortiss.org/public/pmwt/theses/Bachelorarbeit... · 2014. 3. 31. · 5.2.4 Effiziente Persistierung einer großen

59

Anhang A.4 SMM Collective Measures

Abbildung 25: SMM Collective Measures Klassendiagramm

Quelle: (Object Management Group 2012, 32)