Architectural Compliance in Component-Based Systems

The intended software architecture of a software system manifests the earliest and most fundamental design decisions. To ensure that the final software product is consistent with those design decisions and the requirements realized that way, the software architecture has to be refined correctly. This means that the artefacts of detailed design and implementation have to comply with the intended software architecture. A basic task to ensure architectural compliance is the checking of architectural rules. These rules are constraints resulting from the application of architectural principles, like patterns, reference architectures or guidelines, and restricting the way an architecture can be refined. However, checking those rules is difficult. Manual checks are in general not possible due to the size and complexity of modern software systems. Architectural rules are often described only implicitly and informally, partially due to missing description techniques; thus, realizing powerful tool support is challenging. Moreover, compliance checking tools have to be very flexible. The great variety of architectural rules requires expressive formalisms; in realistic scenarios, furthermore, rules have to be checked in many different artefacts, like code of different programming languages. This thesis develops an approach to flexible architecture compliance checking in model-based development approaches for component-based systems. It describes a conceptual framework representing component-based systems as relational structures. Models are interpreted as first-order logic statements about those structures; architectural rules, which are considered being fundamental part of architectural models, are logical statements, too. Meta model-specific transformation definitions specify, how instances of the meta model are transformed into logical statements, and which architectural rules are generated if applicable. Compliance between models can be expressed this way as semantically-founded relations between logical formulae. The developed concepts are evaluated by a case study system following several different architectural principles. Architectural rules are developed for those principles and are checked for compliance. Furthermore, the concepts are implemented by a prototypical compliance checking tool basing upon a logic-based knowledge representation and reasoning system. Both, the conceptual framework as well as the prototypical implementation, allow very flexible architectural compliance checking. Due to the developed formalization, a broad range of architectural rules can be specified, largely meta model-independently. Integrating new meta models to check compliance between their instances and a software architecture is easy. Aside from the significant improvement of tool support compared with the state of the art, the approach fosters furthermore a new understanding of the role of software architecture; as blue-print for design and implementation, the need for explicitly modelled architectural rules is emphasized. Acknowledgement/Danksagung Auf dem Weg zur Fertigstellung dieses Büchleins haben mich viele Menschen begleitet. An dieser Stelle möchte ich mich bei all denjenigen bedanken, die somit bewusst oder unbewusst zum Gelingen dieser Arbeit beigetragen haben. Ich bedanke mich bei Prof. Dr. Andreas Rausch, meinem Doktorvater, der mich immer ermutigt hat, das Thema der Architekturkonformität anzugehen und zu verfolgen. Die Diskussionen mit ihm zum Thema dieser Dissertation im Speziellen und zu Softwaretechnik im Allgemeinen habe ich immer als fruchtbar und förderlich empfunden. Des Weiteren bedanke ich mich bei ihm für die abwechslungsund lehrreiche Arbeit, die ich als Mitglied seiner Arbeitsgruppe in den letzten Jahren ausüben durfte. Prof. Dr. Niels Pinkwart danke ich für seine Bereitschaft, recht kurzfristig als Zweitgutachter der vorliegenden Dissertation zu fungieren. Außerdem bedanke ich mich bei Dr. Clemens Szyperski als weiteren Nebengutachter. Trotz engen Zeitplans hat er es sich nicht nehmen lassen, wertvolle Anmerkungen zur Verbesserung dieser Arbeit zu geben. Mein besonderer Dank gebührt zudem meinen Kollegen des Lehrstuhls für Software Systems Engineering, insbesondere den Personen, die mit mir in Projekten zusammen gearbeitet, Vorlesungen betreut oder wissenschaftlich diskutiert und publiziert haben. Fast noch mehr als die konstruktive Zusammenarbeit wird mir die Atmosphäre am Lehrstuhl in Erinnerung bleiben. Der fast unerschütterliche und sehr spezielle Humor des Lehrstuhls hat mir insbesondere in schwierigen Phasen des Schreibens sehr geholfen! Ich hoffe, dass das “Biotop SSE”, der Zusammenhalt und die Lehrstuhlküche bzw. der Kickertisch als Horte des Absurden erhalten bleiben und noch vielen von Euch auf dem Weg zur Promotion helfen [Cha01]. Ich danke Stefan Wittek und Patrick Dohrmann, die durch ihre Hiwi-Tätigkeiten und Abschlussarbeiten Teile des Prototyps bzw. wichtige Vorarbeiten realisiert haben. Für die durch penible Anmerkungen zu Euren Arbeiten und die durch DesignIt entstandenen Unannehmlichkeiten möchte ich mich entschuldigen. Für das Review dieser Arbeit und inhaltliche Diskussionen zu Architekturthemen bedanke ich mich bei Constanze Deiters. Alle im Text noch enthaltenen Fehler und Unstimmigkeiten habe ich erst nach ihren Reviews eingefügt und konnten daher nicht von ihr entdeckt werden! Über das Korrekturlesen hinaus hat Constanze mich zudem stets moralisch unterstützt, den Rücken frei gehalten (und gestärkt) sowie meine literarischen Launen ertragen. Für den Glauben an mich, die Geduld und das Verständnis bedanke ich mich und hoffe Dir die gleiche Hilfe sein zu können. Bei Holger Klus bedanke ich mich ebenfalls für das Review von Teilen dieser Arbeit sowie für den Erfahrungsaustausch während der Promotionszeit. Wegen des fast synchronen Beginns unserer Zeit als wissenschaftliche Mitarbeiter und unserer tatsächlich synchronen Umzüge ins schöne Goslar, waren unsere Gespräche zu Dissertation und Gott und den Harz für mich besonders wertvoll. Meiner Familie, insbesondere meinen Eltern, danke ich für ihre Unterstützung in allen Bereichen des Lebens während meiner akademischen Ausbildung und bisherigen Laufbahn. Meinen Freunden gilt mein tief empfundener Dank für freizeitliche Ablenkung und Zerstreuung, insbesondere aber auch dafür, dass sie mich nach langem dissertationsbedingtem Abtauchen noch als einen der ihren erkennen! Ihr habt meinerseits in letzter Zeit bei weitem nicht die Aufmerksamkeit bekommen, die ihr verdient hättet. Sofern gewünscht, wird dies nun wieder anders! Sebastian Herold Goslar, im Juni 2011.