20.01.2015 Aufrufe

Modellbasierte Entwicklung einer COBOL-Anwendung

Modellbasierte Entwicklung einer COBOL-Anwendung

Modellbasierte Entwicklung einer COBOL-Anwendung

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.

Technische Universität München<br />

Fakultät für Informatik<br />

Diplomarbeit<br />

<strong>Modellbasierte</strong> <strong>Entwicklung</strong> <strong>einer</strong><br />

<strong>COBOL</strong>-<strong>Anwendung</strong><br />

Sebastian Winter<br />

moCa


Technische Universität München<br />

Fakultät für Informatik<br />

Diplomarbeit<br />

<strong>Modellbasierte</strong> <strong>Entwicklung</strong><br />

<strong>einer</strong> <strong>COBOL</strong>-<strong>Anwendung</strong><br />

Sebastian Winter<br />

Aufgabensteller:<br />

Betreuer:<br />

Externe Betreuer:<br />

Prof. Dr. Manfred Broy<br />

Dr. Andreas Rausch<br />

TU München<br />

Oliver Engelhardt<br />

IZB SOFT<br />

Dr. Klaus Bergner<br />

4Soft GmbH<br />

Abgabedatum: 15. November 2003


Erklärung<br />

Ich versichere, dass ich diese Diplomarbeit<br />

selbständig verfasst und nur die angegebenen<br />

Quellen und Hilfsmittel verwendet habe.<br />

(Sebastian Winter)<br />

München, den 15. November 2003


Danksagung<br />

An dieser Stelle darf ich mich bei meinen beiden Betreuern, Andreas Rausch und<br />

Oliver Engelhardt, bedanken. Ihr Blick für das Wesentliche sowie die vielen hilfreichen<br />

Gespräche unterstützten mich sehr bei der Erstellung dieser Arbeit.<br />

Auch möchte ich mich bei dem PROFiL-Team bedanken, das trotz eines hohen Termindrucks<br />

sich immer die Zeit genommen hat, mir neue Sachverhalte zu erklären.<br />

Außerdem hat das Team die Einarbeitungszeit in das <strong>Entwicklung</strong>sumfeld der<br />

IZB SOFT sehr freundlich gestaltet.<br />

Nicht zuletzt geht mein Dank an die beiden Firmen, 4Soft und IZB SOFT, die es mir<br />

ermöglicht haben, meine Diplomarbeit nicht im stillen Kämmerlein, sondern eingebunden<br />

in ein laufendes Projekt zu schreiben. Die Mittel, die mir beide Firmen zur<br />

Verfügung stellten, sowie die Unterstützung waren weit mehr als ein Student erwarten<br />

darf. Es war für mich eine tolle Erfahrung, im Umfeld von zwei Firmen meine Diplomarbeit<br />

zu schreiben.<br />

S. W.


Inhalt<br />

1 Einleitung und Motivation................................................................................ 1<br />

1.1 Ausgangssituation.......................................................................................2<br />

1.2 Problemstellung ..........................................................................................3<br />

1.3 Zielsetzung..................................................................................................4<br />

1.4 Aufbau der Arbeit .......................................................................................4<br />

2 Das Umfeld in der IZB SOFT............................................................................ 7<br />

2.1 Die IZB SOFT.............................................................................................7<br />

2.2 Der Softwareentwicklungsprozess..............................................................8<br />

2.3 Die Architektur der <strong>Anwendung</strong>en...........................................................10<br />

2.4 <strong>COBOL</strong>: Begriffe & Konzepte .................................................................15<br />

3 <strong>Modellbasierte</strong> Softwareentwicklung............................................................ 23<br />

3.1 Grundlagen der modellbasierten <strong>Entwicklung</strong>..........................................23<br />

3.2 Das bisherige Vorgehen der IZB SOFT....................................................27<br />

3.3 Die Modelle der neuen Methodik im Überblick.......................................33<br />

4 Das Fallbeispiel »Kundenmappe«................................................................. 35<br />

4.1 Systemvision.............................................................................................35<br />

4.2 <strong>Anwendung</strong>sfallmodell.............................................................................37<br />

4.3 Fachliches Modell.....................................................................................44<br />

4.4 Designmodell ............................................................................................53<br />

4.5 Implementierungsmodell ..........................................................................64<br />

4.6 Zusammenfassung.....................................................................................71<br />

5 UML-Profil für moCa ...................................................................................... 73<br />

5.1 <strong>Anwendung</strong>sfallmodell.............................................................................74<br />

5.2 Fachliches Modell.....................................................................................76<br />

5.3 Designmodell ............................................................................................81<br />

5.4 Implementierungsmodell ..........................................................................88<br />

6 Zusammenfassung und Ausblick ................................................................. 91<br />

Literatur .................................................................................................................. 95


1 Einleitung und Motivation<br />

Als IT-Dienstleister entwickelt die IZB SOFT 1 <strong>Anwendung</strong>en für Bank- und Kreditinstitute.<br />

Bei den Hauptkunden, den bayerischen Sparkassen, werden, wie für ein Informationssystem<br />

der Finanzdienstleistung typisch, Terminals und Großrechner eingesetzt.<br />

In den Filialen der Sparkassen stehen die mit dem Großrechner verbundenen<br />

Terminals und wickeln die Geschäftsprozesse unter Verwendung der vom Großrechner<br />

angebotenen Dienste ab.<br />

Realisiert werden diese Dienste auf dem Großrechner mit <strong>COBOL</strong>-Programmen. Solche<br />

<strong>Anwendung</strong>en, die in <strong>COBOL</strong> geschrieben sind, werden als »Legacy«-<br />

<strong>Anwendung</strong>en bezeichnet – also als Altlast, da sie in <strong>einer</strong> Sprache verfasst sind, die<br />

schon seit 1959 existiert und die keine Unterstützung für moderne Konzepte bietet.<br />

Aus verschiedenen Gründen ist die vollständige Ablösung der <strong>COBOL</strong>-Systeme für<br />

die Banken nicht möglich:<br />

Erstens, es existiert eine komplette Infrastruktur, die auf diese Technologie zugeschnitten<br />

ist, sowie funktionierende <strong>Anwendung</strong>en, die im Kern auf mehrere Millionen<br />

Zeilen <strong>COBOL</strong>-Quelltext basieren.<br />

Zweitens, wurde jahrzehntelang Know-how auf diesem Gebiet gesammelt. Das hat<br />

zur Folge, dass die Erfahrung und das Wissen des Unternehmens in den Köpfen der<br />

Mitarbeiter stecken, die auf <strong>COBOL</strong> spezialisiert sind.<br />

Und nicht zuletzt, der wirtschaftliche Aspekt: Die Kosten, welche bei der vollständigen<br />

Migration der <strong>COBOL</strong>-Systeme zu <strong>einer</strong> modernen Technologie anfallen würden,<br />

könnten, gerade in der derzeit herrschenden wirtschaftlichen Situation, nicht aufgebracht<br />

werden.<br />

Anfänglich wurden diese <strong>Anwendung</strong>en monolithisch implementiert. Für die Struktur<br />

wurde die Variante »Ein großer Klotz« gewählt. Ein solches, schlecht strukturiertes<br />

Innenleben war selbst für ein paar Auserwählte schwer zu verstehen. So etwas ist,<br />

wenn überhaupt, nur sinnvoll bei <strong>einer</strong> Software, die nicht erweitert werden muss oder<br />

deren Komplexität gering ist. Heutzutage sind die Softwaresysteme sehr komplex und<br />

Flexibilität ist eine Schlüsselanforderung.<br />

Diese Schlüsselanforderung gilt auch für die IZB SOFT: Deren <strong>Anwendung</strong>en werden<br />

laufend weiterentwickelt und neue Anforderungen der Sparkassen integriert. Um wei-<br />

1 Informatik-Zentrum Bayern – Software-Gesellschaft der bayerischen Sparkassen – GmbH & Co KG<br />

1


2 Einleitung und Motivation<br />

terhin erfolgreich zu sein, muss das Unternehmen seine Software flexibel und effizient<br />

entwickeln. Deswegen wird eine <strong>Anwendung</strong>sarchitektur gewählt, die das System<br />

klar nach Zuständigkeiten zerlegt und die einzelnen Bauteile geschickt hierarchisch,<br />

z. B. in Schichten, anordnet.<br />

1.1 Ausgangssituation<br />

Einerseits ist es nur mit Komponentenbildung überhaupt möglich, flexible Software<br />

zu entwickeln; andererseits darf nicht außer Acht gelassen werden, dass ein komplexes<br />

System, welches in Komponenten zerlegt wird, ein komplexes System bleibt.<br />

Setzt man Modelle ein, um unterschiedliche Abstraktionsebenen zu modellieren, entsteht<br />

eine beträchtliche Menge an Information: Komponenten, Schnittstellen, Datenstrukturen<br />

– alles muss spezifiziert werden. Oft werden Teile des Systems aus verschiedenen<br />

Perspektiven mehrmals beschrieben; diese Zusammenhänge gilt es, konsistent<br />

zu halten.<br />

Einen Weg diese Komplexität beherrschbar zu machen, beschreiten modellbasierte<br />

<strong>Entwicklung</strong>smethoden. Ein entscheidender Aspekt ist, dass Beziehungen zwischen<br />

den einzelnen Modellen definiert werden und somit eine Modellstruktur geschaffen<br />

wird. Diese Modellstruktur stellt die zentrale Grundlage für die Bewältigung der Information<br />

dar. Die Beziehungen zwischen den Modellen ermöglichen es, die verschiedenen<br />

Abstraktionsebenen konsistent zu halten. Auch ist es möglich, bei der Erstellung<br />

eines Modells einen ersten Rahmen aus anderen Modellen abzuleiten, d. h.,<br />

dass Modelle als zentrale Elemente den <strong>Entwicklung</strong>sprozess steuern. Die für die verschiedenen<br />

Abstraktionsebenen definierten Modelle haben, neben ihrer Rolle als visualisierende<br />

Elemente, die Aufgabe, das System aus dieser Perspektive vollständig zu<br />

beschreiben. Auf der Grundlage dieser Beschreibung ist es dann möglich, Werkzeuge<br />

zu konzipieren, welche die Aufgaben während der <strong>Entwicklung</strong> automatisieren.<br />

Die IZB SOFT hat bereits einige Aspekte der modellbasierten Methodik in ihren <strong>Entwicklung</strong>sprozess<br />

integriert. Als Notationsmittel wird die Unified Modeling Language<br />

(UML) 2 eingesetzt – ein Hilfsmittel, um Software einheitlich zu modellieren. In dieser<br />

Arbeit wird auf die Version 1.5. [OMG] Bezug genommen. Die einzelnen Modelle<br />

sind in den jeweiligen internen Standards definiert. Im Rahmen der Projekte KBS 3<br />

und PROFiL 4 sind Konzepte und Leitfäden [IZB 2003a] entstanden, die auf diesen<br />

Standards aufbauen.<br />

2<br />

3<br />

4<br />

OMG-UML-Quellen im Internet: www.omg.org/uml.<br />

KBS steht für Kernbankensystem.<br />

Vgl. Abschnitt 2.1.


Problemstellung 3<br />

1.2 Problemstellung<br />

Die modellbasierte Vorgehensweise wirft Probleme auf, die im Folgenden vor dem<br />

Hintergrund des <strong>Entwicklung</strong>sprozesses der IZB SOFT behandelt werden. Der Prozess<br />

lässt sich wie folgt kurz skizzieren:<br />

Zuerst werden die Anforderungen analysiert und modelliert, danach wird das System<br />

anhand der Anforderungen nach fachlichen Gesichtspunkten entworfen. Dieser erste<br />

Entwurf wird dann in den technischen Modellen verf<strong>einer</strong>t, d. h. Implementierungsdetails<br />

der verwendeten technischen Plattform werden eingearbeitet. Zuletzt werden<br />

die technischen Modelle in <strong>COBOL</strong>-Programme umgesetzt und getestet.<br />

Auf fachlicher Ebene werden Modelle bereits erfolgreich eingesetzt, um über das zu<br />

entwickelnde System zu diskutieren. Auch Teile der Generierung wurden bereits realisiert.<br />

So ist es möglich, das Fachkonzept aus den Modellen zu generieren.<br />

Jedoch kommt es, wenn die fachliche Modellierung abgeschlossen ist, zu Brüchen in<br />

der <strong>Entwicklung</strong>, wie Abbildung 1-1 zeigt.<br />

Fachliches Modell<br />

1. Bruch<br />

Technische Modelle<br />

2. Bruch<br />

<strong>COBOL</strong>-Programme<br />

Abbildung 1-1 Brüche in der <strong>Entwicklung</strong><br />

Der erste Bruch findet zwischen dem fachlichen Modell und den technischen Modellen<br />

statt, d. h. es gibt hier keinen durchgängigen Übergang. Deswegen besteht die<br />

Gefahr, dass die erstellten technischen Modelle nicht mit den fachlichen Modellen<br />

zusammenpassen. Dazu kommt, dass der Übergang von Hand umgesetzt wird. Diese<br />

Vorgehensweise ist zum einen aufwendig und birgt zum anderen ein Risiko, da die<br />

Konsistenz der Modelle nicht automatisch überprüft wird.<br />

Der zweite Bruch ist zwischen den technischen Modellen und den <strong>COBOL</strong>-Programmen,<br />

d. h. die Entwickler implementieren die <strong>COBOL</strong>-Programme unabhängig<br />

von den spezifizierten Modellen. Wenn nicht auf der Grundlage der bereits spezifizierten<br />

Modelle entwickelt wird, hat dies zur Folge, dass <strong>einer</strong>seits die Architektur der


4 Einleitung und Motivation<br />

Software nicht konsistent mit den Modellen ist, und andererseits wichtige Designentscheidungen<br />

verloren gehen. Auch hier fehlt ein klarer Zusammenhang zwischen dem<br />

Modell und den Implementierungs-Konzepten von <strong>COBOL</strong>.<br />

1.3 Zielsetzung<br />

Kernziel dieser Arbeit ist die modellbasierte <strong>Entwicklung</strong>smethodik der IZB SOFT<br />

unter Berücksichtigung der bestehenden Standards weiterzuentwickeln. Dabei sollen<br />

die Brüche in der bisherigen Vorgehensweise behoben, die Entwickler entlastet und<br />

die Effizienz der Methodik gesteigert werden. Dieses Ziel lässt sich in folgende Teilziele<br />

zerlegen:<br />

<strong>Entwicklung</strong> <strong>einer</strong> Methode für die Umsetzung der fachlichen Modelle zu technischen<br />

Modellen: Die Beziehungen zwischen den Elementen aus den technischen<br />

Modellen und dem fachlichen Modell sollen definiert werden. Zusätzlich<br />

ist die genaue Spezifikation der Komponenten-Schnittstellen sicherzustellen.<br />

<strong>Entwicklung</strong> <strong>einer</strong> Methode für die Umsetzung der technischen Modelle nach<br />

<strong>COBOL</strong>-Quelltext: Die Menge von Abbildungen, welche die Elemente der technischen<br />

Modelle in <strong>COBOL</strong>-Quelltext umsetzen, soll definiert werden.<br />

Integration der Methoden und Weiterentwicklung der Modelle: Die verschiedenen<br />

Methoden sollen zu <strong>einer</strong> durchgängigen Methodik integriert werden. Die<br />

Anforderungen der Methodik an die Modelle sind zusammen mit den Erweiterungen<br />

der Standards zu dokumentieren. Auch sind Metamodelle für die einzelnen<br />

Modelle zu erstellen und die Beziehungen zwischen den Elementen der<br />

verschiedenen Metamodelle zu erfassen. Schließlich soll die Methodik eine<br />

Grundlage für die Erstellung von Werkzeugen schaffen, um Schritte des systematischen<br />

Vorgehens zu automatisieren.<br />

Erprobung der Ergebnisse anhand eines durchgängigen Fallbeispiels: Für einen<br />

Ausschnitt aus dem laufenden PROFiL-Teilprojekt »Kundenmappe« sollen die<br />

entsprechenden Modelle erstellt und auf Durchgängigkeit geprüft werden. Darüber<br />

hinaus soll auf die Verständlichkeit, Durchgängigkeit und Einfachheit der<br />

Methodik geachtet werden.<br />

1.4 Aufbau der Arbeit<br />

Die Arbeit beginnt im zweiten Kapitel mit der Beschreibung des Umfelds bei der<br />

IZB SOFT. Nach <strong>einer</strong> kurzen Vorstellung des Unternehmens folgt eine Einführung<br />

in den dort verwendeten Softwareentwicklungsprozess und die Beschreibung <strong>einer</strong><br />

typischen <strong>Anwendung</strong>sarchitektur. Im letzten Abschnitt werden die wichtigsten Konzepte<br />

der Programmiersprache <strong>COBOL</strong> zusammengefasst.


Aufbau der Arbeit 5<br />

Das dritte Kapitel erläutert den Begriff modellbasierte Softwareentwicklung und führt<br />

in die Konzepte der modellbasierten Methoden ein. Mit dem Ziel, das bisherige Vorgehen<br />

der IZB SOFT zu beschreiben, werden zunächst die firmeninternen Standards<br />

zusammengefasst. Danach wird ein Überblick über die Modelle der entwickelten Methodik<br />

gegeben.<br />

Das vierte Kapitel behandelt ein durchgängiges Beispiel, welches als Grundlage für<br />

die Beschreibung der Methodik dient. Nach <strong>einer</strong> kurzen Einführung werden alle Modelle,<br />

von dem <strong>Anwendung</strong>sfallmodell bis hin zum Implementierungsmodell, vorgestellt<br />

und mit <strong>einer</strong> Beschreibung der Erweiterung versehen. Danach folgt eine kurze<br />

Bewertung der wesentlichsten Änderungen.<br />

Das fünfte Kapitel ist eine Zusammenstellung aller Modelle, die von der Methodik<br />

genutzt werden. Für jedes Modell wird das zugrunde liegende Metamodell beschrieben<br />

und ein Überblick über die Elemente gegeben.<br />

Das letzte Kapitel fasst das Vorgehen und die Ergebnisse der Arbeit zusammen. Darauf<br />

folgt ein Ausblick auf die möglichen Weiterentwicklungen mit der vorgestellten<br />

Methodik als Grundlage. Der Ausblick schließt eine Bewertung von erforderlichen<br />

Werkzeugen mit ein.


2 Das Umfeld in der IZB SOFT<br />

Dieses Kapitel gibt einen Überblick über das Umfeld in der IZB SOFT. Zunächst wird<br />

das Unternehmen kurz vorgestellt und das Projekt PROFil beschrieben. Darauf folgt<br />

eine Einführung in den Softwareentwicklungsprozess sowie eine Erläuterung der Architektur<br />

der <strong>Anwendung</strong>en. Das Kapitel schließt mit <strong>einer</strong> Zusammenfassung der<br />

wichtigsten <strong>COBOL</strong>-Konzepte.<br />

Eine weitere Aufgabe dieses Kapitels ist es, in die Begriffswelt der Firma einzuführen.<br />

Es ist – wie immer bei Begriffen – Vorsicht geboten. Softwaretechnik ist, vergleicht<br />

man sie mit anderen Bereichen, eine junge Kunst. Deshalb sind die meisten<br />

Begrifflichkeiten nicht als Definition zu verstehen: Jede Methode, jeder Entwickler<br />

versteht in der Regel etwas anderes unter einem Begriff. Besonders kritisch ist die<br />

Verwendung von Begriffen für verschiedene Abstraktionsebenen. Es genügt nicht,<br />

von den Begriffen auf die Bedeutung zu schließen, sondern die Definition des Begriffs<br />

muss genau studiert werden. Diese Arbeit bemüht sich, zu den Begriffen immer<br />

eine Beschreibung zu liefern, welche die Bedeutung in dem vorliegenden Kontext<br />

verdeutlichen soll.<br />

2.1 Die IZB SOFT<br />

Die IZB SOFT entwickelt seit 30 Jahren <strong>Anwendung</strong>ssoftware für Banken und Versicherungen.<br />

Hauptkunden sind die bayerischen Sparkassen; insgesamt sind es<br />

82 bayerische Sparkassen, welche die IT-Dienstleistungen in Anspruch nehmen. Die<br />

IZB SOFT beschäftigt an den Standorten München und Nürnberg rund<br />

900 Mitarbeiter; im Jahre 2002 wurde eine Bilanzsumme von rund 144 Millionen<br />

Euro 5 erreicht.<br />

Ein Produkt, das die IZB SOFT für die bayerischen Sparkassen entwickelt hat und<br />

weiterentwickelt, ist PROFil. Im Umfeld dieses Projekts ist die vorliegende Arbeit<br />

entstanden. PROFil umfasst eine Reihe von Systemen, welche die Geschäftsprozesse<br />

der Sparkassen unterstützen. Als Beispiel kann etwa ein Teilschritt eines sehr einfachen<br />

Geschäftsprozesses dienen: Ein Mitarbeiter <strong>einer</strong> Filiale der Sparkassen, der<br />

einen Kunden berät, möchte sich die Daten des Kunden anzeigen lassen. Die <strong>Anwendung</strong><br />

stellt diesen Dienst zur Verfügung.<br />

5<br />

Diese Daten stammen von den Internetseiten der IZB SOFT: www.izb-soft.de.<br />

7


8 Das Umfeld in der IZB SOFT<br />

Die Ansprüche an die Qualität der Software für Finanzdienstleistung sind sehr hoch.<br />

Die technische Infrastruktur ist aufgrund der vielen Zugriffe <strong>einer</strong> hohen Belastung<br />

ausgesetzt. Zum Beispiel besteht das Service-Netz der bayerischen Sparkassen aus<br />

3100 Geschäftsstellen, welche die Infrastruktur nutzen. Insgesamt sind an die<br />

22 Millionen Konten zu verwalten – daraus ergibt sich eine hohe Anzahl an Buchungen,<br />

die täglich abgewickelt werden müssen.<br />

2.2 Der Softwareentwicklungsprozess<br />

Die <strong>Entwicklung</strong> <strong>einer</strong> <strong>Anwendung</strong> ist keine triviale Aufgabe. Um den Projektverlauf<br />

und die Ergebnisse planbar machen zu können, wird ein Softwareentwicklungsprozess<br />

eingesetzt. Ein Prozess behandelt die Gesamtheit aller Aktivitäten, d. h. sowohl die<br />

Aktivitäten, die den Ablauf koordinieren und den <strong>Entwicklung</strong>stand überwachen, als<br />

auch die Aktivitäten, die sich mit der <strong>Entwicklung</strong> der Software beschäftigen. Ein<br />

Prozess verfolgt immer auch eine Philosophie. Er wählt also eine bestimmte Anschauung<br />

auf die Sachverhalte und gibt Leitbilder vor, an denen man sich orientieren<br />

kann. Der Prozess mit dem die IZB SOFT ihre Software entwickelt, ist durch einen<br />

Standard vorgegeben, der im nächsten Abschnitt beschrieben wird.<br />

2.2.1 Systembereitstellungsprozess<br />

Der Systembereitstellungsprozess (SBP) [IZB 2003b] definiert einen Rahmen für die<br />

Abwicklung von Softwareprojekten, mit dem Ziel, für einen reibungslosen und effizienten<br />

Projektablauf zu sorgen. Deswegen werden in dem SBP z. B. Verantwortungen<br />

verteilt.<br />

Der Prozess, den die IZB SOFT anwendet, um ihre Produkte zu entwickeln, orientiert<br />

sich an dem Rational Unified Process (RUP) 6 , ein Softwareentwicklungsprozess, der<br />

von dem Unternehmen Rational Software entwickelt worden ist. Der RUP versucht<br />

einige »Best Practices« umzusetzen, die auch im SBP Verwendung finden. Im Folgenden<br />

werden die wichtigsten Eigenschaften des Prozesses vorgestellt.<br />

Iterative Vorgehensweise. Der SBP basiert auf <strong>einer</strong> iterativen Vorgehensweise,<br />

d. h. die Vorgehensweise ist eine bewusste Abgrenzung zum Wasserfallmodell. Die<br />

Disziplinen, die in der Softwareentwicklung mittlerweile gängig sind, nämlich Analyse,<br />

Entwurf, Implementierung und Test, werden zu <strong>einer</strong> Iteration zusammengefasst<br />

und während eines Projektes mehrfach durchlaufen (vgl. Abbildung 2-1). Eine Iteration<br />

schließt immer mit einem ausführbaren Programm ab, das einen Teil der Anforderungen<br />

bereits erfüllt. In den weiteren Iterationen werden Anforderungen hinzuge-<br />

6<br />

Der RUP ist in [Jacobson1999] genau beschrieben.


Der Softwareentwicklungsprozess 9<br />

nommen, in den Entwurf des Systems eingearbeitet und implementiert. Ein solches<br />

Vorgehen wird als inkrementell bezeichnet.<br />

Test<br />

Analyse<br />

Implementierung<br />

Entwurf<br />

Abbildung 2-1 Disziplinen <strong>einer</strong> Iteration<br />

Im Folgenden werden die Disziplinen <strong>einer</strong> Iteration erklärt:<br />

Analyse. In der Analyse werden die Anforderungen ermittelt. Diese ergeben sich<br />

aus dem <strong>Anwendung</strong>sbereich, wie z. B. dann, wenn ein bestimmter Geschäftsprozess<br />

der Sparkassen unterstützt werden soll. Die Anforderungen werden zu-<br />

¡<br />

sammen mit den Experten des <strong>Anwendung</strong>sbereichs ermittelt.<br />

Entwurf. Kernaufgabe beim Entwurf ist die Erstellung <strong>einer</strong> Architektur. Dazu<br />

muss eine Struktur des Systems entworfen und eine geeignete Zerlegung des<br />

¡<br />

Systems gefunden werden. Aus Gründen der Wiederverwendbarkeit und zur<br />

Bewältigung der Komplexität wird das System in Komponenten zerlegt.<br />

Implementierung. Gegenstand der Implementierung ist die Umsetzung der Komponenten<br />

in Quelltext. Die Vorgaben, die im Entwurf spezifiziert wurden, sollen<br />

¡<br />

eingehalten werden.<br />

Test. Das Testen von Software ist eine sehr wichtige Aufgabe, nicht nur um die<br />

Qualität der Software zu sichern, sondern auch um frühzeitig Fehler und Risiken<br />

¡<br />

zu erkennen. Auch für den Test sind modellbasierte Verfahren geeignet. In dieser<br />

Arbeit wird das Testen nicht behandelt – später wäre es jedoch möglich, anhand<br />

der Modelle, ein Verfahren für automatisiertes Testen zu entwickeln.<br />

Da ein Prozess und damit u. a. auch die Planbarkeit der <strong>Entwicklung</strong> von hoher Bedeutung<br />

sind, wird die Folge von Iterationen in Phasen unterteilt. Jede dieser Phasen<br />

legt einen Schwerpunkt in den Aktivitäten der Iteration fest und definiert einen Meilenstein,<br />

der akzeptiert werden muss, um in die nächste Phase zu gelangen. In der<br />

IZB SOFT werden diese Phasen Konzeption, Entwurf, Konstruktion und Übergang<br />

genannt.<br />

Ein anwendungsfallzentrierter Prozess. <strong>Anwendung</strong>sfälle bilden den Ausgangspunkt<br />

für viele der durchzuführenden Aktivitäten. Die Funktionalität, die in <strong>einer</strong> Iteration<br />

umgesetzt wird, orientiert sich an den <strong>Anwendung</strong>sfällen. Damit ist gewährleistet,<br />

dass alle Aktivitäten auf die Erfüllung von Anforderungen zurückzuführen sind.


10 Das Umfeld in der IZB SOFT<br />

Ein architekturzentrierter Prozess. Ziel ist es, so früh wie möglich eine grobe Systemstruktur<br />

zu entwickeln. Die Architektur, die bei der IZB SOFT zum Einsatz<br />

kommt, wird im folgenden Abschnitt beschrieben. Ausgangsbasis ist der Standard,<br />

d. h. eine definierte Architekturbeschreibung.<br />

2.3 Die Architektur der <strong>Anwendung</strong>en<br />

In diesem Abschnitt wird die Architektur der <strong>Anwendung</strong>en genauer betrachtet. Die<br />

Beschreibung <strong>einer</strong> Architektur gibt einen Überblick über das System und hilft dem<br />

Entwickler die Aufgabenstellung zu verstehen. An dieser Stelle wird die Architektur<br />

<strong>einer</strong> allgemeinen <strong>Anwendung</strong> beschrieben – später wird diese, anhand des Fallbeispiels,<br />

konkretisiert.<br />

Eine Architektur betrachtet die <strong>Anwendung</strong> aus verschiedenen Sichten und zeigt immer<br />

nur so viel Information an, wie zum Verständnis notwendig ist. Dadurch umreißt<br />

sie die <strong>Anwendung</strong> und macht deutlich, welche Prinzipien verfolgt werden müssen,<br />

um bereits bekannte Problemfelder zu vermeiden. Insbesondere wird darauf geachtet,<br />

dass die Zusammenhänge zwischen den einzelnen Teilen des Systems deutlich gemacht<br />

werden.<br />

Um die Architektur zu beschreiben, wird ein Teil des von [Kruchten] vorgeschlagenen<br />

»4+1«-Sichten-Modells genutzt, nämlich die physische und die logische Architektur;<br />

die weiteren Sichten werden ausgespart, da sie Teile der <strong>Anwendung</strong> beschreiben,<br />

die nicht zum allgemeinen Verständnis beitragen und für die Arbeit nicht relevant<br />

sind.<br />

Zunächst wird auf die physische Architektur eingegangen. Schwerpunkt dieser Betrachtungsweise<br />

ist die eingesetzte Hardware und die daraus resultierende Infrastruktur.<br />

Beschrieben wird auch, welche Plattformen die einzelnen Knoten bereitstellen.<br />

Besonders für Leser, die nicht mit dem Bereich der Großrechner vertraut sind, ist dieser<br />

Überblick interessant.<br />

Im Anschluss wird die logische Architektur der <strong>Anwendung</strong> erläutert. Dort wird<br />

hauptsächlich auf die grobe Zerlegung des Systems eingegangen, insbesondere auf die<br />

Schichtenarchitektur. Hinzu kommt eine Einführung in die Entwurfsprinzipien.<br />

2.3.1 Physische Architektur<br />

Die Welt der Großrechner besteht aus Terminals und Mainframes, die über ein Netzwerk<br />

verbunden sind. Abbildung 2-2 zeigt eine typische Client/Server-Architektur,<br />

wie sie im Bereich der Finanzanwendungen häufig zu finden ist. Auf den Clients läuft<br />

eine 3270-Terminal-Emulation, die über ein LAN/WAN auf IBM-Großrechner zugreift.<br />

Für die Datenverwaltung benutzen die Großrechner verschiedene Datenbanken.<br />

Ursprünglich waren die Arbeitsplatz-Rechner 3270 Display Stations, die über einen


Die Architektur der <strong>Anwendung</strong>en 11<br />

eigenen Controller mit dem Großrechner verbunden waren. Heutzutage werden PCs<br />

mit dem Betriebsystem Windows NT verwendet, auf denen eine Software läuft, die<br />

ein 3270-Terminal emuliert.<br />

LAN/WAN<br />

DB2<br />

Windows NT<br />

3270 Emulation<br />

IBM S/390<br />

Großrechner<br />

ADABAS<br />

Abbildung 2-2 Eine typische Client/Server-Architektur<br />

Die Hauptarbeit wird vom Großrechner erledigt. Ein 3270-Terminal zeigt lediglich<br />

Masken (Screen Maps) an. Unter <strong>einer</strong> Maske wird ein festgelegtes Layout mit diversen<br />

Eingabefeldern verstanden. Der Großrechner schickt mit dem 3270-Protokoll die<br />

Masken an das Terminal. Dieser zeigt sie an und interagiert mit dem Benutzer. Die<br />

mit den Benutzerdaten angereicherten Masken werden an den Großrechner zurückgeschickt.<br />

Dieser kann dann die Daten aus den Eingabefeldern verarbeiten.<br />

Der Großrechner bietet als Plattform einen S/390-Mainframe von IBM auf dem<br />

OS/390 läuft an. OS/390 ist ein System mit Stapelbetrieb (batch operation). Programme<br />

werden in Batch Jobs aufgeteilt, die nacheinander in den Speicher geladen<br />

und ausgeführt werden. Ein Batch Job stellt einen vollständig spezifizierten Auftrag<br />

dar und erhält Rechenzeit solange bis er fertig ist. Der Begriff stammt aus den Zeiten,<br />

als Programme noch in Form von Lochkarten stapelweise in den Großrechner geladen<br />

worden sind. Interagieren kann der Benutzer mit einem Batch Job natürlich nicht.<br />

Abhilfe schafft das Customer Information Control System (CICS). Dieses System<br />

läuft als Batch Job unter OS/390. [Menendez] schlägt vor:<br />

[…] you can think of CICS as an operating system within an operating system.<br />

CICS ermöglicht es, nicht nur interaktive Software zu entwickeln, sondern auch<br />

Online Transaction Processing zu unterstützen, d. h. es bestehen Funktionen, um<br />

Transaktionen zu verwalten. Außerdem werden Schnittstellen für den Datenbankzugriff<br />

angeboten. Für DB2 steht z. B. die Schnittstelle CICS/DB2 Attachment Facility<br />

zur Verfügung. Als Datenbank wird auch ADABAS eingesetzt.<br />

CICS-Programme sind in der Regel in <strong>COBOL</strong> geschrieben. Im folgenden Abschnitt<br />

werden die Teile, aus denen sich eine CICS/<strong>COBOL</strong>-<strong>Anwendung</strong> zusammensetzt,<br />

sowie Strategien zur Vermeidung eines Monolithen beschrieben.


12 Das Umfeld in der IZB SOFT<br />

2.3.2 Logische Architektur<br />

Die logische Architektur gibt einen Überblick über die Organisation der Softwarebausteine<br />

des Systems. Diese ist so gewählt, dass die funktionalen Anforderungen klar<br />

strukturiert realisiert werden können. Für die betrachtete <strong>Anwendung</strong> ergeben sich die<br />

funktionalen Anforderungen aus den zu unterstützenden Geschäftsprozessen der<br />

Sparkassen.<br />

In der IZB SOFT ist der Rahmen für die Architektur der <strong>Anwendung</strong>en in einem<br />

Standard definiert [IZB 2002b]. Dieser hat die Aufgabe, für weitere <strong>Entwicklung</strong>en<br />

eine einheitliche Architektur zu schaffen. Der Kern besteht aus zwei Konzepten:<br />

(1) Zerlegung der <strong>Anwendung</strong> in Komponenten; und (2) Organisation der Komponenten<br />

in Form <strong>einer</strong> Schichtenarchitektur. Im Folgenden werden die für diese Arbeit<br />

relevanten Punkte zusammengefasst.<br />

Kapselung. Kapselung ist ein wichtiges Konzept, das auf verschiedenen Ebenen<br />

eingesetzt wird. Es basiert auf dem Prinzip, Implementierungsdetails zu verstecken<br />

und eine Abstraktion nur durch eine Schnittstelle zugänglich zu machen. [Booch] definiert<br />

Kapselung als:<br />

The process of compartmentalizing the elements of an abstraction that constitute<br />

its structure and behavior; encapsulation serves to separate the contractual<br />

interface of an abstraction and its implementation.<br />

Diese Trennung von Innenansicht (white box) und Außenansicht (black box) wird bei<br />

Prozeduren, Modulen und Komponenten angewendet.<br />

Komponenten. Unter <strong>einer</strong> Komponente wird in dieser Arbeit ein Konzept verstanden,<br />

um Bauteile der <strong>Anwendung</strong> zusammenzufassen. Eine Komponente kapselt<br />

diese Menge von Bauteilen und spezifiziert die Schnittstellen, über die mit der Komponente<br />

kommuniziert werden kann. Die Implementierung der Schnittstellen, also die<br />

gekapselten Bauteile, ist von außen nicht sichtbar. Eine Schnittstelle besteht aus <strong>einer</strong><br />

Menge von Signaturen von Operationen sowie aus Vereinbarungen von Datenstrukturen.<br />

Schichtenarchitektur. Die Zerlegung eines Systems in Schichten ist eine weit verbreitete<br />

Architekturform. Jede Schicht bietet höhere Dienste an, aufbauend auf den<br />

Basisdiensten der untergeordneten Schichten. Dabei ist eine Schicht nur von untergeordneten<br />

Schichten abhängig und besitzt kein Wissen über höhere Schichten. Neben<br />

der geschlossenen Architektur, in der jede Schicht nur von der ihr untergeordneten<br />

Schicht abhängig sein darf, definiert [Buschmann] die Variante Relaxed Layered Sys-


Die Architektur der <strong>Anwendung</strong>en 13<br />

tem. In dieser gelockerten Variante darf jede Schicht alle, ihr untergeordneten,<br />

Schichten benutzen 7 .<br />

Die folgenden Absätze beschreiben die Aufgaben der einzelnen Schichten und grenzen<br />

sie voneinander ab.<br />

Präsentation. Gegenstand der Präsentationsschicht ist die Realisierung der Benutzerschnittstelle.<br />

Dazu werden die Daten dem Benutzer angezeigt und die Ereignisse,<br />

die der Benutzer auslöst, sei es durch seine Tastatur oder durch einen<br />

¢<br />

Mausklick, verarbeitet. Auch die Dialogsteuerung ist Aufgabe der Präsentation.<br />

Hierfür werden die entsprechenden Geschäftsvorfälle (Basisdienste der Steuerungsschicht)<br />

aufgerufen und Daten, die während eines Ablaufes benötigt werden,<br />

temporär gespeichert.<br />

Steuerung. Die von der Steuerungsschicht angebotenen Dienste repräsentieren<br />

Geschäftsvorfälle. Unter einem Geschäftsvorfall wird ein, in sich abgeschlossener,<br />

fachlicher Vorgang verstanden. Beispiele für Geschäftsvorfälle sind »Kunde<br />

¢<br />

finden« oder »Kundenmappe zusammenstellen«. Ein Geschäftsvorfall wird weiter<br />

in fachliche Funktionen (Basisdienste der Geschäftslogikschicht) unterteilt.<br />

Zur Abarbeitung eines Geschäftsvorfalles wird eine Reihe von fachlichen Funktionen<br />

ausgeführt. Zudem gibt es technische Aufgaben zu erfüllen: Ein Geschäftsvorfall<br />

ist zustandslos. Für jeden Aufruf wird eine Transaktion geöffnet,<br />

die mit der Übergabe eines konsistenten Ergebnisses abschließt.<br />

Geschäftslogik. Die Geschäftslogikschicht bietet fachliche Funktionen an und<br />

stellt somit Dienste zur Verfügung. Diese arbeiten die Teilschritte der Geschäftsvorfälle<br />

ab. Eine Kombination von fachlichen Funktionen ergibt einen Ge-<br />

¢<br />

schäftsvorfall. Die fachlichen Funktionen werden im Rahmen <strong>einer</strong> bestehenden<br />

Transaktion ausgeführt.<br />

Datenzugriff. Kernaufgabe der Datenzugriffsschicht ist die Kapselung der Datenzugriffe<br />

auf ein konkretes Datenbankmanagementsystem (DBMS). Ziel ist die<br />

¢<br />

Verbergung der verschiedenen Zugriffe auf die DBMS der unterschiedlichen<br />

Hersteller. Dazu wird eine einheitliche Schnittstelle für den Datenzugriff angeboten.<br />

Querschnittsschicht. Die Querschnittsschicht bietet technische Basisdienste an.<br />

Diese reichen von Logging über Druckfunktionen bis hin zum Fehlermanagement.<br />

Oft bietet sie auch eine Schnittstelle für Dienste des Betriebsystems ¢ an.<br />

7<br />

Der Standard gibt eine geschlossene Architektur vor. Allerdings wird in den Projekten aus Gründen<br />

der Performance meist die gelockerte Variante eingesetzt; z. B. dürfen in den meisten Fällen die<br />

Steuerungskomponenten auch auf die Datenstrukturen der Datenzugriffsschicht zugreifen.


14 Das Umfeld in der IZB SOFT<br />

In dieser Schichtenarchitektur werden logische Schichten betrachtet. Eine Aussage,<br />

wie diese Schichten in eine physische Architektur abgebildet werden könnten, wurde<br />

noch nicht getroffen. Im Abschnitt 2.3.1 wurde eine Client/Server-Architektur beschrieben.<br />

Heutzutage wird oft noch ein weiterer Server zwischen dem Terminal und<br />

dem Großrechner verwendet. Es gibt dann verschiedenen Möglichkeiten, die logischen<br />

Schichten auf diese beiden physischen Knoten abzubilden. Alle zu besprechen,<br />

würde den Rahmen dieser Arbeit sprengen. Im Folgenden wird eine Abbildung exemplarisch<br />

gewählt, um die Prinzipien der logischen Schichtentrennung erläutern zu<br />

können.<br />

Trennung in Front- und Backend. Wird eine scharfe Linie zwischen der Präsentationsschicht<br />

und der Geschäftslogikschicht gezogen, wird die Präsentation Frontend<br />

genannt. Die darunter liegenden Schichten werden mit Backend bezeichnet. In der<br />

Regel wird das Frontend auf einem eigenen Application Server laufen und das Backend<br />

auf dem Host. Die Aufgabe des Backends ist es, die Dienste für das Frontend<br />

bereitzustellen. Somit wird eine Multikanalstrategie verfolgt: verschiedene Präsentationen<br />

wie z. B. Web oder 3270 rufen die Geschäftsvorfälle des Backends auf.<br />

Schwerpunkt dieser Arbeit ist die modellbasierte <strong>Entwicklung</strong> der vom Backend angeboten<br />

Dienste (vgl. Abbildung 2-3). Die Anordnung der Präsentationsschicht ist<br />

dafür nicht relevant, da in beiden Fällen die Geschäftsvorfälle auf dem Großrechner<br />

mit <strong>COBOL</strong> realisiert werden. Somit liegt eine klassische dienstorientierte Architektur<br />

vor. Die Dienste des Backends sind zustandslos und können innerhalb <strong>einer</strong><br />

Transaktion abgearbeitet werden. Diese Art von Diensten ist für ein Frontend mit<br />

Web-Technologie vorteilhaft.<br />

Web Server<br />

OS/390<br />

CICS<br />

Präsentationsschicht<br />

CICS Transaktions<br />

Gateway<br />

Präsentationsschicht<br />

Steuerungsschicht<br />

Geschäftslogikschicht<br />

Datenzugriffsschicht<br />

Querschnittsschicht<br />

Fokus dieser Arbeit<br />

Abbildung 2-3 Fokus dieser Arbeit


<strong>COBOL</strong>: Begriffe & Konzepte 15<br />

2.4 <strong>COBOL</strong>: Begriffe & Konzepte<br />

Innerhalb der Schichten werden die Komponenten vorwiegend in <strong>COBOL</strong> realisiert.<br />

Um bei der Modellierung ein Ziel vor Augen zu haben, ist es wichtig die Grundkonzepte<br />

zu verstehen, die <strong>COBOL</strong> bietet. Genauso wichtig ist es, die Grenzen von<br />

<strong>COBOL</strong> zu kennen. Der folgende Abschnitt gibt eine Einführung in die wichtigsten<br />

Konzepte und Begriffe.<br />

Welche Punkte sind für diese Arbeit relevant Ein Schwerpunkt der Modellierung<br />

liegt in der Spezifikation der Schnittstellen. Hierfür wird das Konzept der Module<br />

erklärt sowie die Technik, welche von den Modulen verwendet wird, um andere Module<br />

aufzurufen. Für die Übergabe von Parametern wird das Konzept der Variablen<br />

und der Datenstrukturen benötigt. Außerdem wird die copy-Anweisung, Zeiger und<br />

ein Muster für Modulaufrufe erklärt.<br />

<strong>COBOL</strong> steht für Common Business Orientated Language. Die Sprache existiert seit<br />

1959 und wurde seit ihrer Schöpfung mehrmals erneuert. Der letzte offizielle Standard<br />

ist <strong>COBOL</strong> 85, ein Standard der 1985 verabschiedet worden ist und in dem auch<br />

die meisten Programme der IZB SOFT verfasst sind. In den Bereichen der Finanzgeschäfte<br />

konnte sich <strong>COBOL</strong> eindeutig durchsetzen: 65% aller kritischen <strong>Anwendung</strong>en<br />

nutzten 1995 <strong>COBOL</strong> [Brown]; die meisten dieser <strong>Anwendung</strong>en existieren auch<br />

heute noch – so bleibt <strong>COBOL</strong> eine Sprache, mit der man sich auch in Zeiten von<br />

Java und C# auseinandersetzen muss.<br />

2.4.1 Programme, Paragraphen und Module<br />

<strong>COBOL</strong> ist eine imperative und prozedurale Programmiersprache, d. h. Programme<br />

sind Folgen von Anweisungen. Diese Anweisungen ändern Variablen und somit den<br />

Zustand des Programms. Seit den Anfängen der Informatik, als noch hauptsächlich in<br />

Assembler programmiert wurde, wird versucht, Abstraktionen zu finden, mit denen<br />

sich das Programmieren übersichtlicher gestalten lässt. Die Prozedur ist ein solches<br />

Konstrukt. Eine Prozedur umfasst eine logisch zusammengehörige Folge von Anweisungen.<br />

Damit Abstraktionen funktionieren, müssen die ausgesparten Details auch<br />

versteckt und somit abkapselt werden, d. h. das Geheimnisprinzip (information hiding)<br />

muss umgesetzt werden. Für eine Prozedur würde das bedeuten, dass lokale Variablen<br />

außerhalb der Prozedur nicht sichtbar sind – dies ist unter <strong>COBOL</strong> nicht möglich.<br />

Anweisungen, die einen abgeschlossenen Programmteil darstellen, können zwar<br />

zu einem Paragraphen zusammengefasst werden, aber die Variablen bleiben immer<br />

im ganzen Programm sichtbar.<br />

Beim Zerlegen größerer Programme genügen Prozeduren nicht als Abstraktionsmittel.<br />

Deswegen werden große Programme in Module zerlegt. Jedes Modul hat eine Schnitt-


16 Das Umfeld in der IZB SOFT<br />

stelle über die mit dem Modul kommuniziert wird. Ein Modul kann als Einheit übersetzt<br />

werden (compilation unit)<br />

Ein Modul fasst Prozeduren und die benötigten Datenstrukturen zu <strong>einer</strong> Einheit zusammen.<br />

Auch hier sollen die Details, d. h. die Implementierung der Prozeduren und<br />

die benötigten Variablen eines Moduls, gekapselt werden. Diese Abstraktion wird von<br />

<strong>COBOL</strong> unterstützt. Allerdings sind die Möglichkeiten für die Definition der Schnittstellen<br />

unzureichend. Weiter unten wird erklärt, wie ein Modul, das von außen einen<br />

schwarzen Kasten darstellt, über eine Schnittstelle aufzurufen ist.<br />

Ein Modul ist in vier Bereiche unterteilt:<br />

identification division. In diesem Bereich findet der Compiler oder der Entwickler<br />

Informationen über das Programm. Vorgeschrieben ist die program-id,<br />

£<br />

die den Namen des Moduls spezifiziert.<br />

environment division. Dieser Bereich enthält Informationen über das Umfeld,<br />

in dem das Modul ausgeführt wird. Hier wird z. B. spezifiziert, dass der decimal-point<br />

ein Komma £ ist.<br />

data division. In diesem Bereich werden Daten definiert. Er ist weiter unterteilt<br />

in die working-storage section und die linkage section.<br />

£<br />

procedure division. Dieser Bereich enthält Anweisungen, um die Daten in der<br />

data division zu manipulieren. Die procedure division ist hierarchisch gegliedert<br />

in section, paragraph, sentence und £ statement.<br />

2.4.2 Daten<br />

Daten sind für <strong>Anwendung</strong>en ein wichtiger Bestandteil: Fachliche Informationen aus<br />

dem Gegenstandsbereich der <strong>Anwendung</strong> werden durch Daten repräsentiert. In diesem<br />

Abschnitt wird beschrieben, wie Daten in <strong>COBOL</strong> definiert und benutzt werden.<br />

Um Daten innerhalb eines Moduls zu bearbeiten, werden Variablen benutzt. Variablen<br />

besitzen eine Referenz und einen Wert. Die Vereinbarungen werden in der working-storage<br />

section festgelegt. Hier werden die Variablen an einen Namen gebunden.<br />

Der Gültigkeitsbereich (scope) der Vereinbarungen ist das ganze Modul. Somit<br />

kann innerhalb des Moduls auf den Wert der Variable durch den Namen zugegriffen<br />

werden.<br />

Die Variablen besitzen eine Wertesemantik, d. h. die Referenz der Variable bestimmt<br />

eindeutig den Speicherbereich, der den Wert der Variable enthält. Wenn eine Variable<br />

deklariert wird, wird automatisch ein Speicherbereich reserviert, der den Wert der<br />

Variable aufnehmen kann.


<strong>COBOL</strong>: Begriffe & Konzepte 17<br />

Beim deklarieren <strong>einer</strong> Variable wird zwischen zwei Arten von Variablen unterschieden.<br />

Es gibt die einfache Variable (elementary item) und die zusammengesetzte Variable<br />

(group item).<br />

Einfache Variable. Bei <strong>einer</strong> Deklaration <strong>einer</strong> einfachen Variablen weiß der Compiler<br />

wie groß der Speicherbereich sein muss und kennt die Menge der möglichen<br />

Werte, die dort gespeichert werden können.<br />

Eine Deklaration <strong>einer</strong> einfachen Variablen besteht aus <strong>einer</strong> Level Number, einem<br />

Namen, und <strong>einer</strong> picture-Klausel.<br />

01 DER-NAME PICTURE X(30) VALUE "HEINZ".<br />

Die picture-Klausel definiert den Typ und die Größe der Variablen, also die Menge<br />

ihrer möglichen Werte. Es gibt drei Datentypen: (1) Alphabetic, (2) Alphanumeric<br />

und (3) Numeric.<br />

Eine Variable kann mit der value-Klausel initialisiert werden. Die Länge <strong>einer</strong> Variablen<br />

kann auf zwei verschiedene Arten spezifiziert werden. Soll z. B. eine numerische<br />

Variable mit genau 4 Stellen definiert werden, wird entweder<br />

oder<br />

01 NUMMER PICTURE 9(4)<br />

01 NUMMER PICTURE 9999<br />

verwendet 8 .<br />

Zusammengesetzte Variable. Mit <strong>einer</strong> zusammengesetzten Variable (group item)<br />

werden mehrere Variablen zu <strong>einer</strong> Gruppe zusammengefasst. Eine zusammengesetzte<br />

Variable ergibt eine Datenstruktur oder einfach eine Struktur. Der Wert, den eine<br />

Struktur annehmen kann, ist das kartesische Produkt von den Werten der enthaltenen<br />

Variablen. Die Struktur kann beliebig geschachtelt werden (nested structure), d. h.<br />

eine Struktur kann auch eine Variable enthalten, die wiederum eine Struktur darstellt.<br />

Der entscheidende Unterschied zu anderen Sprachen ist, dass eine Datenstruktur nicht<br />

an eine Typbezeichnung gebunden werden kann. Somit ist es auch nicht möglich,<br />

Variablen an diese Typbezeichnung zu binden. Sollen zwei Variablen mit derselben<br />

Struktur definiert werden, muss für jede Variable die Struktur beschrieben werden. Es<br />

gibt in <strong>COBOL</strong> einen Mechanismus, um diese doppelte Schreibarbeit zu umgehen.<br />

Dieser Mechanismus wird durch die Vorübersetzer-Anweisung copy realisiert, die<br />

weiter unten erklärt wird.<br />

8<br />

Weiter gibt es die Möglichkeit, Vorzeichen zu definieren, Dezimalpunkte festzulegen oder noch<br />

genauere Angaben zu den Typen zu machen. Eine ausführliche Darstellung, würde den Rahmen dieser<br />

Arbeit sprengen.


18 Das Umfeld in der IZB SOFT<br />

Die Deklaration <strong>einer</strong> Struktur-Variablen hat eine Level Number und einen Namen –<br />

keine picture-Klausel. Für eine Strukturvariable wird die Größe des zu reservierenden<br />

Speichers aus den einfachen Nachfahren berechnet. Eine Strukturvariable bezeichnet<br />

nur ein Aggregat von tatsächlichen Variablen.<br />

01 RECORD<br />

05 ELEMENTARY-ITEM-A PIC 9(4)<br />

05 ELEMENTARY-ITEM-B PIC X<br />

05 GROUP-ITEM<br />

10 ELEMENTARY-ITEM-C PIC X(20)<br />

10 ELEMENTARY-ITEM-D PIC X(20)<br />

Die Level Number bestimmt die Anordnung des Feldes in der Hierarchie der Datenstruktur.<br />

Wichtig ist, dass diese eine relative Nummer darstellt, d. h. eine Nummer ist<br />

nicht absolut, sondern immer relativ zu der Nummer des ihr über- oder untergeordneten<br />

Feldes zu sehen. Je höher die Nummer ist, desto tiefer liegt die Variable in der<br />

Hierarchie. Auf der tiefsten Ebene sind alle Variablen einfach. Die Top-Level Variable,<br />

also die Variable mit der Level Number »1«, wird Record genannt.<br />

Eine Datenstruktur repräsentiert einen Baum: an ihren Blättern sind die einfachen<br />

Variablen; die inneren Knoten sind die zusammengesetzten Variablen. Innerhalb der<br />

IZB SOFT regelt der Standard »Programmierrichtlinien <strong>COBOL</strong>« [IZB 2002d] den<br />

Stil der Programme. Für die Variablen ist z. B. vorgegeben, dass die Namen der Variablen<br />

innerhalb eines Moduls eindeutig sind.


<strong>COBOL</strong>: Begriffe & Konzepte 19<br />

2.4.3 Aufruf eines Moduls<br />

Ein großes Programm wird in der Regel in Module zerlegt. Diese Module können sich<br />

gegenseitig aufrufen. Allerdings darf ein Modul, das Modul von dem es aufgerufen<br />

worden ist, selbst nicht aufrufen. Der Aufruf erfolgt mit der call-Anweisung, die<br />

auch die Parameterübergabe steuert. Im Folgenden wird dieses Konzept anhand eines<br />

Beispiels erklärt. Es wird davon ausgegangen, dass ein Modul A ein Modul B mit den<br />

Argumenten a1, a2 und a3 aufruft.<br />

Modul A:<br />

IDENTIFICATION DIVISION.<br />

PROGRAM-ID. A.<br />

DATA DIVISION.<br />

...<br />

WORKING-STORAGE SECTION.<br />

01 A1 PIC X.<br />

01 A2 PIC X.<br />

01 A3 PIC X.<br />

...<br />

PROCEDURE DIVISION<br />

...<br />

CALL B USING A1 A2 A3.<br />

Modul B:<br />

IDENTIFICATION DIVISION.<br />

PROGRAM-ID. B.<br />

DATA DIVISION.<br />

...<br />

LINKAGE SECTION.<br />

01 P1 PIC X.<br />

01 P2 PIC X.<br />

01 P3 PIC X.<br />

...<br />

PROCEDURE DIVISION USING P1 P2 P3.<br />

Das Modul A deklariert drei Variablen und ruft mit der call-Anweisung das Modul B<br />

auf. Die Argumente werden in der using-Klausel spezifiziert.<br />

Das Modul B spezifiziert die Parameter in der using-Klausel der procedure<br />

division. Parameter, die in der using-Klausel vorkommen, müssen in der<br />

linkage section deklariert sein. Im Gegensatz zu <strong>einer</strong> Deklaration in der workingstorage<br />

section handelt es sich hier um eine Referenzsemantik: Es wird kein Speicher<br />

reserviert und auf die Variable, die an den Parameter gebunden wird, können<br />

mehrere Referenzen verweisen.<br />

Nach dem Aufruf werden im Modul B die Parameter initialisiert. Dieser Vorgang<br />

wird als Parameterübergabe bezeichnet. Der Mechanismus, der von <strong>COBOL</strong> für die


20 Das Umfeld in der IZB SOFT<br />

Parameterübergabe angewandt wird, ist standardmäßig ein Referenzaufruf: Der Parameter<br />

wird mit der Referenz des Arguments initialisiert. Der Typ des Arguments<br />

muss äquivalent zum Typ des Parameters sein. Argument und Parameter greifen auf<br />

denselben Speicherbereich zu.<br />

Die Semantik ändert sich je nachdem, was innerhalb des Moduls mit dem Parameter<br />

passiert. Dabei werden drei Fälle unterschieden (vgl. [Goos] S. 27):<br />

Eingabeparameter (in). Wird der Wert des Parameters innerhalb des Moduls<br />

nicht geändert, wird von einem Eingabeparameter gesprochen.<br />

¤<br />

Ausgabeparameter (out). Wird der Parameter innerhalb eines Moduls, unabhängig<br />

von seinem ursprünglichen Wert, mit einem Wert belegt, wird er Ausgabeparameter<br />

¤ genannt.<br />

Übergangsparameter (inout). Ist ein Eingabeparameter zugleich ein Ausgabeparameter,<br />

so heißt er Übergangsparameter.<br />

¤<br />

2.4.4 COPY-Dateien<br />

Das erste, was man als Student in <strong>einer</strong> Firma mitbekommt, die <strong>Anwendung</strong>en für<br />

Großrechner entwickelt, ist, dass »Copydateien«, »Copystrecken« oder »Copys« viele<br />

Eigenschaften haben: Sie können »übergeben werden« oder »eine Schnittstelle darstellen«.<br />

Welche Funktionen erfüllt also dieses Zaubermittel, von dem [Budlong]<br />

schreibt:<br />

The COPY statement to the rescue!<br />

Wichtig ist, den Mechanismus, den die copy-Anweisung anbietet, klar von den verschiedenen<br />

<strong>Anwendung</strong>smöglichkeiten zu trennen.<br />

Der Mechanismus. Mit der copy-Anweisung wird Quelltext aus <strong>einer</strong> Datei in eine<br />

Moduldatei eingebunden. Die Anweisung selber wird nicht übersetzt, sondern vor<br />

dem Übersetzen wird der Quelltext aus den Dateien, die in den copy-Anweisungen<br />

spezifiziert sind, an den entsprechende Stellen eingefügt; erst danach wird das Modul<br />

übersetzt.<br />

Der Nutzen. In dem Abschnitt über Daten wurde festgestellt, dass es keine Möglichkeit<br />

gibt, eine Datenstruktur an einen Typbezeichner zu binden und mehrmals zu verwenden.<br />

Stattdessen muss alles mehrfach getippt werden. Mit Hilfe der copy-<br />

Anweisung kann eine Datenstruktur, die von mehreren Modulen genutzt werden soll,<br />

einmal definiert und dann an verschiedenen Variablen »gebunden« werden. Eine<br />

copy-Datei steht also für eine konkrete Datenstruktur, die wiederverwendet werden<br />

soll.


<strong>COBOL</strong>: Begriffe & Konzepte 21<br />

Für die Variablen innerhalb <strong>einer</strong> copy-Datei machen die Programmierrichtlinien der<br />

IZB SOFT eine Einschränkung: Der Feldname darf maximal 6 Stellen lang sein.<br />

2.4.5 Zeiger<br />

Als Erweiterung gibt es in <strong>COBOL</strong> Zeiger; das folgende Listing zeigt die Deklaration<br />

des Zeigers:<br />

IDENTIFICATION DIVISION.<br />

PROGRAM-ID. ZEIGER-BEISPIEL.<br />

...<br />

WORKING-STORAGE SECTION.<br />

01 EINE-STRUKTUR.<br />

...<br />

DATA DIVISION.<br />

...<br />

LINKAGE SECTION.<br />

01 EINGABE-ZEIGER USAGE IS POINTER.<br />

01 STRUKTUR-DEFINITION.<br />

...<br />

PROCEDURE DIVISION USING EINGABE-ZEIGER.<br />

Ausgehend von dem Listing können zwei Szenarien betrachtet werden:<br />

Szenario #1. Dem Modul wird ein Zeiger übergeben, von dem der Entwickler weiß,<br />

dass der Zeiger auf eine Struktur vom Typ struktur-definition zeigt. Um die<br />

Struktur, auf die der Zeiger zeigt, nutzen zu können, muss der Zeiger erst dereferenziert<br />

werden. Dazu wird der Zeiger mit der folgenden Anweisung an die Struktur gebunden:<br />

SET ADDRESS OF STRUKTUR-DEFINITION TO EINGABE-ZEIGER.<br />

In [Rechenberg] ist »Dereferenzieren« wie folgt definiert:<br />

Der Übergang zum Wert <strong>einer</strong> durch Zeiger gegebenen Variablen heißt Dereferenzieren.<br />

Die Variable struktur-definition wird in der Regel nie als Parameter übergeben.<br />

Sie wird als Datenstrukturdefinition benötigt.<br />

Szenario #2. Dem Modul wird ein Zeiger übergeben, und der Entwickler möchte,<br />

dass dieser auf die Struktur eine-struktur zeigt. Dazu wird dem Zeiger auf folgende<br />

Weise die Adresse von eine-struktur zugewiesen:<br />

SET EINGABE-ZEIGER TO ADDRESS OF EINE-STRUKTUR.


22 Das Umfeld in der IZB SOFT<br />

2.4.6 Muster für den Modulaufruf<br />

Wie bereits festgestellt wurde, sind die Konzepte, die <strong>COBOL</strong> für die Kapselung auf<br />

verschiedenen Ebenen anbietet, sehr bescheiden. Darum werden Muster verwendet,<br />

mit denen weitere Konstrukte realisiert werden können.<br />

Ein Modul stellt logisch eine Menge von Prozeduren dar. Jede Prozedur hat eine Signatur,<br />

welche die Parameter spezifiziert. Die tatsächliche Schnittstelle eines <strong>COBOL</strong>-<br />

Moduls bietet jedoch nur einen Satz von Parametern an (vgl. Abschnitt 2.4.3). Das im<br />

Folgenden beschriebene Muster zeigt eine Abhilfe für diese Beschränkung:<br />

Es werden eine Enumeration und ein Zeiger übergeben. Die Enumeration spezifiziert,<br />

welche Operation aufgerufen werden soll; der Zeiger zeigt auf die Datenstruktur, in<br />

welche die Argumente für den Aufruf stehen. Das Modul, welches aufgerufen wird,<br />

evaluiert die Enumeration und legt dann die entsprechende Parameter-Struktur über<br />

das Argument. Danach wird die section ausgeführt, welche die spezifizierte Operation<br />

realisiert.<br />

2.4.7 Komponenten in <strong>COBOL</strong><br />

Eine Zerlegung in Module reicht für die in dieser Arbeit vorgestellten <strong>Anwendung</strong>en<br />

nicht aus: Sie sind zu groß. Es wird demnach ein Konstrukt benötigt, um mehrere<br />

Module zu gruppieren, die einen abgeschlossenen Dienst realisieren.<br />

In der Zusammenfassung der Architektur-Rahmenbedingungen (vgl. Abschnitt 2.3.2)<br />

wurde der Begriff »Komponente« bereits allgemein definiert. Im Folgenden wird dieser<br />

Begriff auf der Basis von <strong>COBOL</strong>-Konstrukten konkretisiert:<br />

Eine Komponente stellt ein rein logisches Konstrukt dar: Es gibt keinen Mechanismus<br />

in <strong>COBOL</strong>, der eine Komponente realisiert.<br />

Eine Komponente umfasst eine Menge von Modulen, Datenstrukturen und wiederverwendbaren<br />

Datenstrukturen (Copystrecken). Die gruppierten Module realisieren<br />

einen abgeschlossenen Dienst. Komponenten sind, wenn sie von außen betrachtet<br />

werden, schwarze Kästen.<br />

Nur über die definierten Schnittstellen kann mit <strong>einer</strong> Komponente kommuniziert<br />

werden. Eine Schnittstelle enthält Definitionen von Datenstrukturen und Signaturen<br />

von Operationen. Neben den Schnittstellen exportiert eine Komponente nur die wiederverwendbaren<br />

Datenstrukturen, welche in den Signaturen der Operationen vorkommen.<br />

Damit wird die Implementierung der Komponente, also die Module, welche<br />

die Operationen der Schnittstelle realisieren, vollständig gekapselt. Dazu muss der<br />

Entwickler sicherstellen, dass nur Module aufgerufen werden, für die logisch auch<br />

eine Schnittstelle definiert worden ist.


3 <strong>Modellbasierte</strong> Softwareentwicklung<br />

Diese Arbeit untersucht <strong>einer</strong>seits systematische Vorgehensweisen, um Software modellbasiert<br />

zu entwickeln, und betrachtet andererseits <strong>COBOL</strong>, eine Programmiersprache,<br />

die speziell bei IT-Systemen von Finanzdienstleistern oft eingesetzt wird.<br />

Auf den ersten Blick passen diese beiden Techniken nicht zusammen. <strong>Modellbasierte</strong><br />

Softwareentwicklung ist eine junge Vorgehensweise und muss erst noch beweisen, ob<br />

sie die erhoffte Verbesserung der <strong>Entwicklung</strong> auch in der Praxis leisten kann 9 . Die<br />

Legacy-Programmiersprache <strong>COBOL</strong>, die es schon seit 1959 gibt, ist gleichzeitig eine<br />

der meistverwendeten und meistkritisierten Programmiersprachen. Sie wird zwar den<br />

höheren Programmiersprachen zugeordnet, bietet aber kaum Mechanismen, mit denen<br />

man größerer <strong>Anwendung</strong>en effektiv zerlegen kann.<br />

Das ist jedoch der Grund, warum die beiden Techniken sich gut vereinbaren lassen:<br />

Wenn die verwendete Programmiersprache wenige Konzepte für die Modularisierung<br />

und Kapselung bietet, ermöglichen modellbasierte Softwareentwicklungsverfahren,<br />

auf logischer Ebene die Software zu zerlegen und deren Implementierungsdetails zu<br />

verstecken. 10<br />

3.1 Grundlagen der modellbasierten <strong>Entwicklung</strong><br />

Unter modellbasierter <strong>Entwicklung</strong> wird der Einsatz von systematischen Vorgehensweisen<br />

verstanden, die auf Modelle basieren. Ziel ist es, große Mengen an anfallenden<br />

Informationen sowie deren Komplexität in den Griff zu bekommen. Allerdings gibt es<br />

für solche Verfahren noch keine allgemeingültige Definition [Schätz].<br />

Modelle eignen sich ideal für die Aussparung von unnötigen Details und werden<br />

schon seit langem zum Entwickeln von Software eingesetzt. Viele der in der <strong>Entwicklung</strong><br />

eingesetzten Konzepte basieren auf Abstraktion und die Modellierung ist ein<br />

geeignetes Mittel, um die Abstraktion zu visualisieren [Booch].<br />

In <strong>einer</strong> modellbasierten Methodik sind aber Modelle viel mehr als reine Visualisierungsmittel<br />

von Software: Sie steuern die <strong>Entwicklung</strong> und sind die zentrale Stelle für<br />

9<br />

In diesem Bereich wird zurzeit viel geforscht. Einen Standard gibt es bereits: die Model Driven<br />

Architecture (MDA) der OMG. Internetseite: www.omg.org/mda.<br />

10 Dies könnte auch ein Grund dafür sein, warum im Bereich Embedded Systems vermehrt versucht<br />

wird, modellbasierte Methoden einzusetzen. Vgl. dazu [Schätz].<br />

23


24 <strong>Modellbasierte</strong> Softwareentwicklung<br />

die Informationserfassung des jeweiligen Arbeitsablaufes. Diese erweiterte Rolle beschreibt<br />

[Nobe] auf folgende Weise:<br />

Wenn wir einen <strong>Entwicklung</strong>sprozess auf Modellen aufbauen, werden diese<br />

zu den zentralen koordinierenden Elementen des Prozesses.<br />

Eine solche Rolle kann sowohl ein einziges Modell, als auch eine Menge von unabhängigen<br />

Modellen, nicht erfüllen. Deswegen beruht eine modellbasierte Methodik<br />

immer auf einem Modellsystem.<br />

Die wichtigsten Konzepte eines Modellsystems sind im Folgenden beschrieben, sowie<br />

in Abbildung 3-1 anhand eines Beispiels dargestellt. 11<br />

Modell. Ein Modellsystem ist in Modellebenen untergliedert. Jede Modellebene<br />

wird durch genau ein Modell repräsentiert, dessen Abstraktionsgrad von der Höhe der<br />

Ebene abhängt. Wichtig ist, dass zwischen den Modellen Zusammenhänge bestehen.<br />

Ein Modell hat die Aufgabe, das System aus seinem Blickwinkel vollständig zu beschreiben<br />

(self-contained view). Das heißt, der Betrachter benötigt keine weiteren<br />

Modelle, um diese Ebene des Systems zu verstehen [Jacobson1999].<br />

Zusammengenommen enthalten alle Modelle die gesamte Information, die für die<br />

<strong>Entwicklung</strong> notwendig ist. Es ist jedoch nicht zwingend, dass alle Informationen<br />

<strong>einer</strong> Ebene als Modell dargestellt werden. Verschiedene Repräsentationen von Informationen,<br />

wie z. B. Textdateien, können in die Modelle eingebunden werden. Um<br />

die Modelle zu repräsentieren, wird eine graphische Modellierungssprache gewählt.<br />

Bei der IZB SOFT wird die UML eingesetzt.<br />

Metamodelle. Ein Modell beschreibt eine Ebene des Systems. Dabei werden Modellierungskonzepte<br />

der Modellierungssprache angewendet, um die entsprechenden<br />

Aspekte des Systems zu modellieren. Diese Modellierungskonzepte zu beschreiben<br />

und deren Verwendung einzuschränken, ist Gegenstand der Metamodelle. Die Elemente<br />

eines Metamodells M Meta beschreiben und spezifizieren die Konzepte, die in<br />

dem Modell M eingesetzt werden. Jedes Modell wird durch ein Metamodell spezifiziert.<br />

Sichten. Für jedes Modell kann eine Menge von Sichten definiert werden. Eine<br />

Sicht ist ein Ausschnitt, also eine Teilmenge der Modellelemente. Alle Sichten zusammen<br />

enthalten alle Elemente des Modells. Die Sichten werden in Rational Rose 12<br />

durch Diagramme repräsentiert. Wie viele Diagramme benutzt werden und welche<br />

Elemente aus der Sicht dargestellt werden, ist schwer vorzugeben, da es stark von der<br />

Situation abhängt: Ein Paket mit 100 Klassen wird anders dargestellt als ein Paket mit<br />

3 Klassen. Deswegen ist die Wahl der Diagramme nicht zu restriktiv vorzugeben.<br />

11 Vgl. »Architektur von Informationssystemen« von E. J. Sinz in [Rechenberg].<br />

12 Rational Rose ist ein UML-basiertes <strong>Entwicklung</strong>swerkzeug. Es wird in der IZB SOFT eingesetzt.


Grundlagen der modellbasierten <strong>Entwicklung</strong> 25<br />

Zusammenhänge zwischen den Modellen. Entscheidend für die Bewältigung der<br />

Komplexität ist die Beschreibung der Zusammenhänge zwischen den Modellen. Dadurch<br />

lassen sich redundante Informationen automatisch ableiten und konsistent halten.<br />

Die Beziehungen dokumentieren auch die Rückverfolgbarkeit (traceability). Die<br />

Zusammenhänge der Modelle werden spezifiziert, in dem die Elemente der jeweiligen<br />

Metamodelle in Beziehung gestellt werden.<br />

Modellebenen<br />

Fachliche Sicht<br />

Sichten<br />

Komponentensicht<br />

Diagramme<br />

(Ergeben zusammen eine<br />

Instanz der Sicht)<br />

Fachliches Metamodell<br />

Fachliches<br />

Modell<br />

Abbildung<br />

Fachliches<br />

Modell auf<br />

Designmodell<br />

Designmetamodell<br />

Metamodelle<br />

Instanzen der<br />

Elemente des<br />

Metamodells<br />

Zusammenhänge<br />

zwischen den<br />

Metamodellen<br />

Modulsicht<br />

Designmodell<br />

Abbildung 3-1 Beispiel für ein Modellsystem<br />

Auf der Basis des Modellsystems wird ein systematisches Vorgehen für die Übergänge<br />

zwischen den Modellen definiert. Dieses systematische Vorgehen schafft eine<br />

Grundlage für die Generierung: Aus Modellen können Dokumente, Programme oder<br />

weitere Modelle generiert werden. Je nachdem was generiert werden soll, ändert sich<br />

die Genauigkeit der Modelle. So kann es sein, dass Modelle durch formale Spezifikationen,<br />

wie z. B. OCL 13 angereichert werden. Es ist nicht möglich, aus einem Modell<br />

gleichzeitig ein rein fachliches Konzept und ein Quelltext für eine spezifische<br />

<strong>COBOL</strong>-Umgebung zu erzeugen.<br />

Ein Modell mit einem hohen Abstraktionsgrad kann z. B. die Fachlichkeit eines Systems<br />

vermitteln. Mit einem solchen Modell wäre es möglich, über ein System zu diskutieren<br />

– ohne die technischen Details zu kennen. Außerdem wäre es möglich, aus<br />

einem solchen Modell ein Fachkonzept zu generieren.<br />

13 Mit der Object Constraint Language (OCL) können Beschränkungen der Modellelemente formuliert<br />

werden.


26 <strong>Modellbasierte</strong> Softwareentwicklung<br />

Ein Modell mit einem niedrigen Abstraktionsgrad kann z. B. einen vollständigen<br />

Bauplan <strong>einer</strong> Implementierung darstellen. Solch ein Modell würde es erlauben, Programmrahmen<br />

zu generieren.<br />

Vor folgender falschen Annahme sei gewarnt:<br />

Falsche Annahme. Aus einem einzigen Modell kann alles generiert werden. Ein<br />

Modell abstrahiert von Details. Bei der Generierung können nur Rahmen erzeugt<br />

werden. Die Details für die generierten Artefakte muss der Entwickler selbst hinzufügen.<br />

So kann z. B. aus einem fachlichen Modell ein technisches Modell nicht komplett<br />

generiert werden. Der automatische Übergang zwischen einem rein fachlichen<br />

Modell in ein technisches Modell kann nur folgendes leisten: Bereits definierte Rahmen<br />

für das technische Design können erzeugt werden. Die fachlichen Elemente können<br />

in die technischen Konzepte abgebildet werden. Alle rein technischen Aspekte<br />

müssen von den Entwicklern entworfen werden.<br />

Bei einem modellbasierten Vorgehen ist der Einsatz von Werkzeugen entscheidend.<br />

Sie unterstützen die <strong>Entwicklung</strong> an verschiedenen Stellen: Zum einen können sie die<br />

Übergänge zwischen den Modellebenen automatisieren, und zum anderen bei Änderungen<br />

in den tieferen Ebenen die höheren Ebenen nachziehen. Die Modelle der verschiedenen<br />

Ebenen per Hand konsistent zu halten, ist mit sehr viel Aufwand verbunden.<br />

Deswegen beschleunigen Werkzeuge die <strong>Entwicklung</strong>.


Das bisherige Vorgehen der IZB SOFT 27<br />

3.2 Das bisherige Vorgehen der IZB SOFT<br />

In diesem Abschnitt werden die internen Standards der IZB SOFT vorgestellt. Die<br />

Beschreibung der in den Standards definierten Modellen und Vorgehensweisen, stellt<br />

die Grundlage für die in dieser Arbeit entwickelte Methodik dar.<br />

Einige Aspekte der modellbasierten Methodik, welche bereits in der Praxis eingesetzt<br />

werden, hat die IZB SOFT bereits in ihren <strong>Entwicklung</strong>sprozess integriert. Die notwendigen<br />

Tätigkeiten, um die Modelle zu erstellen und zu pflegen, sind in Arbeitsabläufen<br />

14 (workflows) zusammengefasst. Alle Arbeitsabläufe (ausgenommen der Ablauf<br />

Umsetzen) sind in einem entsprechenden internen Standard beschrieben. Die<br />

Standards erläutern u. a. die für die Arbeitsabläufe benötigten Modelle. Diese Modelle<br />

erfassen die wichtigsten Konzepte, Spezifikationen, Entscheidungen und Dokumentationen<br />

eines Arbeitsablaufes.<br />

Anforderungsanalyse<br />

Analyse<br />

Fachliche<br />

Modellierung<br />

Disziplin<br />

Entwurf<br />

Implementierung<br />

Arbeitsablauf<br />

Technische<br />

Modellierung<br />

Umsetzung<br />

Abbildung 3-2 Einbettung der Arbeitsabläufe: Innerhalb der Iteration werden<br />

die Arbeitsabläufe, bei denen die Modelle erstellt werden, eingesetzt.<br />

In Abbildung 3-2 werden die Arbeitsabläufe den Disziplinen zugeordnet. Die Abläufe<br />

beschäftigen sich nicht ausschließlich mit der Modellierung. Deshalb werden in den<br />

folgenden Abschnitten, die nach Arbeitsabläufen gegliedert sind, nur die für die Modellierung<br />

relevanten Inhalte der Standards zusammengefasst. Die Beschreibung der<br />

14 Diese Arbeit lehnt sich bei den Begriffen an den RUP [Jacobson1999] an. Innerhalb der IZB SOFT<br />

werden andere Begriffe verwendet. So heißen z. B. Arbeitsabläufe bei der IZB SOFT Prozessschritte.


28 <strong>Modellbasierte</strong> Softwareentwicklung<br />

Arbeitsabläufe soll die Motivation der einzelnen Modelle erläutern sowie die Modelle<br />

voneinander abgrenzen.<br />

3.2.1 Anforderungsanalyse<br />

Gegenstand der Anforderungsanalyse ist die Untersuchung des Problembereichs und<br />

das Ermitteln von Anforderungen. Unter <strong>einer</strong> Anforderung wird eine Funktionalität,<br />

die das System zu erbringen hat, oder eine Eigenschaft, die von dem System verlangt<br />

wird, verstanden. Anforderungen werden in funktionale und nicht-funktionale Anforderungen<br />

aufgeteilt. Eine funktionale Anforderung spezifiziert, wie der Name schon<br />

sagt, eine Funktionalität, die das System anbieten soll. Diese Funktionalität kann z. B.<br />

ein fachlicher Dienst für den Gegenstandsbereich sein. Nicht-funktionale Anforderungen<br />

beschreiben Merkmale, die von dem System gefordert werden, wie z. B. Performance,<br />

Qualität, Bedienbarkeit, etc. Die Anforderungsanalyse betrachtet also das<br />

System vor dem Hintergrund des Gegenstandsbereichs von außen und definiert<br />

»Was« das System zu leisten hat.<br />

Die bestimmten funktionalen Anforderungen werden in Form von Modellen dokumentiert;<br />

die nicht-funktionalen Anforderungen werden entweder als Beschränkungen<br />

in die Modelle integriert oder als Text hinzugefügt. Die Dokumentation ist sehr wichtig,<br />

da sie die Grundlage für die weitere Modellierung darstellt. Die Anforderungsanalyse<br />

ist als Arbeitsablauf in den SBP eingegliedert. Der Standard »Anforderungsanalyse«<br />

[IZB 2002a] beschäftigt sich u. a. mit der Modellierung. Die relevanten Teile<br />

werden in den folgenden Abschnitten zusammengefasst.<br />

<strong>Anwendung</strong>sfallmodell. Ein <strong>Anwendung</strong>sfallmodell enthält Akteure, die mit <strong>Anwendung</strong>sfällen<br />

in Beziehung stehen. Ein Akteur liegt außerhalb des Systems und<br />

repräsentiert alles, was mit dem System interagiert. Das kann ein Mensch oder ein<br />

anderes System sein. Der Akteur verlangt funktionale Anforderungen, die das System<br />

zu leisten hat. Diese werden mit <strong>Anwendung</strong>sfällen dokumentiert. Nach [IZB 2002a]<br />

beschreibt ein <strong>Anwendung</strong>sfall »eine Abfolge von Aufgaben, in der die Interaktion<br />

des Akteurs mit dem System beschrieben wird, sowie die Aktivitäten, die im System<br />

erfolgen«.<br />

Nachdem ein Akteur einen <strong>Anwendung</strong>sfall initiiert, durchläuft der <strong>Anwendung</strong>sfall<br />

Aktivitäten – nicht notwendigerweise Interaktionen mit dem Akteur – bis er mit einem<br />

Ergebnis endet. Dieses Ergebnis muss dem Akteur in irgend<strong>einer</strong> Weise Nutzen<br />

bringen. Somit ist die Funktionalität, die das System zu erbringen hat, vollständig<br />

über <strong>Anwendung</strong>sfälle dokumentiert. 15<br />

15 Es gibt einige Punkte auf die beim Erstellen von <strong>Anwendung</strong>sfällen geachtet werden sollte;<br />

[Cockburn] behandelt ausführlich das effektive Schreiben von <strong>Anwendung</strong>sfällen.


Das bisherige Vorgehen der IZB SOFT 29<br />

Mit Paketen werden die <strong>Anwendung</strong>sfälle gruppiert. Diese Strukturierung hat keinen<br />

Einfluss auf die spätere Systemstruktur. Zum Beispiel könnte man die Anforderungen<br />

in »must-have«, »should-have« oder »can-do« strukturieren.<br />

<strong>Anwendung</strong>sfall-Feinbeschreibung. Eine Feinbeschreibung ist eine genaue Beschreibung<br />

des Ablaufes aus der Sicht der Akteure und muss zu jedem <strong>Anwendung</strong>sfall<br />

erstellt werden. Hierbei ist wichtig, alles im Aktiv zu formulieren und keine Details<br />

der Oberfläche oder Implementierung zu erläutern.<br />

Problembereichsmodell. Die Konzepte des Problembereichs werden durch Klassen<br />

dargestellt und ergeben ein konzeptionelles Modell. Die Klassen enthalten Attribute,<br />

die keinen Typ erfordern, und haben keine Operationen. Beziehungen zwischen<br />

den Konzepten werden dargestellt. Dabei ist zu beachten, dass bei Assoziationen die<br />

Kardinalitäten anzugeben sind. In der neuen Methodik ist dieses Modell in dem <strong>Anwendung</strong>sfallmodell<br />

enthalten.<br />

Oberflächen-Prototyp.Der Prototyp hat die Aufgabe, die Anforderungen zu verdeutlichen,<br />

damit man sich vom System ein Bild machen kann. Die Gestaltung kann<br />

und wird sich noch ändern. Das Prinzip des Rapid Prototyping wird verfolgt.<br />

Der Standard beschreibt die Verwendung von Prototypen, schließt aber die Nutzung<br />

anderer Möglichkeiten, sich ein Bild von dem System zu machen, nicht aus. Es muss<br />

nicht immer ein programmierter Prototyp sein. Oft werden einfach nur Storyboards<br />

gezeichnet, welche die graphische Oberfläche und den Ablauf grob darstellen.<br />

3.2.2 Fachliche Modellierung<br />

Die fachliche Modellierung ist ein Arbeitsablauf, der im <strong>Entwicklung</strong>sprozess ausgeführt<br />

wird. Gleichzeitig ist es der erste Arbeitsablauf des Systementwurfs. Ausgehend<br />

von der Anforderungsanalyse werden der generelle Aufbau sowie die grundlegende<br />

Struktur des Systems nach fachlichen Kriterien entworfen. Der hier zusammengefasste<br />

Standard »Fachliche Modellierung« [IZB 2002c] gibt eine Richtlinie für die<br />

Modellierung vor.<br />

Das fachliche Modell. Das fachliche Modell bietet eine Sicht auf das System, die<br />

von technischen Details abstrahiert. Das heißt, alle Entscheidungen, die einen technischen<br />

Hintergrund haben oder sich auf die Implementierungsumgebung beziehen,<br />

werden offen gelassen. Es zeigt die wesentlichen Abläufe, die sich aus den funktionalen<br />

Anforderungen ergeben und testet dabei, ob sie schlüssig und ohne Widersprüche<br />

sind.<br />

Da sich technische Details noch häufiger ändern als funktionale Anforderungen und<br />

diese Änderungen sich nicht im fachlichen Modell auswirken, ist es sinnvoll ein rein<br />

fachliches Modell, das technischen Details ausspart, zu entwerfen. Darüber hinaus<br />

lassen sich Änderungen der funktionalen Anforderungen leichter in ein fachliches


30 <strong>Modellbasierte</strong> Softwareentwicklung<br />

Modell integrieren, da auf keine technischen Beschränkungen Rücksicht genommen<br />

werden muss.<br />

Das Modell betrachtet sowohl die statische Struktur, wie z. B. die Anordnung der E-<br />

lemente und deren Beziehungen, als auch die dynamischen Interaktionen, welche die<br />

<strong>Anwendung</strong>sfälle aus der Analyse realisieren.<br />

Fachliche Klassen repräsentieren die Elemente des Systems auf <strong>einer</strong> fachlichen Ebene.<br />

Sie haben Attribute und Operationen, welche die Verantwortlichkeiten der Klasse<br />

repräsentieren. Außerdem stehen die fachlichen Klassen untereinander in Beziehung<br />

und erzeugen somit eine fachliche Struktur. Die fachlichen Klassen werden in drei<br />

Klassen unterteilt:<br />

¥<br />

¥<br />

¥<br />

Steuerungsklassen (control). Klassen, die den Ablauf steuern.<br />

Dialogklassen (boundary). Klassen, die mit Akteuren interagieren.<br />

Entitäten (entity). Klassen, welche die Schlüsselkonzepte aus dem <strong>Anwendung</strong>sbereich<br />

repräsentieren.<br />

Die Modellierung der Abläufe in separaten Steuerungsklassen verfolgt das Ziel, Abläufe,<br />

die sich häufiger ändern als die robusteren Entitäten, von diesen zu trennen.<br />

Fachliche Klassen werden mit fachlichen Paketen hierarchisch angeordnet. Diese dürfen<br />

weitere fachliche Pakete enthalten. Daraus ergibt sich eine rekursive Struktur mit<br />

der auch größere Systeme organisiert werden können. Die Pakete werden nach fachlichen<br />

Gesichtspunkten geschnitten. Dabei wird darauf geachtet, dass ein Paket sich in<br />

s<strong>einer</strong> Funktion von den anderen Paketen abgrenzt. Abhängigkeiten zwischen den<br />

Paketen, die sich aus den Beziehungen der fachlichen Klassen ergeben, werden gezeigt.<br />

Die Umsetzung der <strong>Anwendung</strong>sfälle in einem fachlichen Modell wird mit Sequenzdiagrammen<br />

beschrieben. Diese dokumentieren die <strong>Anwendung</strong>sfall-Realisierungen.<br />

Der Standard lässt es frei, weitere Diagramme zu nutzen.<br />

Der Leitfaden »Modellierung« konkretisiert die Vorgaben des Standards für das Umfeld<br />

von PROFiL. Die Bedeutung der verschiedenen fachlichen Klassen wird verf<strong>einer</strong>t.<br />

Insbesondere wird der Vorschlag gemacht, die Steuerungsklassen weiter zu unterteilen.<br />

Außerdem ist eine Namenskonvention für die Operationen darin enthalten.<br />

3.2.3 Technische Modellierung<br />

Die technische Modellierung verf<strong>einer</strong>t das fachliche Modell. Vor dem Hintergrund<br />

<strong>einer</strong> konkreten <strong>Entwicklung</strong>sumgebung wird der fachliche Entwurf mit technischen<br />

Details gefüllt. Hauptaufgabe ist es, bei der Verf<strong>einer</strong>ung die bereits besprochenen<br />

Architekturvorgaben umzusetzen. Der Arbeitsablauf technische Modellierung umfasst,<br />

wie auch die Abläufe zuvor, mehr als nur den Vorgang der Modellierung. Die


Das bisherige Vorgehen der IZB SOFT 31<br />

Ergebnisse des Ablaufes, nämlich die Modelle, werden durch den Standard: »Technische<br />

Modellierung« 16 [IZB 2003c] festgelegt. Auch hier ist es das Ziel, die Modelle<br />

mit <strong>einer</strong> standardisierten Notation zu vereinheitlichen. 17<br />

Designmodell.Gegenstand des Designmodells ist es, die Verteilung der Funktionalität<br />

auf die Designkomponenten aufzuzeigen. Die fachliche Aufgliederung aus dem<br />

fachlichen Modell wird hier in <strong>einer</strong> konkreten, technischen Umgebung modelliert.<br />

Außerdem sollen die Schnittstellen der Komponenten spezifiziert und die Abhängigkeiten<br />

der Komponenten gezeigt werden. Viele Elemente des Designmodells sind<br />

architekturrelevant. Deswegen sind auch die Konzepte »Schicht«, »Komponente« und<br />

»Schnittstelle« aus dem Standard »Architektur Rahmenbedingungen« [IZB 2002b]<br />

übernommen (vgl. Abschnitt 2.3.2).<br />

Eine Designkomponente ist ein Baustein, der wiederverwendet werden soll. Über eine<br />

oder mehrere Schnittstellen stellt eine Komponente ihre Dienste bereit. Eine Komponente<br />

kann ihre Dienste auf den Diensten <strong>einer</strong> anderen Komponente aufbauen und ist<br />

dann abhängig von der Schnittstelle der genutzten Komponente. Jede Komponente ist<br />

<strong>einer</strong> Schicht zugeordnet und kann aus weiteren Komponenten bestehen. Die Ausarbeitung<br />

der Komponenten und die Spezifikation der Elemente, welche notwendig<br />

sind, um die, in der Schnittstelle vereinbarten Leistungen, umzusetzen, werden mit<br />

modelliert. 18<br />

Ein Designpaket ist ein Gruppierungselement, dessen Elemente nicht mit Schnittstellen<br />

gekapselt werden.<br />

3.2.4 Umsetzung<br />

Bei der Umsetzung werden die Elemente des Designmodells in <strong>COBOL</strong>-Quelltext<br />

transformiert. Bei der Erstellung von <strong>COBOL</strong>-Modulen sollte unbedingt beachtet<br />

werden, dass diese entsprechend den Programmierrichtlinien [IZB 2002d] implementiert<br />

werden. Denn diese verbieten die Verwendung einiger <strong>COBOL</strong>-Konstrukte und<br />

weisen auf »schlechten Stil« hin. Für die meisten Projekte gibt es Rahmenprogramme,<br />

die verwendet werden müssen. Dazu kommen Muster, die in den Projekten üblich<br />

16 Der Standard beschreibt neben dem Designmodell auch das Implementierungs- und Laufzeitmodell.<br />

Letztere sind dem Arbeitsablauf Umsetzung zuzuordnen.<br />

17 Allerdings kommt an dieser Stelle ein neuer Aspekt hinzu: Die Modelle sollen mit einem Werkzeug<br />

erfasst und ausgewertet werden. Dieses Werkzeug nennt sich Bauplan. Allerdings ist Vorsicht geboten:<br />

Keine werkzeugbedingten Einschränkungen dürfen auferlegt werden, bevor die Art und Weise<br />

der Modellierung erprobt wurde, und sich das Vorgehen gefestigt hat.<br />

18 In der neuen Methodik werden die Komponenten mit <strong>einer</strong> Innenansicht ergänzt. Es wird also die<br />

Realisierung der Schnittstellen innerhalb der Komponente mit Modulen, Datenstrukturen und Copystrecken<br />

modelliert


32 <strong>Modellbasierte</strong> Softwareentwicklung<br />

sind, um bestimmte Aufgaben zu lösen. Allgemein geht es um die Realisierung der in<br />

den Modellen spezifizierten Funktionalität.<br />

Implementierungsmodell. Das Implementierungsmodell dokumentiert, welche<br />

Dateien für die Realisierung der Designkomponenten notwendig sind. Allgemeine<br />

Möglichkeiten für den Inhalt der Dateien sind: Quelltext, Binärcode, Tabellen, etc. In<br />

dieser Arbeit wird zwischen zwei Arten von Dateien unterschieden:<br />

¦ Die Moduldatei (bisher: Modul) repräsentiert eine <strong>COBOL</strong>-Quelltext-Datei.<br />

Die Copystreckedatei (bisher: Copystrecke) repräsentiert eine Quelltext-Datei<br />

<strong>einer</strong> Datenstruktur-Deklaration. Mit <strong>einer</strong> Datenstruktur können Parameter und<br />

¦<br />

Argumente für den Modulaufruf definiert werden (vgl. Abschnitt 2.4.4).<br />

Die Module werden von einem Übersetzer in Objekt-Dateien transformiert. Diese<br />

werden dann automatisch gelinkt. Aus diesem Grund hat jedes Modul automatisch<br />

eine gleichnamige Laufzeitkomponente. Eine Laufzeitkomponente repräsentiert eine<br />

ausführbare Datei.<br />

Um die Verwaltung zu erleichtern, werden die Dateien in <strong>einer</strong> Implementierungskomponente<br />

zusammengefasst. Eine Implementierungskomponente repräsentiert ein<br />

Verzeichnis mit Dateien. Auch wenn eine Designkomponente wieder aus Designkomponenten<br />

bestehen kann, werden die daraus abgeleiteten Implementierungskomponenten<br />

im Dateisystem nicht in geschachtelten Verzeichnissen abgelegt.<br />

Laufzeitmodell. Ein Klassendiagramm im Laufzeitmodell zeigt die Verteilung der<br />

Elemente des Implementierungsmodells auf Hardware-Knoten. Auf die Modellierung<br />

wird in dieser Arbeit nicht eingegangen, da die Standardisierung im Moment noch<br />

vorläufig ist.


Die Modelle der neuen Methodik im Überblick 33<br />

3.3 Die Modelle der neuen Methodik im Überblick<br />

Ziel dieser Arbeit ist es, eine durchgängige Methodik für die <strong>Entwicklung</strong> von<br />

<strong>COBOL</strong>-<strong>Anwendung</strong>en zu erstellen. Diese Methodik ist nicht »auf der grünen Wiese«<br />

entstanden, sondern baut auf <strong>einer</strong> bereits eingesetzten Vorgehensweise auf. Im vorangegangenen<br />

Abschnitt wurden die Standards zusammengefasst, welche die bisherige<br />

Vorgehensweise definieren. Da diese Standards unternehmensweit gültig sind,<br />

werden sie in der Regel allgemein gehalten. Die vorliegende Arbeit beschränkt sich<br />

jedoch auf die <strong>Entwicklung</strong> von <strong>COBOL</strong>-Diensten auf dem Backend. Deshalb wird<br />

die bisherige Vorgehensweise in den folgenden Kapiteln an einigen Stellen konkretisiert<br />

und erweitert. Um den Einstieg in das Fallbeispiel zu erleichtern, wird an dieser<br />

Stelle ein Überblick über die Struktur der Modelle gegeben.<br />

Die neue Methodik nennt sich modellbasierte <strong>Entwicklung</strong> von <strong>COBOL</strong>-<br />

<strong>Anwendung</strong>en (moCa) und basiert im Wesentlichen auf einem Modellsystem, <strong>einer</strong><br />

Notation und <strong>einer</strong> systematischen Vorgehensweise.<br />

Das Modellsystem besteht aus folgenden vier Modellen: (1) <strong>Anwendung</strong>sfallmodell,<br />

(2) Fachliches Modell, (3) Designmodell und (4) Implementierungsmodell.<br />

Die Struktur der Modelle wird in Abbildung 3-3 anhand <strong>einer</strong>, mit Anmerkungen ergänzten,<br />

Browser-Sicht von Rational Rose 19 verdeutlicht.<br />

<br />

Use Case View<br />

«modell» <strong>Anwendung</strong>sfallmodell<br />

Logical View<br />

«modell» Fachliches Modell<br />

«modell» Designmodell<br />

1. Methodischer Übergang<br />

2. Methodischer Übergang<br />

«modell» Implementierungsmodell<br />

Abbildung 3-3 Browser-Sicht auf die Modelle<br />

Auf jedes Modell sind verschiedene Sichten 20<br />

Tabelle 3-1 zusammengefasst.<br />

definiert. Diese Sichten sind in<br />

19<br />

Rational Rose setzt die Verwendung zweier Sichten (Use Case View und Logical View) auf das<br />

System voraus. Ein beliebiges Systemgesamtmodell enthält demnach vier Modelle in zwei Sichten<br />

unterteilt.


34 <strong>Modellbasierte</strong> Softwareentwicklung<br />

Tabelle 3-1 Die Modell-Sichten im Überblick<br />

Modell Sicht Beschreibung<br />

<strong>Anwendung</strong>sfallmodell <strong>Anwendung</strong>sfallsicht Zeigt die <strong>Anwendung</strong>sfälle.<br />

Problembereichssicht<br />

Zeigt die Konzepte der Domäne.<br />

Fachliches Modell Statische Sicht Zeigt die Struktur der fachlichen Klassen.<br />

Designmodell<br />

Dynamische Sicht<br />

Statische Komponentensicht<br />

Dynamische Komponentensicht<br />

Statische Modulsicht<br />

Dynamische Modulsicht<br />

Zeigt das Zusammenspiel der fachlichen<br />

Klassen.<br />

Zeigt die Struktur der Komponenten<br />

und die Komponenten von »außen«.<br />

Zeigt das Zusammenspiel der Komponenten.<br />

Zeigt die Komponenten von »innen«.<br />

Zeigt das Zusammenspiel der Module.<br />

Implementierungsmodell Dateisicht Zeigt die Dateien auf der Festplatte.<br />

Quelltextsicht<br />

Zeigt den Inhalt der Dateien, also den<br />

Quelltext.<br />

Für die graphische Notation, also die graphische Repräsentation der Elemente, wird<br />

die Unified Modeling Language (UML) verwendet. Mit ihren Erweiterungsmechanismen<br />

können die Konzepte der verschiedenen Modelle definiert und mit der UML-<br />

Notation dargestellt werden.<br />

Die systematische Vorgehensweise umfasst die beiden methodischen Übergänge, welche<br />

auch in Abbildung 3-3 dargestellt sind. Der erste methodische Übergang ist die<br />

Ableitung des Designmodells aus dem fachlichen Modell, also der Übergang von<br />

einem fachlichen Entwurf in einen technischen Entwurf. Der zweite methodische Ü-<br />

bergang besteht aus der Umsetzung des Designmodells in ein Implementierungsmodell.<br />

Darin ist auch die Umsetzung des Designmodells in <strong>COBOL</strong>-Quelltext enthalten.<br />

20 Vgl. Abschnitt 3.1.


4 Das Fallbeispiel »Kundenmappe«<br />

In diesem Kapitel wird die neue Methodik modellbasierte <strong>Entwicklung</strong> von <strong>COBOL</strong>-<br />

<strong>Anwendung</strong>en (moCa) anhand eines Beispiels vorgestellt. Ziel ist es, die Durchgängigkeit<br />

der neuen Methodik zu zeigen. Für das Beispiel ist ein Ausschnitt aus dem<br />

Projekt »Kundenmappe« gewählt worden. Das Projekt »Kundenmappe« ist ein Teilprojekt<br />

von PROFil (vgl. Abschnitt 2.1).<br />

Für ein durchgängiges Beispiel ist es wichtig, dass der Problembereich einfach zu<br />

verstehen ist. Deshalb sind die Konzepte der Domäne vereinfacht worden. Trotzdem<br />

bleibt die Problemstellung anspruchsvoll genug, um die wichtigsten Konzepte der<br />

Methodik am Beispiel und somit praxisnah vermitteln zu können.<br />

Damit man die Stellen, an denen von der bisherigen Vorgehensweise abgewichen<br />

wird, schnell erkennt, sind sie mit einem Warndreieck in der Marginale gekennzeichnet<br />

(vgl. Abbildung 4-1).<br />

Abbildung 4-1 Das Warndreieck zur Kennzeichnung der Änderungen<br />

4.1 Systemvision<br />

Im Folgenden wird die geforderte Funktionalität der vereinfachten <strong>Anwendung</strong>, die<br />

als Fallbeispiel dient, grob umrissen. Ihre Hauptaufgabe ist es, den Berater bei den<br />

Kundengesprächen zu unterstützen, indem sie alle Informationen über den Kunden an<br />

<strong>einer</strong> Stelle sammelt und damit eine zentrale Sicht auf die Kundendaten bereitstellt.<br />

Die <strong>Anwendung</strong> benötigt Funktionen, um die Daten der Geschäftspartner des Finanzinstituts<br />

zu bearbeiten, d. h. sie muss u. a. über eine Lese-Schnittstelle für Kundendaten<br />

verfügen. Mit den gelesenen Daten kann die <strong>Anwendung</strong> die zentrale Sicht zusammenstellen.<br />

Abbildung 4-2 zeigt, wie eine mögliche Gestaltung für die Masken der <strong>Anwendung</strong><br />

ausschauen könnte. Dem Berater wird die Maske Kunde finden angezeigt. Im Eingabefeld<br />

gibt er die Nummer des Kunden ein. Daraufhin wird ihm mit der Maske Kundendaten<br />

eine Übersicht der Kundendaten präsentiert. Von dort aus wechselt der Berater<br />

zu der Maske Auswahl.<br />

35


36 Das Fallbeispiel »Kundenmappe«<br />

Der in der Übersicht angezeigte Kunde ist bereits in die Auswahl 21 aufgenommen.<br />

Jetzt hat der Berater folgende Möglichkeiten: Er entfernt einen Kunden aus der Auswahl;<br />

er fügt einen weiteren Kunden hinzu (über die Maske Kunde finden); er selektiert<br />

und deselektiert die Kunden der Auswahl. Hat der Berater die gewünschte Auswahl<br />

erstellt, wechselt er mit Anzeigen zu der Maske Kundenmappe. Diese Maske<br />

zeigt die Summen des Vermögens aller selektierten Kunden der Auswahl an.<br />

Kunde finden<br />

(1) Kundendaten (2)<br />

Kundennummer<br />

eingeben:<br />

374<br />

Anrede:<br />

Vorname:<br />

Nachname:<br />

Herr<br />

Peter<br />

Meier<br />

Auswahl<br />

Auswahl<br />

(3) Kundenmappe (4)<br />

Herr Peter Meier<br />

Entfernen<br />

Datum: 3.8.2003<br />

Peter Meier<br />

Summe Vermögen:<br />

300,- Euro<br />

Hinzufügen<br />

Anzeigen<br />

Auswahl<br />

Abbildung 4-2 Eine mögliche Gestaltung der Masken<br />

21 Das Konzept, zuerst eine Auswahl zu erstellen, und dann die Kundenmappe angezeigt zu bekommen,<br />

erscheint etwas ungewöhnlich. Dieses Vorgehen wurde aber vom Auftraggeber des PROFil-<br />

Projekts »Kundenmappe« so gewünscht. Deswegen wurde dieses Konzept auch für das Fallbeispiel<br />

übernommen.


<strong>Anwendung</strong>sfallmodell 37<br />

4.2 <strong>Anwendung</strong>sfallmodell<br />

Die Systemvision bietet ein erstes Verständnis über die zu erwartenden Leistungen<br />

der Systeme. In diesem Abschnitt soll nun die geforderte Funktionalität mit <strong>Anwendung</strong>sfällen<br />

genauer beschrieben werden. Abbildung 4-3 zeigt den Fokus dieses Abschnitts.<br />

<br />

Use Case View<br />

«modell» <strong>Anwendung</strong>sfallmodell<br />

Logical View<br />

«modell» Fachliches Modell<br />

«modell» Designmodell<br />

Abbildung 4-3 Das Modell der Analyse<br />

4.2.1 <strong>Anwendung</strong>sfallsicht<br />

«modell» Implementierungsmodell<br />

Dieser Abschnitt beschreibt die <strong>Anwendung</strong>sfallsicht auf das <strong>Anwendung</strong>sfallmodell.<br />

Zuerst wird aber eine Erweiterung erläutert: Da zwischen Backend und Frontend getrennt<br />

wird (vgl. Abschnitt 2.3.2), ist es wichtig, die Trennung auch bei der Beschreibung<br />

von <strong>Anwendung</strong>sfällen fortzusetzen. Demnach gibt es zwei Bereiche: Der erste<br />

Bereich beschreibt aus der Außenansicht des Anwenders die Anforderung an das<br />

Frontend. Der zweite Bereich beschreibt die Anforderung des Frontends an das Backend.<br />

Dadurch wird die Steuerung der weiteren Modellierung durch die <strong>Anwendung</strong>sfälle<br />

ermöglicht.<br />

Der Ausschnitt des Projekts »Kundenmappe« ist in zwei Systeme zerlegt: (1) das System<br />

Kundenmappe und (2) das System Partner. Die Kundenmappe benötigt die<br />

Dienste des Systems Partner. Somit werden auch Abhängigkeiten zwischen Systemen<br />

behandelt.<br />

Überblick über die <strong>Anwendung</strong>sfälle. Abbildung 4-4 zeigt ein <strong>Anwendung</strong>sfalldiagramm,<br />

in dem die <strong>Anwendung</strong>sfälle der Systeme Kundenmappe und Partner<br />

modelliert sind. Die Pakete mit dem Stereotypen «frontend» und «backend» zeigen<br />

die Unterteilung der <strong>Anwendung</strong>sfälle. Ein <strong>Anwendung</strong>sfall für das Backend stellt<br />

einen Geschäftsvorfall dar (vgl. Abschnitt 2.3.2).


38 Das Fallbeispiel »Kundenmappe«<br />

Berater<br />

«anwendungsfallsystem»<br />

Kundenmappe<br />

«frontend»<br />

«anwendungsfallsystem»<br />

Partner<br />

«frontend»<br />

«include»<br />

Kundenmappe<br />

anzeigen<br />

BeteiligteParteien<br />

auswählen<br />

Kunde finden<br />

«backend»<br />

«backend»<br />

Kundenmappe<br />

erstellen<br />

BeteiligtePartei<br />

finden<br />

Adresssatz<br />

finden<br />

Abbildung 4-4 Die <strong>Anwendung</strong>sfälle im Überblick<br />

Beschreibung der <strong>Anwendung</strong>sfälle. Im Folgenden werden alle <strong>Anwendung</strong>sfälle<br />

der Abbildung 4-4 in textueller Form beschrieben. Unter Bereich wird gekennzeichnet,<br />

ob es sich um einen <strong>Anwendung</strong>sfall des Front- oder des Backends handelt;<br />

unter Akteur wird der Initiator des <strong>Anwendung</strong>sfalls bestimmt; die Eingabe spezifiziert<br />

die Daten, die vom <strong>Anwendung</strong>sfall benötigt werden; die Ausgabe beschreibt<br />

welche Daten als Ergebnisse nach Beendigung des <strong>Anwendung</strong>sfalls vorhanden sind.<br />

Ein unterstrichener Name eines <strong>Anwendung</strong>sfalls (z. B. Adresssatz finden) bedeutet,<br />

dass der unterstrichene <strong>Anwendung</strong>sfall an dieser Stelle ausgeführt wird.


<strong>Anwendung</strong>sfallmodell 39<br />

<strong>Anwendung</strong>sfall 4-1 Kunde finden<br />

Der Berater möchte über das Terminal die Daten eines Kunden anzeigen lassen.<br />

Akteur: Berater.<br />

Bereich: Partner Frontend.<br />

Eingabe: Eine Adresssatznummer.<br />

Ausgabe: Die Daten des durch die Adresssatznummer spezifizierten Kunden.<br />

Standardablauf:<br />

1. Der Berater gibt die Adresssatznummer eines Kunden ein.<br />

2. Wenn über Adresssatz finden Daten gefunden wurden, bekommt der Berater eine<br />

Übersicht über die Kundendaten angezeigt.<br />

3. Ansonsten erscheint eine Fehlermeldung.<br />

Ausnahme: Wenn Kunde finden innerhalb eines Ausfluges ausgeführt wird, wird keine<br />

Übersicht angezeigt.<br />

<strong>Anwendung</strong>sfall 4-2<br />

BeteiligtePartei auswählen<br />

Es gilt eine Menge von beteiligten Parteien zusammenzufassen. Diese Menge wird<br />

»Auswahl« genannt. Innerhalb der Auswahl kann eine beteiligte Partei entweder selektiert<br />

oder deselektiert sein.<br />

Akteur: Berater.<br />

Bereich: Kundenmappe Frontend.<br />

Eingabe: Eine Auswahl von beteiligten Parteien.<br />

Ausgabe: Eine Auswahl von beteiligten Parteien.<br />

Standardablauf:<br />

1. Der Berater bekommt eine Liste von beteiligten Parteien angezeigt. Diese Liste wird<br />

mit Auswahl bezeichnet.<br />

2. Der Berater kann jetzt beliebig oft einen neuen Kunden hinzufügen:<br />

a) Mit Kunde finden wird ein Adresssatz gefunden;<br />

b) Mit Beteiligte Partei finden wird eine beteiligte Partei gefunden;<br />

c) Die beteiligte Partei wird der Auswahl hinzugefügt.<br />

3. Der Berater kann einen Kunden aus der Auswahl entfernen.<br />

4. Der Berater kann beliebig oft den Status <strong>einer</strong> beteiligten Partei in selektiert oder<br />

deselektiert ändern.<br />

<strong>Anwendung</strong>sfall 4-3 Kundenmappe anzeigen<br />

Aus der Auswahl wird die Kundenmappe erstellt und die Informationen dem Berater angezeigt.<br />

Akteur: Berater.<br />

Bereich: Kundenmappe Frontend.<br />

Eingabe: Eine Auswahl von beteiligten Parteien.<br />

Ausgabe: Die für die spezifizierte Auswahl erstellte Kundenmappe.<br />

Standardablauf:<br />

1. Der Berater fordert das System auf, für seine Auswahl an beteiligten Parteien die<br />

Kundenmappe anzuzeigen.<br />

2. Über Kundenmappe erstellen wird die Kundenmappe erstellt.<br />

3. Die Kundenmappe wird dem Berater angezeigt.


40 Das Fallbeispiel »Kundenmappe«<br />

<strong>Anwendung</strong>sfall 4-4 Übergreifendes <strong>Anwendung</strong>sszenario<br />

Standardablauf:<br />

1. Der Berater findet eine Kunden über Kunde finden.<br />

2. Der Berater bekommt über Beteiligte Partei auswählen die Auswahl angezeigt und<br />

kann jetzt neue Kunden zur Auswahl hinzufügen und den Status der beteiligten Parteien<br />

in der Auswahl ändern.<br />

4. Der Berater lässt sich mit Kundenmappe anzeigen die Informationen anzeigen.<br />

<strong>Anwendung</strong>sfall 4-5 Adresssatz finden<br />

Das Frontend benötigt Daten eines Kunden.<br />

Akteur: Frontend.<br />

Bereich: Partner Backend.<br />

Eingabe: Eine Adresssatznummer.<br />

Ausgabe: Ein Exemplar der Entität Adresssatz. Dies ist der Adresssatz für die spezifizierte<br />

Adresssatznummer.<br />

Standardablauf:<br />

1. Das Frontend übergibt die Adressnummer eines Kunden.<br />

2. Wenn ein Adresssatz existiert, wird der Adresssatz zurückgeliefert.<br />

3. Ansonsten wird ein Fehlercode zurückgeliefert.<br />

<strong>Anwendung</strong>sfall 4-6 BeteiligtePartei finden<br />

Neue <strong>Anwendung</strong>en kennen nur beteiligte Parteien. Deswegen muss die zu einem Adresssatz<br />

gehörige beteiligte Partei gefunden werden oder gegebenenfalls neu angelegt<br />

werden.<br />

Akteur: Frontend.<br />

Bereich: Partner Backend.<br />

Eingabe: Ein Exemplar der Entität Adresssatz.<br />

Ausgabe: Das Exemplar der Entität BeteiligtePartei, welches dem spezifizierten Adresssatz<br />

zugeordnet ist.<br />

Standardablauf:<br />

1. Das Frontend übergibt einen Adresssatz eines Kunden.<br />

2. Das Backend prüft, ob eine BeteiligtePartei für den Adresssatz existiert.<br />

3. Wenn nicht, wird eine neue BeteiligtePartei angelegt.<br />

4. Die BeteiligtePartei wird auf Konsistenz geprüft.<br />

5. Das Backend gibt die BeteiligtePartei zurück.


<strong>Anwendung</strong>sfallmodell 41<br />

<strong>Anwendung</strong>sfall 4-7 Kundenmappe erstellen<br />

Anhand <strong>einer</strong> Auswahl wird eine Kundenmappe erstellt.<br />

Akteur: Frontend.<br />

Bereich: Kundenmappe Backend.<br />

Eingabe: Ein Exemplar der Entität Auswahl.<br />

Ausgabe: Ein Exemplar der Entität Kundenmappe. Dieses Objekt wird aus der Auswahl<br />

erzeugt.<br />

Standardablauf:<br />

1. Das Frontend übergibt eine Auswahl von beteiligten Parteien. Innerhalb der Auswahl<br />

sind die beteiligten Parteien entweder selektiert oder deselektiert.<br />

2. Das Backend erstellt die Kundenmappe mit der berechneten Summe des Vermögens<br />

der beteiligten Parteien.<br />

3. Das Backend gibt die Kundenmappe zurück.<br />

4.2.2 Modellierung der Beschreibung<br />

Mithilfe eines Sequenzdiagramms kann der Ablauf eines <strong>Anwendung</strong>sfalls modelliert<br />

werden. Abbildung 4-5 und Abbildung 4-6 zeigen exemplarisch die Sequenzdiagramme<br />

für den <strong>Anwendung</strong>sfall Adresssatz finden und BeteiligtePartei finden.<br />

Die Sequenzdiagramme modellieren die Beschreibung. Dabei wird aus jedem Schritt<br />

der Beschreibung (ein Schritt ist durch eine Nummer gekennzeichnet) eine Nachricht,<br />

die durch einen Pfeil dargestellt wird. Eine Nachricht an das Backend wird mit einem<br />

durchgezogenen Pfeil modelliert; die Antwort des Backends wird mit einem gestrichelten<br />

Pfeil dargestellt. Die Argumente <strong>einer</strong> Nachricht werden innerhalb von runden<br />

Klammern spezifiziert.<br />

: Frontend partner : Backend<br />

Finde Adresssatz über Adresssatznummer (adresssatznummer)<br />

[Adresssatz gefunden] Adresssatz<br />

[Sonst] Fehlercode<br />

Abbildung 4-5 Das Sequenzdiagramm Adresssatz finden


42 Das Fallbeispiel »Kundenmappe«<br />

: Frontend partner : Backend<br />

Finde BeteiligtePartei über Adresssatz (adresssatz)<br />

Prüfe ob eine BeteiligtePartei für den Adresssatz existiert (adresssatz)<br />

[BeteiligtePartei existiert nicht] Erzeuge eine neue BeteiligtePartei (adresssatz)<br />

Überprüfe die Konsistenz der BeteiligtenPartei (beteiligtePartei)<br />

[Konsistent] Beteiligte Partei<br />

[Sonst] Fehlercode<br />

Abbildung 4-6 Das Sequenzdiagramm BeteiligtePartei finden<br />

4.2.3 Problembereichsicht<br />

Die Problembereichssicht ist eine konzeptionelle Sicht auf die Entitäten der Domäne.<br />

Die Konzepte des Problembereichs werden durch Klassen dargestellt, welche Attribute,<br />

aber keine Operationen enthalten. In Abbildung 4-7 sind die im Folgenden beschriebenen<br />

Konzepte modelliert.<br />

Kundendaten sind in Adresssätzen abgespeichert. Für einen Kunden können mehrere<br />

Adresssätze existieren. Solche Kunden sind in unserem Beispiel nicht zulässig: Es<br />

werden nur Kunden mit einem einzigen Adresssatz betrachtet.<br />

Adresssätze können in Kundeneinheiten (KU-Verknüpfung) zusammengefasst werden.<br />

Dieses Konzept würde die Komplexität des Fallbeispiels unnötig vergrößern, deswegen<br />

wird es im Fallbeispiel ausgespart.


<strong>Anwendung</strong>sfallmodell 43<br />

Die Daten aus den Adresssätzen, die zu einem Kunden gehören, werden in <strong>einer</strong> BeteiligtenPartei<br />

zusammengefasst. Das SKO-Datenmodell 22 definiert eine beteiligte<br />

Partei folgendermaßen:<br />

Eine beteiligte Partei ist eine natürliche Person, eine Organisation, eine Organisationseinheit<br />

oder eine Gemeinschaft, über die das Finanzinstitut Informationen<br />

führen möchte, um mit ihr optimal kooperieren zu können.<br />

Eine beteiligte Partei wird aus den Adresssätzen erzeugt. Die Zuordnung zwischen<br />

<strong>einer</strong> beteiligten Partei und den dazugehörigen Adresssätzen kann sehr kompliziert<br />

werden. Deswegen darf in unserem Beispiel die beteiligte Partei nur in Form <strong>einer</strong><br />

natürlichen Person auftreten, bei der die Zuordnung zwischen <strong>einer</strong> beteiligten Partei<br />

und dem Adresssatz 1:1 ist.<br />

Ergänzend zu den aus den Adresssätzen gesammelten Daten können weitere Informationen<br />

über den Kunden, wie z. B. seine Hobbys, in der beteiligten Partei gespeichert<br />

werden.<br />

Die Auswahl besteht aus <strong>einer</strong> Anzahl von beteiligten Parteien. Sie hat Kenntnis darüber,<br />

ob eine beteiligte Partei der Auswahl selektiert ist oder nicht. Bei der Berechnung<br />

der Summe der Vermögenswerte werden nur die beteiligten Parteien berücksichtigt,<br />

die auch selektiert sind.<br />

Die Kundenmappe dient zur Präsentation von Kundendaten. Sie stellt eine zentrale<br />

Sicht auf die Daten <strong>einer</strong> Menge von beteiligten Parteien dar. In diesem Fallbeispiel<br />

sind die Kundendaten auf das Vermögen begrenzt. Die Kundenmappe berechnet die<br />

Summe des Vermögens für die Menge der ausgewählten beteiligten Parteien. Normalerweise<br />

werden die verschiedenen Vermögenswerte aus unterschiedlichen Datenspeichern<br />

zusammengetragen. Im Fallbeispiel erhält jede beteiligte Partei einen Wert,<br />

der ihren Vermögensstand repräsentiert.<br />

Kundenmappe<br />

Auswahl<br />

WähltAus<br />

BeteiligtePartei<br />

Adresssatz<br />

+ datum 0..* 1<br />

0..* 0..* + vermögenswert 0..1 0..1 + adresssatznummer<br />

/+ summe des<br />

+ anrede<br />

Vermögens<br />

+ vorname<br />

+ nachname<br />

NatürlichePerson<br />

Abbildung 4-7 Die Entitäten der Problembereichsicht<br />

22 SKO steht für Sparkassen-Organisation. Das Datenmodell definiert, welche Daten von <strong>einer</strong> Sparkasse<br />

erfasst werden. Es ist innerhalb der IZB SOFT als CD erhältlich.


44 Das Fallbeispiel »Kundenmappe«<br />

4.3 Fachliches Modell<br />

Die <strong>Anwendung</strong>sfälle für das Backend spezifizieren die Anforderungen an die <strong>Anwendung</strong>.<br />

Das System wird dabei von außen betrachtet und es wird festgelegt, welche<br />

Funktionen von der <strong>Anwendung</strong> geleistet werden muss. Nun wird die Perspektive<br />

gewechselt und die <strong>Anwendung</strong> von innen angeschaut. Zunächst ist nur die Fachlichkeit<br />

von Interesse. Technische Gesichtspunkte werden außen vorgelassen. Das fachliche<br />

Modell beschreibt sowohl die statische Struktur, als auch die dynamischen Abläufe<br />

beider Systeme aus fachlicher Sicht. Abbildung 4-8 zeigt den Fokus dieses Abschnitts.<br />

<br />

Use Case View<br />

«modell» <strong>Anwendung</strong>sfallmodell<br />

Logical View<br />

«modell» Fachliches Modell<br />

«modell» Designmodell<br />

«modell» Implementierungsmodell<br />

Abbildung 4-8 Das Modell des fachlichen Entwurfs<br />

4.3.1 Statische Sicht: Die Hierarchie der fachlichen Klassen<br />

Die statische Sicht zeigt, wie die geforderte Funktionalität auf eine Struktur abgebildet<br />

werden kann. Dargestellt wird diese in einem oder mehreren Klassendiagrammen.<br />

Die Elemente der Struktur sind fachliche Klassen und fachliche Pakete. Die fachlichen<br />

Pakete gruppieren die fachlichen Klassen und können wiederum fachliche Pakete<br />

enthalten. Dadurch wird eine hierarchische Struktur geschaffen. Ein Paket auf der<br />

höchsten Ebene der Hierarchie wird mit dem Stereotyp «fachlichesSystem» 23 versehen,<br />

da es die Grenze eines Systems darstellt.<br />

Überblick über das fachliche Modell. Die Zerlegung der <strong>Anwendung</strong> in zwei Systeme,<br />

wie bereits im <strong>Anwendung</strong>sfallmodell gezeigt wurde (vgl. Abbildung 4-4), wird<br />

im fachlichen Modell übernommen. Abbildung 4-9 zeigt die vollständige Hierarchie<br />

der <strong>Anwendung</strong>. Beide Systeme Kundenmappe und Partner werden jeweils durch ein<br />

23 Für die Erweiterungsmechanismen der UML vgl. Kapitel 5.


Fachliches Modell 45<br />

fachliches Paket dargestellt. Da sie die höchsten Elemente in der Hierarchie sind (top<br />

level), haben sie das Stereotyp «fachlichesSystem».<br />

Für die Durchgängigkeit zu den technischen Modellen ist es wichtig, elementare Pakete<br />

bestimmen zu können. Deshalb gilt folgende Einschränkung: Wenn innerhalb<br />

eines fachlichen Pakets eine fachliche Klasse liegt, darf kein weiteres Paket im Paket<br />

enthalten sein.<br />

«fachlichesSystem»<br />

Kundemappe<br />

«fachlichesSystem»<br />

Partner<br />

«fachlichesPaket»<br />

BeteiligtePartei<br />

«fachlichesPaket»<br />

Adresssatz<br />

KundenmappeErsteller<br />

BeteiligteParteiVerwalter<br />

AdresssatzFinder<br />

Erstellt<br />

Findet, erzeugt und löscht<br />

Findet<br />

WähltAus<br />

0..*<br />

1 0..*<br />

0..*<br />

0..1 0..1<br />

Kundenmappe<br />

Auswahl<br />

BeteiligtePartei<br />

Adresssatz<br />

NatürlichePerson<br />

Abbildung 4-9 Das fachliche Modell im Überblick<br />

Das System Partner hat die Aufgabe, Kundendaten bereitzustellen. Um beide Konzepte,<br />

Adresssatz und BeteiligtePartei, zu trennen, ist das System in zwei fachlichen<br />

Pakete untergliedert. Beide Pakete stellen einen Dienst bereit und sind in ihrer Funktion<br />

klar abgegrenzt. Fachliche Pakete werden im Modell durch ein Paket mit dem<br />

Stereotyp «fachlichesPaket» repräsentiert.


46 Das Fallbeispiel »Kundenmappe«<br />

Das System Kundenmappe hat die Aufgabe, eine zentrale Sicht auf alle Daten <strong>einer</strong><br />

Menge von beteiligten Parteien zu erstellen. Es gruppiert die fachlichen Klassen, die<br />

diesen Dienst realisieren.<br />

Aus den Entitäten des Problembereichs (vgl. Abbildung 4-7) werden Entitäten im<br />

fachlichen Modell. Entitäten im fachlichen Modell haben, im Gegensatz zu den Entitäten<br />

im Problembereichsmodell, Operationen. Auch die Organisation der fachlichen<br />

Klassen in fachliche Pakete wird erst im fachlichen Modell getroffen.<br />

Die fachlichen Klassen in Beziehung zu setzen, ist eine wichtige Aufgabe, weil dadurch<br />

eine fachliche Struktur entsteht. Um die Wahl der Beziehungen zu erleichtern,<br />

werden die Empfehlungen aus dem Standard eingeschränkt: Abhängigkeiten bestehen<br />

nur zwischen den fachlichen Paketen. Die Beziehungen zwischen fachlichen Klassen<br />

sind beschränkt auf Assoziationen. Nur zwischen Entitäten dürfen die Assoziationen<br />

zu Aggregation verf<strong>einer</strong>t werden, und nur zwischen Entitäten darf eine Generalisierungsbeziehung<br />

vorkommen.<br />

Beziehungen zu den <strong>Anwendung</strong>sfällen. Um einen <strong>Anwendung</strong>sfall zu realisieren,<br />

wird in der Regel eine Steuerklasse («control») benötigt, die den Dienst anbietet<br />

und den Ablauf steuert. Das Zusammenspiel mehrerer Klassen, das durch eine Steuerklasse<br />

koordiniert wird, realisiert einen <strong>Anwendung</strong>sfall. Abbildung 4-10 zeigt welches<br />

Paket einen <strong>Anwendung</strong>sfall realisiert. Das heißt ein Paket, welches die Steuerungsklasse<br />

enthält, die den <strong>Anwendung</strong>sfall abwickelt, realisiert diesen <strong>Anwendung</strong>sfall<br />

24 .<br />

Das fachliche Paket Adresssatz enthält die Steuerungsklasse AdresssatzFinder, die<br />

den Geschäftsvorfall Adresssatz finden realisiert. Die Steuerungsklasse BeteiligteParteiVerwalter,<br />

die im Paket BeteiligtePartei enthalten ist, realisieren den <strong>Anwendung</strong>sfall<br />

Beteilige Partei finden. Der <strong>Anwendung</strong>sfall Kundenmappe erstellen wird durch<br />

das Paket Kundenmappe realisiert, da dieses Paket die Steuerungsklasse KundenmappeErsteller<br />

umfasst. Die Beziehung von einem Paket zum <strong>Anwendung</strong>sfall wird<br />

durch eine Abhängigkeit mit dem Stereotyp «realisiert» modelliert.<br />

Detailansicht der fachlichen Klassen. Eine fachliche Klasse kann Auskunft über<br />

die Werte ihrer Attribute liefern und diese ändern. Operationen für den Zugriff müssen<br />

dafür nicht zusätzlich modelliert werden. Attribute beginnen immer mit einem<br />

kleinen Buchstaben 25 . Zur Laufzeit hat eine Steuerklasse Verbindungen zu Instanzen<br />

von fachlichen Klassen (Parameter, Entitäten). Diese werden durch Assoziationen<br />

modelliert. In den folgenden Absätzen werden die Modellierungsdetails der fachlichen<br />

Klassen des Fallbeispiels beschrieben.<br />

24 Vgl. Abschnitt 4.3.2.<br />

25 Eine Zusammenstellung der fachlichen Typen sowie die Beschreibung der Syntax der Operationen<br />

sind im Abschnitt 5.2.1 enthalten.


Fachliches Modell 47<br />

Kundenmappe erstellen BeteiligtePartei finden Adresssatz finden<br />

<strong>Anwendung</strong>sfallmodell<br />

Fachliches Modell<br />

«realisiert» «realisiert» «realisiert»<br />

«fachlichesSystem»<br />

Kundenmappe<br />

«fachlichesPaket»<br />

BeteiligtePartei<br />

«fachlichesPaket»<br />

Adresssatz<br />

Abbildung 4-10 Die Beziehungen zu den <strong>Anwendung</strong>sfällen<br />

Eine Steuerklasse im Fallbeispiel ist AdresssatzFinder. Sie trägt die Verantwortung,<br />

zu <strong>einer</strong> Adresssatznummer einen Adresssatz zu finden. Abbildung 4-11 zeigt, wie<br />

diese Verantwortung mit der Operation findeAdresssatz modelliert wird. Zu beachten<br />

ist, dass sowohl der Typ der Parameter, als auch der Typ der Rückgabe spezifiziert ist.<br />

Mit <strong>einer</strong> Assoziation zwischen AdresssatzFinder und Adresssatz wird modelliert,<br />

dass die Steuerungsklasse zur Laufzeit eine Beziehung zu <strong>einer</strong> Instanz des Rückgabetyps<br />

Adresssatz hat. Die Assoziation ist gerichtet, ein Ende ist also navigierbar.<br />

Dies bedeutet, dass die Steuerklasse die fachliche Klasse findet und als Ergebnis ü-<br />

bergibt – die fachliche Klasse weiß jedoch nichts über die Steuerklasse.<br />

«control»<br />

AdresssatzFinder<br />

+ findeAdresssatz(adresssatzNummer : PositiveGanzzahl) : Adresssatz<br />

Abbildung 4-11 Die Steuerungsklasse Adresssatz Finder<br />

Der Adresssatz wird repräsentiert durch die Entität Adresssatz, deren Attribute in<br />

Abbildung 4-12 dargestellt sind. Ein Adresssatz kann über Anrede, Vornamen und<br />

Namen eines Kunden Auskunft geben. Er weiß auch, von welchem Typ sie sind. Diese<br />

Verantwortung wird mit Attributen modelliert.<br />

«primaryKey»<br />

«entity»<br />

Adresssatz<br />

+ adresssatzNummer : PositiveGanzzahl<br />

+ anrede : Zeichenkette<br />

+ vorname : Zeichenkette<br />

+ name : Zeichenkette<br />

Abbildung 4-12 Die Entität Adresssatz


48 Das Fallbeispiel »Kundenmappe«<br />

Die Attribute haben immer einen konzeptionellen Typ – dieser ermöglicht Abbildung<br />

der Attribute in ein technisches Modell, indem man den konzeptionellen Typ in <strong>einer</strong><br />

konkreten technischen Umgebung verf<strong>einer</strong>t.<br />

Ein Attribut kann mit Stereotypen genauer definiert werden. Zum Beispiel, bedeutet<br />

das Stereotyp «primaryKey», dass es sich beim Attribut um einen eindeutigen Schlüssel<br />

handelt, d. h. es ist ausgeschlossen, dass zwei Adresssätze dieselben Nummern<br />

haben können. Kann auf ein Attribut nur lesend zugegriffen werden, ist es mit dem<br />

Stereotyp «readonly» zu kennzeichnen.<br />

Der BeteiligteParteiVerwalter hat als öffentlichen Dienst, die Aufgabe zu einem Adresssatz<br />

eine beteiligte Partei zu finden. Dazu muss er prüfen können, ob eine beteiligte<br />

Partei für den Adresssatz existiert. Für den Fall, dass keine vorhanden ist, muss er<br />

in der Lage sein, eine neue beteiligte Partei zu erstellen. Wenn eine beteiligte Partei<br />

nicht konsistent ist, hat der Verwalter die Verantwortung diese zu löschen. Eine beteiligte<br />

Partei ist genau dann nicht konsistent, wenn der zugeordnete Adresssatz nicht<br />

existiert. Alle Verantwortungen, die keine öffentlichen Dienste darstellen, werden<br />

durch private Operationen spezifiziert (vgl. Abbildung 4-13). Während der Laufzeit<br />

steht eine Instanz von BeteiligteParteiVerwalter in Beziehung zu <strong>einer</strong> Instanz von<br />

der Klasse Adresssatz (als Parameter) und zu <strong>einer</strong> Instanz der Klasse BeteiligtePartei.<br />

Diese Beziehungen werden durch Assoziationen modelliert.<br />

«control»<br />

BeteiligteParteiVerwalter<br />

+ findeBeteiligtePartei(adresssatz : Adresssatz) : BeteiligtePartei<br />

- prüfeExistenz(adresssatz : Adresssatz) : Ja/Nein-Wert<br />

- erzeugeBeteiligtePartei(adresssatz : Adresssatz) : BeteiligtePartei<br />

- löscheBeteiligtePartei(beteiligtePartei : BeteiligtePartei)<br />

Abbildung 4-13 Die Steuerungsklasse BeteiligteParteiVerwalter<br />

Abbildung 4-14 betrachtet die fachliche Entität BeteiligtePartei im Detail. Das Attribut<br />

beteiligteParteiNummer stellt den eindeutigen Schlüssel für diese Klasse dar. Eine<br />

beteiligte Partei enthält einen Beschreibungstext, der einen beliebigen Inhalt haben<br />

kann. Das Attribut vermögenswert stellt das gesamte Vermögen <strong>einer</strong> beteiligten Partei<br />

dar – eine für das Fallbeispiel gewählte Vereinfachung. Neben Attributen enthält<br />

diese Entität auch eine Operation. Eine beteiligte Partei hat die Verantwortung ihre<br />

Konsistenz sicherzustellen. Die Operation prüfeKonsistenz() modelliert diese Eigenschaft.<br />

Als Rückgabetyp ist ein Ja/Nein-Wert spezifiziert. Die Zuordnung der beteiligten<br />

Partei zu einem Adresssatz ist durch eine Assoziation modelliert.<br />

Die Klasse BeteiligtePartei ist abstrakt, also nicht instanzierbar. Für das Fallbeispiel<br />

gibt es nur eine Ausprägung, nämlich die NatürlichePerson. Diese Entität erweitert<br />

die beteiligte Partei um die Attribute anrede, vorname und name. Die Werte der Att-


Fachliches Modell 49<br />

ribute ergeben sich aus den entsprechenden Attributwerten des zugeordneten Adresssatzes.<br />

«primaryKey»<br />

«entity»<br />

BeteiligtePartei<br />

+ beteiligteParteiNummer : PositiveGanzzahl<br />

+ beschreibungstext : Zeichenkette<br />

+ vermögenswert : Geldbetrag<br />

+ prüfeKonsistenz() : Ja/Nein-Wert<br />

Abbildung 4-14 Die Entität BeteiligtePartei<br />

Ein Attribut, dessen Wert aus anderen Elementen abgeleitet wird, heißt abgeleitetes<br />

Attribut (derived attribute). Ein solches Attribut wird mit dem Symbol »/« gekennzeichnet.<br />

Die Vorschrift, nach der das Attribut zu berechnen ist, wird mit <strong>einer</strong> Zusicherung<br />

spezifiziert. Ein abgeleitetes Attribut ist sonst wie ein normales Attribut zu<br />

behandeln, z. B. hat es auch einen Typ.<br />

«entity»<br />

NatürlichePerson<br />

/+ anrede : Zeichenkette<br />

/+ vorname : Zeichenkette<br />

/+ name : Zeichenkette<br />

{anrede, vorname, name = Werte aus dem<br />

zugeordneten Adresssatz}<br />

Abbildung 4-15 Die Entität NatürlichePerson<br />

Die Steuerungsklasse KundenmappeErsteller aus dem Paket Kundenmappe ist für die<br />

Erstellung der Kundenmappe für eine Auswahl von beteiligten Parteien verantwortlich<br />

(vgl. Abbildung 4-16). Zur Laufzeit steht sie in Beziehung zu <strong>einer</strong> Instanz der<br />

Auswahl (Parameter) sowie <strong>einer</strong> Instanz der erstellten Kundenmappe. Diese Beziehungen<br />

werden mit Assoziationen spezifiziert.<br />

«control»<br />

KundenmappeErsteller<br />

+ erstelleKundenmappe(auswahl : Auswahl) : Kundenmappe<br />

Abbildung 4-16 Die Steuerungsklasse KundenmappeErsteller<br />

Die Entität Kundenmappe kennt das Datum, an dem sie erstellt worden ist, und kann<br />

die Summe aller Vermögenswerte, der von ihr aggregierten beteiligten Parteien, angeben.<br />

Dafür wird ein abgeleitetes Attribut verwendet. Die Berechnungsvorschrift ist<br />

der Notiz zu entnehmen (vgl. Abbildung 4-17). Die Kundenmappe besteht aus genau<br />

<strong>einer</strong> Auswahl. Diese Teil/Ganzes-Beziehung wird mit <strong>einer</strong> Aggregation modelliert.


50 Das Fallbeispiel »Kundenmappe«<br />

«entity»<br />

Kundenmappe<br />

+ datum : Datum<br />

/ + summeVermögenswerte : Geldbetrag<br />

{summeVermögenswerte<br />

= Summe aller Vermögenswerte<br />

der enthaltenen BeteiligtenParteien}<br />

Abbildung 4-17 Die Entität Kundenmappe<br />

Die Entität Auswahl besteht aus <strong>einer</strong> Anzahl von beteiligten Parteien. Deswegen besteht<br />

zwischen ihr und der Entität BeteiligtePartei eine Aggregation. Die Auswahl hat<br />

Kenntnis darüber, ob eine beteiligte Partei der Auswahl selektiert ist. Diese Kenntnis<br />

wird durch die Operation istSelektiert spezifiziert (vgl. Abbildung 4-18). Bei der Berechnung<br />

der Summe der Vermögenswerte werden nur die beteiligten Parteien berücksichtigt,<br />

die auch selektiert sind.<br />

«entity»<br />

Auswahl<br />

+ istSelektiert(beteiligtePartei: BeteiligtePartei) : Ja/Nein-Wert<br />

Abbildung 4-18 Die Entität Auswahl<br />

4.3.2 Dynamische Sicht: Realisierung der <strong>Anwendung</strong>sfälle<br />

Die dynamische Sicht soll aufzeigen, wie die <strong>Anwendung</strong>sfälle von den fachlichen<br />

Klassen realisiert werden. In Sequenz- oder Kollaborationsdiagrammen wird das<br />

Durchspielen der <strong>Anwendung</strong>sfälle modelliert. Mehrere Diagramme werden zu <strong>einer</strong><br />

<strong>Anwendung</strong>sfall-Realisierung zusammengefasst; das ist ein Paket mit dem Stereotyp<br />

«use-case realization» 26 .<br />

Der Name der Realisierung sollte derselbe sein wie der des <strong>Anwendung</strong>sfalls. Dieser<br />

wird durch eine Bezeichnung »– Fachlich« ergänzt, um zu kennzeichnen, dass die<br />

Realisierung im fachlichen Modell stattfindet. Abbildung 4-19 zeigt, dass die <strong>Anwendung</strong>sfall-Realisierung<br />

BeteiligtePartei finden – Fachlich den <strong>Anwendung</strong>sfall BeteiligtePartei<br />

finden realisiert. Wie in Abbildung 4-10 gezeigt wurde, wird der <strong>Anwendung</strong>sfall<br />

BeteiligtePartei finden auch vom fachlichen Paket BeteiligtePartei realisiert.<br />

In diesem Fall muss folgenden Konsistenzbedingung beachtet werden: Die erste<br />

Nachricht in den Diagrammen der <strong>Anwendung</strong>sfall-Realisierung BeteiligtePartei<br />

finden – Fachlich muss an eine fachliche Steuerklasse geschickt werden, die im<br />

fachlichen Paket BeteiligtePartei enthalten ist.<br />

26 Dieses Stereotyp ist in der UML enthalten. Deswegen ist es Englisch und enthält Lehrzeichen.


Fachliches Modell 51<br />

<strong>Anwendung</strong>sfallmodell<br />

Fachliches Modell<br />

<strong>Anwendung</strong>sfall-Realisierung<br />

«realisiert»<br />

BeteiligtePartei finden<br />

BeteiligtePartei finden – Fachlich<br />

Abbildung 4-19 Realisierung eines <strong>Anwendung</strong>sfalls<br />

Exemplarisch wird für den <strong>Anwendung</strong>sfall Beteiligte Partei finden die fachliche<br />

Realisierung als Sequenzdiagramm (vgl. Abbildung 4-20) und als Kollaborationsdiagramm<br />

(vgl. Abbildung 4-21) vorgestellt.<br />

: Frontend<br />

: BeteiligteParteiVerwalter<br />

findeBeteiligtePartei(adresssatz : Adresssatz)<br />

existiert := prüfeExistenz(adresssatz : Adresssatz)<br />

[existiert nicht] erzeugeBeteiligtePartei(adresssatz : Adresssatz)<br />

[exisitiert] leseBeteiligtePartei()<br />

beteiligtePartei :<br />

BeteiligtePartei<br />

konsistent = prüfeKonsistenz( )<br />

[konsistent] beteiligtePartei<br />

[sonst] Fehlercode<br />

Abbildung 4-20 Das Sequenzdiagramm BeteiligtePartei finden – Fachlich


52 Das Fallbeispiel »Kundenmappe«<br />

Der im Folgenden beschriebene Ablauf, gilt für beide Diagrammarten. Das Frontend<br />

erzeugt ein Exemplar der Steuerungsklasse BeteiligteParteiVerwalter, welche den<br />

<strong>Anwendung</strong>sfall koordiniert. Dann schickt das Frontend die Nachricht findeBeteiligtePartei<br />

an den Verwalter. Als Argument liegt der Nachricht ein Adresssatz bei. Der<br />

Verwalter prüft, ob eine beteiligte Partei, die dem Adresssatz zugeordnet ist, bereits<br />

existiert; wenn ja, wird sie gelesen; wenn nicht, wird eine neue beteiligte Partei erzeugt.<br />

Anschließend prüft der Verwalter die Konsistenz der beteiligten Partei und<br />

übergibt sie dem Frontend, wenn sie konsistent ist.<br />

Beim Kollaborationsdiagramm repräsentieren die durchgezogenen Linien eine Verbindung<br />

(link) zwischen zwei Objekten; über die Verbindungen können Nachrichten<br />

verschickt werden. Der zeitliche Ablauf ist durch die Nummerierung spezifiziert.<br />

Welches Diagramm verwendet wird, hängt davon ab, ob die Struktur (Kollaborationsdiagramm)<br />

oder der zeitliche Ablauf (Sequenzdiagramm) in den Vordergrund gestellt<br />

werden soll.<br />

2: existiert := prüfeExistenz(adresssatz : Adresssatz)<br />

1: findeBeteiligtePartei(adresssatz : Adresssatz)<br />

P<br />

: Adresssatz<br />

: Frontend<br />

6: beteiligtePartei<br />

: BeteiligteParteiVerwalter<br />

3: [existiert] lese BeteiligtePartei<br />

4: [existiert nicht] erzeuge neue BeteiligtePartei<br />

5: prüfeKonsistenz( )<br />

beteiligtePartei : BeteiligtePartei<br />

Abbildung 4-21 Das Kollaborationsdiagramm BeteiligtePartei finden – Fachlich


Designmodell 53<br />

4.4 Designmodell<br />

Im Designmodell wird ausgehend von der fachlichen Struktur ein technischer Entwurf<br />

erstellt. Dazu wird die Funktionalität aus dem fachlichen Modell auf Komponenten<br />

<strong>einer</strong> Schichtenarchitektur verteilt. Die Komponenten und ihre Schnittstellen werden<br />

speziell für eine <strong>COBOL</strong>/HOST-Umgebung modelliert. Somit wird ein Bauplan für<br />

die Implementierung – die Umsetzung des Designs in <strong>COBOL</strong>-Quelltext – geschaffen.<br />

Abbildung 4-22 zeigt den Fokus dieses Abschnitts.<br />

<br />

Use Case View<br />

«modell» <strong>Anwendung</strong>sfallmodell<br />

Logical View<br />

«modell» Fachliches Modell<br />

1. Methodischer Übergang<br />

«modell» Designmodell<br />

«modell» Implementierungsmodell<br />

Abbildung 4-22 Das Modell des technischen Entwurfs<br />

Bei der bisherigen Vorgehensweise wurde ein Teil des Entwurfs im Implementierungsmodell<br />

spezifiziert. Der Standard für die technische Modellierung [IZB 2003c]<br />

beschreibt dies auf folgende Weise:<br />

Langfristig gesehen ist es Ziel, hauptsächlich auf der Designebene zu modellieren.<br />

Im HOST/<strong>COBOL</strong>-Umfeld wird gegenwärtig jedoch mehr auf der<br />

Implementierungsebene grafisch dargestellt.<br />

Das langfristige Ziel wurde aufgegriffen und umgesetzt. Ein Ansatz für die vollständige<br />

Modellierung der Spezifikationen auf der Designebene für HOST/<strong>COBOL</strong>-<br />

<strong>Anwendung</strong>en wird in den folgenden Abschnitten vorgestellt.<br />

4.4.1 Statische Komponentensicht<br />

Die statische Komponentensicht zeigt die Anordnung der Komponenten innerhalb der<br />

Schichtenarchitektur und die Schnittstellen der Komponenten. Außerdem werden die<br />

Abhängigkeiten zwischen den Komponenten und zwischen Komponenten und<br />

Schnittstellen modelliert.


54 Das Fallbeispiel »Kundenmappe«<br />

Übersicht über die Komponenten. In diesem Abschnitt wird eine Übersicht über<br />

die verwendeten Komponenten gegeben sowie die Spezifikation einiger Schnittstellen<br />

genauer betrachtet. Insbesondere wird besprochen, wie die Funktionalität und die<br />

Struktur des fachlichen Modells mit der Struktur des Designmodells zusammenhängen.<br />

Abbildung 4-23 zeigt eine Übersicht über die Komponenten des Designmodells.<br />

Beide Systeme sind durch zwei Pakete mit dem Stereotyp «designsystem» repräsentiert.<br />

Ein System des Designmodells ist in Schichten unterteilt. Dabei handelt es sich<br />

um die Umsetzung der im Abschnitt 2.3.2 beschriebene Schichtenarchitektur.<br />

«designsystem»<br />

Kundenmappe<br />

«designsystem»<br />

Partner<br />

KundenmappeErstellerSteuerung BeteiligteParteiVerwalterSteuerung AdresssatzFinderSteuerung<br />

«designkomponente»<br />

«designkomponente»<br />

KundenmappeSteuerung<br />

BeteiligteParteiSteuerung<br />

AdresssatzSteuerung<br />

Steuerungsschicht<br />

KundenmappeErsteller<br />

KundenmappeGeschäftslogik<br />

BeteiligteParteiVerwalter<br />

«designkomponente»<br />

BeteiligteParteiGeschäftslogik<br />

AdresssatzFinder<br />

«designkomponente»<br />

AdresssatzGeschäftslogik<br />

Geschäftslogikschicht<br />

BeteiligteParteiBearbeiter<br />

AdresssatzBearbeiter<br />

«designkomponente»<br />

BeteiligteParteiDatenzugriff<br />

«designkomponente»<br />

AdresssatzDatenzugriff<br />

Datenzugriffsschicht<br />

Abbildung 4-23 Die Komponenten im Überblick<br />

Im Modell wird eine Schicht durch ein Paket mit dem Stereotyp «schicht» repräsentiert<br />

– in den Diagrammen aber können die Pakete weggelassen werden und stattdessen<br />

gestrichelte Linien für die Trennung zwischen den Schichten eingesetzt werden.<br />

Die tatsächliche Paketstruktur ist in Abbildung 4-24 anhand der Browser-Sicht von<br />

Rational Rose verdeutlicht. Die einzelnen Schichten enthalten die Komponenten, wobei<br />

eine Komponente nur in <strong>einer</strong> Schicht enthalten sein darf. Die Komponenten werden<br />

durch Pakete mit dem Stereotyp «designkomponente» repräsentiert.


Designmodell 55<br />

«designsystem» Partner<br />

«schicht» Steuerungsschicht<br />

«designkomponente» BeteiligteParteiSteuerung<br />

«designkomponente» AdresssatzSteuerung<br />

«interface» AdressatzFinderSteuerung<br />

«schicht» Geschäftslogikschicht<br />

«schicht» Datenzugriffsschicht<br />

Abbildung 4-24 Eine Browser-Sicht auf das Designsystems Partner<br />

Im Folgenden wird wieder Abbildung 4-23 betrachtet. Nachdem die Komponenten<br />

die enthaltenen Schnittstellen exportieren, werden diese im Diagramm außerhalb der<br />

Komponenten mit der Lollipop-Notation dargestellt. Im Fallbeispiel hat jede Komponenten<br />

genau eine Schnittstelle. Diese Eigenschaft ist allerdings nicht zwingend, da<br />

eine Komponente mehrere Schnittstellen haben kann. Die gestrichelten Pfeile zwischen<br />

den Paketen repräsentieren Abhängigkeiten. Eine Abhängigkeit zu <strong>einer</strong><br />

Schnittstelle bedeutet, dass eine Komponente eine Operation der Schnittstelle aufruft;<br />

eine Abhängigkeit zwischen zwei Paketen zeigt, dass die Quell-Komponente öffentliche<br />

Elemente (das sind Schnittstellen und Datenstrukturen) der Ziel-Komponente<br />

nutzt.<br />

Die Struktur des Systems im Designmodell ist im Gegensatz zum fachlichen Modell<br />

technisch motiviert. Aus diesem Grund wird die Anordnung der fachlichen Pakete<br />

verworfen und nur die elementaren Pakete in das Designmodell abgebildet. Zum Beispiel,<br />

aus dem elementaren fachlichen Paket BeteiligtePartei (vgl. Abbildung 4-9)<br />

wurden die drei Komponenten BeteiligteParteiSteuerung, BeteiligteParteiGeschäftslogik<br />

und BeteiligteParteiDatenzugriff; aus dem zusammengesetzten fachlichen Paket<br />

Partner sind keine Komponenten entstanden. Abbildung 4-25 zeigt den Zusammenhang<br />

zwischen den Komponenten und dem fachlichen Paket.<br />

Aus einem elementaren fachlichen Paket wird für jede Schicht eine Komponente erstellt.<br />

Der Entwickler kann später gegebenenfalls eine Komponente entfernen, wenn<br />

sie nicht benötigt wird. Dies ist in Abbildung 4-23 ersichtlich: Die Komponenten der<br />

Datenzugriffsschicht, die aus dem fachlichen Paket Kundenmappe abgeleitet worden<br />

ist, wurde nachträglich aus dem Modell entfernt (vgl. Abbildung 4-9).<br />

Aus <strong>einer</strong> Steuerungsklasse mit öffentlichen Operationen entstehen die Schnittstellen,<br />

wobei die Funktionalität <strong>einer</strong> Steuerungsklasse auf mehrere Schnittstellen der verschiedenen<br />

Schichten abgebildet werden kann. Dies wird weiter unten anhand eines<br />

Beispiels verdeutlicht.<br />

Die Modellierung der Schnittstellen im Detail. Ein Ziel der neuen Methodik ist<br />

die genaue Spezifikation der Schnittstellen. Um dies zu erreichen, sind die Konzepte


56 Das Fallbeispiel »Kundenmappe«<br />

des Designmodells in dieser Arbeit für eine <strong>COBOL</strong>-Umgebung konkretisiert. Dazu<br />

gehört auch die Modellierung der Schnittstelle 27 .<br />

Fachliches Modell<br />

Designmodell<br />

«fachlichesPaket»<br />

BeteiligtePartei<br />

BeteiligteParteiVerwalterSteuerung<br />

«designkomponente»<br />

BeteiligteParteiSteuerung<br />

BeteiligteParteiVerwalter<br />

«realisiert»<br />

BeteiligteParteiVerwalter<br />

«designkomponente»<br />

BeteiligteParteiGeschäftslogik<br />

BeteiligteParteiBearbeiter<br />

«designkomponente»<br />

BeteiligteParteiDatenzugriff<br />

Abbildung 4-25 Zusammenhang zwischen Designkomponenten und fachlichen<br />

Paketen<br />

In den folgenden Absätzen wird eine Modellierung vorgestellt, die sich direkt auf<br />

<strong>COBOL</strong>-Quelltext abbilden lässt.<br />

Abbildung 4-26 zeigt die Operationen <strong>einer</strong> Schnittstelle und die Beziehungen zur<br />

fachlichen Klasse. Die Operation finde der Schnittstelle BeteiligteParteiVerwalterSteuerung<br />

hat drei Parameter:<br />

27 Die allgemeinen Konzepte der Schnittstellenmodellierung sowie die Syntax der Operationen werden<br />

im Abschnitt 5.3.1 vertieft.


Designmodell 57<br />

§<br />

§<br />

§<br />

Den Eingabeparameter in adresssatzRecord,<br />

den Ausgabeparameter out beteiligteParteiRecord und<br />

den Rückgabetyp RückgabeDaten.<br />

Der Unterschied zu der Steuerungsklasse aus dem fachlichen Modell ist, dass die O-<br />

peration der technischen Umgebung angepasst wird. Die Typen der Parameter sind<br />

<strong>COBOL</strong>-spezifisch und die Richtung wird spezifiziert. Der Rückgabetyp spezifiziert<br />

eine Datenstruktur, die den Status der Operation umfasst.<br />

Fachliches Modell<br />

«control»<br />

BeteiligteParteiVerwalter<br />

+ findeBeteiligtePartei(adresssatz : Adresssatz) : BeteiligtePartei<br />

- prüfeExistenz(adresssatz : Adresssatz) : Ja/Nein-Wert<br />

...<br />

«realisiert»<br />

Designmodell<br />

«interface»<br />

BeteiligteParteiVerwalterSteuerung<br />

+ finde( in adresssatzRecord : AdresssatzRecord,<br />

out beteiligteParteiRecord : BeteiligteParteiRecord) : RückgabeDaten<br />

Abbildung 4-26 Zusammenhang zwischen Schnittstellen und Steuerungsklassen<br />

Wird bei einem Operationsaufruf ein Zeiger als Argument übergeben, muss der entsprechende<br />

Parameter der Operation mit pointer spezifiziert werden. Abbildung 4-27<br />

zeigt die Schnittstelle BeteiligteParteiBearbeiter, die eine Operation mit einem<br />

pointer-Parameter enthält. Der Typ des Parameters spezifiziert den Datentyp, auf den<br />

der Zeiger zeigt.<br />

«interface»<br />

BeteiligteParteiBearbeiter<br />

+ lese(in adresssatznummer : PIC 9(4), out pointer beteiligteParteiPointer : BeteiligteParteiRecord)<br />

+ erzeuge(in pointer beteiligteParteiPointer : BeteiligteParteiRecord)<br />

Abbildung 4-27 Die Schnittstelle BeteiligteParteiBearbeiter<br />

Modellierung der Datenstrukturen. Um die Schnittstelle genau zu modellieren, ist<br />

die Spezifizierung der verwendeten Datenstrukturen wichtig. Abbildung 4-28 zeigt<br />

wie eine Datenstruktur modelliert wird und stellt die Beziehungen der Struktur zu den<br />

fachlichen Entitäten dar. Im Designmodell ändert sich der Typ der Attribute und technische<br />

Attribute kommen hinzu. Zum Beispiel wurde das fachliche Attribut beschrei-


58 Das Fallbeispiel »Kundenmappe«<br />

bungstext technisch mit <strong>einer</strong> Datenstruktur Textzeile realisiert. Als Attributtypen dürfen<br />

nur elementare <strong>COBOL</strong>-Typen oder Datenstrukturen verwendet werden. Die Art<br />

und Weise wie die Generalisierung aufgebrochen wird, hat der Designer im konkreten<br />

Fall zu bestimmen. Im Fallbeispiel wurde eine sehr einfache Art gewählt: Alle Attribute<br />

der Entitäten werden in <strong>einer</strong> Datenstruktur zusammengefasst und ein Attribut<br />

typ hinzugefügt, das den Typ der Datenstruktur spezifiziert. Die Entität BeteiligtePartei<br />

hat im fachlichen Modell eine gerichtete Assoziation zu der Entität Adresssatz.<br />

Dafür wird im Designmodell ein Attribut mit dem Stereotyp «foreignKey» hinzugefügt.<br />

Die berechneten Attribute werden übernommen (vgl. Abbildung 4-31, dort ist<br />

die Operation spezifiziert, die für die Berechnung der Attribute zuständig ist).<br />

Fachliches Modell<br />

Designmodell<br />

...<br />

«primaryKey»<br />

/+ anrede : Zeichenkette<br />

/+ vorname : Zeichenkette<br />

/+ name : Zeichenkette<br />

«entity»<br />

BeteiligtePartei<br />

+ beteiligteParteiNummer : PositiveGanzzahl<br />

+ beschreibungstext : Zeichenkette<br />

+ vermögenswert : Geldbetrag<br />

«entity»<br />

NatürlichePerson<br />

«realisiert»<br />

«datenstruktur»<br />

BeteiligteParteiRecord<br />

«primaryKey» + beteiligteParteiNummer : PIC 9(4)<br />

+ vermögenswert : PIC 9(8)<br />

+ typ : PIC X<br />

«foreignKey» + adresssatzNummer : PIC 9(4)<br />

/+ anrede : PIC X<br />

/+ vorname : PIC X(25)<br />

/+ name : PIC X(30)<br />

8 +beschreibung<br />

«datenstruktur»<br />

Textzeile<br />

+ text : PIC X(10)<br />

Abbildung 4-28 Zusammenhang zwischen Datenstrukturen und fachlichen<br />

Entitäten<br />

4.4.2 Dynamische Komponentensicht<br />

Die dynamische Komponentensicht zeigt wie die Komponenten und ihre Schnittstellen<br />

einen <strong>Anwendung</strong>sfall realisieren. Sie stellt also in den Diagrammen der <strong>Anwendung</strong>sfall-Realisierungen<br />

den dynamischen Ablauf <strong>einer</strong> Ausführung eines <strong>Anwendung</strong>sfalls<br />

dar. Abbildung 4-29 zeigt exemplarisch ein Kollaborationsdiagramm 28 für<br />

den <strong>Anwendung</strong>sfall BeteiligtePartei finden – Fachlich.<br />

Der Ablauf ist im folgenden Absatz beschrieben. Der Berater ruft den Dienst finden<br />

der Komponente BeteiligteParteiSteuerung auf. Der Dienst wird über die Schnittstelle<br />

BeteiligteParteiVerwalterSteuerung aufgerufen. Dieser Aufruf wird modelliert, indem<br />

28 Es sollte beachtet werden, dass im Kollaborationsdiagramm Instanzen von Komponenten verwendet<br />

werden. Eine Designkomponente erweitert das UML-Basiselement Subsystem. Ein Subsystem ist,<br />

im Gegensatz zu einem Paket, instanzierbar (vgl. Abschnitt 5.3.1). Unabhängig davon ist es nicht<br />

möglich, dieses Diagramm mit Rational Rose zu erstellen. Es gibt eine Reihe von Workarounds, die<br />

in dieser Arbeit nicht besprochen werden, da der Fokus hier auf eine allgemeine Notation mit der<br />

UML liegt.


Designmodell 59<br />

der Name der Schnittstelle durch zwei Doppelpunkte (::)<br />

mit dem Aufruf verknüpft wird. Die Komponente leitet den Aufruf an die Geschäftslogikkomponente<br />

weiter. Diese ruft die Datenzugriffskomponenten auf, um die beteiligte<br />

Partei zu lesen. Wird ein Fehlercode zurückgegeben, der spezifiziert, dass die<br />

beteiligte Partei nicht vorhanden ist, ruft die Komponente die Operation der Datenzugriffskomponenten<br />

auf, die eine neue beteiligte Partei erzeugt. Diese Datenstruktur<br />

der beteiligten Partei wird dann zurückgegeben.<br />

: Frontend<br />

1: BeteiligteParteiVerwalterSteuerung::finde(in AdresssatzRecord, out BeteiligteParteiRecord)<br />

«designkomponente»<br />

BeteiligteParteiSteuerung<br />

BeteiligteParteiRecord<br />

2: BeteiligteParteiVerwalter::finde(in AdresssatzRecord, out BeteiligteParteiRecord)<br />

«designkomponente»<br />

BeteiligteParteiGeschäftslogik<br />

3: BeteiligteParteiBearbeiter::lese(in adresssatznummer, out pointer BeteiligteParteiRecord) : Rückgabewert<br />

4: [Rückgabewert = Nicht gefunden] BeteiligteParteiBearbeiter::erzeuge(in pointer BeteiligteParteiRecord)<br />

«designkomponente»<br />

BeteiligteParteiDatenzugriff<br />

Abbildung 4-29 Das Kollaborationsdiagramm Beteiligte Partei finden – Design<br />

4.4.3 Statische Modulsicht<br />

Die statische Modulsicht zeigt die von <strong>einer</strong> Komponente gekapselten Elemente: Module,<br />

Datenstrukturen, Copystrecken, und auch die Schnittstellen, da diese innerhalb


60 Das Fallbeispiel »Kundenmappe«<br />

der Komponente liegen. Hier wird spezifiziert, welches Modul welche Schnittstelle<br />

realisiert und die Beziehungen zwischen den Modulen und Datenstrukturen modelliert.<br />

In diesem Abschnitt werden exemplarisch zwei Komponenten aus verschiedenen<br />

Schichten herausgegriffen und ihr innerer Aufbau beschrieben. Gegenstand der Beschreibung<br />

ist die Verf<strong>einer</strong>ung der Datenstrukturen und die Modulbildung. Auch hier<br />

wird der Bezug zum fachlichen Modell hergestellt.<br />

Im Designmodell wurde bisher für prozedurale Sprachen eine Komponente nur als<br />

schwarzer Kasten betrachtet. Die Beschreibung der Implementierung erfolgte im Implementierungsmodell<br />

[IZB 2003c].<br />

Eine Komponente wird in der neuen Methodik durch eine Innenansicht ergänzt. Die<br />

Innenansicht erfüllt die Funktion, die bisher das Implementierungsmodell eingenommen<br />

hat. Somit werden Konzepte des Implementierungsmodells in das Designmodell<br />

verschoben. Der Rest des Implementierungsmodells wird als »entkernt« bezeichnet.<br />

Zu beachten ist, dass sich bei der Übernahme der Konzepte aus dem Implementierungsmodell<br />

einige Sachverhalte verändert haben: Das Konzept der Datenstrukturen<br />

kommt hinzu; das Konzept der Copystrecken ist dahingehend geändert, dass jetzt eine<br />

Copystrecke eine spezielle Datenstruktur darstellt und somit die Beziehungen zwischen<br />

Modul und Copystrecke neu definiert sind (vgl. Abschnitt 5.3.1).<br />

Zur Verdeutlichung betrachten wir exemplarisch die Komponenten BeteiligtePartei-<br />

Geschäftslogik und BeteiligteParteiDatenzugriff. Abbildung 4-30 zeigt eine Übersicht<br />

über diese beiden Komponenten.<br />

Die Komponenten und die Schnittstellen sind dieselben Elemente wie in der Komponentensicht.<br />

Die Schnittstelle wird nur in einem anderen Format angezeigt und dort<br />

dargestellt, wo sie auch enthalten ist, nämlich in der Komponente. In der Modulsicht<br />

kommen Module und Datenstrukturen hinzu. Eine spezielle Form der Datenstruktur<br />

ist die Copystrecke. Ein Modul wird durch eine Klasse mit dem Stereotyp «modul»<br />

dargestellt. Der Name eines Moduls setzt sich aus seinem Dateinamen 29 und <strong>einer</strong><br />

Kurzbeschreibung zusammen.<br />

Die Realisierungsbeziehung des Moduls KG2100 zu der Schnittstelle BeteiligteParteiVerwalter<br />

spezifiziert, dass dieses Modul die Operationen der Schnittstelle realisiert.<br />

Die Abhängigkeitsbeziehungen mit dem Stereotyp «call» bedeutet, dass das<br />

Modul dazu Operationen anderer Module in Anspruch nimmt.<br />

Betrachten wir die verschiedenen Beziehungen des Moduls KG2110. Die Abhängigkeitsbeziehung<br />

zu der Schnittstelle BeteiligteParteiBearbeiter mit dem Stereotyp<br />

«call» spezifiziert, dass das Quell-Modul KG2110 während der Laufzeit das Ziel-<br />

Modul KL2111 aufruft.<br />

29 Der Dateiname wird nach den Konventionen [IZB 2002d] gebildet, z. B. KG2110, KS1000. Wobei<br />

der zweite Buchstabe die Schicht kennzeichnet. »S« steht z. B. für Steuerungsschicht.


Designmodell 61<br />

Die Assoziation zu der Datenstruktur BeteiligteParteiRecord bedeutet, dass das Modul<br />

auf die Datenstruktur, welche nicht im Speicherbereich des Moduls liegt, mit einem<br />

Zeiger zugreift. Dafür muss die Datenstruktur in der linkage section definiert<br />

werden.<br />

Die Kompositions-Beziehung des Moduls K2111 zu der Datenstruktur bedeutet, dass<br />

die Datenstruktur im Speicherbereich vom Modul liegt. Es lässt sich daraus ableiten,<br />

dass die Datenstruktur in der working-storage section definiert ist.<br />

«designkomponente»<br />

BeteiligteParteiGeschäftslogik<br />

«interface»<br />

BeteiligteParteiVerwalter<br />

«modul»<br />

KG2100 BeteiligteParteiVerwalterFassade<br />

«call»<br />

«modul»<br />

KG2110 BeteiligteParteiVerwalter<br />

«call»<br />

«modul»<br />

KG2120 BeteiligtePartei<br />

«call»<br />

«designkomponente»<br />

BeteiligteParteiDatenzugriff<br />

1 +dzDaten<br />

«interface»<br />

«copystrecke»<br />

BeteiligteParteiBearbeiter<br />

CKL2111 BeteiligteParteiRecord<br />

wird exportiert<br />

ist gekapselt<br />

1 +daten<br />

0..*<br />

8 +beschreibung<br />

«datenstruktur»<br />

Textzeile<br />

«modul»<br />

KL2111 BeteiligteParteiBearbeiter<br />

«indizierteDatei»<br />

BeteiligteParteiDatei<br />

Abbildung 4-30 Modulsicht auf zwei Komponenten


62 Das Fallbeispiel »Kundenmappe«<br />

Die Abbildung zeigt auch eine Klasse mit dem Stereotyp «indizierteDatei». Die Modellierung<br />

der indizierten Datei ist ein Beispiel, um zu zeigen, wie der Zugriff auf eine<br />

persistente Speicherung dargestellt werden kann. Die Komposition zur Datenstruktur<br />

spezifiziert das Format der in der Datei enthaltenen Datensätze.<br />

Die öffentlichen Operationen der Steuerungsklassen werden auf die Schnittstellen<br />

abgebildet. Die privaten Operationen der Steuerungsklassen und die Operationen der<br />

Entitäten werden in Module abgebildet. Abbildung 4-31 zeigt das Modul KG2120 im<br />

Detail, also die Verantwortungen der fachlichen Klassen, die das Modul implementiert.<br />

Das Modul spezifiziert eine Operation für die Prüfung der Konsistenz <strong>einer</strong> beteiligten<br />

Partei und eine Operation für die Berechnung der abgeleiteten Attribute der<br />

Klasse NatürlichePerson. Bei <strong>einer</strong> sturen Abbildung würde für jedes abgeleitete Attribut<br />

eine Operation entstehen. An dieser Stelle ist es jedoch schöner, diese zu <strong>einer</strong><br />

Operation zusammenzufassen.<br />

BeteiligtePartei<br />

BeteiligteParteiVerwalter<br />

Fachliches Modell<br />

Designmodell<br />

«modul»<br />

«realisiert»<br />

KG2120 BeteiligtePartei<br />

+ prüfeKonsistenz(in beteiligtePartei : BeteiligteParteiRecord)<br />

+ berechneNatürlichePerson( inout beteiligtePartei : BeteiligteParteiRecord,<br />

in adresssatzRecord : AdresssatzRecord)<br />

Abbildung 4-31 Zusammenhang zwischen Modulen und fachlichen Klassen<br />

4.4.4 Dynamische Modulsicht<br />

Die Dynamische Modulsicht zeigt die Realisierung der <strong>Anwendung</strong>sfälle mit den<br />

Elementen der Modulsicht. Diese stellt die letzte Stufe der <strong>Anwendung</strong>sfall-<br />

Realisierungen dar: Anhand von Modulen, Datenstrukturen und Copystrecken werden<br />

die <strong>Anwendung</strong>sfälle durchgespielt.<br />

Abbildung 4-32 zeigt, wie die Module den <strong>Anwendung</strong>sfall BeteiligtePartei finden<br />

realisieren. Der Ablauf ist in einem Sequenzdiagramm beschrieben und ist im Wesentlichen<br />

der gleiche wie der, der Komponentensicht. Hinzu kommen die Aktivitäten<br />

innerhalb <strong>einer</strong> Komponente. So zeigt das Diagramm, dass die Module der Komponente<br />

BeteiligteParteiGeschäftslogik die abgeleiteten Attribute berechnen und die<br />

Konsistenz der beteiligten Partei prüfen.


Designmodell 63<br />

: KS2000<br />

BeteiligteParteiVerwalter<br />

Steuerung<br />

: KG2100<br />

BeteiligteParteiVerwalter<br />

Fassade<br />

: KG2120<br />

BeteiligtePartei<br />

: KG2110<br />

BeteiligteParteiVerwalter<br />

: KL2111<br />

BeteiligteParteiBearbeiter<br />

findeBeteiligtePartei(in adresssatzRecord, out beteiligteParteiRecord)<br />

findeBeteiligtePartei(in adresssatzRecord, out beteiligteParteiRecord)<br />

rückgabe := lese(in adresssatznummer, out pointer beteiligteParteiPointer)<br />

[rückgabe = nicht vorhanden] erzeuge(in pointer beteiligteParteiPointer)<br />

berechneNatürlichePerson(inout beteiligtePartei, in adresssatzRecord)<br />

prüfeKonsistenz(in beteiligtePartei)<br />

Abbildung 4-32 Das Sequenzdiagramm BeteiligtePartei finden – Design


64 Das Fallbeispiel »Kundenmappe«<br />

4.5 Implementierungsmodell<br />

Im Designmodell wurde die technische Struktur modelliert. Nun wird beschrieben,<br />

welche Dateien aus dem Designmodell entstehen und welche Abhängigkeiten für die<br />

Kompilierung zwischen den Dateien existieren. In diesem Abschnitt wird die Demonstration<br />

der Durchgängigkeit mit der Ableitung einiger Designelemente in<br />

<strong>COBOL</strong>-Quelltext abgeschlossen. Abbildung 4-33 zeigt den Fokus dieses Abschnitts.<br />

<br />

Use Case View<br />

«modell» <strong>Anwendung</strong>sfallmodell<br />

Logical View<br />

«modell» Fachliches Modell<br />

«modell» Designmodell<br />

«modell» Implementierungsmodell<br />

2. Methodischer Übergang<br />

Abbildung 4-33 Das Modell der Implementierung<br />

4.5.1 Dateisicht: Organisation der Dateien<br />

Die Dateisicht beschreibt die Organisation der Dateien mit den Einheiten, die<br />

<strong>COBOL</strong> zur Verfügung stellt. Diese sind Moduldateien und Copystrecken. Gruppierungskonzepte<br />

aus dem Designmodell werden ebenfalls in das Implementierungsmodell<br />

abgebildet.<br />

Das in Abbildung 4-34 dargestellte Klassendiagramm zeigt die Komponenten<br />

BeteiligteParteiGeschäftslogik und BeteiligteParteiDatenzugriff. Diese sind aus<br />

dem Designmodell (vgl. Abbildung 4-30) entstanden.<br />

Aus den Modulen und Copystrecken des Designmodells werden im Implementierungsmodell<br />

Moduldateien («moduldatei») und Copystreckendateien («copystreckedatei»).<br />

Beide sind spezielle Dateien, die durch eine Klasse mit dem entsprechenden<br />

Stereotyp repräsentiert werden. Allgemeine Dateien werden durch eine Klasse mit<br />

dem Stereotyp «datei» repräsentiert. Die Datei beteiligtepartei.dat ist aus der indizierten<br />

Datei des Designmodells entstanden. Die Designkomponenten werden auf eine<br />

Implementierungskomponente mit demselben Namen abgebildet und in <strong>einer</strong> flachen<br />

Struktur angeordnet.


Implementierungsmodell 65<br />

«implementierungskomponente»<br />

BeteiligteParteiGeschäftslogik<br />

«moduldatei»<br />

KG2100.COB<br />

«moduldatei»<br />

KG2110.COB<br />

«moduldatei»<br />

KG2120.COB<br />

«implementierungskomponente»<br />

BeteiligteParteiDatenzugriff<br />

«moduldatei»<br />

KL2111.COB<br />

«copystreckedatei»<br />

CKL2111.CPY<br />

«datei»<br />

beteiligtepartei.dat<br />

Abbildung 4-34 Dateisicht auf zwei Komponenten<br />

Eine Implementierungskomponente wird durch ein Paket mit dem Stereotyp «implementierungskomponente»<br />

repräsentiert und stellt einen Ordner des Dateisystems dar.<br />

Abbildung 4-35 zeigt den Ordner der Implementierungskomponente BeteiligteParteiDatenzugriff.<br />

Sein Inhalt sind die in der Implementierungskomponente enthaltenen<br />

Dateien. Die Namen der Elemente im Implementierungsmodell entsprechen den Dateinamen<br />

des Dateisystems.<br />

BeteiligteParteiDatenzugriff<br />

KL2111.COB<br />

CKL2111.CPY<br />

beteiligtepartei.dat<br />

Abbildung 4-35 Eine Implementierungskomponente im Dateisystem<br />

Im »entkernten« Implementierungsmodell werden nur noch Abhängigkeiten modelliert,<br />

die beim Kompilieren und Ausführen auftreten. Somit sind Abhängigkeiten die<br />

einzigen Beziehungen zwischen den Elementen des Implementierungsmodells. Eine<br />

Abhängigkeit zwischen zwei Elementen bedeutet, dass eine Änderung oder die Ent-


66 Das Fallbeispiel »Kundenmappe«<br />

fernung des Zielelements einen Fehler beim kompilieren auslösen kann. Es ist also<br />

erforderlich, das Quellelement der Änderung anzupassen. Die Abhängigkeiten entstehen<br />

aus folgenden Beziehungen im Designmodell:<br />

¨<br />

¨<br />

¨<br />

Aufrufbeziehung (z. B.: Modul KG2110 – Modul KL2111)<br />

Komposition (z. B.: Modul KL2111 – Copystrecke CKL2111)<br />

Assoziation (z. B.: Modul KG2110 – Copystrecke CKL2111)<br />

4.5.2 Quelltextsicht<br />

Der Inhalt der Modul- und Copystreckendateien besteht aus <strong>COBOL</strong>-Quelltext. Teile<br />

des Quelltextes lassen sich aus den Elementen des Designmodells ableiten. Gegenstand<br />

der Quelltextsicht ist es, diesen Quelltext darzustellen. In diesem Abschnitt wird<br />

exemplarisch eine Auswahl von Designelementen, die in Abbildung 4-36 dargestellt<br />

sind, in das Implementierungsmodell abgebildet. Dabei wird der abgeleitete Quelltext<br />

besprochen.<br />

Datenstrukturen und Copystrecken. Aus der Copystrecke CKL2111 Beteiligte-<br />

ParteiRecord wird im Implementierungsmodell die Datei CKL2111.CPY. Dieses Beispiel<br />

verdeutlicht noch einmal die Durchgängigkeit der Methodik: Ausgehend von<br />

den Klassen BeteiligtePartei und NatürlichePerson des Problembereichs 30 , ist<br />

schließlich eine <strong>COBOL</strong>-Datenstruktur entstanden. Listing 4-1 zeigt, dass die Datei<br />

aus einem Group Item mit der Nummer der Copystrecke als Name besteht. Dieses<br />

Feld enthält die Attribute und Kompositionen der Copystrecke 31 . Ist die Multiplizität<br />

größer als »1«, wird die occurs-Klausel verwendet. Um die Funktionalität des Ersetzens<br />

nutzen zu können, wird in <strong>einer</strong> Copystrecke immer »a:« vor ein Feld gesetzt.<br />

Außerdem wird die Rolle <strong>einer</strong> Komposition vor den Namen des Attributs gesetzt.<br />

Somit wird aus dem Attribut text der Datenstruktur Textzeile das Feld<br />

a:beschreibung-text.<br />

Listing 4-1 Quelltext aus der Copystreckedatei CKL2111.CPY<br />

05 A:CKL2111.<br />

08 A:BETEILIGTE-PARTEI-NUMMER PIC 9(4).<br />

08 A:BESCHREIBUNG-TEXTZEILE OCCURS 8.<br />

10 A:BESCHREIBUNG-TEXT PIC X(10).<br />

08 A:VERMOEGENSWERT PIC 9(8).<br />

08 A:TYP PIC X.<br />

...<br />

30 Die Klassen des Problembereichs sind in der Abbildung 4-7 zu finden.<br />

31 Die Attribute und Kompositionen der Datenstruktur sind in der Abbildung 4-28 dargestellt.


Implementierungsmodell 67<br />

«designkomponente»<br />

BeteiligteParteiGeschäftslogik<br />

«modul»<br />

KG2110 BeteiligteParteiVerwalter<br />

«call»<br />

«designkomponente»<br />

BeteiligteParteiDatenzugriff<br />

1 +dzDaten<br />

«interface»<br />

«copystrecke»<br />

BeteiligteParteiBearbeiter CKL2111 BeteiligteParteiRecord<br />

1 +daten 0..*<br />

8 +beschreibung<br />

«datenstruktur»<br />

Textzeile<br />

wird exportiert<br />

ist gekapselt<br />

Designmodell<br />

«modul»<br />

KL2111 BeteiligteParteiBearbeiter<br />

«indizierteDatei»<br />

BeteiligteParteiDatei<br />

Implementierungsmodell<br />

«implementierungskomponente»<br />

BeteiligteParteiGeschäftslogik<br />

«moduldatei»<br />

KG2110.COB<br />

«implementierungskomponente»<br />

BeteiligteParteiDatenzugriff<br />

«moduldatei»<br />

KL2111.COB<br />

«copystreckedatei»<br />

CKL2111.CPY<br />

«datei»<br />

beteiligtepartei.dat<br />

Abbildung 4-36 Übergang in das Implementierungsmodell


68 Das Fallbeispiel »Kundenmappe«<br />

Module. Aus dem Modul KL2111 BeteiligteParteiBearbeiter wird im Implementierungsmodell<br />

die Datei KL2111.COB. Listing 4-2 zeigt, welcher Quelltext aus der<br />

Komposition zwischen dem Modul und der Copystrecke im Designmodell entstanden<br />

ist. Zusätzlich wird der Quelltext dargestellt, der aus der Assoziation zwischen dem<br />

Modul und der indizierten Datei abgeleitet werden kann.<br />

Die Komposition zur Copystrecke BeteiligteParteiRecord bedeutet, dass die Datenstruktur<br />

im Arbeitsspeicher des Moduls liegt. Deshalb wird die Datenstruktur in der<br />

working-storage section definiert. Da es sich bei der Datenstruktur um eine Copystrecke<br />

handelt, wird die copy-Anweisung verwendet. Es sollte darauf geachtet<br />

werden, dass mit Hilfe der replacing-Klausel die Rolle der Datenstruktur vor die<br />

Felder gesetzt wird. Das ist besonders hilfreich, wenn ein Modul mehrmals dieselbe<br />

Datenstruktur verwendet.<br />

Listing 4-2 Quelltext aus der Moduldatei KL2111.COB<br />

IDENTIFICATION DIVISION.<br />

PROGRAM-ID. KL2111.<br />

...<br />

INPUT-OUTPUT SECTION.<br />

FILE-CONTROL.<br />

SELECT BP-DATEI<br />

ASSIGN TO "beteiligtepartei.dat"<br />

ORGANIZATION IS INDEXED<br />

RECORD KEY IS FD-BETEILIGTE-PARTEI-NUMMER<br />

...<br />

DATA DIVISION.<br />

FILE SECTION.<br />

FD BP-DATEI<br />

LABEL RECORDS ARE STANDARD.<br />

01 FD-BETEILIGTE-PARTEI-RECORD.<br />

COPY "CKL2111.CPY" REPLACING ==A:== BY ==FD-==.<br />

WORKING-STORAGE SECTION.<br />

01 DATEN-BETEILIGTE-PARTEI-RECORD.<br />

COPY "CKL2111.CPY" REPLACING ==A:== BY ==DATEN-==.<br />

...<br />

Aus dem Modul KG2110 BeteiligteParteiVerwalter wird im Implementierungsmodell<br />

die Datei KG2110.COB. Listing 4-3 zeigt, welcher Quelltext aus der Assoziation zwischen<br />

dem Modul und der Copystrecke im Designmodell entstanden ist.<br />

Die Assoziation zu der Copystrecke BeteiligteParteiRecord bedeutet, dass auf diese<br />

Datenstruktur durch eine Referenz zugegriffen wird. Diese Referenz kann entweder<br />

ein Zeiger in der working-storage section sein, oder ein Parameter in der procedure<br />

division using-Kausel. In jedem Fall muss die Datenstruktur in der linkage<br />

section definiert werden. Auch hier wird die copy-Anweisung verwendet. Es ist


Implementierungsmodell 69<br />

zu beachten, dass aus der Schreibweise der Rolle dzDaten in <strong>COBOL</strong> die Schreibweise<br />

dz-daten wird.<br />

Listing 4-3 Quelltext aus der Moduldatei KG2110.COB<br />

IDENTIFICATION DIVISION.<br />

PROGRAM-ID. KG2110.<br />

...<br />

LINKAGE SECTION.<br />

01 DZ-DATEN-BETEILIGTE-PARTEI-RECORD.<br />

COPY "CKL2111.CPY" REPLACING ==A:== BY ==DZ-DATEN-==.<br />

...<br />

Abbildung der Schnittstelle. Um eine Schnittstelle in Quelltext abzubilden, wird<br />

der Nutzer der Schnittstelle vom Anbieter der Schnittstelle getrennt. Im Fallbeispiel<br />

ist das Modul KL2111 BeteiligteParteiBearbeiter Anbieter der Schnittstelle<br />

BeteiligteParteiBearbeiter und das Modul KG2110 BeteiligteParteiVerwalter Nutzer<br />

der Schnittstelle. Der Name der Schnittstelle wurde im Quelltext auf bpbearbeiter<br />

gekürzt; an kennzeichnet die Felder des Anbieters; nu kennzeichnet die<br />

Felder des Nutzers.<br />

Listing 4-4 zeigt den Quelltext des Anbieters der Schnittstelle. Zuerst werden in der<br />

linkage section die Argumente definiert. Der Zeiger an-args-pointer zeigt auf die<br />

Datenstruktur der Argumente der aufgerufenen Operation. Welche Operation ausgeführt<br />

werden soll, steht im Feld an-bp-bearbeiter-operation. Die Datenstruktur<br />

an-bp-bearbeiter-lese-args definiert die Argumente, die für die Operation lese<br />

übergeben werden. In der using-Klausel werden die Parameter, die zur Laufzeit die<br />

Argumente enthalten, spezifiziert. Mit dem evaluate-Block wird dann abhängig von<br />

der aufgerufenen Operation die richtige Datenstruktur über das Argument gelegt.<br />

Listing 4-5 zeigt den Quelltext des Nutzers der Schnittstelle. Hier ist die Definition<br />

der Argumente in der working-storage section. In der procedure division wird<br />

zuerst die Operation spezifiziert, welche das Modul aufrufen möchte, dann der Zeiger<br />

der Argumente auf die Datenstruktur gesetzt, welche die Argumente enthält. Schließlich<br />

kann das Modul mit den Argumenten aufgerufen werden.


70 Das Fallbeispiel »Kundenmappe«<br />

Listing 4-4 Anbieter: Quelltext aus der Moduldatei BeteiligteParteiBearbeiter<br />

LINKAGE SECTION.<br />

01 AN-ARGS-POINTER USAGE IS POINTER.<br />

01 AN-BP-BEARBEITER-OPERATION PIC X(7).<br />

88 AN-BP-BEARBEITER-LESE VALUE "LESE".<br />

88 AN-BP-BEARBEITER-ERZEUGE VALUE "ERZEUGE".<br />

01 AN-BP-BEARBEITER-LESE-ARGS.<br />

05 AN-LESE-ADRESSSATZ-NUMMER PIC 9(4).<br />

05 AN-LESE-BP-POINTER USAGE IS POINTER.<br />

01 AN-BP-BEARBEITER-ERZEUGE-ARGS.<br />

05 AN-ERZEUGE-BP-POINTER USAGE IS POINTER.<br />

PROCEDURE DIVISION USING<br />

AN-BP-BEARBEITER-OPERATION<br />

AN-ARGS-POINTER.<br />

...<br />

EVALUATE TRUE<br />

WHEN AN-BP-BEARBEITER-LESE<br />

SET ADDRESS OF AN-BP-BEARBEITER-LESE-ARGS<br />

TO AN-ARGS-POINTER<br />

©<br />

PERFORM P21-LESE<br />

WHEN AN-BP-BEARBEITER-ERZEUGE<br />

SET ADDRESS OF AN-BP-BEARBEITER-ERZEUGE-ARGS<br />

TO AN-ARGS-POINTER<br />

©<br />

PERFORM P22-ERZEUGE<br />

WHEN OTHER<br />

...<br />

END-EVALUATE.<br />

Listing 4-5 Nutzer: Quelltext aus der Moduldatei BeteiligteParteiVerwalter<br />

WORKING-STORAGE SECTION.<br />

01 NU-ARGS-POINTER USAGE IS POINTER.<br />

01 NU-BP-BEARBEITER-OPERATION PIC X(7).<br />

88 NU-BP-BEARBEITER-LESE VALUE "LESE".<br />

88 NU-BP-BEARBEITER-ERZEUGE VALUE "ERZEUGE".<br />

01 NU-BP-BEARBEITER-LESE-ARGS.<br />

...<br />

01 NU-BP-BEARBEITER-ERZEUGE-ARGS.<br />

05 NU-ERZEUGE-BP-POINTER USAGE IS POINTER.<br />

PROCEDURE DIVISION<br />

...<br />

SET NU-BP-BEARBEITER-ERZEUGE TO TRUE.<br />

SET NU-ARGS-POINTER TO ADDRESS OF ©<br />

NU-BP-BEARBEITER-ERZEUGE-ARGS.<br />

CALL "KL2110" USING<br />

NU-BP-BEARBEITER-OPERATION<br />

NU-ARGS-POINTER.


Zusammenfassung 71<br />

4.6 Zusammenfassung<br />

In diesem Abschnitt werden die wichtigsten Konzepte der drei Kernmodelle zusammengefasst.<br />

Außerdem werden die »Entkernung« des Implementierungsmodells und<br />

die sich dadurch ergebenen Änderungen bewertet.<br />

4.6.1 Eigenschaften der Kernmodelle<br />

Ein methodischer Übergang befindet sich zum einen zwischen dem fachlichen Modell<br />

und dem Designmodell und zum anderen zwischen dem Designmodell und dem Implementierungsmodell.<br />

Deswegen bilden die genannten Modelle den Kern des Modellsystems.<br />

Die Eigenschaften der Modelle, die sich bei den Übergängen zwischen den<br />

Ebenen ändern, sind in Tabelle 4-1 zusammengefasst.<br />

Tabelle 4-1 Eigenschaften der Kernmodelle<br />

Fachliches Modell Designmodell Implementierungsmodell<br />

Bauplan der Implementierung<br />

– lässt sich direkt in<br />

Quelltext umsetzen; stellt<br />

aber eine Abstraktion dar, da<br />

es logische Konzepte enthält.<br />

<strong>COBOL</strong>-spezifisch.<br />

Verantwortlichkeiten werden<br />

realisiert durch Module und<br />

Datenstrukturen – logisch<br />

gekapselt in Komponenten<br />

mit Schnittstellen.<br />

Fachliche Abstraktion des<br />

Systems – ohne technische<br />

Details und Aspekte der<br />

Implementierungsumgebung.<br />

Programmiersprachenunabhängig.<br />

Verteilt die Verantwortlichkeiten<br />

auf fachliche Klassen:<br />

Control, Entity und Boundary.<br />

Beschreibt die tatsächlichen<br />

Dateien und Ordner, die<br />

aus der Umsetzung des<br />

Designmodells in <strong>COBOL</strong><br />

entstehen.<br />

Abhängig von den Strukturmechanismen<br />

von<br />

<strong>COBOL</strong>.<br />

Die Konzepte des Designmodells<br />

werden auf Moduldateien<br />

und Copystreckendateien<br />

abgebildet.<br />

Allgemein. Konkret und formal. —<br />

Keine Schichten. Schichtenarchitektur. —<br />

Umreißt die Struktur nach<br />

fachlichen Gesichtspunkten.<br />

Konkretisiert die Struktur in<br />

der technischen <strong>COBOL</strong>-<br />

Umgebung; versucht die<br />

fachliche Struktur so gut wie<br />

möglich zu erhalten.<br />


72 Das Fallbeispiel »Kundenmappe«<br />

4.6.2 Bewertung der »Entkernung«<br />

Die wesentlichste Änderung ist die »Entkernung« des Implementierungsmodells. Das<br />

Designmodell enthält nun Module, Datenstrukturen und Copystrecken. Das Implementierungsmodell<br />

enthält nur noch die physischen Elemente des Dateisystems (Dateien,<br />

verteilbare Laufzeitkomponenten). Die Beziehungen zwischen den Elementen<br />

sind Kompilierungs- oder Laufzeitabhängigkeiten. Im Folgenden werden die Vor- und<br />

Nachteile erläutert:<br />

Pro:<br />

<br />

<br />

<br />

<br />

Leichtere Navigierbarkeit: Die Realisierung der Komponenten befindet sich jetzt<br />

innerhalb der Komponenten. Deshalb ist die Navigation bei der Verwendung von<br />

CASE-Werkzeugen leichter als das bisherige Springen zu einem neuen Modell.<br />

Die Elemente des Designmodells sind leichter zu pflegen und konsistent zu halten,<br />

da nur innerhalb eines Modells, anstatt über Modellgrenzen hinweg, die Elemente<br />

gepflegt werden müssen.<br />

Das Implementierungsmodell kann automatisch erzeugt werden: Alle Designentscheidungen<br />

und Spezifikationen sind jetzt im Designmodell. Deshalb ist es möglich,<br />

die Informationen, die für das »entkernte« Implementierungsmodell benötigt<br />

werden, aus dem Designmodell abzuleiten.<br />

Die Elemente des Implementierungsmodells können in das Laufzeitmodell integriert<br />

werden: Soll ein Laufzeitmodell angefertigt werden, werden physische Einheiten<br />

benötigt, um sie auf einen Hardware-Knoten zu legen. Diese Einheiten<br />

stellt das Implementierungsmodell bereit.<br />

Contra:<br />

− Die Informationsdichte hat sich im Designmodell vergrößert: Nachdem die Information<br />

aus dem Implementierungsmodell jetzt im Designmodell modelliert wird,<br />

muss mit <strong>einer</strong> großen Informationsdichte umgegangen werden. Durch die geschickte<br />

Verteilung der Elemente auf mehrere Diagramme kann dieses Problem<br />

bewältigt werden.<br />

− Standards sind verletzt worden: Aufgrund der »Entkernung« des Implementierungsmodells<br />

sowie leichten Änderungen am Designmodell ist der erst kürzlich<br />

freigegebene Standard »Technische Modellierung« [IZB 2003c] verletzt worden.<br />

Dies könnte innerhalb der IZB SOFT – wenn der Eindruck entsteht, dass sich<br />

Standards zu häufig ändern – die Akzeptanz der Standards verringern. Es sollte<br />

jedoch nicht außer Acht gelassen werden, dass eine solche Veränderung, die als<br />

Vereinfachung und somit als Effizienz steigernd empfunden wird, sich positiv auf<br />

die Standards auswirkt.


5 UML-Profil für moCa<br />

Die neue Methodik modellbasierte <strong>Entwicklung</strong> <strong>einer</strong> <strong>COBOL</strong>-<strong>Anwendung</strong> (moCa)<br />

basiert auf Modellen, die sich in unterschiedlichen Abstraktionsebenen befinden. Ziel<br />

dieses Kapitels ist es, die Semantik der Modellelemente zu definieren und eine graphische<br />

Repräsentation der Elemente, festzulegen.<br />

Als Modellierungssprache wird die Unified Modeling Language (UML) [OMG] verwendet,<br />

da sie Erweiterungsmechanismen anbietet.<br />

Erweiterungsmechanismen. Die Mechanismen sind Stereotypen, Tagged-Values<br />

und Einschränkungen. Stereotypen erweitern die Semantik von bereits bestehenden<br />

Elementen wie Klassen oder Beziehungen. Mithilfe von Stereotypen werden die Elemente<br />

der Modelle klassifiziert. Ein Stereotyp wird über den Klassennamen geschrieben<br />

und ist in Guillemets eingeschlossen («foo»). Um das Stereotyp leicht von dem<br />

Klassennamen zu unterscheiden, wird er immer klein geschrieben. Für ein Stereotyp<br />

können auch Icons definiert werden. Anstelle des Rechtecks erscheint dann das Icon.<br />

Mit Tagged-Values können Eigenschaftswerte für Elemente definiert werden. Einschränkungen<br />

sind definierte Regeln für die Elemente und spezifizieren die Verwendung.<br />

Eine Menge von Erweiterungen wird zu einem Profil zusammengefasst.<br />

Organisation der Modelle. Unter einem physischen System wird das System verstanden,<br />

das modelliert wird: in diesem Fall die Software der <strong>Anwendung</strong> (<strong>COBOL</strong>,<br />

CICS, etc.), die Hardware (Terminals, IBM S/360, etc.) und auch der Berater, der das<br />

Terminal bedient.<br />

Ein Modell stellt eine Sicht auf das physische System dar. Innerhalb eines Modells<br />

wird das physische System durch Modellelemente repräsentiert. Durch die Verwendung<br />

von Paketen kann eine Hierarchie geschaffen werden. Das höchste Paket in der<br />

Pakethierarchie wird das Top-Level-Paket genannt. Dieses Paket repräsentiert die<br />

Grenze des physischen Systems. Da die Grenze des Pakets eine Grenze auf Systemebene<br />

darstellt, kann sich die Semantik des Paketes von der der enthaltenen Pakete<br />

unterscheiden. Zum Beispiel könnte die Sichtbarkeit der Elemente auf der höchsten<br />

Ebene eingeschränkt sein.<br />

In der IZB SOFT ist das Gesamtsystem unterteilt in Systeme. Ein System stellt laut<br />

[IZB 2003c] eine Organisationseinheit dar, d. h. ein System wird eigenständig verwaltet<br />

und dokumentiert (Fach- und DV-Konzept, Modelle, Handbücher, etc.). Demnach<br />

wird für jedes System eine Modelldatei angelegt. Die Organisation der verschiedenen<br />

73


74 UML-Profil für moCa<br />

Sichten wird in Abbildung 5-1 anhand der Browser-Sicht von Rational Rose verdeutlicht.<br />

Pakete, die Sichten<br />

(Modelle) gruppieren<br />

Modell<br />

(Sicht auf das physische System)<br />

<br />

Top-Level-Modellelement<br />

(repräsentiert das physische System)<br />

Abbildung 5-1 Organisation der Modelle<br />

Use Case View / Logical View<br />

«modell» modell<br />

«system» <br />

Im Folgenden werden die Metamodelle für die verschiedenen Modelle beschrieben.<br />

Die Metamodelle sind als Klassendiagramme dargestellt; jede Klasse repräsentiert ein<br />

Stereotyp. Für die Modelle werden auch die zu verwendenden Datentypen definiert.<br />

Außerdem werden die Beziehungen zwischen den Elementen der verschiedenen Metamodelle<br />

bestimmt.<br />

5.1 <strong>Anwendung</strong>sfallmodell<br />

Mit dem <strong>Anwendung</strong>sfallmodell werden die Anforderungen an das System modelliert;<br />

das System wird dabei von außen betrachtet. Ziel ist es, die Funktionalität, die<br />

das System zu erbringen hat, vollständig über <strong>Anwendung</strong>sfälle zu dokumentieren.<br />

Bei <strong>Anwendung</strong>en, die zwischen Front- und Backend trennen, ist es sinnvoll es Sinn,<br />

die Anforderungen für die beiden Teile getrennt zu modellieren. Diese Trennung ermöglicht<br />

eine anwendungsfallzentrierte <strong>Entwicklung</strong>.<br />

Da die in dieser Arbeit vorgestellte Methodik auf die Erstellung von Komponenten für<br />

das Backend abzielt, ist es Gegenstand des <strong>Anwendung</strong>sfallmodells, die Anforderungen<br />

zu beschreiben, die an das Backend gestellt werden. Ein <strong>Anwendung</strong>sfall für das<br />

Backend stellt einen Geschäftsvorfall dar (vgl. Abschnitt 2.3.2).<br />

5.1.1 Struktur<br />

Ein Paket mit dem Stereotyp «anwendungsfallmodell» repräsentiert das <strong>Anwendung</strong>sfallmodell.<br />

Dieses Paket erweitert das UML-Basiselement Model und enthält Elemente,<br />

die auf der Ebene der Anforderungsbeschreibung das System modellieren.<br />

Ein <strong>Anwendung</strong>sfallmodell enthält ein <strong>Anwendung</strong>sfallsystem als Top-Level-Element,<br />

das durch ein Paket mit dem Stereotyp «anwendungsfallsystem» dargestellt wird. Es


<strong>Anwendung</strong>sfallmodell 75<br />

repräsentiert das <strong>Anwendung</strong>sfallpaket, das am höchsten in der Hierarchie steht, und<br />

bildet die Grenze des Systems zu s<strong>einer</strong> Umgebung.<br />

Ein <strong>Anwendung</strong>sfallsystem definiert eine Menge von Akteuren. Ein Akteur wird<br />

durch eine Klasse mit dem Stereotyp «actor» 32 dargestellt und steht mit den <strong>Anwendung</strong>sfällen<br />

in Beziehung. In dieser Arbeit werden folgende Akteure definiert: Berater,<br />

Frontend und Backend. Ein Akteur initiiert einen <strong>Anwendung</strong>sfall und erwartet,<br />

nachdem der <strong>Anwendung</strong>sfall seine Aktivitäten beendet hat, von dem System ein Ergebnis,<br />

das ihm in irgend<strong>einer</strong> Weise Nutzen bringt.<br />

<strong>Anwendung</strong>sfallmodell<br />

Enthält<br />

0..*<br />

<strong>Anwendung</strong>sfallpaket<br />

0..1<br />

<strong>Anwendung</strong>sfallsystem<br />

Backend<br />

Frontend<br />

0..*<br />

Akteur<br />

eingabe<br />

0..*<br />

<strong>Anwendung</strong>sfall<br />

0..* 0..*<br />

ausgabe<br />

Entität<br />

Abbildung 5-2 <strong>Anwendung</strong>sfallmetamodell<br />

Ein <strong>Anwendung</strong>sfallpaket wird durch ein Paket mit dem Stereotyp «anwendungsfallpaket»<br />

repräsentiert und gruppiert <strong>Anwendung</strong>sfälle. Diese Strukturierung darf nicht<br />

mit der inneren Struktur des Systems verwechselt werden.<br />

Für die Zuordnung der <strong>Anwendung</strong>sfälle zum Frontend und zum Backend gibt es<br />

zwei spezielle <strong>Anwendung</strong>sfallpakete: Das Paket Frontend (dargestellt durch ein Paket<br />

mit dem Stereotyp «frontend») und das Paket Backend (dargestellt durch ein Paket<br />

mit dem Stereotyp «backend»).<br />

Ein <strong>Anwendung</strong>sfallpaket enthält eine Menge von <strong>Anwendung</strong>sfällen. Ein <strong>Anwendung</strong>sfall<br />

hat, dargestellt in Abbildung 5-2, eine Menge von Entitäten als Ein- und<br />

Ausgabe. Die Entitäten sind Klassen, die nur Attribute enthalten. Zwischen Entitäten<br />

gibt es Beziehungen. Die Struktur der Entitäten repräsentiert den Problembereich.<br />

32 Dieses Stereotyp ist in der UML bereits enthalten.


76 UML-Profil für moCa<br />

5.1.2 Sichten<br />

Unter <strong>einer</strong> Sicht wird ein Ausschnitt der Elemente aus einem Modell und der Detailgrad,<br />

wie diese Elemente dargestellt werden, verstanden. Auf das <strong>Anwendung</strong>sfallmodell<br />

sind zwei Sichten definiert:<br />

<br />

<strong>Anwendung</strong>sfallsicht. Mehrere <strong>Anwendung</strong>sfalldiagramme zeigen wie Akteure<br />

mit den <strong>Anwendung</strong>sfällen in Beziehung stehen. Sequenz- und Kollaborationsdiagramme<br />

visualisieren den Ablauf der <strong>Anwendung</strong>sfälle.<br />

Problembereichsicht. Mit einem Klassendiagramm werden die Klassen dargestellt,<br />

welche die Konzepte des Problembereichs repräsentieren.<br />

<br />

5.2 Fachliches Modell<br />

Das fachliche Modell stellt eine fachliche Abstraktion des Systems dar. Die Struktur<br />

lehnt sich an der des <strong>Anwendung</strong>sbereiches an und wird somit nach fachlichen Gesichtspunkten<br />

entworfen. Es spezifiziert die wesentlichen fachlichen Informationen<br />

und das Verhalten des Systems, um die funktionalen Anforderungen zu erfüllen, die<br />

an das System gestellt werden. Es wird von <strong>einer</strong> idealen Computerplattform ausgegangen,<br />

d. h. technische Details oder Einschränkungen konkreter Implementierungsumgebungen<br />

werden nicht berücksichtigt.<br />

Die Klassen des fachlichen Modells lassen sich aus den <strong>Anwendung</strong>sfällen und ihren<br />

Beschreibungen bestimmen. Heuristiken für die Bestimmung der Klassen sind z. B. in<br />

[Bruegge] beschrieben.<br />

5.2.1 Struktur<br />

Das fachliche Modell wird durch ein Paket mit dem Stereotyp «fachlichesModell»<br />

repräsentiert. Dieses Paket erweitert das UML-Basiselement Model und enthält Elemente,<br />

die das System auf fachlicher Ebene modellieren.<br />

Das Top-Level-Element ist das fachliche System, dargestellt durch ein Paket mit dem<br />

Stereotyp «fachlichesSystem». Dieses Paket liegt am höchsten in der Hierarchie und<br />

bildet somit die Grenze des Systems zu s<strong>einer</strong> Umgebung.<br />

Ein fachliches Paket wird durch ein Paket mit dem Stereotyp «fachlichesPaket» dargestellt<br />

und gruppiert fachliche Klassen. Es gilt folgende Einschränkung: Enthält ein<br />

fachliches Paket ein weiteres fachliches Paket, darf es keine fachlichen Klassen enthalten.<br />

Verläuft eine Assoziation zwischen zwei Klassen aus unterschiedlichen Paketen, so<br />

impliziert sie eine Abhängigkeit zwischen den beiden Paketen; diese Abhängigkeit


Fachliches Modell 77<br />

wird durch eine Abhängigkeitsbeziehung modelliert, wobei die Richtung der Abhängigkeit<br />

aus der Navigationsrichtung abzuleiten ist.<br />

Ein fachliches Paket enthält fachliche <strong>Anwendung</strong>sfall-Realisierungen. Letztere werden<br />

durch Pakete mit dem Stereotyp «use-case realization» dargestellt. Mit diesen<br />

Paketen werden Sequenz- und Kollaborationsdiagramme gruppiert, welche <strong>Anwendung</strong>sfälle<br />

auf der fachlichen Ebene realisieren.<br />

Eine fachliche Klasse ist im Metamodell als abstrakt spezifiziert, da sie nur in Form<br />

der folgenden Ausprägungen verwendet wird:<br />

<br />

<br />

<br />

Eine Steuerungsklasse («control») repräsentiert eine Klasse, die einen Ablauf<br />

steuert oder eine Berechnung durchführt. Sie modelliert eine Funktionalität, die<br />

nicht genau an <strong>einer</strong> Klasse festgemacht werden kann. Mit dem Beginn des <strong>Anwendung</strong>sfalles<br />

wird eine Instanz der Steuerungsklasse erzeugt. Wenn der <strong>Anwendung</strong>sfall<br />

abgeschlossen ist, wird typischerweise auch die Instanz zerstört.<br />

Deswegen kann eine Steuerungsklasse keine Informationen über einen längeren<br />

Zeitraum speichern. Der Schwerpunkt <strong>einer</strong> Steuerungsklasse ist die Modellierung<br />

von Operationen. Eine Steuerungsklasse hat Beziehungen zu anderen fachlichen<br />

Klassen. In der Regel werden diese mit Assoziationen modelliert. So werden<br />

z. B. zu allen Entitäten, die in der Signatur der Operationen auftauchen, Assoziationen<br />

gezeichnet. Wenn eine Steuerungsklasse eine andere Steuerungsklasse<br />

nutzt, wird auch eine Assoziation eingezeichnet.<br />

Eine Boundary-Klasse («boundary») stellt eine Grenze eines Paketes oder Systems<br />

dar; sie modelliert Schnittstellen des Systems. Eine Boundary-Klasse kennt<br />

ihre Steuerungsklassen und Entitäten. Diese Beziehungen werden mit Assoziationen<br />

modelliert.<br />

Eine Entitätsklasse («entity») ist eine Klasse deren Information typischerweise<br />

einen <strong>Anwendung</strong>sfall überdauert. Schwerpunkt ist die Modellierung der Attribute.<br />

Lediglich die Operationen, die genau auf den Daten <strong>einer</strong> Entität operieren,<br />

werden in der Entität spezifiziert. Soll eine Entität modelliert werden, die sich<br />

aus mehreren Entitäten zusammensetzt, werden diese mit <strong>einer</strong> Aggregation in<br />

Verbindung gesetzt. Lose Beziehungen zwischen Entitäten werden durch gerichtete<br />

Assoziationen modelliert. Mit Hilfe der Generalisierungsbeziehung können<br />

spezielle Ausprägungen von Entitäten modelliert werden.


78 UML-Profil für moCa<br />

Fachliches Modell<br />

Enthält ein fachliches<br />

Paket ein weiteres<br />

fachliches Paket, darf<br />

es keine fachlichen<br />

Klassen enthalten.<br />

Enthält<br />

0..1 0..*<br />

Fachliches System<br />

Fachliches Paket<br />

0..*<br />

Fachliche<br />

<strong>Anwendung</strong>sfall-Realisierung<br />

0..*<br />

Fachliche Klasse<br />

Steuerungsklasse Boundary Entität<br />

Abbildung 5-3 Fachliches Metamodell<br />

Fachliche Klassen haben Attribute und Operationen, welche die Verantwortlichkeiten<br />

der fachlichen Klasse spezifizieren. Die Syntax <strong>einer</strong> Operation in <strong>einer</strong> fachlichen<br />

Klasse ist im Folgenden beschrieben:<br />

Operation ::= Sichtbarkeit Name ( Parameterliste ) [ : Rückgabetyp ]<br />

Parameterliste ::= Parameter , …<br />

Parameter<br />

::= Name : Typ<br />

Sichtbarkeit ::= + | ~ | –<br />

Die Sichtbarkeit ist unterteilt in:<br />

Öffentlich (+): Alle Elemente können diese Operation aufrufen.<br />

<br />

System: Alle Elemente, die sich im gleichen System wie die fachliche Klasse befinden,<br />

dürfen die Operation aufrufen. Diese Sichtbarkeit ist in der UML nicht<br />

enthalten. Stattdessen wird das Symbol für die Sichtbarkeit package (~) 33 benutzt.<br />

<br />

Privat (–): Nur die Klasse selber darf die Operation ausführen.<br />

<br />

Der Typ sowohl für die Parameter als auch für die Rückgabe, ist entweder eine Entität,<br />

ein für das fachliche Modell definierter elementarer Typ (vgl. Tabelle 5-1) oder<br />

eine Aufzählung. Diese werde weiter unten genau beschrieben.<br />

33 Rational Rose stellt diese Sichtbarkeit nicht zur Verfügung. Deswegen wird in der IZB SOFT für die<br />

Sichtbarkeit System die Rose-Sichtbarkeit implementation verwendet.


Fachliches Modell 79<br />

Tabelle 5-1 Elementare- und Basisdatentypen des fachlichen Modells<br />

Datentyp Beschreibung & Einschränkungen Mögliche Werte<br />

Ganzzahl<br />

Ganzzahl<br />

PositiveGanzzahl<br />

PositiveGanzzahl<br />

Festkommazahl<br />

Festkommazahl<br />

Zeichenkette<br />

Zeichenkette<br />

Ja/Nein-Wert<br />

Eine positive oder negative ganze Zahl, die 0<br />

eingeschlossen.<br />

Die Länge n kann eingeschränkt werden.<br />

Eine positive ganze Zahl, die 0 eingeschlossen.<br />

Die Länge n kann eingeschränkt werden.<br />

Eine vorzeichenbehaftete Festkommazahl.<br />

Die Anzahl der Vorkommastellen n und Nachkommastellen<br />

m kann eingeschränkt werden.<br />

Eine Zeichenkette.<br />

Die Länge n der Zeichenkette kann eingeschränkt<br />

werden.<br />

Ein fachlicher boolescher Wert, der entweder<br />

»Ja« oder »Nein« sein kann.<br />

100000;<br />

34; 0;<br />

-4444<br />

30500;<br />

0; 45<br />

15500,00<br />

„Paul“;<br />

Ja;<br />

Nein<br />

Datum Ein Datum mit Tag, Monat und Jahr. 17.07.2003<br />

Geldbetrag<br />

Geldbetrag<br />

Ein vorzeichenbehafteter Geldbetrag.<br />

Eingeschränkt können die Vorkommastellen<br />

n, die Nachkommastellen m und die Währung<br />

w (lt. ISO-Norm) werden.<br />

15, 50 EUR;<br />

-20,00 USD<br />

Attribute von fachlichen Klassen haben die folgende Syntax:<br />

[ « Stereotyp » ] [ / ] + Name [ [Multiplizität] ] : Typ [ = Wert ] [ { Einschränkungen } ]<br />

Ein Attribut kann mit folgenden Stereotypen ausgezeichnet werden:<br />

<br />

<br />

«readonly» – Auf das Attribut kann nur lesend zugegriffen werden.<br />

«primaryKey» – Das Attribut stellt den primären Schlüssel dar.<br />

Berechnet ein Attribut seinen Wert aus anderen Elementen, wird es als abgeleitetes<br />

Attribut (derived attribute) bezeichnet. Ein abgeleitetes Attribut wird mit dem Symbol<br />

»/« gekennzeichnet. Die Vorschrift, nach der das Attribut zu berechnen ist, wird<br />

mit <strong>einer</strong> Zusicherung spezifiziert.<br />

Die Sichtbarkeit bei Attributen von fachlichen Klassen ist immer öffentlich (+); mit<br />

der Multiplizität werden Arrays definiert; der Typ der Attribute wird immer spezifiziert.


80 UML-Profil für moCa<br />

Ein Aufzählungstyp wird durch eine Klasse mit dem Stereotyp «enumeration» modelliert.<br />

Der Name der Klasse wird mit der Endung »Enum« erweitert. Ein Aufzählungstyp<br />

für eine Anrede könnte wie in Abbildung 5-4 modelliert werden.<br />

«enumeration»<br />

AnredeEnum<br />

FRAU<br />

HERR<br />

Abbildung 5-4 Beispiel für die Modellierung eines Aufzählungstyps<br />

Für jeden Aufzählungswert wird ein statisches Attribut spezifiziert. Aufzählungsklassen<br />

kommen nur als Typen von Attributen oder Parametern von Operationen vor, d. h.<br />

sie haben keine Beziehungen zu anderen fachlichen Klassen.<br />

Als Namenskonvention gilt für die fachlichen Klassen: Klassen- und Beziehungsnamen<br />

beginnen immer mit einem Großbuchstaben; Attribute, Stereotypen und Rollen<br />

beginnen immer mit einem Kleinbuchstaben.<br />

5.2.2 Sichten<br />

Auf das fachliche Modell sind zwei Sichten definiert:<br />

<br />

<br />

Statische Sicht. Klassendiagramme zeigen die fachlichen Pakete und die enthaltenen<br />

fachlichen Klassen. Alle Beziehungen zwischen den Elementen können<br />

dargestellt werden.<br />

Dynamische Sicht. Sequenz- und Kollaborationsdiagramme zeigen den Ablauf<br />

der <strong>Anwendung</strong>sfälle mit den fachlichen Klassen. Die Diagramme sind in dem<br />

entsprechenden <strong>Anwendung</strong>sfall-Realisierungspaket zusammengefasst.<br />

5.2.3 Beziehungen zum <strong>Anwendung</strong>sfallmetamodell<br />

Um die Modellierung rückverfolgen zu können, werden die fachlichen Pakete, welche<br />

einen <strong>Anwendung</strong>sfall realisieren, in Beziehung mit diesem gesetzt. Der Zusammenhang<br />

zwischen den fachlichen Paketen und den <strong>Anwendung</strong>sfällen ist in<br />

Abbildung 5-5 modelliert. Eine <strong>Anwendung</strong>sfall-Realisierung ist genau einem <strong>Anwendung</strong>sfall<br />

zugeordnet. Zwischen den beiden Beziehungen herrscht eine Konsistenzbedingung:<br />

Wenn ein fachliches Paket und eine <strong>Anwendung</strong>sfall-Realisierung<br />

denselben <strong>Anwendung</strong>sfall realisieren, muss der erste Aufruf in der <strong>Anwendung</strong>sfall-<br />

Realisierung auf eine fachliche Klassen gehen, die im fachlichen Paket enthalten ist.


Designmodell 81<br />

<strong>Anwendung</strong>sfallmetamodell<br />

Fachliches Metamodell<br />

Realisiert<br />

<strong>Anwendung</strong>sfall 0..* 0..1<br />

1<br />

0..1<br />

Fachliches Paket<br />

Fachliche<br />

<strong>Anwendung</strong>sfall-Realisierung<br />

Abbildung 5-5 Zusammenhang zwischen fachlichen Metamodellen und <strong>Anwendung</strong>sfallmetamodellen<br />

5.3 Designmodell<br />

Das Designmodell stellt einen Bauplan für die Implementierung dar. Die fachliche<br />

Struktur, modelliert im fachlichen Modell, dient als Ausgangsbasis für den Entwurf in<br />

<strong>einer</strong> konkreten, technischen Umgebung. Orientierte man sich bei der Struktur des<br />

fachlichen Modells am Problembereich, bestimmen im Designmodell technische Aspekte<br />

die Struktur. Das Designmodell berücksichtigt die spezifischen Einschränkungen<br />

<strong>einer</strong> <strong>COBOL</strong>/HOST-Umgebung. Ziel ist es, nur so viel zu modellieren, dass das<br />

Modell eindeutig implementiert werden kann. Unter Implementierung wird die Umsetzung<br />

der Elemente des Designmodells in <strong>COBOL</strong>-Quelltext verstanden.<br />

5.3.1 Struktur<br />

Das Designmodell wird durch eine Paket mit dem Stereotyp «designmodell» repräsentiert.<br />

Dieses Paket erweitert das UML-Basiselement Model. Somit stellen die Elemente<br />

des Designmodells Teile des physischen Systems dar.<br />

Das Designmodell enthält als Top-Level-Element das Designsystem, das durch ein<br />

Paket mit dem Stereotyp «designsystem» repräsentiert wird. Dieses Element steht für<br />

das zu modellierende System und stellt auch die Grenze des Systems zu s<strong>einer</strong> Umgebung<br />

dar.<br />

Das Designsystem enthält <strong>Anwendung</strong>sfall-Realisierungen. Eine <strong>Anwendung</strong>sfall-<br />

Realisierung ist ein Paket mit dem Stereotyp «use-case realization»; es gruppiert beliebig<br />

viele Sequenz- und Kollaborationsdiagramme, die einen <strong>Anwendung</strong>sfall mit<br />

Elementen aus dem Designmodell realisieren. Der Name des Pakets besteht aus dem<br />

Namen des zu realisierenden <strong>Anwendung</strong>sfalls und einem Anhang » – Design«. Der<br />

Anhang kennzeichnet die Ebene; der Name ordnet die Realisierung einem <strong>Anwendung</strong>sfall<br />

zu.


82 UML-Profil für moCa<br />

Designmodell<br />

0..1<br />

Designsystem<br />

0..*<br />

Design<br />

<strong>Anwendung</strong>sfall-Realisierung<br />

Enthält eine Designeinheit<br />

eine weitere<br />

Designeinheit, darf sie<br />

keine Designklassen<br />

enthalten<br />

0..5<br />

Schicht<br />

0..* 0..*<br />

Enthält<br />

Designeinheit<br />

0..*<br />

Designklasse<br />

Designkomponente<br />

Designpaket<br />

IndizierteDatei<br />

0..*<br />

Schnittstelle<br />

Datenstruktur<br />

Modul<br />

Copystrecke<br />

Abbildung 5-6 Designmetamodell<br />

Das Designsystem ist unterteilt in Schichten. Eine Schicht wird durch ein Paket mit<br />

dem Stereotyp «schicht» dargestellt. 34<br />

Eine Schicht enthält beliebig viele Designeinheiten. Eine Designeinheit ist entweder<br />

eine Designkomponente oder ein Designpaket. Abbildung 5-6 zeigt das Metamodell,<br />

in dem die Designeinheit als abstrakte Klasse modelliert ist. Eine Designeinheit enthält<br />

Designklassen und darf beliebig geschachtelt werden, d. h. ein Designkomponenten<br />

darf weitere Designkomponenten enthalten und auch Designpakete. Allerdings<br />

besteht eine Einschränkung: Enthält eine Designeinheit eine weitere Designeinheit,<br />

darf sie keine Designklassen enthalten.<br />

Ein Designpaket wird durch ein Paket mit dem Stereotyp «designpaket» repräsentiert.<br />

Es enthält entweder Module und Datenstrukturen oder weitere Designpakete und Designkomponenten.<br />

Auf alle Elemente eines Designpaketes kann von außen zugegrif-<br />

34 Vgl. hierzu die im Abschnitt 2.3.2 beschriebene Schichtenarchitektur. Die dort beschriebenen Konzepte,<br />

insbesondere die Bezeichnungen der Schichten, sind zu übernehmen. Demnach enthält ein<br />

Designsystem maximal fünf Schichten.


Designmodell 83<br />

fen werden. Ein Designpaket exportiert alle Elemente, die es enthält, und stellt somit<br />

ein reines Gruppierungselement dar.<br />

Eine Designkomponenten wird repräsentiert durch ein Paket mit dem Stereotyp «designkomponente».<br />

Die Designkomponente erweitert das UML-Basiselement Subsystem<br />

und darf deswegen instanziiert werden. Eine Designkomponenten kann folgende<br />

Elemente enthalten:<br />

<br />

<br />

<br />

<br />

<br />

<br />

Designkomponenten<br />

Designpakete<br />

Schnittstellen<br />

Module<br />

Datenstrukturen<br />

Indizierte Dateien<br />

Die enthaltenen Schnittstellen grenzen die Designkomponente von einem Designpaket<br />

ab. Eine Designkomponenten kapselt ihre Elemente – exportiert werden nur Schnittstellen<br />

und öffentliche Datenstrukturen; Module werden immer gekapselt. Enthält<br />

eine Designkomponente z. B. zwei weitere Designkomponenten, so exportiert sie die<br />

Schnittstellen der verschachtelten Designkomponenten.<br />

Mit <strong>einer</strong> Designeinheit als Quelle werden Abhängigkeitsbeziehungen in den folgenden<br />

Fällen eingezeichnet:<br />

<br />

<br />

Ein Element <strong>einer</strong> Designeinheit ruft den Dienst <strong>einer</strong> Schnittstelle auf: Abhängigkeit<br />

von der Designeinheit zu der Schnittstelle.<br />

Ein Element <strong>einer</strong> Designeinheit nutzt ein Element aus <strong>einer</strong> anderen Designeinheit:<br />

Abhängigkeit von der Designeinheit zu der Designeinheit.<br />

Eine Schnittstelle wird durch ein Interface repräsentiert, also durch eine Klasse mit<br />

dem Stereotyp «interface».<br />

Für die Sichtbarkeit <strong>einer</strong> Schnittstelle werden zwei Fälle unterschieden. (1) Die<br />

Schnittstelle ist öffentlich, d. h. alle Elemente dürfen die enthaltenen Operationen aufrufen.<br />

(2) Die Schnittstelle hat die Sichtbarkeit System 35 , d. h. die enthaltenen Operationen<br />

dürfen nur von Elementen aus dem System aufgerufen werden, zu dem die<br />

Schnittstelle gehört.<br />

Hinweis.Alle Operationen <strong>einer</strong> öffentlichen Schnittstelle, die in der Steuerungssicht<br />

liegt, stellen (nach der KBS-Begrifflichkeit) Aufträge dar.<br />

35 Auch in diesem Fall wird in Rational Rose die Sichtbarkeit implementation gewählt. Außerdem<br />

bietet es sich an, die Sichtbarkeit der Schnittstellen farblich zu kodieren.


84 UML-Profil für moCa<br />

In <strong>einer</strong> Schnittstelle werden Operationen spezifiziert und die in der Signatur vorkommenden<br />

Datenstrukturen vereinbart. Im Folgenden wird die Syntax der Operationen<br />

beschrieben:<br />

Operation ::= + Name ( Parameter , …) [ : Rückgabetyp ]<br />

Parameter<br />

Richtung<br />

::= Richtung [ pointer ] Name : Typ<br />

::= in | out | inout<br />

Die Sichtbarkeit der Operationen ist immer öffentlich (+), d. h. alle Elemente dürfen<br />

sie aufrufen.<br />

Die Richtung spezifiziert den Parameter nach der Einteilung, die in Abschnitt 2.4.3<br />

beschrieben ist. Durch pointer kann spezifiziert werden, dass bei der Parameterübergabe<br />

nicht ein Wert, sondern ein Zeiger auf den spezifizierten Typ übergeben wird.<br />

Als Typen dürfen elementare <strong>COBOL</strong>-Datentypen sowie im Modell spezifizierte Datenstrukturen<br />

verwendet werden. In Tabelle 5-2 ist die Umwandlung der Typen aus<br />

dem fachlichen Modell in das Designmodell beschrieben. Als Rückgabetyp steht in<br />

der Regel eine Datenstruktur, die Informationen über den Verlauf der Ausführung<br />

enthält (z. B. Status und Fehlernummer). Wird innerhalb eines Systems immer dieselbe<br />

Datenstruktur als Rückgabetyp verwendet, kann der Rückgabetyp bei den Operationen<br />

weggelassen werden. Weitere Beschreibungen, welche die Schnittstelle genauer<br />

spezifizieren, können in textueller Form zur Schnittstelle hinzugefügt werden.<br />

Eine indizierte Datei (indexed file) wird durch eine Klasse mit dem Stereotyp «indizierteDatei»<br />

dargestellt. <strong>COBOL</strong> bietet verschiedene Möglichkeiten an, Daten persistent<br />

zu speichern. Für das Fallbeispiel wurde eine indizierte Datei eingesetzt. Diese<br />

Datei speichert eine Menge von Datensätzen ab und bietet einen indizierten Zugriff<br />

auf die Datensätze. Die Struktur der Datensätze wird durch eine Komposition zu <strong>einer</strong><br />

Datenstruktur spezifiziert. Ein Modul, das eine indizierte Datei nutzt, also Datensätze<br />

liest und schreibt, hat eine usage-Beziehung (Abhängigkeitsbeziehung) zu dieser Datei.<br />

Eine Datenstruktur wird durch eine Klasse mit einem Stereotyp «datenstruktur» repräsentiert.<br />

Eine Datenstruktur enthält keine Operationen, sondern nur Attribute mit der<br />

folgenden Syntax:<br />

[ « Stereotyp » ] [ / ] + Name [ [ Multiplizität ] ] : Typ [ = Wert ] [ { Einschränkungen } ]<br />

Die Syntax ist also ähnlich wie bei den Attributen <strong>einer</strong> fachlichen Klasse<br />

(vgl. Abschnitt 5.2.1).<br />

Die folgenden Änderungen sind für Attribute <strong>einer</strong> Datenstruktur definiert: (1) Es<br />

kommt das Stereotyp «foreignKey» hinzu. Damit wird ein Attribut als ein primärer<br />

Schlüssel <strong>einer</strong> anderen Datenstruktur spezifiziert. (2) Ein Attribut kann wie im fachlichen<br />

Modell als abgeleitet gekennzeichnet werden. (3) Im Gegensatz zum fachlichen


Designmodell 85<br />

Modell hat die Multiplizität immer eine obere Schranke. (4) Als Typen dürfen elementare<br />

<strong>COBOL</strong>-Datentypen und im Modell spezifizierte Datenstrukturen verwendet<br />

werden. Eine alternative Darstellung eines Attributs ist die Verwendung <strong>einer</strong> Aggregation.<br />

Mit Attributen werden nur Felder der Datenstruktur spezifiziert, die einen<br />

Wert enthalten.<br />

Soll ein Zeiger (ein Feld, das eine Datenstruktur referenziert) modelliert werden, wird<br />

eine gerichtete Assoziation von der Datenstruktur des Attributes zur referenzierten<br />

Datenstruktur gezeichnet.<br />

Tabelle 5-2 Umwandlung der fachlichen Typen in technische Typen<br />

Typ im fachlichen Modell<br />

Ganzzahl<br />

PositiveGanzzahl<br />

Festkommazahl<br />

Zeichenkette<br />

Ja/Nein-Wert<br />

Typ im Designmodell<br />

PIC S9(n)<br />

PIC 9(n)<br />

PIC S9(n)V9(m)<br />

PIC X(n)<br />

PIC X<br />

Mit 88-Stufennummer:<br />

01 SCHALTER PIC X VALUE ' '.<br />

88 SCHALTER-JA VALUE 'J'.<br />

88 SCHALTER-NEIN VALUE 'N'.<br />

Eine Copystrecke ist eine spezielle Datenstruktur. Sie repräsentiert eine wiederverwendbare<br />

Datenstruktur. Eine Datenstruktur kann weiter verf<strong>einer</strong>t werden durch eine<br />

Copystrecke.<br />

Ein Modul wird durch eine Klasse mit dem Stereotyp «modul» repräsentiert. Ein Modul<br />

spezifiziert und realisiert eine Menge von Operationen. Damit sowohl die Mitarbeiter<br />

der Fachabteilung als auch die Entwickler erkennen können, welches Modul<br />

gemeint ist, besteht der Name eines Moduls aus dem Dateinamen des Moduls (z. B.<br />

KL1100) und <strong>einer</strong> Kurzbezeichnung der vom Modul erfüllten Funktionalität (z. B.<br />

KundeFinder).<br />

Die Operationen eines Moduls, das innerhalb <strong>einer</strong> Komponente liegt, sind von außen<br />

nicht sichtbar. Deswegen kann ein Modul mit <strong>einer</strong> Realisierungs-Beziehung zu <strong>einer</strong><br />

Schnittstelle einen Teil s<strong>einer</strong> Operation exportieren. Mit <strong>einer</strong> Aufrufbeziehung (Abhängigkeit<br />

mit dem Stereotyp «call») innerhalb <strong>einer</strong> Komponenten zu einem anderen


86 UML-Profil für moCa<br />

Modul oder zu <strong>einer</strong> Schnittstelle wird spezifiziert, dass das Modul den bereitgestellten<br />

Dienst nutzt.<br />

Soll die Beziehung zwischen einem Modul und <strong>einer</strong> Datenstruktur modelliert werden,<br />

sind zwei Fälle zu unterscheiden:<br />

<br />

<br />

Die Datenstruktur liegt im Speicherbereich des Moduls (working-storage section):<br />

Eine Aggregation vom Modul zur Datenstruktur wird eingezeichnet. Eine<br />

Kardinalität und eine Rolle können spezifiziert werden.<br />

Die Datenstruktur liegt nicht im Speicherbereich des Moduls (Ein Zeiger in der<br />

working-storage section, ein Zeiger oder Feld in der linkage section): Eine<br />

Assoziation vom Modul zur Datenstruktur wird eingezeichnet. Eine Kardinalität<br />

und eine Rolle können spezifiziert werden.<br />

5.3.2 Sichten<br />

Es sind vier Sichten auf das Designmodell definiert:<br />

Statische Komponentensicht. Klassendiagramme zeigen die Verteilung der<br />

Funktionalität auf die Designkomponenten, deren Schnittstellen und die Abhängigkeiten<br />

untereinander. Folgende Elemente werden dargestellt: Schichten, De-<br />

<br />

signpakete, Designkomponenten und Schnittstellen, wobei die Schnittstellen in<br />

der Lollipop-Notation dargestellt werden.<br />

<br />

<br />

Dynamische Komponentensicht. Sequenz- und Kollaborationsdiagramme zeigen<br />

wie die <strong>Anwendung</strong>sfälle mit Komponenten und Schnittstellen realisiert<br />

werden. Die Diagramme sind in den entsprechenden <strong>Anwendung</strong>sfall-<br />

Realisierungspaketen zusammengefasst.<br />

Statische Modulsicht. Klassendiagramme beschreiben die Innenansicht der<br />

Komponenten, also die Details der Schnittstellen, Module und Datenstrukturen.<br />

Alle Elemente können dargestellt werden. Allerdings sollte nicht zuviel Information<br />

in einem Diagramm modelliert werden.<br />

Dynamische Modulsicht. Sequenz- und Kollaborationsdiagramme zeigen wie<br />

die <strong>Anwendung</strong>sfälle mit Modulen realisiert werden. Die Diagramme sind in den<br />

<br />

entsprechenden <strong>Anwendung</strong>sfall-Realisierungspaketen zusammengefasst.<br />

5.3.3 Beziehungen zum fachlichen Metamodell<br />

Abbildung 5-7 modelliert die Beziehungen zwischen den Elementen des Design-<br />

Metamodells und den Elementen des fachlichen Metamodells.<br />

Bei der Beziehung zwischen fachlichen Paketen und Designkomponenten sind nur die<br />

elementaren fachlichen Pakete gemeint. Die Struktur der fachlichen Pakete wird ver-


Designmodell 87<br />

worfen. Aus einem fachlichen Paket wird jeweils eine Designkomponenten in der<br />

Steuerungs-, Geschäftslogik- und Datenzugriffsschicht. Der Entwickler hat die Möglichkeit<br />

eine Komponente zu löschen, wenn sie nicht benötigt wird.<br />

Steuerungsklassen werden auf Schnittstellen abgebildet. Für jede Steuerungsklasse,<br />

die nicht private Operationen besitzt, wird eine Schnittstelle mit diesen Operationen<br />

erstellt. Bei der Abbildung der Operationen ändert sich die Syntax, wie in den vorigen<br />

Abschnitten beschrieben wurde. Für Steuerungsklassen mit privaten Operationen und<br />

Entitäten mit Operationen wird jeweils ein Modul mit diesen Operationen erstellt.<br />

Fachliches Metamodell<br />

Designmetamodell<br />

Fachliches Paket<br />

0..1 0..3<br />

0..1<br />

Designkomponente<br />

Realisiert<br />

0..1<br />

Designpaket<br />

Fachliche Klasse<br />

0..* 0..*<br />

0..*<br />

0..*<br />

Schnittstelle<br />

Modul<br />

Entität<br />

0..1 0..*<br />

Datenstruktur<br />

Fachliche<br />

<strong>Anwendung</strong>sfall-Realisierung<br />

1<br />

0..1<br />

Design<br />

<strong>Anwendung</strong>sfall-Realisierung<br />

Abbildung 5-7 Zusammenhang zwischen Designmetamodellen und fachlichen<br />

Metamodellen<br />

Eine Entität wird auf Datenstrukturen abgebildet. Aus <strong>einer</strong> Entität können mehrere<br />

Datenstrukturen entstehen, z. B. könnte es aus Performance-Gründen notwendig sein,<br />

eine Datenstruktur in mehrere Datenstrukturen zu zerlegen. Zuerst werden die fachlichen<br />

Typen der Attribute in <strong>COBOL</strong>-spezifische Typen umgewandelt. Danach kann<br />

die Datenstruktur mit technischen Attributen ergänzt werden.<br />

Komplizierter wird es bei der Abbildung von mehreren, in Beziehung stehenden Entitäten.<br />

Die Generalisierung muss aufgebrochen werden, da <strong>COBOL</strong> keinen Mechanismus<br />

für Vererbung anbietet. Auf die Beschreibung eines Verfahrens für das Aufbrechen<br />

der Generalisierung wird in dieser Arbeit verzichtet, da die vollständige Beschreibung<br />

eines solchen Verfahrens sehr umfangreich wäre.


88 UML-Profil für moCa<br />

Aus <strong>einer</strong> Aggregation zwischen zwei Entitäten wird im Designmodell eine Komposition.<br />

Bei <strong>einer</strong> gerichteten Assoziation zwischen zwei Entitäten im fachlichen Modell<br />

wird bei der Datenstruktur der Quelle ein Feld mit dem Primärschlüssel des Ziels eingefügt.<br />

Dieses Feld wird mit dem Stereotyp «foreignKey» ausgezeichnet.<br />

Ist die Kardinalität <strong>einer</strong> Beziehung im fachlichen Modell »0..*«, muss bei der Abbildung<br />

in das Designmodell aufgrund von <strong>COBOL</strong>-Einschränkungen eine obere Grenze<br />

definiert werden.<br />

Die fachlichen <strong>Anwendung</strong>sfall-Realisierungen werden zu <strong>Anwendung</strong>sfall-<br />

Realisierungen im Designmodell verf<strong>einer</strong>t.<br />

5.4 Implementierungsmodell<br />

Das Implementierungsmodell beschreibt wie die Konzepte des Designmodells in Dateien<br />

und in Quelltext umgesetzt werden. Die Dateien, die <strong>COBOL</strong> zur Verfügung<br />

stellt, sind Moduldateien und Copystrecken. Abhängigkeiten zwischen den Dateien,<br />

die für das Kompilieren bestehen, werden spezifiziert. Gruppierungskonzepte aus dem<br />

Designmodell werden ebenfalls in das Implementierungsmodell abgebildet, z. B. werden<br />

die Dateien in Ordnern gruppiert. Dabei ist zu beachten, dass die Konzepte, Datei<br />

und Ordner, in <strong>einer</strong> konkreten <strong>Entwicklung</strong>sumgebung oft andere Namen haben:<br />

<br />

<br />

Unter Rational ClearCase 36 gibt es Dateien und Ordner.<br />

Unter MVC 37 gibt es Members, Sequential Data-sets und Libraries.<br />

Außerdem bietet das Implementierungsmodell eine Sicht auf den Inhalt der Quelltextdateien<br />

an.<br />

5.4.1 Struktur<br />

Das Implementierungsmodell wird durch ein Paket mit dem Stereotyp «implementierungsmodell»<br />

dargestellt. Dieses Paket erweitert das UML-Basiselement Model.<br />

Das Implementierungsmodell besteht aus einem Paket mit dem Stereotyp «implementierungssystem»,<br />

welches das Top-Level-Paket Implementierungssystem repräsentiert.<br />

Das Implementierungssystem enthält Implementierungskomponenten, dargestellt<br />

durch Pakete mit dem Stereotyp «implementierungskomponente». Diese Pakete repräsentieren<br />

Ordner im Dateisystem.<br />

Eine Komponente gruppiert Dateien, dargestellt durch Klassen mit dem Stereotyp<br />

«datei». Es gibt zwei spezielle Dateien: die Moduldatei («moduldatei») und die Co-<br />

36 Rational ClearCase ist ein Werkzeug für die Versionsverwaltung von Dokumenten.<br />

37 MVC ist ein Betriebssystem für IBM-Großrechner und steht für Multiple Virtual Storage.


Implementierungsmodell 89<br />

pystreckedatei («copystreckedatei»). Die Moduldatei repräsentiert eine Datei, die den<br />

Quelltext eines Moduls enthält; die Copystreckedatei repräsentiert eine Datei, die den<br />

Quelltext <strong>einer</strong> Copystrecke enthält. Die einzige Art der Beziehung zwischen Elemente<br />

des Implementierungsmodells ist die Abhängigkeitsbeziehung.<br />

Implementierungsmodell<br />

0..1<br />

Implementierungssystem<br />

0..*<br />

Implementierungskomponente<br />

0..*<br />

Datei<br />

Moduldatei<br />

Copystreckedatei<br />

Abbildung 5-8 Implementierungsmetamodell<br />

5.4.2 Sichten<br />

Auf das Implementierungsmodell sind zwei Sichten definiert:<br />

<br />

Dateisicht. Mehrere Klassendiagramme zeigen die Implementierungskomponenten<br />

mit den enthaltenen Dateien und die Abhängigkeiten untereinander.<br />

Quelltextsicht. Zeigt den Inhalt der Quelltextdateien, also die <strong>COBOL</strong>-Implementierung<br />

der <strong>Anwendung</strong>, an.<br />

<br />

5.4.3 Beziehungen zum Designmetamodell<br />

Der Zusammenhang zwischen den Elementen der Metamodelle ist in Abbildung 5-9<br />

modelliert. Aus einem Designpaket oder <strong>einer</strong> Designkomponente wird eine Implementierungskomponente<br />

mit demselben Namen. Aus einem Modul wird eine Moduldatei,<br />

allerdings wird als Name nur noch die Modulnummer verwendet. Auch bei der<br />

Abbildung <strong>einer</strong> Copystrecke in die Copystreckedatei wird nur noch die Nummer als<br />

Name verwendet. Aus <strong>einer</strong> Indizierten Datei wird eine Datei. Die Umsetzung der


90 UML-Profil für moCa<br />

Elemente des Designmodells nach <strong>COBOL</strong>-Quelltext ist im Abschnitt 4.5.2 beschrieben.<br />

Designmetamodell<br />

Implementierungsmetamodell<br />

Designpaket<br />

Designkomponente<br />

Modul<br />

Copystrecke<br />

0..1<br />

1<br />

0..1 1<br />

0..1 1<br />

Realisiert<br />

0..1 1<br />

Implementierungskomponente<br />

Moduldatei<br />

Copystreckedatei<br />

IndizierteDatei<br />

0..1 1<br />

Datei<br />

Abbildung 5-9 Zusammenhang zwischen Implementierungsmetamodellen<br />

und Designmetamodellen


6 Zusammenfassung und Ausblick<br />

Die IZB SOFT entwickelt <strong>Anwendung</strong>en für Bank- und Kreditinstitute. Die Architektur<br />

der <strong>Anwendung</strong>en besteht aus Terminals, denen von einem Großrechner Dienste<br />

zur Verfügung gestellt werden. Diese Dienste sind vorwiegend in <strong>COBOL</strong> realisiert.<br />

Da die Programmiersprache <strong>COBOL</strong> keine Mechanismen anbietet, um Software auf<br />

der Basis von Komponenten zu entwickeln, ist es erst durch den Einsatz von Modellen<br />

möglich, Komponenten – wenn auch nur logisch – zu bilden. Die Modelle modellieren<br />

die <strong>Anwendung</strong>en auf verschiedenen Abstraktionsebenen. Dabei treten die typischen<br />

Probleme der Softwareentwicklung auf: Die Systeme sind sehr komplex und<br />

Flexibilität ist eine Schlüsselanforderung.<br />

Um die große Menge an Information und deren Komplexität kontrollieren zu können,<br />

wird eine modellbasierte <strong>Entwicklung</strong>smethodik eingesetzt. Diese Methodik ist in den<br />

iterativen und architekturzentrierten <strong>Entwicklung</strong>sprozess der IZB SOFT eingebettet.<br />

Jedoch kommt es zu Brüchen in der <strong>Entwicklung</strong>: Da die Übergänge zwischen den<br />

Modellen unzureichend definiert sind, kann die Konsistenz der Modelle nicht sichergestellt<br />

werden. Darüber hinaus besteht die Gefahr, dass wichtige Designentscheidungen<br />

während der <strong>Entwicklung</strong> verloren gehen.<br />

In dieser Arbeit wurde eine durchgängige Methodik geschaffen, um <strong>COBOL</strong>-<br />

<strong>Anwendung</strong>en für Großrechner modellbasiert zu entwickeln. Die Methodik ist eine<br />

Weiterentwicklung des bisherigen Vorgehens der IZB SOFT und wurde auf Grundlage<br />

der firmeninternen Standards konzipiert. Dabei war eine der Zielsetzungen, die<br />

Methodik einfach zu halten und so wenige Änderungen wie möglich an den Standards<br />

vorzunehmen. Die wesentlichsten Ergebnisse sind im Folgenden zusammengefasst.<br />

Um die Kluft zwischen den Mitarbeitern der Fachabteilung und den Entwicklern zu<br />

schließen, wurde die Begrifflichkeit des fachlichen Modells, mit beiden Parteien abgestimmt.<br />

Die genaue Definition des Metamodells sowie der methodische Übergang<br />

in das Designmodell ermöglicht den Entwicklern die bereits modellierte Fachlichkeit<br />

als Grundlage für ihre technischen Entwürfe zu nutzen. So wurden z. B. die Beziehungen<br />

der fachlichen Klassen in <strong>einer</strong> Art und Weise gestaltet, dass die Entwickler<br />

eine Struktur erkennen, die sich technisch umsetzen lässt.<br />

Das Designmodell, der Bauplan der Implementierung, wurde im Bezug auf den Abstraktionsgrad<br />

näher zum <strong>COBOL</strong>-Quelltext gebracht. Dadurch ist es für die Entwickler<br />

leichter ihren Quelltext im Modell »wieder zu finden«. Durch die Einführung der<br />

Datenstrukturen und die Veränderung der Semantik der Copystrecken ist es jetzt mög-<br />

91


92 Zusammenfassung und Ausblick<br />

lich, die Schnittstellen der Komponenten, also die Signatur und die zugehörigen<br />

Datenstrukturen, präzise zu modellieren.<br />

Außerdem hat sich die Informationsverteilung geändert: Das Implementierungsmodell<br />

ist »entkernt« worden, d. h. Konzepte des Implementierungsmodell sind in das Designmodell<br />

verschoben worden. Die Komponenten erhalten somit eine Innenansicht,<br />

welche die Funktion erfüllt, die bisher das Implementierungsmodell eingenommen<br />

hat. Somit wurde eine Grundlage geschaffen, die <strong>Anwendung</strong> auf der Designebene<br />

vollständig zu spezifizieren. Insbesondere haben die »Entkernung« des Implementierungsmodells<br />

sowie die dadurch entstandene Verteilung der Information, die Navigierbarkeit<br />

und Pflege der Modelle innerhalb der CASE-Werkzeuge erheblich verbessert.<br />

Das Implementierungsmodell ist nun methodisch aus dem Designmodell ableitbar,<br />

da es nur noch die Elemente des Dateisystems, also die Dateien und Ordner, modelliert.<br />

Dadurch ist es leicht möglich, weitere Modelle, wie z. B. ein Laufzeit- oder<br />

Verteilungsmodell, auf der Grundlage des Implementierungsmodells zu definieren.<br />

Ein Schlüsselergebnis ist der direkte methodische Übergang vom Designmodell zum<br />

<strong>COBOL</strong>-Quelltext. Auf der Basis dieses Verfahrens können in Zukunft Programmrahmen<br />

aus den Modellen automatisch generiert werden.<br />

Die neue Methodik wurde sowohl an einem projektnahen Fallbeispiel, als auch an<br />

weiteren Beispielen erprobt. Dadurch wurden die Praxistauglichkeit und die Durchgängigkeit<br />

des Vorgehens unter Beweis gestellt. Bisher ist die Methodik den Anforderungen<br />

gerecht geworden – die Bewährung im täglichen Einsatz, bei großen <strong>Anwendung</strong>en,<br />

steht noch aus. Ebenfalls sollte die bisher unzureichend behandelte Übertragung<br />

der Generalisierung aus dem fachlichen Modell in das Designmodell genauer<br />

untersucht werden.<br />

Da es jetzt möglich ist, eine <strong>COBOL</strong>-<strong>Anwendung</strong> von der Vision bis hin zum Quelltext<br />

modellbasiert zu entwickeln, stehen folgende Schritte an:<br />

1) Die Einführung der Methodik in die Abteilungen der IZB SOFT. Da Teile der Arbeit<br />

in den neuen Unternehmensstandard einfließen, ist es notwendig, sich ein Konzept<br />

zu überlegen, wie die Inhalte in die Abteilungen gebracht werden können.<br />

2) Erstellung eines Konzepts zur Implementierung der Methodik. Die Metamodelle<br />

zusammen mit dem systematischen Vorgehen können als Basis für verschiedene<br />

Werkzeuge dienen. Bei einem modellbasierten Vorgehen ist der Einsatz von Werkzeugen<br />

entscheidend für die Qualität und die Effizienz des Vorgehens. Es wäre z. B.<br />

denkbar, ein Werkzeug zu entwickeln, welches aus dem fachlichen Modell eine erste<br />

Version des Designmodells ableitet, sowie ein Werkzeug, das die Elemente Entität,<br />

Datenstruktur, <strong>COBOL</strong>-Quelltext auf den verschiedenen Ebenen konsistent hält. Außerdem<br />

wäre es leicht möglich, ein Werkzeug zu bauen, mit dem <strong>COBOL</strong>-Quelltext-<br />

Rahmen aus einem Designmodell erzeugt werden kann. Ein weiteres Einsatzgebiet<br />

wäre die Umsetzung von Reverse Engineering. Das Vorgehen definiert bereits einen


93<br />

großen Teil der Rückverfolgbarkeit. Somit wäre es relativ einfach, ein Werkzeug zu<br />

implementieren, das aus einem bestehenden <strong>COBOL</strong>-Quelltext ein Implementierungsmodell<br />

erstellt, sowie die Abhängigkeiten zwischen den Elementen modelliert.<br />

Schwieriger, aber ebenso machbar, wäre die automatische Erstellung des Designmodells<br />

aus dem <strong>COBOL</strong>-Quelltext. Die Dateien, welche Copystrecken enthalten, könnten<br />

gescannt und daraus die entsprechenden Copystrecken und Datenstrukturen des<br />

Designmodells abgeleitet werden. Aus den Moduldateien ließen sich die logischen<br />

Module und ihre Aufrufe folgern. Außerdem wäre es auch möglich, die Beziehungen<br />

zwischen Modulen und den Datenstrukturen zu bestimmen.<br />

3) Schließlich könnten die Werkzeuge in eine <strong>Entwicklung</strong>sumgebung integriert werden.<br />

Eine solche Umgebung, welche die Entwickler entlastet und die Effizienz des<br />

<strong>Entwicklung</strong>sprozesses steigert, wäre ein Mittel, um die Qualität und Flexibilität der<br />

<strong>COBOL</strong>-<strong>Anwendung</strong>en noch weiter zu verbessern.


Literatur<br />

[Booch]<br />

[Brown]<br />

[Bruegge]<br />

[Budlong]<br />

[Buschmann]<br />

[Clements]<br />

[Cockburn]<br />

[Fowler]<br />

[Goos]<br />

Grady Booch. Object-Oriented Analysis and Design with Applications.<br />

Zweite Ausgabe. Redwood City, California: The Benjamin/Cummings<br />

Publishing Company, Inc, 1994.<br />

Gary Brown. „<strong>COBOL</strong>: The Failure That Wasn’t“. (Mai 2000). Internet:<br />

www.CobolReport.com.<br />

Bernd Bruegge und Allen H. Dutoit. Object-Oriented Software Engineering:<br />

Conquering Complex and Changing Systems. New Jersey:<br />

Prentice-Hall, 2000.<br />

Mo Budlong. Sams Teach Yourself <strong>COBOL</strong> in 21 Days. Dritte Auflage.<br />

Indianapolis: Sams Publishing, 2000.<br />

Frank Buschmann et al. Pattern-Oriented Software Architecture: A<br />

System of Patterns. Chichester: John Wiley & Sons, 1996.<br />

Paul Clements et al. Documenting Software Architectures: Views and<br />

Beyond. Boston: Addison-Wesley, 2003.<br />

Alistair Cockburn. Writing Effective Use Cases. New York: Addison-<br />

Wesley, 2001.<br />

Martin Fowler. UML Distilled: A Brief Guide to the Standard Object<br />

Modeling Language. Zweite Ausgabe. Reading, Massachusetts: Addison-Wesley,<br />

2000.<br />

Gerhard Goos. Vorlesungen über Informatik. Band 2. Zweite Auflage.<br />

Berlin: Springer-Verlag, 1999.<br />

[Hopkins] Jon Hopkins. „Component Primer“. Communications of the ACM 43<br />

(10): 27–30 (2000).<br />

[IZB 2002a]<br />

Informatik Zentrum Bayern (IZB SOFT). „Anforderungsanalyse“. (Version<br />

1.3, Interner Standard, Dezember 2002).<br />

[IZB 2002b] ———. „<strong>Anwendung</strong>sarchitektur Rahmenbedingungen“. (Version 1.5,<br />

Interner Standard, Dezember 2002).<br />

[IZB 2002c]<br />

———. „Fachliche Modellierung“. (Version 1.1, Interner Standard,<br />

Dezember 2002).


96 Literatur<br />

[IZB 2002d]<br />

———. „Programmierrichtlinien <strong>COBOL</strong>“. (Version 2.4, Interner Standard,<br />

Dezember 2002).<br />

[IZB 2003a] ———. „Modellierung“. (Version 0.9, Internes Dokument, PROFil 3.0<br />

Technische Rahmenbedingungen, 407.279, April 2003).<br />

[IZB 2003b]<br />

[IZB 2003c]<br />

[Jacobson1992]<br />

[Jacobson1999]<br />

[Kobryn]<br />

[Kruchten]<br />

[Menendez]<br />

[Nobe]<br />

[OMG]<br />

[Rechenberg]<br />

[Schätz]<br />

———. „Systembereitstellungsprozess“. (Version 3.1, Interner Standard,<br />

Januar 2003).<br />

———. „Technische Modellierung“. (Version 1.2, Interner Standard,<br />

April 2003).<br />

Ivar Jacobson et al. Object-Oriented Software Engineering: A Use Case<br />

Driven Approach. New York: ACM Press, 1992.<br />

Ivar Jacobson, Grady Booch und James Rumbaugh. The Unified Software<br />

Development Process. Reading, Massachusetts: Addison-Wesley,<br />

1999.<br />

Cris Kobryn. „Modeling Components and Frameworks with UML“.<br />

Communications of the ACM 43 (10): 31–38 (2000).<br />

Philippe Kruchten. „The 4+1 View Model of Architecture“. IEEE Software<br />

12 (6): 42–50 (1995).<br />

Raul Menendez und Doug Lowe. Murach’s CICS for the <strong>COBOL</strong> Programmer.<br />

Fresno, California: Mike Murach & Associates, 2001.<br />

Catherine R. Nobe et al. „<strong>Modellbasierte</strong> <strong>Entwicklung</strong>: Fünf von Boeing<br />

eingesetzte Prozesse“. OnTime. (Spezialdruck, <strong>Modellbasierte</strong> Software-<strong>Entwicklung</strong>,<br />

2002). Internet: http://www.ontime.nu.<br />

Object Management Group. „OMG Unified Modeling Language Specification“.<br />

(Version 1.5, formal/03-03-01, März 2003).<br />

Peter Rechenberg und Gustav Pomberger (Hrsg.). Informatik-<br />

Handbuch. München: Carl Hanser Verlag, 1997.<br />

Bernhard Schätz et al. „Model-Based Development“. (Forschungsbericht<br />

TUM-I0204, Fakultät für Informatik, TU München, Mai 2002).

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!