Textdokument
Bessere Software durch Querschneidende Module
Lade...
Volltext URI
Dokumententyp
Zusatzinformation
Datum
2004
Autor:innen
Zeitschriftentitel
ISSN der Zeitschrift
Bandtitel
Verlag
Gesellschaft für Informatik
Zusammenfassung
Gute Separierung der Belange in Softwaresystemen ist der Schlüssel, um mit wachsender Komplexität umzugehen. Die wichtigste Aufgabe von Programmiersprachen in Bezug auf dieses Ziel ist die Bereitstellung von geeigneten Mitteln, um das mentale Modell eines Domänenexperten so direkt wie möglich in einer Programmiersprache festhalten zu können und damit die intellektuelle Distanz zwischen dem mentalen Modell und dem Programmcode so gering wie möglich zu halten. Dies ist der Kontext, im dem die hier zusammengefasste Dissertation versucht, den aktuellen Stand der Technik voranzubringen. Ein besonderer Schwerpunkt liegt dabei auf Sprachkonzepten für die Unterstützung sogenannter “querschneidender Modelle”, die aus unterschiedlichen Sichten auf ein Softwaresystem resultieren und mit konventioneller Technologie zu Programmen mit schlechten softwaretechnologischen Eigenschaften wie Wartbarkeit und Wiederverwendbarkeit führen. Die Resultate dieser Arbeit bilden die Grundlage der Programmiersprache Caesar, die zur Zeit in mehreren industriellen Projekten evaluiert wird. Neue Sprachkonstrukte für eine bessere Separierung der Belange (separation of concerns) in der Softwareentwicklung werden benötigt! Diese These ist der Ausgangspunkt der diesem Dokument zugrundeliegenden Dissertation [Os03]. Zunächst einmal: Was ist gemeint mit “guter Separierung der Belange”? Ein Belang (concern) ist jede kohärente Angelegenheit in einer Problemdomäne. Ein Be- lang kann ein beliebig komplexes Konzept wie “Sicherheit” oder “Lohnbuchhaltung” sein, oder primitive Konzepte wie “warten auf ein Mausereignis”. Separierung der Belange ist eng verwandt mit Kompositionsund Dekompositionsmechanismen in Programmiersprachen, also die Partitionierung eines Softwaresystems in kleine Teile (Dekomposition) und das Zusammenbauen eines Softwaresystems anhand dieser kleinen Teile (Komposition). Diese Definition sagt jedoch nichts darüber, wie ein Softwaresystem dekomponiert werden soll. Zum Beispiel könnte ein Programm in zwei Teile zerlegt werden, bei dem ein Teil die geraden Zeilennummern und ein anderer Teil die ungeraden Zeilennummern enthält. Offensichtlich macht diese Dekomposition jedoch keinen Sinn. Wir benötigen Kriterien, die benutzt werden können, um geeignete Dekompositionen eines Systems zu finden. Dies ist der Punkt, an dem sich das Konzept der Separierung der Belange, welches auf Parnas [Pa72a] und Dijkstra [Di76] zurückgeht, als nützlich erweist. Dieses Konzept postuliert, dass jeder Teil eines dekomponierten Softwaresystems für einen wohldefinierten Aspekt eines Systems verantwortlich sein sollte. Jeder Teil sollte sowenig Wissen wie möglich über andere Teile eines Systems haben, so daß es möglich ist, jeden Aspekt einzeln und isoliert von allen anderen Aspekten zu betrachten. Bessere Software durch Querschneidende Module In konventionellen Programmiersprachen wird dieses Konzept durch Module unterstützt, die eine hierarchische Aufteilung der Softwaredomäne ermöglichen und damit eine direkte Abbildung hierarchischer Modelle ermöglichen. Die dieser Arbeit zugrunde liegende These ist, daß neben einer Unterstützung für hierarchische Modelle noch eine zweite Di- mension von Modellen durch Programmiersprachen unterstützt werden sollte, nämlich sogenannte querschneidende Modelle, die durch unterschiedliche Sichten desselben Systems zustandekommen. Der Rest dieses Artikels ist wie folgt strukturiert: In Abschnitt 1 wird kurz die Bedeutung guter Separierung der Belange für die Softwareentwicklung erläutert. In Abschnitt 2 wird der Begriff der querschneidenden Modelle eingeführt und dessen Bedeutung für die Softwaretechnologie erläutert. Schliesslich wird Abschnitt 3 einen kleinen Überblick darüber geben, wie querschneidende Modelle in der Programmiersprache Caesar unterstützt werden.