Metamodellbasierte und hierarchieorientierte ... - RosDok
Metamodellbasierte und hierarchieorientierte ... - RosDok
Metamodellbasierte und hierarchieorientierte ... - RosDok
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
10 Gr<strong>und</strong>lagen: Modellierung in ausgewählten Gebieten<br />
werden oder lediglich als grobe Skizze dienen. Jedoch ist anzumerken, dass die UML zu den semiformalen<br />
Spezifikationssprachen zählt, die eine Verifikation der zu erstellenden Software nicht ermöglicht.<br />
Sehr formale Ansätze nutzen textuelle, an mathematischen Modellen angelehnte Spezifikationen, die durch<br />
die strengen Vorschriften <strong>und</strong> mathematischen Symbole für Laien schwer zu verstehen sind. Hier sind<br />
u.a. die algebraischen Spezifikation abstrakter Datentypen [BM04] oder das Hoare-Kalkül [Hoa69] zu<br />
nennen. Diese Ansätze haben den Anspruch bewiesene, korrekte Software zu erstellen, die jedoch äußerst<br />
schwierig zu bekommen ist. Die Gefahr ist groß, dass Fehler in den komplizierten Beweisen vorkommen.<br />
Anforderungen an die Software lassen sich außerdem anhand der komplizierten Spezifikationen nicht mit<br />
Stakeholdern diskutieren. Somit kann es passieren, dass von falschen Voraussetzungen ausgegangen wird<br />
<strong>und</strong> obwohl der Beweis korrekt geführt wurde kann eine Software entstehen, die nicht dem gewünschten<br />
Ergebnis entspricht.<br />
Diese Ansätze sind des Weiteren äußerst teuer, da sehr lange Analysephasen vor der Implementierung<br />
durchgeführt werden müssen. Außerdem kann schwer während des Entwicklungsprozesses auf wechselnde<br />
Anforderungen der Endanwender an die Software reagiert werden, da sehr viele Analysedokumente <strong>und</strong><br />
Beweise bei veränderten Anforderungen vorgenommen werden müssen. Zudem sind die Spezifikationen<br />
nicht als Dokumentation der Software geeignet, da sie i.d.R. schwerer zu lesen sind als der Programmcode<br />
selber, auf den sie sich beziehen. Eine ausführliche Diskussion der Vor- <strong>und</strong> Nachteile von formalen<br />
Methoden in der Softwareentwicklung, die u.a. einige der oben aufgeführten Probleme beinhaltet, ist<br />
in [Gog04] zu finden.<br />
Die vielen Nachteile machen die streng formalen Methoden für weite Teile der Softwareentwicklung nicht<br />
effizient nutzbar. Für einzelne wenige Bereichen, wie z.B. Luft- <strong>und</strong> Raumfahrt, bei denen die korrekte<br />
Funktionsweise äußerst wichtig ist <strong>und</strong> wenige Anforderungen sich während des Entwicklungsprozesses<br />
ändern, finden die Methoden Anwendung. Dagegen ist gerade der Bereich der Wirtschaftsinformatik, bei<br />
denen Computer Nutzer bei der Arbeit unterstützen bzw. Arbeitsabläufe automatisieren sollen, für solche<br />
streng formalen Methoden nicht geeignet. In diesem Bereich hat man es mit permanenten Änderungen bei<br />
Geschäftsabläufen <strong>und</strong> Umstrukturierungen zu tun, so dass Software bzw. deren Entwicklungsprozess sehr<br />
flexibel sein muss.<br />
In nicht formalen, agilen Entwicklungsmethoden für Software wird die Analysephase sehr kurz gehalten.<br />
Es werden höchstens sehr informelle, visuelle Modelle (z.B. UML) als Kommunikationsmittel in der<br />
Entwicklergruppe genutzt <strong>und</strong> es wird frühzeitig zur Implementierung übergegangen. Somit sind diese<br />
Methoden eher als codezentriert zu bezeichnen. Generell ist die Kommunikation in der Entwicklergruppe<br />
bei diesen Methoden sehr wichtig. Bei den Entwicklungsansätzen sind z.B. Extreme Programming [Bec00]<br />
<strong>und</strong> SCRUM [Pic07] zu nennen. Der Vorteil hier liegt darin, dass schnell Software produziert wird <strong>und</strong> der<br />
Endnutzer in die Entwicklung der Software intensiver mit eingeb<strong>und</strong>en werden kann. Es kann rascher auf<br />
sich wechselnde Anforderungen reagiert werden. Diese Entwicklungsmethoden bergen aber auch große<br />
Gefahren. Da unmittelbar in die Implementierungsphase übergegangen wird, fehlt i.d.R. ein verlässliches<br />
Design. Ein sorgfältiger Einsatz von Desgin Patterns [GHJV02], der einen guten Softwareentwurf <strong>und</strong> damit<br />
wartbare <strong>und</strong> wiederverwendbare Software verspricht, ist damit nicht möglich.<br />
Ein Kompromiss zwischen formalen <strong>und</strong> nicht formalen Ansätzen liegen in der semiformalen bzw. leichtgewichtigen<br />
formalen Softwarespezifikation. Hier werden die erstellten Modelle auf Eigenschaften geprüft,<br />
die sie erfüllen müssen. Damit wird sichergestellt, dass ein guter (objektorientierter) Entwurf vorliegt bevor<br />
in die Implementierungsphase weitergegangen wird. Diesen Ansätzen werden u.a. ermöglicht durch die<br />
UML-Werkzeuge USE [GBR07] <strong>und</strong> Alloy [Jac03]. Das Modell wird als UML-Klassendiagramm angegeben<br />
<strong>und</strong> Objektdiagramme repräsentieren Systemzustände zur Runtime. Diese können semiautomatisch<br />
von den Tools generiert werden <strong>und</strong> sind Testfälle für das Designmodell. Hierbei können zwei Arten von