A. Stritzinger, Komponentenbasierte Softwareentwicklung - Konzepte und Techniken für das Programmieren und Modellieren in Smalltalk, Addison-Wesley-Longman, 1997.


Dieses Buch ist ein Versuch, die Technik und Kunst der Softwareentwicklung auf eine neue Art zu vermitteln: Der erste Abschnitt befaßt sich mit den Grundlagen der objektorientierten Programmierung im allgemeinen und von Smalltalk im besonderen. Es werden elementare Programmiertechniken gezeigt, wobei die objektorientierten Konzepte von Beginn an im Mittelpunkt stehen. Zur beispielhaften Anwendung wird die Sprache Smalltalk eingesetzt, da sie die Objektorientierung am konsequentesten verwirklicht. Im zweiten Abschnitt werden bewährte, aber auch innovative Konzepte und Techniken zur Entwicklung komplexer, interaktiver Softwaresysteme vorgestellt. Dazu wird eine komponentenbasierte Modellierungstechnik beschrieben, bei der Systeme aus relativ unabhängigen, aber adaptierbaren Komponenten entworfen und zusammengebaut werden. Zur Beschreibung von Komponentenstrukturen und -interaktionen werden mehrere, einander ergänzende Darstellungsmittel vorgeschlagen. Zusätzlich wird ein Schichtenmodell als Vorlage für Systemarchitekturen eingeführt. Anstelle einer unrealistisch einheitlichen Vorgehensweise (Prozeßmodell) werden lediglich Hinweise zur Ausführung der einzelnen Modellierungstätigkeiten gegeben. Der Text soll Praktikern, Studenten und Interessenten, die bereits über fachspezifische Kenntnisse und Fertigkeiten verfügen, das Studium der objektorientierten und komponentenbasierten Softwareentwicklung ermöglichen. Diese Art der Softwareentwicklung legt eine fundamental andere Betrachtungsweise von Software und ihres Erstellungsprozesses nahe; dazu einige grundsätzliche Vorbemerkungen: Nach dem Verständnis des Autors sind Programme keine technischen Gebilde, die einmal erstellt, dem Computer überantwortet werden, in der Hoffnung dieser möge damit die Probleme lösen, ohne daß es weiterer Eingriffe in die Programme bedarf. Betrachtet man Programme als Beschreibungen oder Modelle von beliebigen Anwendungsbereichen, ist offensichtlich, daß sie analog unserer Umwelt einem ständigen änderungs- und Anpassungsvorgang unterliegen. Die Veränderungen im Gegenstandsbereich müssen von den Programmierern nachvollzogen werden. Damit kommt der Verständlichkeit, der Anpaßbarkeit und der änderungsfreundlichkeit von Software derart entscheidende Bedeutung zu, daß andere Kriterien wie etwa Effizienz und Speicherplatzbedarf in den Hintergrund treten. Kreativität spielt bei der Erstellung von Software eine zentrale Rolle. Programme können, von Ausnahmen abgesehen, nicht in starr organisierter Art und Weise in einem weitgehend linearen Prozeß entwickelt werden. Nur wenn die Programmierer bereit und in der Lage sind, sich in einem permanenten Lernprozeß auf die immer wieder neuartigen Gegebenheiten der Anwendungsbereiche einerseits und der Softwaretechnologie andererseits einzulassen, können Softwareprojekte erfolgreich sein. Gute Programmierer müssen vorausschauend entwerfen, entsprechende Pläne oder Modelle anfertigen, aber gleichzeitig auch während der Realisierung des Produktes dieses reflektierend betrachten können. Sie müssen schöpferische Fähigkeiten, technisches Wissen und handwerkliche Fertigkeiten kombinieren. Nur so ist es möglich, auftretende Probleme frühzeitig zu erkennen und entsprechend zu reagieren. Die kreativen und die handwerklichen Aspekte in der Softwareentwicklung, die auch der Improvisation und dem Erkunden neuer Lösungen Raum geben, wurde in der traditionellen Programmierausbildung oftmals negiert. Dabei ist eine willkürlich scheinende, tatsächlich aber intuitiv zweckmäßige Abfolge von Tätigkeiten häufig kennzeichnend für die Arbeitsweise von professionellen Entwicklern. Programmiersprachen und -systeme üben einen starken Einfluß auf die Arbeitsweise und Produktivität der Programmierer aus. Die objektorientierte, komponentenbasierte Programmierung bietet sowohl hinsichtlich der änderungsfreundlichkeit als auch in bezug auf einen effizienten Entwicklungsprozeß der Software derzeit die überzeugendsten Vorteile. Sie gestattet eine besonders realitätsnahe Modellierung von Anwendungsbereichen, so daß sich fachspezifische Phänomene und Konzepte in der Software widerspiegeln. Zusätzlich können auch vorgefertigte, wiederverwendbare Komponenten in großem Umfang in neue Programme eingebaut werden, wodurch sich der Implementierungsaufwand wesentlich reduzieren läßt. Programmieren und Modellieren anspruchsvoller Software kann man nur dadurch lernen, daß man eigene Erfahrungen mit einem adäquaten Entwicklungssystem sammelt. Smalltalksysteme mit Komponentenmontageumgebungen zählen zur Zeit zu den dafür am besten geeigneten Systemen. Ich danke meiner Familie, Kornelia, Christiane und Jana, sowie o. Univ. Prof. Dr. Gustav Pomberger und meinen Kollegen am Institut für Wirtschaftsinformatik der Universität Linz für die Geduld und Unterstützung, ohne die ich dieses Buch nicht hätte schreiben können. Alois Stritzinger Linz, im Januar 1997