Mit den Komponenten sind die Teile (oder meinetwegen auch die beteiligten Module) der Software gemeint, das hat mit Delphi-Komponenten nichts zu tun.
Das habe ich auch nicht vermutet, daß sich der Komponentenbegriff auf Delphi-Komponenten bezöge, denn schließlich ist die Software-Architektur nicht auf eine Programmiersprache begrenzt. Nun müßte man aus meiner Sicht erst einmal definieren, was denn
Teile oder
Module im Zusammenhang mit Software-Architektur sind, denn auch hier darf man wohl nicht davon ausgehen, daß sie mit implementierten Modulen gleichzusetzen wären. Wikipedia meint dazu:
Ein Modul ist eine abgeschlossene funktionale Einheit 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 durchgeführt werden muss. Das Modul führt eine Reihe von Verarbeitungsschritten durch, liefert bei der Rückkehr an das aufrufende Programm Daten als Ergebnis zurück.
Dann wäre jede Funktion im Programm ein Modul? Oder zusammengehörende Methoden z.B. einer Klasse wären ein Modul? Was ich damit sagen will: Es ist schwer, solche abstrakten Modelle wie die Software-Architektur zu verstehen, wenn die in der Erläuterung verwendeten Begriffe nicht eindeutig definiert sind. Wenn ich versuche, mir das alles mit Wikipedia zu erschließen, begegnet mir eine zunehmende Anzahl solcher Begriffe, die ich wiederum nachschlagen muß und die dann zu noch mehr unbekannten bzw. undefinierten Begriffen führen. Immerhin finde ich
in der Erklärung des Modulbegriffs nun wieder einen Bezug zur Software-Architektur:
Ein Aspekt der Softwarearchitektur ist die Herstellung von Unterprogrammen zur Verwendung in mehreren Computerprogrammen/-Anwendungen. Bestimmte technische oder betriebliche Funktionen (zum Beispiel eine Prüfziffernberechnung) können so beispielsweise unternehmensweit einheitlich genutzt werden.
Natürlich weiß ich nicht, inwieweit Wikipedia-Artikel von kompetenten IT-Fachleuten geschrieben wurden und ob sie dem aktuellen Stand entsprechen, aber ich gehe einmal davon aus, daß dem zumindest im wissenschaftlich-technischen Bereich so ist. Die
Beschreibung der aktuellen Bedeutung von Software-Architektur sieht demnach so aus:
Die Beschreibung einer Softwarearchitektur enthält Informationen über die Struktur („Komponentisierung“) eines Software-Systems, aber auch Informationen über die Kommunikation zwischen Komponenten, sowie deren Abbildung auf Hardware- oder Software-Ressourcen (Verteilung und Deployment). Dabei kann eine Softwarearchitektur unterschiedliche Ausprägungen haben:
- So kann in einer Funktionsarchitektur (oder auch fachliche Architektur) die Gliederung des Systems in Funktionen oder Features dargestellt werden.
- In der Komponentenarchitektur wird der Grobentwurf des Systems in einzelne Komponenten festgehalten.
- Dieser Grobentwurf lässt sich im Feinentwurf feingranularer darstellen. Hierbei handelt es sich beispielsweise um Klassenhierarchien, Modularchitekturen oder programmiersprachenspezifischen Quelltext. Die Übergänge zwischen Feinentwürfen sind teilweise fließend.
Festzuhalten ist, dass es nicht die eine Softwarearchitektur eines System gibt. Es müssen je nach Fragestellung und Interessenspunkt unterschiedliche Sichten hinzugezogen werden. Ein Beispiel hierfür ist das 4+1 Sichtenmodell (schon wieder so ein Begriff).