Aspektorientierte Programmierung (alt)

Beim Aufräumen meiner Webseite muss diese Seite weg. Aber vielleicht hat jemand was davon?

Aspect Oriented Programming

Neuer Nachricht, 22-Sep-2006

Leider kann ich diesem Thema nicht so viel Aufmerksamkeit widmen wie ich will, aber so ab und zu finde ich noch was richtig spannendes. So wie: http://www.AspectC.net, eine AOP Implementierung fuer ANSI C. Zitat der Autoren: AspectC.net wird sich ausschlieszlich auf AOP-Unterstuetzung fuer C konzentrieren um AOP fuer C-basierte Systeme moeglich zu machen. Wir habe lange gewartet damit jemand anders das macht, leider wurde immer nur versprochen. Dann haben wir die Sache erstmal selbst in die Hand genommen. Das gefällt mir.

Mein Alter Artikel

Seit Dijkstra in 1976 ein „Separation of Concerns“ eingefordert hat, sind die Möglichkeiten zur Modularisierung von Programme stark gewachsen. Aber im Allgemeinen zielt die Modularisierung stark auf dem funktionalen Aspekt eines Programs. Andere Aspekte, wie zB Sicherheit, Nebenläufigkeit und Persistenz, kommen an vielen Stellen im Quelltext vor. Aspect Oriented Programming (AOP) zielt auf dieses Problem, und hat seinen Namen hierher.

Xerox PARC

AOP wurde entwickelt am Xerox Palo Alto Research Center (Xerox PARC), unter Leitung von Gregor Kiczales. Die bekannteste Implementierung von AOP, AspectJ, wurde hier entwickelt.

Analyse und Vokabular

Am besten kann man die ausgereifte Dokumentation zu AspectJ lesen. Kurz zusammengefasst geht es darum, erst die (nicht-funktionale) Aspekte (aspect) aus einem Programm heraus zu destilieren. Dann sollte man heraus finden, an welche stellen diese Stellen sich verflechten mit der Programmlogik (pointcut). Und dann kann man definieren was es da zu tun gibt (advice). Ein Artkel zu Sally (PDF) fasst die Aspektorientierte Analyse gut zusammen.

Implementierungen

AspectJ, natürlich. Der Compiler ajc ist javac-kompatibel. In dem Moment, dass man javac verwendet, werden nur die core-java Elemente einer Anwendung kompiliert, setzt man ajc ein, dann werden die AspectJ Extras miteinkompiliert.
In der C++-Welt ist natürlich versucht, Aspektorientierte Programmierung mit Bordmitteln herzustellen. Und das klappt natürlich auch, wie in den folgenden Links deutlich wird:
Lutz Dominick führt in ein ECOOP-Artikel einen extra Abstraktionsschicht ein in der Code
In einer Artikelreihe in iX [1] [2] [3] arbeiten Krzysztof Czarnecky, Lutz Dominick und Ulrich Eisenecker mit namespaces
AspectC orientiert sich an AspectJ.
Am TRESE Institut der Technische Universität von Twente ist SINA entwickelt worden, als Überbau über Smalltalk.

Links

Der Homepage von Pascal Constanza, der seine Aktivitäten in diesem Bereich vorführt.
Die Uni Essen engagiert sich auch in diesem Bereich.
Die Gesellschaft für Informatik hat eine Tagung zu diesem Thema abgehalten.

Einen Kommentar schreiben

Required fields are marked *

*
*

%d Bloggern gefällt das: