1 Einleitung
Komponenten sind ein Mittel der Arbeitsorganisation. Es geht in diesem Buch also nicht um Entwurf oder Architektur, sondern „nur“ darum, wie die Arbeit in einem Team technisch gesehen so organisiert wird, dass das Team mit maximaler Geschwindigkeit und bester Qualität arbeiten kann. Erst Komponentenorientierung ermöglicht arbeitsteiliges Vorgehen. Damit ist sie Voraussetzung dafür, dass mehrere Entwickler am gleichen Softwaresystem arbeiten. Das mag sich banal anhören und Sie fragen sich möglicherweise, wieso Sie dazu Komponenten benötigen. Weiter oben habe ich von „maximaler Geschwindigkeit“ und „bester Qualität“ geschrieben. Natürlich besteht rein technisch keine zwingende Notwendigkeit, Software aus Komponenten zusammenzusetzen. Nicht selten habe ich Softwaresysteme gesehen, die aus einer Visual Studio Solution bestanden. Manchmal waren darin viele Projekte zu finden. Manchmal sehr viele… Eine wirklich komponentenorientierte Lösung habe ich selten gesehen.
Aber vergleichen Sie das mit der Automobilindustrie. Rein technisch gesehen kann ein Auto natürlich aus Einzelteilen auf kleinster Ebene zusammengesetzt werden. Aus Schrauben, Muttern, Wellen, Achsen, Zahnrädern, Blechen, Gussteilen, usw. Doch dann würde die Arbeitsteilung unendlich komplex. Erst klare Schnittstellen an den Komponentengrenzen machen es möglich, dass Motor, Fahrwerk, Sitze, Reifen und viele andere Bestandteile von unterschiedlichen Herstellern in unterschiedlichen Werken hergestellt werden. Mir ist bewusst, dass der Vergleich von Softwareindustrie und Automobilbau viele Fallstricke liefert. Doch in einem bin ich sicher: wir, in der Softwareindustrie, können den Automobilbauern noch einiges abschauen. Ohne ein Komponentenkonzept müsste die Automobilindustrie jeden Motor erst in ein Auto einbauen und damit auf die Autobahn fahren, um ihn zu überprüfen. Macht sie aber nicht. Dafür gibt es Prüfstände. Der Motor „merkt“ gar nicht, ob er in einem Auto oder in einem Prüfstand eingebaut wurde. So lange der Prüfstand die Schnittstelle des Motors korrekt bedient, ist alles in Ordnung. Diese Form der Zerlegung in Komponenten und die daraus resultierende Arbeitsteilung ist auch in der Softwareentwicklung möglich und notwendig. Und dafür steht dieses Buch. Sie werden nach dem Lesen feststellen, dass eigentlich alles ganz einfach ist. Und möglicherweise werden Sie sich sogar fragen, warum Sie nicht schon immer so gearbeitet haben.
1.1 Danksagungen
Dieses Buch wäre ohne meinen Kollegen Ralf Westphal nicht entstanden. Ich habe seit Jahren das große Vergnügen, mit ihm gemeinsam arbeiten zu können. In zahlreichen Seminaren haben wir das Konzept der Komponentenorientierung unterrichtet, ausprobiert und auch immer wieder verfeinert. Ohne Ralfs initiale Vorarbeit wäre das jedoch nicht möglich gewesen. Danke Ralf!
Ein weiterer Dank gebührt meiner Familie, die viel Geduld mit mir bewiesen hat. Sie haben mich immer wieder ermuntert, weiter zu schreiben und mir dann auch die Zeit eingeräumt.
1.2 Zum Aufbau des Buchs
Ein Team von Entwicklern sollte in optimaler Weise zusammenarbeiten. Die Art und Weise, wie das Team seine Arbeit so organisiert, dass es effizient arbeiten kann, wird als Arbeitsorganisation bezeichnet. Im nun folgenden Kapitel „Herausforderung Arbeitsorganisation“ sind die Herausforderungen beschrieben, denen sich ein Team in Bezug auf die Arbeitsorganisation stellen muss. An diesen Herausforderungen muss sich die Komponentenorientierung messen lassen und Lösungen anbieten.
Das darauf folgende Kapitel „Verwendete Notation“ beschreibt die im Buch verwendete Notation.
Um einen Eindruck davon zu vermitteln, wie ein Softwaresystem aussieht, das komponentenorientiert entwickelt ist, folgt ein konkretes Beispiel im Kapitel „Komponentenorientierung am Beispiel“. Das Beispiel ist bewusst klein gehalten, damit die Sicht frei bleibt auf das Wesentliche, nämlich die Art und Weise der Zerlegung des Gesamtsystems in Komponenten.
Im anschließenden Kapitel „Verzeichnisstruktur und Projektorganisation“ wird die Verzeichnisstruktur detailliert beschrieben. Eine solche Struktur ist im Prinzip unabhängig davon, ob ein Softwaresystem komponentenorientiert aufgebaut wird oder nicht. Diese Struktur ist noch vor den Komponenten die Basis für eine reibungslose Zusammenarbeit mehrerer Entwickler an einem Softwaresystem. Ferner wird die Organisation der Visual Studio Solutions und Projekte beschrieben.
Es folgt das Kapitel „Zerlegung in Komponenten“ über die Zerlegung eines Entwurfs in Komponenten. Hier wird der Begriff der Komponenten definiert und die konkrete Umsetzung in .NET beschrieben. Ferner wird dargelegt, nach welchen Kriterien die Zerlegung in Komponenten erfolgt.
Nach der Zerlegung müssen die Komponenten zum großen Ganzen zusammengefügt werden. Die Integration ist das Thema des anschließenden Kapitels „Integration der Komponenten“. Dabei geht es um das Zusammenfügen der einzelnen Komponenten zu einer lauffähigen Software sowie um die Automatisierung der Übersetzung der einzelnen Bestandteile (Buildprozess).
Die hier vorgestellten konkreten Verfahren zur Komponentenorientierung sind mit .NET realisiert. Komponentenorientierung ist natürlich auch mit anderen Plattformen möglich und sinnvoll. Der Inhalt des vorliegenden Buches ist mithin auf andere Plattformen übertragbar.