<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Ein Vorgehensmodell für Performance-Monitoring von Informationssystemlandschaften</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thilo Focke</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Wilhelm Hasselbring</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matthias Rohr ⋆</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>und Johannes-Gerhard Schute</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>EWE TEL GmbH</institution>
          ,
          <addr-line>Cloppenburger Str. 310, 26133 Oldenburg</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Graduiertenkolleg TrustSoft, Abteilung Software Engineering Carl von Ossietzky Universität Oldenburg</institution>
          ,
          <addr-line>26111 Oldenburg</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Zusammenfassung Der Betrieb von softwareintensiven, geschäftskritischen Informationssystemlandschaften benötigt ein Performance-Monitoring um die Überwachung und Analyse von Laufzeitverhaltens zu ermöglichen. Während die rein technische Implementierung von Performance-Monitoring eher unproblematisch ist, bietet sich bisher kein Vorgehensmodell für den systematischen, zielgerichteten Einsatz in komplexen Systemen an. Somit haben die in der Praxis anzutreffenden „ad-hoc”-Realisierungen oftmals eine mangelhafte Effektivität und Wartbarkeit zur Folge. Aus diesem Grund wird in diesem Artikel ein Monitoring-Ansatz vorgestellt, dessen Kern aus einem Vorgehensmodell für die Planung und Integration eines Performance-Monitoring besteht. Damit zusammenhängend wurde eine wiederverwendbare Infrastruktur entwickelt, die die Monitoringdatenintegration für verteilte Systeme leistet. Der vorgestellte Ansatz wurde in einem Telekommunikationsunternehmen evaluiert und die dementsprechend umgesetzte Monitoring-Lösung befindet sich seit Mai 2006 im operativen Betrieb.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Einleitung</title>
      <p>zahlreiche Standards (SNMP, WBEM/-CIM) und proprietäre Produkte (HP OpenView,
MS Operations Manager, IBM Tivoli) für die Überwachung und das Management von
Systemlandschaften, Netzwerken und Hardware existieren, sind Lösungen und
insbesondere Vorgehensmodelle für das Monitoring auf Softwareapplikationsebene
Mangelware. Da jedoch Informationssystemlandschaften immer softwareintensiver werden, ist
es nicht mehr zeitgemäß, Softwareapplikationen als monolithischen Block zu
beobachten, sondern eine innere Betrachtung nötig, um präzisere Diagnosen zu erhalten. Auch
in der Lehre und Ausbildung bleiben die Aspekte des Softwarebetriebs und im
speziellen Monitoring und dessen zielgerichteter Einsatz bislang weitestgehend unbeachtet.</p>
      <p>Da in der Praxis oft das Bewusstsein existiert, dass ein Monitoring auf
Softwareapplikationsebene benötigt wird, aber da kein ganzheitlicher Ansatz zur Verfügung
steht, lässt sich vielerorts ein selbst entwickeltes, wenig dokumentiertes, „ad-hoc”
Monitoring vorfinden. Das ad-hoc Monitoring stellt den naivsten Monitoring-Ansatz dar.
Hierbei wird „aus dem Stegreif”, per Hand der Applikationscode um
Standardausgabebefehle oder Aufrufe von Logging-Frameworks erweitert. Es ist nicht selten, dass weder
eine Trennung des Logging-Codes von der restlichen Anwendungslogik vorgenommen
wird, noch systematisch geplant und dokumentiert wird, wo, zu welchem Zweck, wie
und was überhaupt mit dem Monitoring erfasst werden soll. Somit ist die Effektivität
und Wartbarkeit, wie bei auch jeder anderen unsystematischen Softwareentwicklung,
üblicherweise mangelhaft.</p>
      <p>Um die Probleme des “ad-hoc” Monitorings zu vermeiden ist ein ganzheitlicher
Monitoring-Ansatz nötig. Der in diesem Artikel beschriebene Monitoring-Ansatz zum
Performance-Monitoring besteht aus:
– einem Monitoring-Vorgehensmodell als Anleitung für die phasenweise,
zielgerichtete und Planung, Implementierung und Integration eines Performance-Monitoring
und
– einer Monitoring-Infrastruktur als vorimplementiertes Framework aus
Standardkomponenten des Monitorings für verteilte Java EE-basierte Systeme.
Der Beitrag des Monitoring-Vorgehensmodells ist, dass ein zielgerichtetes Vorgehen
angeboten und als Folge das Risiko einer Eigenentwicklung vermindern wird.
Weiterhin wird eine spätere Rekonstruktion des Entwicklungsprozesses eines Monitorings
und der zu Grunde liegenden Entscheidungen ermöglicht. Zuletzt soll es auf Grund
von erhöhter Systematik einheitlichere Ergebnisse erzielen lassen, welches speziell bei
großen Systemen wichtig ist, bei denen mehrere Entwickler an der Realisierung eines
Monitorings beteiligt sind. Die Monitoring-Infrastruktur kapselt allgemeine Elemente
des Monitorings in wiederverwendbaren Komponenten, um den Entwicklungsaufwand
zu reduzieren.</p>
      <p>Der Artikel ist wie folgt aufgebaut: Zunächst wird der aus dem Vorgehensmodell
und der Infrastruktur bestehende Monitoring-Ansatz (Abschnitt 2 und 3) vorgestellt,
wobei der Schwerpunkt auf den Phasen des Vorgehensmodells liegt. In Abschnitt 4
wird die Anwendung in einem realen System eines Telekommunikationsunternehmens
beschrieben. Zum Ende dieses Artikels (Abschnitt 5) erfolgt eine Zusammenfassung
sowie ein Ausblick über zukünftige Erweiterungen.</p>
    </sec>
    <sec id="sec-2">
      <title>Das Vorgehensmodell</title>
      <p>Vorgehensmodelle organisieren Entwicklungsprozesse, indem empfohlene Methoden
und Techniken in Phasen gegliedert werden. Ein spezielles Vorgehensmodell für
Performance-Monitoring kann im Gegensatz zu allgemeinen
Softwareentwicklungsmodellen (z.B. Spiralmodell, Wasserfallmodell), die typischen Fragestellungen gezielter
und somit effizienter adressieren als ein allgemeines Softwareentwicklungsmodell.
Zusätzlich vermag es Entwicklungsfehler zu vermeiden, indem es als Checkliste dient.
Abbildung 1 zeigt das Vorgehensmodell mit seinen fünf Phasen für den Entwurf, die</p>
      <p>Abbildung 1. Vorgehensmodell für ein Performance-Monitoring
Implementierung und die Integration von einem Performance-Monitoring in ein
bestehendes Softwaresystem. Die Phasen werden in den folgenden Unterabschnitten im
Detail beschrieben werden. Es ist noch zu erwähnen, dass Rückschritte und Iterationen
bei der Anwendung des Vorgehensmodells möglich sind, da das Monitoring
gegebenenfalls angepasst werden muss, wenn sich die Systemarchitektur oder die
MonitoringAnforderungen ändern oder konkretisieren. Insbesondere sind Anpassungen nach der
ersten Erprobungsphase zu erwarten, da vielmals erst anhand von ersten
Messergebnissen festgestellt werden kann, welche Messpunkte und Metriken sich zum effizienten
Erreichen der spezifizierten Ziele eignen. Daher sollte die Implementierung eine hohe
Wartbarkeit besitzen, um Anpassungen des Monitorings zu unterstützten.
2.1</p>
      <sec id="sec-2-1">
        <title>Performance-Ziele definieren</title>
        <p>Die Datenerfassung für ein effektives und effizientes Monitoring muß zielgerichtet
erfolgen. Dafür müssen die Ziele klar spezifiziert und dokumentiert werden. Zudem ist
dies wichtig, um Nachvollziehbarkeit zu gewährleisten und um die Wartbarkeit des
Softwaresystems nicht zu gefährden.</p>
        <p>Bei der Identifikation der Monitoring-Ziele (z.B. Überwachung, Optimierung),
können beispielsweise Unternehmensziele, Systemanforderungen oder
Architekturvorgaben als Grundlage dienen. Zu späteren Zeitpunkten sollte stets überprüft werden, ob die
Ziele erreicht wurden.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Performance-Metriken herleiten</title>
        <p>
          Im zweiten Schritt werden Performance-Metriken mit der
Goal-Question-Metric-Methode (GQM) [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] bestimmt und verbreitete Metriken aus der Literatur (z.B. [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] und [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ])
eingesetzt. GQM leitet Metriken von den Zielen (Goals) über Fragen (Questions) her.
Die Fragen sind eine Verfeinerung der Ziele um das Zielverständnis zu verbessern und
spätere Überprüfungen zu ermöglichen. Auf Basis der Fragen werden zuletzt die
Metriken bestimmt. Werden die Metriken sorgfältig ausgewählt, kann vermieden werden,
dass unnötige oder falsche Daten erhoben werden.
2.3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Messpunkte identifizieren</title>
        <p>Wir verstehen unter einem Messpunkt den Ort in der Anwendungsarchitektur, der für
die Datenerfassung mit Anwendungscode erweitert wird.</p>
        <p>Die Systemarchitekturbeschreibungen können markante Architekturpunkte als
Kandidaten für Messpunkte oft schon erkennen lassen. Genauere Architekturanalysen
können in Kombination mit Benutzerverhaltensprofilen erfolgen, indem
Vorhersageverfahren für die Zuverlässigkeit oder Performance für eine Sensibilitätsanalyse benutzt
werden, um kritische Architekturelemente zu finden.</p>
        <p>
          Alternativ können auch Techniken wie Lasttests oder Profiling uninteressante
Punkte für Performancemessungen ausschließen, insbesondere da erfahrungsgemäß
lediglich ein kleiner Teil des Programmcodes für den Großteil der Gesamtausführungszeit
einer Software-Anwendung verantwortlich ist (vgl. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]). Die Anzahl der Messpunkte
sollte einen Kompromiss zwischen Datenqualität und Monitoring-Overhead bilden, der
ausgehend von den in den vorherigen Phasen ermittelten Zielen und Fragen gefunden
werden kann.
2.4
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>Messcode einsetzen</title>
        <p>
          In dieser Phase wird die Programmlogik für das Monitoring implementiert und mit der
zu überwachenden Applikation auf technischer Ebene verbunden. Grundsätzliche
lassen sich für das Verbinden zwei Klassen von Verfahren unterscheiden: (1.) Verfahren
die den Quellcode der Applikation erweitern (empfohlen z.B. Aspektorientierte
Programmierung (AOP) [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] oder ähnliche Techniken; nur im Ausnahmefall manuelle
Codeerweiterung), oder (2.) die sogenannte Middleware Interception. AOP verknüpft
Monitoringlogik mit Programmlogik zur Kompilier- oder Laufzeit, Middleware
Interception beobachtet den Nachrichtentransfer zwischen den Applikationskomponenten auf
der tieferen Middlewareebene.
2.5
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>Monitoring integrieren</title>
        <p>Nachdem der Messcode mit der Applikation verbunden ist, erfolgt noch eine
Integration der Messpunkte in eine Monitoring-Infrastruktur. Diese ist dafür verantwortlich, die
einzelnen Messdaten von den verteilten Messpunkten zusammenzubringen und zu
verwalten. Dies kann beispielsweise so aussehen, dass ein zentrales, separates System alle
Messpunkte regelmäßig abgefragt, die Daten persistent speichert und für
Drittapplikationen zur Verfügung stellt (z.B. für Langzeitanalysen, Alarmierungen).</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Die Infrastruktur</title>
      <p>Die Monitoring-Infrastruktur setzt sich zum einen aus einem Performance-Monitor und
zum anderen aus einer Integrationsanwendung zusammen. Der Performance-Monitor
stellt dabei eine Komponente dar, die vom Applikationsserver aufgerufen wird, um
Monitoring auf Applikationsebene zu aktivieren. Das Monitoring erfolgt dabei automatisch
an durch Annotationen definierten Messpunkten in der zu überwachenden Applikation.</p>
      <p>Die Integrationsanwendung stellt eine entkoppelte Anwendung dar, die die
Performance-Daten der auf mehreren Servern verteilten Performance Monitore verbindet.
Weiterhin ist sie in der Lage, die Performance Monitore in regelmäßigen Abständen zu
kontaktieren und dessen Daten persistent zu speichern, um sie möglichen
Drittanwendungen bereitzustellen. Letztere können diese Daten beispielsweise für Alarmierungen
oder Langzeitanalysen weiterverwenden.</p>
      <p>Bei der Implementierung des Performance Monitors kam die aspektorientierte
JavaErweiterung AspectJ sowie die Management-Erweiterung JMX zum Einsatz. Mit Hilfe
von AspectJ wird an den definierten Messpunkten zusätzliche Funktionalität
„eingewebt”, welche die Performance-Messungen durchführt.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Einsatz bei einem Telekommunikationsunternehmen</title>
      <p>Im Rahmen der Evaluationsphase wurde der entwickelte Monitoring-Ansatz bestehend
aus dem Vorgehensmodell und der Infrastruktur an einem Java-basierten Portalsystem
für rund 277.000 Kunden (Stand: 31.12.2005) des im norddeutschen Raum tätigen
Telekommunikationsunternehmens EWE TEL getestet. Als eines der größten
regionalen TK-Unternehmen Deutschlands bietet EWE TEL eine hohe Vielfalt an Sprach-,
Internet- und Datendiensten. Zu EWE TEL gehört ebenfalls die Bremer Marke
nordCom.</p>
      <p>Im Evaluationsszenario wurde der Servlet Container Apache Tomcat 5.5.12 sowie
der Applikationsserver Bea WebLogic 9.1 eingesetzt. Bei dem angesprochenen
Kundenportalsystem handelte es sich um eine verteilte Anwendung, bei der Messpunkte in
Applikationen gesetzt wurden, die auf unterschiedlichen Applikationsservern installiert
waren. Der Messcode wurde dabei in einem ersten Evaluationsszenario zur Laufzeit mit
Hilfe des so genannten Load-time Weaving (LTW) von AspectJ eingewebt. In einem
weiteren Szenario kam Compile-time Weaving (CTW) zum Einsatz, bei dem
Messcode bereits während des Build-Prozesses eingewebt wurde, da LTW in Kombination mit
RMI-Kommunikation, aufgrund eines bis dahin ungelösten konzeptionellen Problems
von AspectJ 1.5.0, massive Speicherprobleme zutage brachte.</p>
      <p>Der Monitoring-Ansatz mit Integration der Messpunkte durch CTW befindet sich
seit Anfang 2006 erfolgreich im operativen Betrieb und liefert Performance-Daten, die
zur Langzeitüberwachung, Alarmierung und Ressourcenbedarfsplanung genutzt
werden.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Zusammenfassung und Ausblick</title>
      <p>
        In diesem Artikel wurde ein Vorgehensmodell sowie eine Implementierung in Form
einer Infrastruktur für ein Performance-Monitoring von
Informationssystemlandschaften vorgestellt. Im Vorfeld dieser Arbeit konnte kein adäquates Vorgehensmodell für
die systematische Integration eines Performance-Monitoring in der Literatur gefunden
werden. Sicherlich gibt es zahlreiche Vorgehensmodelle, die für die
Softwareentwicklung eingesetzt werden (Wasserfallmodell, Spiralmodell), welche aber nicht auf
kritische Aspekte von Monitoring eingehen. Daher wurde ein konkretes
Vorgehensmodell für Performance-Monitoring entwickelt, welches vorgefertigte Phasen für die
Einwicklung eines Monitorings anbietet. Im Gegensatz zum Vorgehensmodell lassen sich
in der Literatur einige ähnliche Monitoring-Infrastruktur- Architekturen finden (z.B.
[
        <xref ref-type="bibr" rid="ref10 ref4 ref7 ref8 ref9">4,7,8,9,10</xref>
        ]). Eine alternative AOP-basierende Monitoring-Infrastrukturen ist durch das
Glassbox Framework gegeben [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>
        Das in diesem Artikel vorgestellte Vorgehensmodell sowie die Infrastruktur
konnte sich im Praxiseinsatz bewähren und werden in einem großen Kundenportalsystem
eines regionalen TK-Unternehmens zur Langzeitüberwachung, Alarmierung und
Ressourcenbedarfsplanung eingesetzt. Eine Erweiterung des Ansatzes um eine
Protokollierung von Fehlernachrichten ist in der Entwicklung. Als Langzeitvision sind zudem
einfache Selbstheilungsmechanismen denkbar, wie sie z.B. von IBMs Autonomic
Computing Kampagne [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] propagiert werden, um im Fehlerfall einem Systemausfall
entgegenwirken könnten.
      </p>
    </sec>
    <sec id="sec-6">
      <title>Literatur</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>IEEE</given-names>
            <surname>Standards</surname>
          </string-name>
          <article-title>Board: IEEE standard glossary of software engineering terminology-</article-title>
          <source>IEEE std 610</source>
          .
          <fpage>12</fpage>
          -
          <lpage>1990</lpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Caldiera</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rombach</surname>
          </string-name>
          , H.D.:
          <article-title>The goal question metric approach</article-title>
          . In Marciniak, J.J., ed.:
          <source>Encyclopedia of Software Engineering</source>
          . Volume
          <volume>1</volume>
          . John Wiley &amp; Sons (
          <year>1994</year>
          )
          <fpage>528</fpage>
          -
          <lpage>532</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. ISO/IEC Standard: Software Engineering - Product Quality - Part 2:
          <string-name>
            <given-names>External</given-names>
            <surname>Metrics</surname>
          </string-name>
          .
          <source>ISO Standard 9126-2</source>
          , ISO/IEC (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Jain</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>The Art of Computer Systems Performance Analysis: Techniques for Experimental Design</article-title>
          , Measurement, Simulation, and Modeling.
          <volume>1</volume>
          <fpage>edn</fpage>
          . John Wiley &amp; Sons (
          <year>1991</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Papaccio</surname>
            ,
            <given-names>P.N.</given-names>
          </string-name>
          :
          <article-title>Understanding and controlling software costs</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>14</volume>
          (
          <issue>10</issue>
          ) (
          <year>1988</year>
          )
          <fpage>1462</fpage>
          -
          <lpage>1477</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kiczales</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lamping</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Menhdhekar</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maeda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lopes</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Loingtier</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Irwin</surname>
          </string-name>
          , J.:
          <article-title>Aspect-oriented programming</article-title>
          . In Aks¸it, M.,
          <string-name>
            <surname>Matsuoka</surname>
          </string-name>
          , S., eds.
          <source>: Proceedings European Conference on Object-Oriented Programming</source>
          . Volume
          <volume>1241</volume>
          . Springer-Verlag, Berlin, Heidelberg, and New York (
          <year>1997</year>
          )
          <fpage>220</fpage>
          -
          <lpage>242</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Harkema</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quartel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gijsen</surname>
            ,
            <given-names>B.M.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>van der</surname>
            <given-names>Mei</given-names>
          </string-name>
          , R.D.:
          <article-title>Performance monitoring of java applications</article-title>
          .
          <source>In: Proceedings of the 3rd International Workshop on Software and Performance (WOSP-02)</source>
          , New York, ACM Press (
          <year>2002</year>
          )
          <fpage>114</fpage>
          -
          <lpage>127</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Monitoring of component-based systems</article-title>
          .
          <source>Technical Report HPL-2002-25R1, Hewlett Packard Laboratories</source>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Hoffman</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Monitoring, at your service</article-title>
          .
          <source>ACM Queue</source>
          <volume>3</volume>
          (
          <issue>10</issue>
          ) (
          <year>2005</year>
          )
          <fpage>34</fpage>
          -
          <lpage>43</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kreger</surname>
          </string-name>
          , H.:
          <article-title>Java management extensions for application management</article-title>
          .
          <source>IBM Systems Journal</source>
          <volume>40</volume>
          (
          <issue>1</issue>
          ) (
          <year>2001</year>
          )
          <fpage>104</fpage>
          -
          <lpage>129</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. Ron Bodkin: Glassbox Inspector. (
          <year>2006</year>
          ) https://glassbox-inspector.dev.java.net/,
          <source>Letzter Besuch: 05. Juni</source>
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kephart</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chess</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The vision of autonomic computing</article-title>
          .
          <source>IEEE Computer 36(1)</source>
          (
          <year>2003</year>
          )
          <fpage>41</fpage>
          -
          <lpage>50</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>