A. Stritzinger, Reusable Software Components and Application Frameworks: Concepts, Design Principles and Implications, VWGÖ, Wien 1992.


Programming applications with graphical user interfaces can be significantly improved by reusing existing library components. Object-oriented programming offers superior opportunities for software reuse. Its ability to modify and extend library components to adapt them to special needs may change software production quite fundamentally. Dissatisfaction with conventional techniques for implementing applications with graphical user interfaces coupled with the promise of object-oriented programming provided the motivation for the development of application frameworks, which are libraries partially consisting of semifinished building blocks which implement the common behavior of potential applications. Through modification and extension of predefined components and addition of custom components, new applications can be constructed more effectively. However, many frameworks known today are very extensive and complex. Hence, they are suitable for experienced programmers only; the effort required for mastering the complexity of these frameworks is considerable. To address this drawback of frameworks, a new approach was undertaken: Smallkit-a slim application framework designed for ease of learning and use. This work starts with an introduction into several fields that are of particular importance for understanding its essentials. Next, the state of the art in software reuse techniques is presented. Then we introduce the general concepts of application frameworks and discuss several design features that can be found in comparable products. Based on this analysis, we derive important design principles as well as a resulting architecture of slimmer application frameworks as shown in the example of Smallkit. Programming with frameworks precipitates fundamental changes in the software development process; the implications for software engineering are drawn in the conclusion of this work. Kurzfassung (in german) Die Programmierung von Anwendungsprogrammen mit graphischen Benutzeroberflächen kann durch den Einsatz von wiederverwendbaren Bibliothekskomponenten signifikant verbessert werden. Insbesondere objektorientierte Programmierung mit der Möglichkeit, Bibliotheksbausteine ändern und erweitern zu können, vermag der Softwareentwicklung neue Impulse zu geben. Objektorientierte Programmierung und die unbefriedigenden Möglichkeiten konventioneller Techniken führten zur Entwicklung sogenannter Application Frameworks. Application Frameworks sind Software-Bibliotheken bestehend aus aufeinander abgestimmten Komponenten sehr hohen Abstraktionsniveaus. Durch Änderung und Erweiterung der vorgefertigten Bausteine und Hinzufügung neuer Komponenten können Anwendungsprogramme sehr effektiv entwickelt werden. Die meisten heute verfügbaren Application Frameworks sind sehr komplex. Sie können daher nur von erfahrenen Programmieren eingesetzt werden; der Aufwand für das Verstehen solch komplexer Application Frameworks ist beträchtlich. Um dieses Problem zu entschärfen wurde der Versuch unternommen, ein Application Framework (Smallkit) zu entwickeln, das leichter Erlernbarkeit und einfacher Anwendbarkeit in besonderer Weise Rechnung trägt. Diese Arbeit vermittelt zuerst eine Einführung in die wichtigsten Gebiete die zum Verständnis der Arbeit erforderlich sind. Sodann wird der Stand der Technik im Bereich Software-Bibliotheken dargelegt. Im Anschluß werden die allgemeinen Konzepte von Application Frameworks vorgestellt und verschiedene Konstruktionsmerkmale, die in vergleichbaren Arbeiten zu finden sind, diskutiert. Darauf aufbauend werden wichtige Entwurfsprinzipien und die daraus resultierende Architektur für Application Frameworks von überschaubarer Komplexität erarbeitet und am Beispiel von Smallkit dargestellt. Der Einsatz von Application Frameworks bewirkt grundsätzliche Veränderungen in der Vorgangsweise bei der Softwareentwicklung. Die resultierenden Auswirkungen auf das Software Engineering bilden den Abschluß der Arbeit.

Reusable Software Components and Application Frameworks: Concepts, Design Principles and Implications