SoftwarekomponenteEine Komponente ist im Kontext der Softwarearchitektur ein Teil einer Software, der mit anderen Softwareteilen gemäß den Regeln eines Komponentenmodells zusammenwirken kann. DefinitionDas Wort Komponente leitet sich vom lateinischen componere (zusammensetzen) ab. In der Softwaretechnik wird der Komponentenbegriff jedoch inhaltlich unterschiedlich verwendet. Oft wird damit fälschlicherweise ein Software-Modul bezeichnet, was die Ähnlichkeit beider Begriffe verdeutlicht (siehe Kapitel Komponenten-Schnittstellen). 1996 wurde die Softwarekomponente bei der European Conference on Object-Oriented Programming (ECOOP) folgendermaßen definiert:
Allgemeiner und im Zusammenhang mit dem neuen Konzept der komponentenbasierten Entwicklung wird eine Komponente beispielsweise folgendermaßen definiert:
Eine Komponente zeichnet sich also dadurch aus, dass sie ein Element einer komponentenbasierten Anwendung darstellt und definierte Schnittstellen zur Verbindung mit anderen Komponenten besitzt. Die genaue Form einer Komponente ist abhängig vom jeweiligen Komponentenmodell. Komponenten-SchnittstellenDas Interface der Komponente ist eine verbindliche Schnittstelle (Interface) zum Rest der Software. Die Schnittstelle kann daher mit einem Vertrag zwischen der Komponente und dem Rest der Software verglichen werden. Durch die explizite Definition der Kontextabhängigkeiten wird deutlich, wie unabhängig eine Komponente tatsächlich von ihrer Umgebung ist. Die Schnittstellen und die wohldefinierten Kontextbedingungen ermöglichen die Wiederverwendung der Komponente. Je geringer die Kontextabhängigkeiten einer Komponente sind, desto weniger Anforderungen müssen für den Einsatz einer Komponente erfüllt werden. Daraus folgt: je weniger Abhängigkeiten, desto einfacher ist die Wiederverwendung. Zugleich ermöglichen die geringen Abhängigkeiten eine entsprechend unabhängige Pflege und Entwicklung der Komponente. Andererseits führt die Unabhängigkeit der Komponenten dazu, dass diese Redundanzen beinhalten. Der Entwickler einer Komponente muss daher einen Kompromiss finden. Die Schnittstelle kann mit einem Vertrag zwischen der Komponente und dem Rest der Software verglichen werden. Ein Interface definiert daher, wie eine Komponente wieder verwendet werden kann. Zugleich definiert sie, wie andere Komponenten mit dieser Komponente interagieren können. Komponenten, die eine Software erweitern, werden in manchen Fällen auch als Add-on, Modul oder Plug-in bezeichnet. Dabei ist zu beachten, dass dies umgekehrt nicht notwendigerweise der Fall sein muss. So ist es beispielsweise möglich, eine Ansammlung von verschiedenen mathematischen Funktionen als Modul zu bezeichnen. Das Modul ist möglicherweise in seinen Funktionen unabhängig. Wenn es keine allgemein verbindliche Schnittstelle besitzt, genügt das Modul allerdings nicht den Anforderungen einer Komponente. Schnittstellen können in verschiedene Typen unterschieden werden. Beispiele unterschiedlicher Sorten von Schnittstellen sind:
Eine Komponente kann verschiedene Schnittstellen desselben Typs besitzen. Dies kann beispielsweise nötig sein, um ein und dieselbe Komponente in verschiedene Systeme einzubinden. Dadurch werden die Möglichkeiten einer Wiederverwendung vergrößert. Vorteil und NutzenKomponentenentwicklung zielt auf Kostenreduktion sowie auf erhöhte Flexibilität in der Produktentwicklung.[3] Die Entwicklungskosten für Komponenten amortisieren sich durch ihre Wiederverwendung. Umgekehrt wird die Software-Entwicklung durch den Einsatz von Komponenten beschleunigt, da sie im Idealfall nur im Zusammenfügen und Parametrieren von Komponenten besteht (vergleiche auch Modularität). Komponenten können fehlerhaft sein. Dies führt zu einer weiteren Forderung: Unabhängigkeit einer Komponente beinhaltet auch, dass die Komponente ihre möglichen Fehler selbst behandelt. Dadurch wird sie zu einer abgeschlossenen Einheit.[4] Im Fehlerfall ist der Fehler so leichter zu lokalisieren. Eine Ausnahme dieser Regel kann nur gemacht werden, wenn dieses Verhalten Teil des Schnittstellenvertrages ist. Dies führt dazu, dass ein Fehler in der Komponente nicht zu einem fehlerhaften Verhalten der ganzen Komponenten führt, da diese sich wie vertraglich festgelegt verhält. Auch hierdurch werden Entwicklungskosten reduziert. WiederverwendungsformenAnhand der Wiederverwendungsform der Komponente kann diese wie folgt grob aufgeteilt werden:
Komponenten zur EntwicklungszeitKomponenten können beispielsweise in die Entwicklungsumgebung integriert werden. Dann zeigen sie ihre Eigenschaften und ihr Verhalten bereits zur Entwicklungszeit. Für den Programmierer ist dies ein großer Vorteil: Er sieht schon während des Programmierens, wie die Komponente aussehen oder arbeiten wird. Beispiel einer KomponentenpaletteErst durch das Verwenden von vorgefertigten Komponenten ist ein Rapid Application Development möglich. ImplementierungenStandardsIn der Software ist die Komponenten-Technologie in der Meinung Vieler ein Eckstein der Softwareentwicklung der nächsten Jahre.[4] Es koexistieren verschiedene Standards. Abgesehen von CORBA sind diese Standards im Allgemeinen programmiersprachen-, anwendungs- oder plattformspezifisch. Sie bilden so genannte Komponentenwelten oder -märkte. Beispiele solcher Welten sind:
EntwicklungswerkzeugeFür komponentenbasierte Entwicklungen gibt es spezielle Entwicklungsumgebungen und Programmiersprachen, wie zum Beispiel: Literatur
Weblinks
Quellen
|