Ausarbeitung
Ausarbeitung
Ausarbeitung
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Seminar im Bereich Informatik der Systeme<br />
Seminar Komponentenbasierte Softwareentwicklung<br />
Wintersemester 2005/06<br />
Seminarausarbeitung<br />
Wartung und Evolution<br />
Jens Brauckmann<br />
15.02.2006<br />
Universität Duisburg-Essen · Fachbereich Ingenieurwissenschaften · Abteilung Informatik<br />
Arbeitsgruppe Software Engineering – Prof. Dr. M. Heisel<br />
betreut durch: Dipl.-Inform. Isabelle Cote
Inhaltsverzeichnis<br />
1 Einführung 1<br />
2 Herausforderungen der Wartung und Weiterentwicklung 2<br />
2.1 Verwaltung von Komponenten und Konfiguration . . . . . . . . . . . . . 2<br />
2.2 Systemüberwachung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
2.3 Troubleshooting und Reparaturen . . . . . . . . . . . . . . . . . . . . . . 3<br />
2.4 Systemanpassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
3 Faktoren für eine erfolgreiche Wartung und Weiterentwicklung 5<br />
3.1 Systemdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
3.1.1 Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
3.1.2 Facade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
3.1.3 Mediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
3.2 Kontrolle und Übersichtlichkeit . . . . . . . . . . . . . . . . . . . . . . . 6<br />
3.3 Systementwicklung für erfolgreiche Wartung und Weiterentwicklung . . 6<br />
4 Weiterentwicklung von Komponentenbasierten Systemen 8<br />
4.1 Evolution eines komponentenbasierten Systems . . . . . . . . . . . . . . 9<br />
5 Fazit 11<br />
6 Literaturverzeichnis 12<br />
i
1 Einführung<br />
Die Anforderungen an Softwaresysteme werden immer umfassender und weitreichender.<br />
Diese Anforderungen schlagen sich in einem erhöhten Entwicklungsaufwand und<br />
Komplexität der Implementierungen nieder, was neue Konzepte für die Entwicklung<br />
von Software-Systemen erforderte. Die Nutzung von Softwarekomponenten zur Entwicklung<br />
von Softwaresystemen ist ein Konzept, das unter anderem die Entwicklungszeit<br />
zu verkürzen sucht. Nach der Inbetriebnahme der Software beginnt jedoch erst der<br />
zeit- und aufwandintensivste Teil im Entwicklungskreislauf der Softwareentwicklung:<br />
die Wartung und Weiterentwicklung[Cle95]. Mit circa zwei Drittel des Gesamtbudgets<br />
für den Bau und Betrieb eines Softwaresystems ist die Wartung der Kostenintensivste<br />
Teil des Entwicklungskreislaufes /citeGal04. In dieser Arbeit soll nun die Wartung und<br />
Weiterentwicklung von komponentenbasierten Systemen betrachtet werden. Es soll im<br />
Kapitel 2 dargestellt werden, welche Anforderungen an die Wartung von komponentenbasierten<br />
Systemen gestellt werden. In Kapitel 3 soll betrachtet werden welche<br />
Maßnahmen im Design eines komponentenbasierten Systems die Wartung und Weiterentwicklung<br />
vereinfachen können. Im Kapitel 4 soll betrachtet werden nach welchen<br />
Regeln die Weiterentwicklung von Komponenten erfolgen kann, um Komponentennutzern<br />
die Einbindung und Wartung ihrer Systeme zu erleichtern.<br />
1
2 Herausforderungen der Wartung<br />
und Weiterentwicklung<br />
Die Aufgaben der Wartung und Weiterentwicklung von komponentenbasierten Systemen<br />
erstreckt sich vom Beobachten des Systems, über die Komponentenverwaltung,<br />
Konfiguration und Reparaturen bis hin zu Systemanpassungen für Weiterentwicklung<br />
oder durch Komponentenveränderungen. Im Gegensatz zu herkömmlichen Systemen<br />
findet die Wartung von komponentenbasierten Systemen nicht ausschließlich auf der<br />
Sourcecode-Ebene statt, sondern ist auf die Zugriffsmöglichkeiten der Komponenten<br />
angewiesen, was herkömmliche Vorgehensweisen erschweren kann.<br />
2.1 Verwaltung von Komponenten und Konfiguration<br />
Für die Verwaltung eines komponentenbasierten Systems und die Entscheidungsfindung<br />
für das System ist es notwendig, dass Informationen über die historischen Entwicklung<br />
des Systems, der verwendeten Komponenten und ihre verwendeten Funktionen,<br />
entsprechende Lizenzvereinbarungen und Supportverträge. Kontaktadressen<br />
und Informationen über den Supportumfang eines Komponentenherstellers gehören<br />
ebenso zu den benötigten Verwaltungsinformationen, wie Kompatibilitätsinformationen<br />
der Komponenten. Ein guter Überblick über alternative Komponenten und absehbare<br />
Entwicklungsrichtungen verwendeter Komponenten sind auch nach Abschluss der<br />
Entwicklungsphase wichtig, um eigene Weiterentwicklungen zu planen. Auf Grundlage<br />
dieser Informationen muss entschieden werden, ob Komponenten bei Problemen<br />
ersetzt werden sollen oder ob Komponenten bei der geplanten Weiterentwicklung des<br />
Systems weiter Verwendung finden sollen. Zudem muss entschieden werden ob Patches<br />
eines Komponentenherstellers eingespielt werden sollen. Es kann z.B. passieren, das ein<br />
Hersteller keinen Support für eine Komponente anbietet, wenn die aktuellen Patches<br />
nicht eingespielt worden sind.[Leh00] Werden Komponenten mit offenen Sourcecode<br />
verwendet, muss Buch über Änderungen im Sourcecode geführt werden, um bei späteren<br />
Versionen diese Änderungen zu übernehmen. Generell sollte eine Manipulation<br />
des Sourcecodes einer Komponente aber (soweit möglich) vermieden werden.<br />
2.2 Systemüberwachung<br />
Die Überwachung von Systemeigenschaften und -verhalten gehört ebenfalls in den Bereich<br />
der Systemwartung. Performanceüberwachung von Komponenten und Resourcen<br />
- Ausnutzung kann bei Komponenten die als Black-Box in ein System integriert sind<br />
2
schwierig sein, da man nur Herstellerangaben als Vergleichswerte heranziehen kann.<br />
Schwierigkeiten können z.B. eine erhöhte Resourcennutzung durch falsche Einbindung<br />
einer Komponente sein.Sicherheits-Aspekte spielen für Komponenten, die an das Internet<br />
angeschlossen sind, eine besondere Rolle. Hier ist eine Überwachung von Internetzugriffen<br />
der Komponenten, Zugriffen vom Internet auf die Komponente und der<br />
Menge der gesendeten Daten sinnvoll um sicher zu stellen, das unbefugte keinen Zugriff<br />
auf das System erhalten.<br />
2.3 Troubleshooting und Reparaturen<br />
Treten in einem laufenden, komponentenbasierten System Unregelmäßigkeiten auf, ist<br />
man auf die Analysemöglichkeiten, die von den verwendeten Komponente bereitgestellt<br />
werden, angewiesen. Die Möglichkeiten die von Komponenten bereitgestellt werden,<br />
können dabei von einem Zugriff auf den Sourcecode bis hin zu einer Beschränkung auf<br />
die Ein- und Ausgangsignale einer Black-Box-Komponente reichen. Bei der Analyse<br />
eines Systems mit einer großen Anzahl verschiedener Komponenten wird man daher<br />
flexible auf verschiedene Analysemethoden zurückgreifen müssen. Darunter fallen<br />
die Analyse von Ein- und Ausgangssignalen oder Fehlermeldungen von Black-Box-<br />
Komponenten, Sourcecodeanalyse durch schrittweise Testen des Codes, Test in speziellen<br />
Testumgebungen von Komponenten, usw. . Bei diesen Tests ist man häufig auf<br />
die Dokumentation oder die Hilfe des Komponenteherstellers (Support) angewiesen.<br />
Kann der Fehler auf eine Komponente zurückgeführt werden, muss geprüft werden<br />
ob der Hersteller eine Problembehebung vornehmen kann, oder ob die Komponente<br />
ersetzt werden sollte, oder ob eine Lösung des Problem durch Systemeingriffe behoben<br />
werden kann. Problematisch kann dabei die Kontaktnahme zum Hersteller auf Grund<br />
von Sprach- oder Zeitzonenunterscheide sein. Zudem kann die Bereitstellung eines Patches<br />
oder Updates des Herstellers je nach Herstellerpriorität einige Zeit in Anspruch<br />
nehmen.<br />
2.4 Systemanpassung<br />
Zu den Systemanpassungen komponentenbasierter Systeme gehören sowohl Sourcecodeerweiterungen<br />
für weiter Komponeten, Modelanpassungen, Updating von Komponenten,<br />
als auch das Ersetzen, Einfügen und Löschen von Komponenten. Komponentebasierte<br />
Systeme unterliegen ebenso den Weiterentwicklungsansprüchen wie andere<br />
Softwaresysteme. Wie von[Leh00] ausführlich diskutiert müssen sich auch komponentenbasierte<br />
System beständig den Wünschen und Anforderungen der Nutzer anpassen,<br />
um weiterhin für den Nutzer attraktiv zu sein. Dazu gehören sowohl das Anpassen von<br />
Funktionen, als auch Funktionserweiterungen und Interfaceverbesserungen. Für Erweiterung<br />
des Funktionsumfanges können neue Komponentenimplementierungen notwendig<br />
sein. Die erforderlichen Anpassungsmaßnahmen am Sourcecode und am Komponentenmodel<br />
entsprechen denen der Systementwicklung. Veränderungen des Komponentenmodels<br />
können sich als sehr schwierig erweisen, insbesondere wenn die Erweite-<br />
3
ung nicht den Zielsetzungen des Models entspricht. Ein Beispiel für die Schwierigkeiten<br />
einer Systemerweiterung kann hier [Akk02] gefunden werden. Eine Besonderheit der<br />
Weiterentwicklung komponentenbasierter Systeme ist die Abhängigkeit der Komponenten,<br />
die sich unabhängig von dem System entwickeln können. In Kapitel 4 wird<br />
detaillierter auf die Weiterentwicklung von Komponenten eingegangen werden. Soll<br />
eine neue Version einer verwendeten Komponente in das System eingespielt werden,<br />
kann dies eine Anpassung des Komponenteninterfaces notwendig machen, entsprechend<br />
den Vorgaben der neuen Komponentenversion. Wird eine Komponente in eine für das<br />
System ungünstige Richtung weiterentwickelt, muss entschieden werden, ob die Komponente<br />
auf dem alten Versionsstand weiter im System verbleiben soll, oder ob eine<br />
neue Komponente die alte Komponente ersetzen soll. Im Falle einer Ersetzung müssen<br />
Systemänderungen entsprechend den Vorgaben der neuen Komponente vorgenommen<br />
werden.<br />
4
3 Faktoren für eine erfolgreiche<br />
Wartung und Weiterentwicklung<br />
Bereits in der Entwicklungsphase eines Systems können Maßnahmen ergriffen werden,<br />
die eine spätere Weiterentwicklung und Wartung des Systems stark vereinfacht und<br />
kostengünstiger gestalten können. Der Systementwickler sollte als Wartungsverantwortliche<br />
entsprechende Anforderungen an das System stellen und bei der Implementierung<br />
berücksichtigen.<br />
3.1 Systemdesign<br />
Bei der Planung eines Systems kann bereits sichergestellt werden, das eine Vernetzung<br />
von Komponenten untereinander vermieden wird. Je stärker Komponenten untereinander<br />
vernetzt sind, desto umfangreiche und komplexer ist eine spätere Wartung der<br />
Komponenten. Soll eine Komponente durch eine andere Version oder eine neue Komponente<br />
ersetzt werden, kann dies Auswirkungen auf alle Komponenten haben, die mit<br />
der ersetzten Komponente verknüpft sind. 3 Maßnahmen um eine leichtere Ersetzbarkeit<br />
von Komponenten zu erreichen sollen hier kurz vorgestellt werden[HC01]:<br />
3.1.1 Wrapper<br />
Im Regelfall wir auf eine Komponente über ihr Interface zugegriffen und die erforderlichen<br />
Aktionen ausgeführt. Wird eine Komponente durch eine andere Version oder eine<br />
andere Komponente ersetzt, kann sich auch die Zugriffsart auf das Interface ändern.<br />
Dies hat zur Folge, das alle Komponenten- und Systemzugriffe auf dieses Interface<br />
geändert werden müssen. Um dies zu vermeiden kann ein Wrapper als Adapter für<br />
die Komponente erstellt werden. Ein Wrapper verfügt über ein Interface, das alle<br />
Komponente- und Systemzugriffe für die Komponente entgegen nimmt, und an das Interface<br />
der Komponente weiter leitet. Ebenso werden alle ausgehenden Informationen<br />
des Interfaces über den Wrapper weitergeleitet. Wird die Komponente nun durch eine<br />
andere Komponente ersetzt, ist lediglich eine Anpassung des Wrappers nötig. Andere<br />
Komponenten sind von der Veränderung des Komponenteninterfaces nicht betroffen.<br />
Eine Ausnahme bilden schwerwiegende Veränderungen, durch die neue Parameter für<br />
den Aufruf der Komponente benötigt werden. Diese Parameter müssen dem Wrapper<br />
beim Komponentenaufruf bekannt gemacht werden. Solche schwerwiegenden Veränderungen<br />
der Komponeten benötigen eine erheblich größere Wartungszeit für Anpassungen.<br />
5
3.1.2 Facade<br />
Komponenten die stark miteinander verknüpft sind erhöhen die Komplexität eines Systems<br />
und damit die Wartungs- und Weiterentwicklungszeiten des Systems. Eine Vereinfachung<br />
des Systems durch eine Reduktion von Vernetzungen oder zusammenfassen<br />
von Komponenten vereinfacht die Wartung und erleichtert die Weiterentwicklung des<br />
Systems. Werden mehrere Komponenten, die eine enge Vernetzung aufweisen, durch<br />
ein Interface abgedeckt, bezeichnet man dies als Facade. Zugriffe auf diese Komponenten<br />
erfolgen über die Facade, so das die Komplexität hinter der Facade dem Rest des<br />
Systems verborgen bleibt. Bei Wartungs- oder Erweiterungsarbeiten an diesen Komponenten<br />
wirken sich die Änderungen somit in ihrer vollen Komplexität nicht auf das<br />
gesamte System aus, sondern nur die Änderungen die an der Facade notwendig waren<br />
erfordern Anpassungen im System.<br />
3.1.3 Mediator<br />
Ein weiterer Faktor, der die Komplexität eines Systems erhöht ist ein aufrufendes<br />
Verhalten der Komponenten untereinander. Ist die Systemstruktur so aufgebaut, das<br />
Komponenten andere Komponenten aufrufen, muss bei einer Änderung einer Komponente<br />
im gesamten System geprüft werden, welche Komponenten Zugriff auf diese<br />
haben. Erfolgen alle Aufrufe durch einen zentralen Mediator, muss lediglich hier geprüft<br />
werden, wann und wie dieser Mediator die Komponente aufruft.<br />
3.2 Kontrolle und Übersichtlichkeit<br />
Eine weitere erleichternde Maßnahme für die Wartung und Überwachung des Systems<br />
ist die Implementierung eines Management-Interfaces das die Funktionen der Komponenteninterfaces<br />
für eine Überwachung der Komponente bündelt, und dem Systemadministrator<br />
zur Verfügung stellt. So erhält ein Systemadministrator eine Übersicht<br />
über aktiverte Komponenten und ihre Ein- und Ausgabeereignisse. Eine solche<br />
Funktion erleichtert die Überwachung und ermöglicht eine schnellere und Präzisere<br />
Eingrenzung von Problemen während der Laufzeit. Es gibt verschiedene Bemühungen<br />
einer automatischen Überwachung von komponentenbasierten Systemen, wie z.B. von<br />
[Zul04] die jedoch noch nur bestimmte Probleme erkennen.<br />
3.3 Systementwicklung für erfolgreiche Wartung und<br />
Weiterentwicklung<br />
Weiter wichtige Faktoren für die Minimierung des Wartungs- und Weiterentwicklungsaufwands<br />
ist die Wahl der Komponenten. Ob und wie sich der Anbieter einer Komponente<br />
für deren Weiterentwicklung oder Problembehebung entscheidet, kann nicht mit<br />
Sicherheit vorhergesagt werden. Es gibt jedoch Kriterien die eine einfache Wartung<br />
und Weiterentwicklung erleichtern.<br />
Die Offenheit und Zugriffsmöglichkeiten einer Komponente sind ebenso ein Faktor für<br />
6
die einfache Wartung, wie die Möglichkeiten die eine Komponente zur Anpassung an<br />
das System z.B. durch Konfigurationsdatein oder Scriptinterfaces vorgibt. Ein weiterer<br />
wichtiger Faktor ist die Wahl eines Komponentenmodell, das die Wartung durch<br />
Übersichtfunktionen und einfache Integration von Komponenten erleichtert. Zuletzt<br />
sollte bei der Wahl der Komponenten darauf geachtet werden, das der Support des<br />
Komponentenherstellers für die Komponente ausreichend ist, und die Komponenten<br />
gut Dokumentiert sind. Ein etablierter Komponentenhersteller senkt zudem das Risiko,<br />
dass Komponenten zu einem späteren Zeitpunkt nicht länger weiterentwickelt oder<br />
gewartet werden.<br />
Eine häufig geforderte Möglichkeit, die Komponenteauswahl für Entwicklung und<br />
Wartung von Komponentenbasierten Systems zu erleichtern, ist die Zertifizierung von<br />
Komponenten. Zertifikate könnten für Integrierbarkeit, Zuverlässigkeit, Sicherheit, usw.<br />
vergeben werden, was sich ebenfalls Positiv auf die Wartung von Komponenten auswirken<br />
könnte.<br />
7
4 Weiterentwicklung von<br />
Komponentenbasierten Systemen<br />
Wie bereits im Kapitel 2 erwähnt, spielt die Weiterentwicklung von Komponente eine<br />
bedeutende Rolle in komponentenbasierten Systemen. Um den Systementwicklern<br />
den Umgang mit den Komponente zu erleichtern können die Komponentenhersteller<br />
Maßnahmen ergreifen um die Integration neuer Versionen zu erleichtern und das<br />
System damit weiter zu entwickeln. [Lob05] haben einige allgemeingültige Regeln für<br />
die Komponenten-Weiterentwicklung erarbeitet, die ein für den Komponentennutzer<br />
übersichtliche Versionierung von Komponenten ermöglich. In der Studie gehen sie von<br />
einem Komponentemodel aus, welches eine abstrakte Beschreibung und eine konkrete<br />
Implementierung der Komponente hinter einem Interface verwendet. Die Art der<br />
Komponentenveränderung wird in Modifizierung, Erweiterung und Reduktion der Eigenschaften<br />
einer Komponente unterteilt. Die Einführungsauswirkungen einer solchen<br />
Änderung können niedrig, mittel oder schwer sein, wobei eine leichte Auswirkung die<br />
Implementierung der neuen Version ohne Anpassungen im System bedeuten, eine mittlere<br />
Auswirkung Adaptionsänderungen im System nötig macht, und eine schwere Auswirkung<br />
bedeutendere Anpassungen im System erfordert. Lobo u.a. haben 5 Evolutionsregeln<br />
für die Anwendung mit den abstrakten Komponenten und 2 weitere Regeln<br />
für die Anwendung mit konkreten Komponenten aufgestellt, mit deren Hilfe eine Einordnung<br />
vom Grad der Veränderung der Komponente ermittelt werden können. So<br />
sagt z.B. Regel 3: Eine Modifikation welche die Eigenschaften eines Interfaces von T1<br />
nach T2 verändert, wird interpretiert als:<br />
1) eine Erweiterung, wenn T1 ein Subtyp von T2 ist<br />
2) eine Reduktion, wenn T2 Subtyp von T1 ist oder<br />
3) eine Erweiterung und Reduktion, wenn es keine Subtyp-Relation zwischen T1 und<br />
T2 gibt.<br />
So kann mit Hilfe dieser Regel und einer Tabelle, an der die Eigenschaften und Relationen<br />
mit der Art der Veränderung abgetragen sind, der Veränderungsgrad der<br />
Komponente abgelesen werden.<br />
So kann man z.B. in der Tabelle in Abbildung 4.1 sehen, dass eine Erweiterung der<br />
unterstützen Interfaces nur einen geringen Änderungsgrad hat, und die Komponente<br />
damit ohne Probleme in ein System integriert werden kann.<br />
Die Regeln 8 und 9 beschreiben dann, wie die Versionsnummerierung in der Form<br />
x.x.x angegeben werden soll, um die neue Versionsnummer zu ermitteln. Der Grad<br />
einer Veränderung spiegelt sich dann in einer Versionsnummer wieder, wobei die erste<br />
Ziffer eine schwerwiegende Veränderung mit einem großen Implementierungsaufwand<br />
für das System angibt, die zweite Ziffer eine mittlere Veränderung die Adaptionen im<br />
8
Abbildung 4.1: Tabelle für abstrakte Komponenten nach [?]<br />
Abbildung 4.2: Tabelle für konkrete Komponenten nach [?]<br />
System notwenig macht, und die dritte Ziffer leichte Veränderungen anzeigt, die ohne<br />
Probleme in das System übernommen werden kann. Wird eine Ziffer der Versionsnummer<br />
erhöht, werden die rechts stehenden Ziffern auf Null gesetzt, unabhängig davon<br />
ob diese Ziffern mit der neuen Version auch angehoben werden sollten. Ausgehen von<br />
einer Ursprungsversion 1.0.0 kann der Komponentennutzer dann bereits anhand einer<br />
Versionsnummer eine grobe Aufwandsschätzung für die Integration der Komponente<br />
in das System anstellen.<br />
4.1 Evolution eines komponentenbasierten Systems<br />
Lobo u.a. geben zudem noch einige Schritte für die Evolution eines komponentenbasierten<br />
Systems durch die Weiterentwicklung von Komponenten an. Als Voraussetzung<br />
soll angenommen werden, das bereits in System implementiert ist, und das eine Änderungsanforderung<br />
vorliegt. Es werden dann 6 Schritte durchgeführt:<br />
1. Analyse der Veränderungsanforderung<br />
Es wir zunächst ermittelt, welche Komponenten für eine Erweiterung des Systems geändert<br />
werden müssen. Im Anschluss wird geprüft welche Interfaces geändert werden<br />
müssen, und ob Komponenten die auf diese Interfaces zugreifen auch angepasst werden<br />
müssen.<br />
2. Veränderung Planen<br />
Es wird geplant, welche Veränderungen an welcher Komponente durchgeführt werden<br />
müssen und die Versionsnummer wird durch das in Kapitel 4 kurz vorgestellte Verfahren<br />
ermittelt. Bei der Planung sollte immer darauf geachtet werden, das die neue Komponentenversion<br />
einfach im System zu implementieren ist, der Wiederverwendungswert<br />
für andere Systems aber möglichst hoch bleibt. Auch die Systemveränderungen sollten<br />
hier bereits geplant werden.<br />
3. Veränderungen Implementieren und Komponententests<br />
9
Ist die Planung der Veränderungen abgeschlossen, kann begonnen werden die Implementierung<br />
des Komponentenänderungen vorzunehmen. Die Komponenten müssen im<br />
Anschluss überprüft werden, ob die Änderungen wie geplant funktionieren und ob die<br />
Funktionen der Vorgängerversion weiterhin korrekt arbeiten.<br />
4. Integration im System und Systemtests<br />
Erst wenn die Komponenten getestet worden sind, wird begonnen sie in das System zu<br />
integrieren. Die dafür erforderlichen Änderungen am System werden ebenfalls in diesem<br />
Schritt durchgeführt. Im Anschluss werden die Veränderungen entsprechen den<br />
Anforderungen getestet, aber auch die Funktionen der Vorgängerversion müssen noch<br />
korrekt arbeiten.<br />
5. System einführen und Akzeptanz testen<br />
Im nächsten Schritt wird nun das System veröffentlicht und geprüft, ob es von den<br />
Nutzern akzeptiert wird, oder ob Praxisprobleme auftreten.<br />
6. Neuen Komponenten veröffentlichen<br />
Im letzten Schritt werden nun erst die neuen Versionen der Komponenten veröffentlicht,<br />
damit diese Versionen in andere Systeme integriert werden können. Die Komponenten<br />
sollten mit einer ausführlichen Beschreibung zu den Änderungen und dem<br />
wahrscheinlichen Aufwand für eine Implementierung versehen werden. Eine Anleitung<br />
oder Hilfestellung zur Integrierung der Komponenten trägt ebenfalls zu einer schnelleren<br />
Integrierung in andere Systeme bei.<br />
Lobo u.a gehen hier scheinbar davon aus, das Systemweiterentwicklung und Komponentenweiterentwicklung<br />
stets in die selbe Richtung gehen. Lobo u.a. weisen zwar<br />
darauf hin, das die Integration von "Components of the shelf"(COTS) noch keine<br />
Berücksichtigung gefunden hat, jedoch wird nicht in Erwägung gezogen, das die Komponentenentwicklung<br />
und damit auch die Weiterentwicklung nicht immer auf ein bestimmtes<br />
System hin geschieht. Ebenso ist es für denen Systementwickler nicht immer<br />
möglich, Einfluss auf die Entwicklung von Komponenten zu nehmen. Bei der Weiterentwicklung<br />
von Systemen ist also nicht nur zu prüfen, ob Komponenten weiterentwickelt<br />
werden müssen, sondern auch ob Komponenten ersetzt werden oder neue<br />
Komponenten integriert werden können. Dazu kann das Vorhanden sein von neuen<br />
Komponenteversionen durchaus als Anreiz zu einer einfach Systemweiterentwicklung<br />
angesehen werden (z.B. wenn die Komponente nur eine Updateversion ist und ohne<br />
Systemänderungen in das System übernommen werden kann.<br />
10
5 Fazit<br />
Die Wartung und Weiterentwicklung von komponentenbasierten Systemen werden<br />
durch die Verwaltung vieler verschiedener Komponenten schwieriger und umfangreicher.<br />
Das Eingrenzen von Problemquellen wird durch die Verwendung verschiedener<br />
Analysemöglichkeiten unterschiedlicher Komponenten aufwendiger und man ist teilweise<br />
auf den Support durch den Hersteller angewiesen. Der Integrationsaufwand neuer<br />
Komponenten oder neuer Komponenteversionen kann sehr umfangreich sein und<br />
ist häufig schwer abzuschätzen. Weiterentwicklungen des Systems sind abhängig von<br />
Komponentenmodel und den zur Verfügung stehenden Komponenten oder der Weiterentwicklung<br />
verwendeter Komponenten. Eine Verringerung des Wartungs- und Weiterentwicklungsaufwandes<br />
kann aber durch Designmaßnahmen bei der Entwicklung des<br />
Systems erreicht werden. Zertifizierungen und Standarts von Komponenten, könnten<br />
die Auswahl von Komponenten im Bezug auf Wartung und Weiterentwicklung vereinfachen.<br />
Ein Verfahren zur Weiterentwicklung von Systems ist vorgestellt worden, es<br />
bestehen jedoch noch einige Problem in dem System, so das es noch nicht als allgemeingültig<br />
angesehen werden kann.<br />
11
6 Literaturverzeichnis<br />
[Akk02] Attila J. / Nurminen Jukka K. Akkanen, Jyrik / Kiss. Evolution of a Software<br />
Component - Experience with a Network Editor Component. IEEE Computer<br />
Society, 2002. Proceedings of the Sixth European Conference on Software<br />
Maintenance and Reengineering.<br />
[Cle95] Paul C. Clements. From Subroutines to Subsystems: Component-Based Software<br />
Development. American Programmer, 1995. November / Vol. 8, No.<br />
11.<br />
[HC01] George Heineman and William Councill. Component-Based Software Engineering<br />
- Putting the Pieces Together. Addison-Wesley, 2001.<br />
[Leh00] J.F. Lehmann, M.M. / Ramil. Software evolution in the age of componentbased<br />
software engineering. IEE Proceedings Software, 2000. December / Vol.<br />
147, No.6, Site 249-255.<br />
[Lob05] Ana Elisa C. / ua. Lobo. A Systematic Approach for the Evolution of Reusable<br />
Software Components. ACE 2005 homepage, 2005. Last visited: 10.02.2006.<br />
[Voa98] Jeffrey Voas. Maintaining Component-Based Systems. IEEE Software, 1998.<br />
July/August, Site 22-27.<br />
[Zul04] Rudolph Zulkernine, Mohammad / Seviora. Towards automatic monitoring<br />
of component-based software systems. The Journal of Systems and Software,<br />
2004. Vol.74, Nr.1, Site 15-24.<br />
12