Trotz Einsatz moderner Tools und Generatoren scheitern viele größere Projekte. Warum? Warum bekommt man die Komplexität nicht in den Griff? Wo bleiben die versprochenen wiederverwendbaren Komponenten? Fragen, auf die die Objekt-Orientierung Antworten schuldig geblieben ist. Vor allem die systemübergreifenden Anforderungen ("crosscutting concerns") sind es, denen mit konventionellen OO-Mitteln sehr schwer beizukommen ist. Und genau hier setzt die aspektorientierte Programmierung (AOP) an und liefert Konzepte, um solch übergreifende Belange in Aspekte kapseln zu können.
Ursprünglich aus Arbeiten an der Northeastern University Mitte der 90er Jahren hervorgegangen, waren es vor allem Forschungen bei XEROX PARC, die den Begriff der aspektorientierten Programmierung prägten. Mit AspectJ legte XEROC PARC zudem den Grundstein für eine aspektorientierte Sprache, die auf Java aufsetzt und den Beginn der Aspektorientierung einläutet, ähnlich wie Anfang der 90er Jahre C++ der Objektorientierung zum Durchbruch verhalf.
s. a. Vorlesungsplan