3 Konfigurationsmöglichkeiten von Software

3.2.2.2 Aspektorientierte Programmierung

Schnelle Entwicklungszyklen durch sich häufig ändernde Anforderungen erfordern flexible Softwarearchitekturen. Hier setzt das 1997 veröffentlichte Paradigma der Aspektorientierte Programmierung an. Diese soll die objektorientierte Programmierung erweitern, wird aber auch als eigenständiges Paradigma92 welches auch COM, CORBA oder Entwurfsmuster nutzt, verstanden.
Hauptidee der Aspektorientierten Programmierung ist die vollständig Realisierung des Separation of Concerns, die fachliche Trennung wichtiger Sichtweisen oder Teile in der Programmierung, denn viele Funktionalitäten sind in der objektorientierten Programmierung auf diverse Klassen verteilt, so genannte Cross-Cutting-Concerns. Dazu bietet die Aspektorientierte Programmierung Methoden und Techniken an, um funktionale Komponenten und Aspekte orthogonal zur Programmsemantik zu differenzieren, und diese wieder in eine Gesamtkomposition zurückzuführen. Die Wiederverwendbarkeit der Teile steht dabei im Vordergrund.
Aspekte verkörpern hierbei die über den Klassen verstreuten Codefragmente von Funktionen, die das Softwaresystem an diversen Stellen beeinflussen. Beispiele hierfür sind Rechteüberprüfungen, Persistenz, Synchronisation von Daten, Objektinteraktionen und Parameterübergaben. Sie verkörpern einerseits die Anforderungen und kapseln sie gleichzeitig als Programmkonstrukt92.
Sie können Attribute, Kostanten, Member-Typen und Funktionen enthalten, oder auch Algorithmenteile ersetzen und später aufrufen. Die Aspekte werden in eigenen Klassen oder anderen Sprachfragmenten ausgelagert. Verbindungspunkte, sogenannte Join Points, verbinden sie mit dem Rest des Programms. Ein Weaver kontrolliert, welche Klassen von welchen Aspekten angesprochen werden sollen und „verwebt“ sie untereinander.
Der Vorteil der Aspektorientierung liegt darin, dass Aspekte auch nach der Kompilierung in Komponentenarchitekturen eingepflegt werden können, da die Aspektorientierte Programmierung hilft, die entscheidenden Programmteile, die Concerns, zu erkennen, zu erweitern und wieder zu verwenden. Dazu müssen (vgl. Abbildung 5)94

  1. Aspekte in einem objektorientierten Programm (grau hinterlegt) erkannt werden
  2. Effiziente Mechanismen für das Zusammenstellen und Ausdrücken der Aspekte gefunden werden
  3. Und in dem objektorientierten Programm verwoben werden


Die Vor- und Nachteile seien hier zusammengefasst:
Bewertung der Aspektorientierten Programmierung95
Vorteile Nachteile
  • Verbessert die Lesbarkeit und Verständlichkeit des Codes, da Concerns im Mittelpunkt stehen und Aspekte sie kapseln
  • Aspekte fördern die saubere Programmierung, da durch ständige Änderungen in der klassischen objektorientierten Programmierung die Übersichtlichkeit verloren geht
  • Vielseitig anwendbarer Ansatz
  • Programmerweiterungen leicht realisierbar
  • Verbessert die Wartbarkeit, Pflege und Konfiguration eines Programms, da sich fachliche Änderungen nicht an diversen, sondern nur noch an einer Stelle niederschlagen
  • Die Wiederverwendbarkeit von Komponenten wird verbessert
  • Späte Designentscheidungen sind möglich
  • Aufgaben im Softwareentwicklungsteam können entlang der Aspekte sinnvoller verteilt werden
  • Bei aufwändigen Projekten kann eine Überfrachtung sich wiederum negativ auf die Verständlichkeit auswirken
  • Die vorhergehende Analyse hat eine anfängliche Mehrarbeit zur Folge
  • Nicht alle Aspekte können immer adäquat umgesetzt werden
  • Da die Aspektorientierte Programmierung noch entwickelt wird, gibt es noch keine allgemeingültigen Kompositionsregeln für das Zusammenfügen der Komponenten
  • Die Semantik erschließt sich aus Einzelmodulen nicht mehr
  • Testen und Verifizieren gestalten sich schwierig
  • Hohe Kopplung zwischen dem Code und den Aspekten

  • Tabelle 15: Bewertung der Aspektorientierten Programmierung


    Einen ähnlichen Focus haben die Subjektorientierte Programmierung, Compostion Filters oder die Adaptive Programmierung96


     


    Top| Home| << Zurück | Nächste >>
    " TARGET="_blank"> >> Home Page <<