You are here: Foswiki>DeutschesEUDWiki Web>ComponentBasedProgramming (08 Mar 2007, MirkoHeinbuch)Edit Attach

Component-based Programming - Komponentenbasierte Programmierung

Definition

Software-Komponenten werden 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."
(Heineman, Council 2001)

Komponentenbasierte Programmierung addressiert somit zwei Themen:
  1. Erstellung von Software-Komponenten
  2. Zusammenfügen von Software-Komponenten zu komponentenbasierten Systemen

Problembereich

Ausgehend von monolithischen System-Archtikturen lässt sich folgendes beobachten: Je größer und komplexer Softwaresysteme sind, umso schwieriger ist es diese zu warten oder den sich verändernden Anforderungen anzupassen.

End-Benutzer können ihr monolithisches Software-System nicht selbst durch weitere Module/Plug-Ins/Komponenten erweitern.

Lösung

Der Entwurf, die Erstellung und die Wartung von Softwaresystemen erfordern bei steigender Komplexität softwaretechnische Maßnahmen, die eine Dekomposition des Gesamtsystems in funktional abgeschlossene System-Komponenten ermöglichen.

Dazu sind mindestens zwei Voraussetzungen zu schaffen, zum einen müssen Software-Komponenten in ihrer Struktur und in ihren Schnittstellen nach außen einer Komponenten-Spezifikation entsprechen. Zum anderen muss ein Komponenten-Framework bereitgestellt werden, welches die so spezifizierten Komponenten aufnimmt und ausführbar macht. Das Framework ist somit eine Art "Betriebssystem" für die einzelnen Komponenten. Es bietet wiederum selbst Funktionalität an, die von allen Komponenten gemeinsam genutzt werden kann.

Abhängigkeiten zwischen Software-Komponenten dürfen nicht hart im Code verdrahtet sein, vielmehr sollten sich die Komponenten nach außen in Ihrer Funktionalität selbst beschreiben und Schnittstellen anbieten, welche eine lose Kopplung mit anderen Komponenten ermöglichen.

Software-Komponenten verbergen Implementierungsdetails und repräsentieren Funktionalität. Dies bedeutet, dass Endbenutzer ohne Programmierkenntnisse ein System anpassen oder erweitern können, indem sie ganze Komponenten hinzufügen oder entfernen, ohne Kenntnis von der eigentlichen Implementierung der Komponenten und des Gesamtsystems.

Konsequenz

Jede Komponente repräsentiert einen Teil der Gesamt-Funktionalität. Das Gesamtsystem wird in einzelne, wiederverwendbare Komponenten zerlegt. Dadurch ist ein einfacheres Hinzufügen und Entfernen von Funktonalität möglich und die System-Architektur leicht skalierbar. Die Anpassung der einzelnen Komponenten erfordert allerdings eine Programmierung und kann Abhängigkeiten anderer Komponenten beeinträchtigen.

Ähnliche Pattern

-- MoritzWeber - 14 Dec 2006
Topic revision: r3 - 08 Mar 2007, MirkoHeinbuch
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback