Komponente (Software)

Komponente (Software)

Eine Komponente ist in der Softwareentwicklung in Bezug auf Softwarearchitektur ein Teil einer Software.

Inhaltsverzeichnis

Definition

Vom lateinischen componere abstammend, was „zusammensetzen“ bedeutet, bzw. im Gerundiv componendum „Das Zusammenzusetzende“, 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-Interface).

1996 wurde die Softwarekomponente bei der European Conference on Object-Oriented Programming (ECOOP) folgendermaßen definiert:

"A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties." [1]

Allgemeiner und im Zusammenhang mit dem neuen Konzept der komponentenbasierten Entwicklung wird eine Komponente beispielsweise folgendermaßen definiert:

"Eine Software-Komponente ist ein Software-Element, das konform zu einem Komponentenmodell ist und gemäß einem Composition-Standard ohne Änderungen mit anderen Komponenten verknüpft und ausgeführt werden kann." [2]

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-Interface

Das 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.

Interfaces können in verschiedene Typen unterschieden werden. Beispiele von Interfacetypen sind:

  • graphical user interface (GUI), auch human machine interface (HMI) genannt: Gestattet eine Interaktion der Komponente mit dem Benutzer durch eine grafische Benutzeroberfläche. Sie wird beispielsweise über die Computermaus bedient.
  • command line interface (CLI): Insbesondere dann von Interesse, wenn Komponenten ohne Zutun des Benutzers durch das System aufgerufen werden sollen, beispielsweise, um in periodischen Abständen immer wiederkehrende Aufgaben abzuarbeiten. Ein solches Interface wird durch Eingabe von Befehlen in eine Kommandozeile angesprochen.
  • data interface: Erlauben das Ein- und Auslesen von Daten der Komponente. Auf dieses Interface wird programmintern zugegriffen.
  • application programming interface (API): Durch diese Schnittstelle ist es dem Programmierer und anderen Komponenten möglich, die von der Komponente angebotenen Funktionalitäten und Dienste durch Programmierbefehle anzusprechen. Soweit nicht anders angegeben wird mit Interface im Folgenden immer eine API gemeint sein.

Eine Komponente kann verschiedene Interfaces 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.

Auswirkungen

Fehlverhalten

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 [1]. 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 Komponente führt, da diese sich wie vertraglich festgelegt verhält.

Wiederverwendung

Die Hauptintention der Komponentenentwicklung ist deren Wiederverwendung [3]. Die Entwicklungskosten amortisieren sich durch die wiederholte Verwendung bei der Softwareentwicklung. Diese wiederum wird durch den Einsatz von Komponenten beschleunigt, da sie im Idealfall nur im Zusammenfügen und Parametrieren von Komponenten besteht.

Anhand der Wiederverwendungsform der Komponente kann diese wie folgt grob aufgeteilt werden:

  • blackbox: Die Komponente wird als eine abgeschlossene Einheit in das zu entwickelnde System aufgenommen. Diese Komponente kann nicht verändert werden. Über ihren internen Aufbau und ihre Funktionsweise kann ebenfalls keine Aussage gemacht werden. Die Verwendung der Komponente geschieht ausschließlich auf Basis der definierten Schnittstellen und Spezifikationen der Komponente.
  • whitebox: Die Komponente wird als eine offene Einheit wiederverwendet. Das Wort offen beschreibt, dass die Einheit veränderbar ist. Sie kann an die neuen Anforderungen angepasst werden. Dazu ist ihr interner Aufbau einsehbar und somit analysierbar. Die Komponente wird daher als Softwarefragment betrachtet. Die Verwendung der Komponenten geschieht nicht ausschließlich auf Basis der definierten Schnittstellen, sondern auch durch das Analysieren der aktuellen Umsetzung dieser Komponente.
  • greybox: Die Zwischenformen von black- und whitebox.

Komponenten zur Entwicklungszeit

Komponenten 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 Komponentenpalette

Erst durch das Verwenden von vorgefertigten Komponenten ist ein Rapid Application Development möglich.

Implementierungen

Standards

In der Software ist die Komponenten-Technologie in der Meinung Vieler ein Eckstein der Softwareentwicklung der nächsten Jahre[1]. 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:

Entwicklungswerkzeuge

Für komponentenbasierte Entwicklungen gibt es spezielle Entwicklungsumgebungen und Programmiersprachen, wie zum Beispiel:

Literatur

  • Olaf Zwintzscher: Software-Komponenten im Überblick, W3L, 2004, ISBN 3937137602
  • Clemens Szyperski: Component Software - Beyond Object-Oriented Programming, Second Edition, 2002, ISBN 0-201-74572-0
  • M. D. McIlroy: Mass produced software components. In: Software Engineering, Report on a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7th to 11th October 1968. 1969, S. 138-155 (txt).

Weblinks

Quellen

  1. a b c Snoopy; Müller, Martin (Deutsche Übersetzung): Open Source – kurz & gut. http://www.oreilly.de/german/freebooks/os_tb/toc.html
  2. William T. Councill, George T. Heineman: Component-Based Software Engineering. Addison-Wesley, 2001, ISBN 0-201-70485-4
  3. Dumke, Reiner: Software Engineering. Friedr. Vieweg & Sohn Verlagsgesellschaft/GWV Fachverlage GmbH, 4.Auflage, Wiesbaden 2003.

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Komponente — (v. latein. componens „das Zusammensetzende“) steht für: Komponenten oder Gruppe, in der Fahrradtechnik aufeinander abgestimmtes Zubehör Komponente (Software), in der Entwicklung in Bezug auf Softwarearchitektur ein Teil einer Software Komponente …   Deutsch Wikipedia

  • Software-Modul — Ein Modul ist eine abgeschlossene Komponente einer Software, bestehend aus einer Folge von Verarbeitungsschritten und Datenstrukturen. Inhalt eines Moduls ist häufig eine wiederkehrende Berechnung oder Bearbeitung von Daten, die mehrfach… …   Deutsch Wikipedia

  • Software-Test — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • Komponente — Baustein; Detail; Teil; Element; Gegenstand; Glied; Einzelheit; Stück; Punkt; Bestandteil; Modul; Bauteil; …   Universal-Lexikon

  • Software — Softwareanwendungen; Anwendung; Programm; Computerprogramm; Applikation; Softwaresystem * * * Soft|ware [ zɔftvɛ:ɐ̯], die; , s: (im Unterschied zur Hardware) alle nicht technisch physikalischen Funktionsbestandteile eines Computers, insbesondere… …   Universal-Lexikon

  • Komponente (UML) — Eine Komponente (engl. Component) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme. Inhaltsverzeichnis 1 Beschreibung 2 Black Box Sicht einer Komponente 3 White Box Sicht… …   Deutsch Wikipedia

  • Software Design Description — Definitionen von IEEE SQAP – Software Quality Assurance Plan IEEE 730 SCMP – Software Configuration Management Plan IEEE 828 STD – Software Test Documentation IEEE 829 SRS – Software Requirements Specification IEEE 830 SVVP – Software Validation… …   Deutsch Wikipedia

  • Software-Wiederverwendung — Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Programmfunktionen für zusammengehörende Aufgaben. Bibliotheken sind im Unterschied zu Programmen keine eigenständig lauffähigen Einheiten, sondern Hilfsmodule, die… …   Deutsch Wikipedia

  • Software Architecture Analysis Method — SAAM ist ein Akronym für Software Architecture Analysis Method . Das Verfahren wurde von Rick Kazman, Gregory Abowd, Len Bass und Paul Clements entwickelt. (Diese Abkürzung wird auch im militärischen Bereich für Surface to Air Anti missile… …   Deutsch Wikipedia

  • Software Firewall — Eine (auch: ein) Personal Firewall oder Desktop Firewall (von englisch firewall Brandschutzwand, „Brandmauer“) ist eine Software, die den ein und ausgehenden Datenverkehr eines PCs auf dem Rechner selbst filtert. Sie wird zum Schutz des Computers …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”