Hasso-Plattner-InstitutSDG am HPI
Hasso-Plattner-InstitutDSG am HPI
Login
  • de
 

Dissertation Wolfgang Schult

Architektur komponentenbasierter Systeme mit LOOM: Aspekte, Muster, Werkzeuge

Eine gute Modularisierung von Software ist die Grundvoraussetzung für eine verteilte Anwendungsentwicklung. Das wurde bereits von Parnas (1972) beschrieben. Bei einem Modul handelt es sich um eine abgeschlossene Funktionseinheit, die einen Dienst an das System liefert und bei Bedarf ausgetauscht werden kann.

Wünschenswert ist es, wenn die Belange einer Software - also Dinge, die für die Entwicklung, den Betrieb oder anderweitig von Interesse für die Software sind - jeweils separat in einzelnen Modulen implementiert werden können. Gängige Formalismen unterstützen das nur beschränkt: Oft müssen Belange über mehrere Module verstreut implementiert werden oder ein Modul ist mit der Implementation mehrer Belange durchsetzt. In der Forschung wurde bereits nachgewiesen, dass das zu einer höheren Zahl von Programmierfehlern führt und die Softwarequalität verschlechtert.
Mit der Aspektorientierten Programmierung (AOP) nach Kiczales (1997) wurde ein Weg gefunden, der dieses Problem löst: Belange, die mit objektorientierten Formalismen andere Module überschneiden, können mit sogenannten Aspekten separat implementiert werden. Das geht allerdings auf Kosten der Modularisierung - die eigentlich verbessert werden sollte, denn der Aspektprogrammierer greift bei dieser Technik tief in die Implementationsdetails anderer Module ein.

Die Arbeit präsentiert mit dem vom Autor entwickelten LOOM-Programmierparadigma einen neuen Ansatz, mit dem das Problem der Streuung und Durchsetzung unter gleichzeitiger Beibehaltung der Modulgrenzen gelöst werden konnte. Die Interaktion zwischen Aspekten und anderen Modulen erfolgt bei LOOM stets über definierte Schnittstellen, die allen Beteiligten bekannt sind.
Ein wesentliches Konzept in LOOM ist dabei die Annotationsrelation, die zwischen einem neuen Modultyp, den Aspekten, und anderen Modulen, wie Komponenten, Klassen und Methoden, hergestellt werden kann. Mit dem Konzept der Überdeckung lässt sich  der Wirkungsbereich von Aspekten explizit festlegen. Konzepte wie die Joinpoint-Variablen und die Nachrichtenmanipulation ermöglichen es dem Aspektentwickler, gegen unbekannte Schnittstellen zu programmieren.

Die neuen LOOM-Konzepte lassen sich alle auf einem bestehenden Industriestandard, der Common Language Infrastructure abbilden. Das bedeutet, dass Standardausführungs-umgebungen und Compiler weiterhin verwendet werden können. Die Umsetzung der Konzepte erfolgt durch die vom Autor entwickelten Werkzeuge Rapier-Loom.Net und Gripper-Loom.Net entweder zur Laufzeit der Anwendung oder als nachgelagerter Kompilierungsschritt.

LOOM ist ein ganzheitliches Paradigma für die Entwicklung komponentenbasierender Softwaresysteme, das - angefangen beim Entwurf über die Programmierung, dem Erstellen und Testen, bis zum Betrieb - in jeder Phase des Softwareentwicklungsprozesses einen Beitrag zur Effizienz und Qualitätssteigerung liefert. Belegt wird das in dieser Arbeit mit vielen Anwendungsbeispielen, unter anderem mit einer Studie im industriellen Umfeld für eine Anwendung mit mehr als 20.000 Nutzern.

Mit LOOM lassen sich auch bestehende Programmiersprachen um andere Programmierkonzepte wie das "Kontextorientierte Programmieren" oder "Design by Contract" erweitern.

Die große Praxisrelevanz das LOOM-Paradigmas wird durch die große Zahl der Nutzer, auch aus dem Bereich der Wirtschaft belegt.