Suchen

Definition „AOP“ Was ist aspektorientierte Programmierung?

Autor / Redakteur: chrissikraus / Stephan Augsten

Aspektorientierte Programmierung ist ein Programmierparadigma, das in der objektorientierten Programmierung zum Einsatz kommt. Es erlaubt, einzelne Aspekte komponentenübergreifend und voneinander isoliert zu behandeln.

Firmen zum Thema

Aspektorientierte Programmierung erlaubt in der objektorientierten Programmierung eine feinere Modularisierung des Codes.
Aspektorientierte Programmierung erlaubt in der objektorientierten Programmierung eine feinere Modularisierung des Codes.
(Bild: aosd.net)

Aspektorientierte Programmierung (AOP) ermöglicht in der objektorientierten Programmierung eine noch feinere Modularisierung des Codes. Das Programmierparadigma zieht hierfür komponentenübergreifende, generische Aspekte (Cross-Cutting Concerns) mit in Betracht.

Aspekte lassen sich auf diese Weise präzise vom eigentlichen Funktionsumfang der Software trennen. Der Code wird leichter zu warten und zu lesen. Aspektorientierte Programmierung ist mit einer Reihe unterschiedlicher Programmiersprachen möglich, z. B. AspectJ.

Funktionalität und logische Aspekte

Die Bestandteile nahezu jeder Software können grob in zwei Kategorien unterteilt werden:

  • Komponenten, welche die funktionalen Anforderungen des Programms umsetzen, und
  • logische Aspekte, welche technische Anforderungen wie Validierung oder Logging oder seltener auch fachliche Anforderungen (z. B. Rollensystem für Benutzer) erfüllen.

Komponenten lassen sich in der Regel relativ leicht modular gestalten und z. B. in eine Funktion kapseln. Aspekte hingegen sind mit dem herkömmlichen, objektorientierten Ansatz schwer zu isolieren. Sie kommen jedoch in praktisch jedem komplexen System vor und müssen daher mit in Betracht gezogen werden.

Join Points

In der aspektorientierten Programmierung ist häufig die Rede von Join Points - denjenigen Stellen, an denen Komponenten mit Aspekten in Berührung kommen. AOP sieht vor, dass für diese Schnittstellen oder Verwebungspunkte klar definierte Verhaltensregeln vorliegen. So ist klar, was wann zu geschehen hat, damit die gewünschte Funktionalität wie erwartet eintritt.

AOP und Cross-Cutting Concerns

Cross-Cutting Concerns (CCC) beschreiben Zusammenhänge zwischen den einzelnen Komponenten und Aspekten in einer Software, die sich durch alle Schichten der Software ziehen. Diese komponentenübergreifenden Zusammenhänge sind logisch unabhängig, können also im klassischen objektorientierten Ansatz an keiner Stelle eindeutig zugeordnet werden.

Aspektorientierte Programmierung deckt solche Konzepte ab und kann sie an zentraler Stelle wiedergeben. AOP kann also verwendet werden, um solche verteilt vorkommenden Aspekte ebenfalls modular zu gestalten. Es handelt sich immer um wiederkehrende Aspekte, die nicht an einer einzigen Stelle im Code bzw. in einer Schicht verankert sind, sondern über die gesamte Software hinweg immer wieder auftreten. Beispiele für Cross-Cutting Concerns sind:

  • Authentifizierung von Nutzern
  • Validierung von Eingaben
  • Prüfung und Behandlung von Fehlern
  • Protokollierung bestimmter Ereignisse
  • Erfassung von Daten
  • Überwachung von Transaktionen

(ID:46132585)