11.10.2013 Aufrufe

Ausarbeitung

Ausarbeitung

Ausarbeitung

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!