Statische Struktur

Werbung
Diplomarbeit
Tracing von Java-Anwendungen mit Hilfe
aspektorientierter Programmierung
Alvin Limengka
1
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Ablauf der Präsentation
Motivation und Ziel
Tracingansätze
Tracing mit Hilfe aspektorientierter
Programmierung
Prototyp
Fallbeispiel
Zusammenfassung und Ausblick
Diskussion
2
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Motivation und Ziel
Ziel:
Kamera
Anw endung
Anw endung
Benutzer-ComputerInteraktion
Fortfahren ?
Fortfahren ?
< Zurück
Benutzer
< Zurück
Weiter >
Weiter >
Die im Programm durch
die Benutzer-Interaktionen
entstehenden Objekte und
deren Dynamik sollen zur
Laufzeit verfolgt und
aufgezeichnet werden.
(mit Hilfe aspektorientierter Programmierung)
Mic
Ziel:
00:01:30:118
computer
3
Hochschule für angewandte Wissenschaften
Hamburg
Die aufgezeichneten Informationen sollen anhand
einer Zeitmarke referenziert werden können.
Alvin Limengka
24.3.2004
Tracingansätze
Interne Vorgänge eines Programms zur Laufzeit
zu protokollieren
Tracingansätze in Java
Methode
Code-Instrumentierung
invasiv
Modifizierung der Java-LaufzeitBibliothek
Java Platform Debugger Architecture (JPDA)
Aspektorientierte Programmierung (AOP)
4
Hochschule für angewandte Wissenschaften
Hamburg
Nicht
invasiv
Alvin Limengka
24.3.2004
Tracingansätze:
Code-Instrumentierung
Explizite
Instrumentierung.
z.B. mit
eingefügten „Print“
Anweisungen im
Quellcode
public void Method() {
System.out.print (….);
// usw…
Tracing-Information
}
public void Method() {
Einbindung in ein
LoggingFramework
logger.info(….);
// usw…
Tracing-Information
z.B. Log4J
LoggingFramework
Nachteile:
- Quellcode muss verfügbar
sein.
- Anpassung bei Programmänderungen.
- Es existiert kein allgemeiner
Standard für den Inhalt der
Tracingdaten.
}
5
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracingansätze:
Modifizierung der Java-Laufzeitbibliothek
Instrumentierung der
Java-Laufzeitbibliothek
Java-Laufzeitbibliothek
z.B. die Datei rt.jar im
Verzeichnis jre/lib
vom Java-JDK
6
Nachteile:
- Quellcode der Bibliothek muss
verfügbar sein.
- Nur Bibliotheksaufrufe können verfolgt
werden.
- Wartbarkeit.
- Es existiert kein allgemeiner Standard
für den Inhalt der Tracingdaten.
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracingansätze:
Java Platform Debugger Architecture
(JPDA)
Das
Überwachende
Programm
Das
Überwachte
Programm
JDI
JVMDI
Frontend
Backend
JDWP
JVM1
JPDA
besteht
aus
2 Interfaces:
Seit Java-SDK
v1.3.
Nachteil:
Tracing
mit JPDA:
-Überwachung
Java Virtual Machine
Debug Interface
der
Anwendung
Laufzeit-performanz
Das
überwachte Programm wird
(JVMDI)
ohne Instrumentierung.
ausgeführt
und Interface
vom überwachenden
- Java Debug
(JDI)
Programm über den JPDA zur
Laufzeit
beobachtet. Die Vorgänge
1 Protokoll:
auf
dem Debug
überwachten
Programm
- Java
Wire Protokoll
(JDWP)
werden dabei erfasst und
aufgezeichnet.
und 2 Software-Komponente:
- Frontend
- Backend
JVM2
7
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracing mit AOP:
Aspektorientierte Programmierung
(AOP)
Neue Programmierparadigmen
Ergänzt die bestehenden Paradigmen
Motivation:
Modularisierung in komplexen Softwaresystemen zu
verbessern
8
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracing mit AOP:
Problem: Modularisierung
Beispiel: Anwendungsbereich „Bankgeschäfte“
Konto
Kunde
Angestellter
Common Concerns
Crosscutting Concerns (Server side)
Crosscutting Concerns (Client side)
Die Rot-Farbe stellt die relevanten
Codeabschnitte zum Aufrufen der
Logging-Dienste (cross-cutting
concerns)
Kopplung
Logging
9
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracing mit AOP:
Modularisierung mit AOP
OOP
Ein Modul
(z.B. eine Klasse)
AOP
Ein Modul
(z.B. eine Klasse)
Funktionaler
Code
Aspekt
AspektCode
kapselt
Crosscutting
concern
Crosscutting concern
Common concern
10
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracing mit AOP:
AspectJ
Erweiterung der Programmiersprache Java und implementiert den AOP Ansatz durch
neue Konzepte und Sprachkonstrukte
.
AOP
Ein Modul
(z.B. eine Klasse)
Aspekt
Funktionaler
Codes
AspektCodes
AspektWeber
AspectJ-Sprache
11
Anwendung
(Class-datei)
AspectJ-Compiler
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Tracing mit AOP:
Konzept
Keine manuelle
Instrumentierung
Java-Anwendung
.class -Dateien
im JAR-Format
12
Gute Wartbarkeit
+
Trace-Aspekt
AspektWeber
Der Quellcode kann in
der Binärform vorliegen.
Hochschule für angewandte Wissenschaften
Hamburg
Java-Anwendung
+
Tracing –
Funktionalität
Optimierter
Byte-Code
Alvin Limengka
24.3.2004
Tracingansätze:
Zusammenfassung
Code-Instrumentierung
Modifizierung der JavaLaufzeitbibliothek
JPDA
Ziele zu verfolgen:
- Tracing ohne vorherige
Instrumentierung
- Bessere Wartbarkeit
- Standard für den Inhalt der
Tracingdaten
Ziel zu verfolgen:
Tracing mit
AOP
erfüllt alle der
verfolgten Ziele
- Performanterer Tracingansatz
13
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Prototyp:
Systemarchitektur
Java-Anwendung
Konzept:
Tracing mit AOP
Schreiben der
Tracingdaten in
eine Log-Datei
Log-Datei
Java-Anwendung
+
Tracing-Funktionalität
Input
Statische
Struktur
analysieren
Ergebnis
Echtzeit
Monitoring
Funktion
Die statische Struktur einer Java-Anwendung = Aufbau einer
Java-Anwendung
Java-Anwendung
Analyzer
Filter
Java-Anwendung
+
Code
Methoden
Funktionalität
Steuert
Klassen
Input
Steuert
Steuert
Templates
generieren
Aspect
Generator
Pakete
+
AspectJ
Tracer
Compiler
Tracing – Monitor
TraceAspektAspect
Weber
TraceTrace-Aspekt
AOP Tracing
Prototyp
14
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Fallbeispiel
Ereignisse
Symbol
Beschreibung
Beschreibung
|
preinitialization
>>
initialization
Aufrufstack
Preinitialisierung eines Objekts bei Aufruf eines Kontruktors
Eintritt
eines Ereignisses
Initialisierung
eines Objekts bei Aufruf eines Konstruktors
<< call
Austritt
Constructor
Aufrufeines
einesEreignisses
Konstruktors
(x) execution Eintritt
einer Ausnahmebehandlung
Constructor
Ausführung
eines Konstruktors
Method call
Aufruf einer Methode
Method execution
Ausführung einer Methode
Field get
Lesende Zugriff auf einer Variabel
Field set
Schreibende Zugriff auf einer Variabel
Exception handler
Ausnahmebehandlung
15
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Fallbeispiel
Übermittelte Information
Fortlaufende Nummer
Anw endung
Zeit der Ausführung
des Ereignisses, gemessen vom Start der Anwendung
Typ des Ereignisses + Signatur
Fortfahren ?
Lokation im Code
Übergabewert
Rückgabewert
< Zurück
Weiter >
Name der Klasse des Sendersobjekts
Name der Klasse des Empfängersobjekts
Senderzustand
Empfängerzustand
00:01:30:118
Threadname
Paketname
16
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Zusammenfassung & Ausblick
• Problem:
Mengen an Tracingdaten.
Tracing große
mit Code-Instrumentierung,
modifizierte JavaLaufzeitbibliothek
und JPDA
Nachteile
• Abhilfe:
feinere Filterfunktion
Abhilfe
Tracing mit AOP
• Nächste Version des AspectJ-Compilers:
Ein lauffähiger
Prototyp
wurde implementiert
erfolgreich
- Ohne
Kompilierung
der Aspektcodes
und der und
funktionalen
erprobt
Codes.
Nicht nurPerformanz
auf den Aufruf
die Ausführung einer Methode /
- Bessere
undund
Speicherverbrauch.
eines Konstruktors beschränkt.
Aus den Tracingdaten können Botschaftenfluss von JavaObjekten rekonstruiert werden + Zustandsänderungen der
Objekte zu verfolgen.
17
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Diskussion
Jetzt können Fragen gestellt werden ☺
18
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Ende
Vielen Dank für Ihre Aufmerksamkeit
19
Hochschule für angewandte Wissenschaften
Hamburg
Alvin Limengka
24.3.2004
Herunterladen