Arno Schmidmeier

4. und 5. Oktober 2007, Hersbruck

Sessions

Arno Schmidmeier

Neue Anwendungsmöglichkeiten von Aspekten

Aspekte stellen interessante neue Konzepte für die Softwareentwicklung zur Verfügung. Zur Zeit werden diese Konzepte hauptsächliche für typische  Querschnittsfunktionalitäten (wie z.B. Tracing, Caching und Fehlerbehandlungen) verwendet. AOP eignet sich jedoch auch noch für andere Anwendungsfälle. Dieser Vortrag erläutert anhand von praktischen Beispielen, wie AOP jenseits der typischen technischen Querschnittsproblemen (Tracing, Caching, Fehlerbehandlung) genutzt werden kann und welche Vorteile und Konsequenzen sich daraus ergeben.

Stabile Software in Produktion

Probleme im Betrieb von nicht trivialer Software treten immer wieder auf. Selbst bei sorgsamer Programmierung und ausgiebigen Tests sind sie nicht zu vermeiden. So kann z.B. aus einer einfachen Network-Connection durch den Ausfall eines Switches eine Notwork-Connection werden. Oder die zur Verfügung stehende Kapazität eines Devices, einer Datenbank oder eines Servers muss zu Wartungszwecken temporär reduziert werden.
Damit derartige kleine aber typische Probleme sich nicht zu einem totalen Desaster auswirken sind stabilisierende Querschnittsfunktionalitäten im Design und Code notwendig, wie z.B. Überlastungssicherungen und Timeouts. Diese Einführung in die Thematik stellt einige dieser Querschnittsfunktionalitäten vor.

Aspekte für  Stabile Software in Produktion
Codecamp zusammen mit Oliver Böhm

Stabile Software in Produktion benötigt einige Mechanismen (wie z.B. Überlastungssicherungen und Timeouts) an vielen Stellen, um auf  außergewöhnlichen Situationen angepasst zu reagieren. Oft fehlen sie jedoch, z.B.

  • weil eingesetzte Tools und APIs sie nicht anbieten,
  • weil im Projekt keine Zeit mehr war diese Mechanismen unterzubringen oder zu implementieren,
  • weil die Entwickler einfach nicht die Bedeutung erkannten,
  • weil die Entwickler nicht die Mittel in ihrer Programmiersprache zur Verfügung hatten, diese Mechanismen einfach realisieren zu können.

Selbst wenn sie da sind, so ist die Realisierung fast immer Verbesserungswürdig. In diesem Codecamp entwickeln die Teilnehmer unter Anleitung selbst Aspekte um Software für den laufenden Betrieb stabiler zu machen. Dabei lernen sie:

  • wie stabile Software beschaffen sein muß
  • wie Aspekte hier helfen können
  • wie man Library Aspekte schreibt,
  • und wie man existierende Software ohne viel Aufwand mit Library Aspekten verbessern kann.

 

Daniel Lohmann

Aspect C++

Die Sprache AspectC++ ist eine AOP-Spracherweiterung für ISO-C++. AspectC++ ermöglicht aspektorientierte Programmierung in Anwendungsgebieten mit hohen Anforderungen an Laufzeiteffizienz und Codedichte. Damit wird es möglich, AOP auch in der Softwareentwicklung für tief eingebettete Systeme mit kleinsten RAM- und Flash-Speichergrößen zu verwenden.
Die Vorteile von AOP zeigen sich insbesondere bei der Entwicklung statisch konfigurierbarer Produktlinien für eingebettete Systeme. Dieses wird im Rahmen des Vortrags an einem realen Beispiel demonstriert: Für eine Produktlinie von Wetterstationen, basierend auf einem 8-Bit Microcontroller und verschiedensten Sensoren, wird ein AOP-basierter Softwareentwurf präsentiert und mit AspectC++ implementiert. Vergleiche mit einer OOP-basierten und einer C-basierten Lösung, verdeutlichen die Vorzüge des AOP-Ansatzes. Eine "hands on" Präsentation der Eclipse-basierten Werkzeugkette rundet den Vortrag ab und zeigt, dass AOP mit C++ auch praktisch einsetzbar ist.

Oliver Böhm

"Hello AspectJ"

Lust auf ein neues Programmier-Paradigma (AOP), aber Sie wissen nicht, wie Sie anfangen sollen? Dann hilft Ihnen dieser Workshop bei den ersten Gehversuchen mit AspectJ 5 und führt Sie in die Welt der Aspekt-Orientierung ein.

Die ersten Schritte sind die schwersten Schritte. Das galt schon für das Krabbelalter, das gilt aber auch beim Erlernen neuer Paradigmen und Programmiersprachen. Um Ihnen den Einstieg in AOP (aspektorientierter
Programmierung) und AspectJ (einer aspektorientierten Sprache, die auf Java basiert) zu erleichtern, nimmt Sie dieser Workshop an die Hand und führt Sie anhand des Hello-World-Klassikers durch die einzelnen Stationen einer AOP-Anwendung.

Ehe wir auf weitergehende Konzepte und Sprachmittel eingehen, werden wir uns erst mit dem AOP-Vokabular vertraut machen. Mussten wir bei OOP Begriffe wie "Vererbung" (Inheritence) oder "Polymorhie" erlernen, sind es jetzt "Joinpoints", "Pointcuts" oder "Advices", auf denen AOP und AspectJ aufbaut. Diese Grundkenntnisse werden wir im nächsten Schritt durch weitere (eigene) Beispiele festigen.
 

Die NullPointerExceptions-Falle

Shit happens. Genauso NullPointerExceptions. Selbst bei sorgsamer Programmierung und ausgiebigen Tests finden sie immer wieder ihren Weg in die Programmlogik, in der sie sich solange versteckt halten, bis die Applikation in Freiheit und Produktion entlassen wird, um sich dann bemerkbar zu machen. Aber selbst wenn sich beim Testen eine NullPointerException verrät, tut man sich bei der Suche nach dem Übeltäter meist schwer - wer, verdammt noch mal, hat hier denn die eine Null-Referenz übergeben?

Ursache für NullPointerExceptions sind meist ein zu sorgloser Umgang mit Null-Werten. Dagegen helfen keine schärfere Compiler-Einstellungen, keine Meetings und keine Moralpredigten - da hilft nur die AOP-Klatsche:
jede Methode, die eine Null-Referenz übergibt oder zurückgibt, wird gebranntmarkt...

Wie? Sie können mit AOP (Aspektorientierte Prgrammierung) nichts anfangen oder halten es gar für gefährliches Teufelszeug? Dann lassen Sie sich überzeugen, wie sie mit AspectJ (einer asepktorientierten Erweiterung von Java) diese und andere Zeitbomben in ihrem Code entschärfen können. Gerade für die Qualitätssicherung und dem Entlarven einiger typischer Bug-Patterns kann die Aspektorientierung eine wertvolle Hilfe sein.
 

Jonas Bonér

Using AOP to Cluster the JVM

Clustering (and distributed computing in general) is a crosscutting infrastructure service that has historically been implemented with API-based solutions. As a result, it has suffered from the same code scattering and tangling problems as other crosscutting concerns.

In this session we will show how AOP can help to modularize clustering so effectively that user code can actually be oblivious to clustering.
This is done by using AOP to maintain the key Java semantics of pass-by-reference, thread coordination and garbage collection across the cluster. We will also show how this approach to clustering can also be a key enabler to better scalability and performance.

The session aims at balancing theory and practice, and is driven by code samples written in AspectJ and Open Terracotta*.

(*) Open Terracotta provides Open Source JVM-level clustering -
http://terracotta.org

 

Dr. Maximilian Störzer

AOP Considered Harmful

Aspekte werden seit Jahren als viel versprechende neue Technik propagiert, die dazu geeignet erscheint Modularisierungsprobleme herkömmlicher Programmiersprachen zu lösen. Aspekte haben hier sicher valide Anwendungen, allerdings bringt Aspektorientierter Programmierung auch neue Risiken mit sich, die den Nutzen je nach Kontext durchaus überwiegen können. Zu nennen ist hier vor allem der Verlust der Fähigkeit, ein Softwaresystem Modul für Modul zu verstehen, oder auch die mangelnde Evolutionsfähigkeit Aspektorientierter Programme. Aspekte sind daher kein Allheilmittel; sie müssen vorsichtig und mit Bedacht eingesetzt werden.

Dr. Stefan Hanenberg

Strukturierte Einführung in die Aspektorientierung - Konzepte, Techniken und Mythen

Dieser Vortrag liefert eine strukturierte Einführung in die Konzepte der Aspektorientierung und deren Techniken. Dazu werden die einzelnen Bestandteile der Aspektorientierung, ihre Variationen und Variationsmöglichkeiten in konkreten Implementierungen, ihre Bedeutung für die Softwaretechnik, sowie deren Grenzen plastisch veranschaulicht.

 

 

[Home] [Programm] [Sprecher] [Sessions] [Anmeldung] [Ort, Unterbringung und Anreise] [Sponsoren] [Impressum]