close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

1 Im vorliegenden Kapitel dreht sich alles um die Frage, wie - ITI

EinbettenHerunterladen
5. Java- Code- Erzeugung mittels objektorientierter konzeptueller Modellierung
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1
Einführung
5.2
OO-Method - Eine objekt-orientierte Methodik
5.2.1 OASIS - Ein objekt-orientiertes formales Modell
5.2.2 Konzeptuelle Modellierung
5.2.3 Ausführungsmodell (Execution Model)
5.3
Vom Modell zu Java
5.3.1 Überführen des konzeptuellen Modells in
Java-Klassen über das Ausführungsmodell
5.3.2 Distribution der Java-Klassen in einer Web-Architektur
5.4
Automatisiertes Programmieren am Beispiel einer
Autovermietung
5.5
1/19
Christian Pfeffer
Matr.FS‘2000
Fazit
Quelle:
„From Object Oriented Conceptual Modeling to
Automated Programming in Java“
Oscar Pastor, Vicente Pelechano, Emilio Insfrán, Jaime Gómez
Im vorliegenden Kapitel dreht sich alles um die Frage, wie man aus einem
konzeptuellen Modell unter Verwendung des CASE-Tools OO-Method von
Oscar Pastor eine lauffähige Drei-Schicht-Java-Applikation generieren kann.
Zuerst werden die benutzten Konzepte und Modelle näher erläutert und dann
wird, zum besseren Verständnis, anhand einer Autovermietung kurz
veranschaulicht, wie das Modellieren und Generieren praktisch funktioniert.
Vollständige Quellenangabe:
„From Object Oriented Conceptual Modeling to Automated
Programming in Java“
Oscar Pastor, Vicente Pelechano, Emilio Insfrán, Jaime Gómez
Department of Information Systems and Computation
Valencia University of Technology
Camí de Vera s/n
46071 Valencia (Spain)
1
5.1 Einführung (1/2)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
Problemdefinition
• Boom der Web-Computing Umgebungen durch
kommerzielle Internet-Applikationen und
weltumspannende Intranets
• Permanente Entwicklung neuer Technologien rund
um Java
• Entwicklungswerkzeuge müssen daher möglichst
unabhängig sein
• UML-Tools wie Rational ROSE oder Paradigm Plus
– erzeugen nur leere Klassen ohne Implementierung
– nehmen keine Rücksicht auf die Architektur
2/19
Christian Pfeffer
Matr.FS‘2000
Durch den Boom der Web-Computing Umgebungen entwickeln sich
permanent neue Technologien rund um das Thema Java und Internet. Wobei
ebenso alternative Technologien existieren, z.B. Microsofts .Net.
Daher ist es sinnvoll, wenn die Entwicklungswerkzeuge unabhängig von den
Zielumgebungen sind, da sie auf diese Art und Weise einen
Technologiewechsel, der aber auf einem ähnlichen Paradigma basiert
unbeschadet überstehen. Das gilt natürlich primär für die Modelle, die mit
diesen Tools geschaffen wurden.
Bisherige UML-Tools haben bereits diese Unabhängigkeit realisiert, können
aber nur die Klassenstruktur generieren. An dieser Stelle geht OO-Method
einen Schritt weiter und erzeugt komplette Applikationen, also
Klassenstrukturen und Methodenimplementierungen.
2
5.1 Einführung (2/2)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
Lösungsansatz nach Pastor
• Zerlegung in konzeptuelles Modell und
Ausführungsmodell
• Benutzung eines CASE-Tools zur graphischen
Modellierung konzeptueller Modelle
• Generierung formaler objekt-orientierter
Spezifikationen
• Automatische Erstellung eines Prototyps aus dem
konzeptuellen Modell und dem Ausführungsmodell,
inklusive statischer und dynamischer Features
3/19
Christian Pfeffer
Matr.FS‘2000
Um dieses Ziel zu erreichen zerlegte Herr Pastor die Modellierung in zwei
Teile und fordert die Benutzung von CASE-Tools zur graphischen
Modellierung konzeptueller Modelle.
Weitere Schritte sind die Generierung einer formalen objekt-orientierten
Spezifikation und daraus dann die automatische Produktion eines Prototypen.
3
5.2 OO-Method - Eine objekt-orientierte Methodik
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
Software Produktionsprozess nach OO-Method
• Konzeptuelle Modellierung der relevanten
Systemeigenschaften
• Automatische Generierung einer formalen objektorientierten Spezifikation
• Erstellung eines wohl-definierten
Ausführungsmodells auf Grundlage der formalen
Spezifikation inklusive aller implementierungsspezifischen Funktionen (UI, Access Control, etc.)
• Code-Erzeugung aus dem wohlstrukturiertem
Framework, also dem Ausführungsmodell
4/19
Christian Pfeffer
Matr.FS‘2000
Im OO-Method – Software Produktionsprozess werden zunächst die
relevanten Systemeigenschaften modelliert, aus denen danach die formale
objekt-orientierte Spezifiktion generiert wird. Diese Spezifikation erfolgt in
der Sprache OASIS zu denen gleich noch mehr gesagt wird.
Auf der Grundlage des konzeptuellen Modells erstellt man nun ein
Ausführungsmodell, welches die implementierungsspezifischen Funktionen
beschreibt.
Bei der Code-Generierung stützt man sich dann auf das formale objektorientierte Modell und das Ausführungsmodell, um sowohl die konzeptuellen
als auch die implementierungstechnischen Anforderungen zu
berücksichtigen.
4
5.2.1 OASIS - Ein objekt-orientiertes formales Modell (1/2)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
• Formale objekt-orientierte Spezifikationssprache für
Informationssysteme
• OASIS bildet die Basis von OO-Method
• OO-Method ist quasi ein graphischer Editor für
OASIS mit Objektmodell, dynamischem und
funktionalem Modell
• Formalismus bleibt dem Anwender verborgen
• OASIS betrachtet den Objektlebenszyklus als Term
dessen Elemente Ereignisse und Transaktionen sind
5/19
Christian Pfeffer
Matr.FS‘2000
Die Sprache OASIS bildet die Grundlage für OO-Method, da OO-Method als
graphischer Editor für OASIS gesehen werden kann. Man sollte auch
beachten, dass bei dem gesamten Prozess dem Anwender die Formalismen
verborgen bleiben.
In OASIS wird der Objektlebenszyklus als Term dargestellt, dessen Elemente
Ereignisse bzw. Transaktionen sind. Das soll heißen, dass prinzipiell mit
jedem gültigen Ereignis das Objekt seinen Zustand wechseln könnte. Und da
die Ereignisse nacheinander eintreffen, lassen sie sich als Formel ausdrücken.
5
5.2.1 OASIS - Ein objekt-orientiertes formales Modell (2/2)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
Intuitive Betrachtung des Objekts
• Objekt als Kapsel mit einem Status und einer Menge
von Diensten
• Dienste stellen das Interface dar über das andere
Objekte den Status sehen und ändern können
• Ereignisse sind atomare Statusänderungen und
Transaktionen gruppierte
Intuitive Betrachtung der Klasse
• Klassen repräsentieren ein Menge von Objekten
gleichen Schemas in Schnittstellen und Verhalten
6/19
Christian Pfeffer
Matr.FS‘2000
In OASIS werden Objekte als abgeschlossene Kapseln betrachtet, die einen
Status haben und eine Menge von Diensten um diesen zu modifizieren und
auch zu betrachten.
Klassen werden als Repräsentanten einer Objektmenge gesehen, die dem
gleichen Schema entsprechen und beschreiben weiterhin folgende
Eigenschaften:
•Integritätsbedingungen,
•Statusänderungen bei Ereignissen,
•Beziehungen zwischen Attributen,
•Vorbedingungen zur Ereignisaktivierung,
•Automatische interne Systemaktivitäten durch Trigger.
6
5.2.2 Konzeptuelle Modellierung
Seminar
„Modellgetriebene
Programmiermaschinen“
Sammeln von Informationen mittels drei
komplementärer Modelle
•
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
•
5.4 Beispiel
5.4 Fazit
•
7/19
Christian Pfeffer
Matr.FS‘2000
Objektmodell
– Grafisches Modell mit Klassen, Attributen, Diensten und
Beziehungen, inklusive Client-Server-Beziehungen
Dynamisches Modell
– Statusübergangsdiagramm
– Objekt-Interaktionsdiagramm
Funktionales Modell
– Beschreibt die Semantik von Statuswechseln durch
Ereignisse
Das Ergebnis ist eine, durch eine wohldefinierte Übersetzungsstrategie erzeugte, formale und objekt-orientierte OASIS
Spezifikation.
Die konzeptuelle Modellierung gliedert sich in drei komplementäre Modelle
das Objektmodell, das dynamische Modell und das funktionale Modell.
Im Objektmodell werden die Klassen mit ihren Attributen, Diensten und
Beziehungen beschrieben, wobei die Client-Server-Beziehungen bereits
berücksichtigt werden.
Das dynamische Modell gliedert sich in das Statusübergangsdiagramm und
das Objekt-Interaktionsdiagramm. Das Statusübergangsdiagramm beschreibt
Übergänge von einem Status zum nächsten und somit gültige Lebenszyklen
der Objekte. Im Objekt-Interaktionsdiagramm werden Interaktionen zwischen
den Objekten in Form von Triggers und Diensten beschrieben.
Im funktionalem Modell ist beschrieben wie ein Status verändert wird, wenn
ein Ereignis (mit bestimmten Argumenten) auftritt, was die Generierung
einer vollständigen formalen OASIS- Spezifikation ermöglicht.
7
5.2.3 Ausführungsmodell (Execution Model) (1/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
• Beschreibt die implementierungsabhängigen Features,
inklusive der Architektur
• Bei einer Drei-Schicht-Architektur existiert folgende
Aufteilung
– interface tier
• Interaktion mit dem Anwender über GUI
– application tier
• Logikimplementierung der Business-Klassen
– persistence tier
• Implementierung der Persistenz der BusinessObjekte im Repository
8/19
Christian Pfeffer
Matr.FS‘2000
Im Ausführungsmodell werden die implementierungsspezifischen Funktionen
beschrieben, wobei hierbei bereits die Architektur berücksichtigt wird.
8
5.2.3 Ausführungsmodell (Execution Model) (2/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
• Betrachtung des Systems als objekt-orientierte
virtuelle Realität
– Objekte sind Mitglied der Menge und agieren mit anderen
Mitgliedern
• Notwendige Bedingungen
– Anwenderidentifikation (Access Control) zur Bestimmung
der System-Ansicht auf Objekte und Dienste
– Dienstaktivierung durch den Anwender für alle in seiner
Weltsicht existierenden Objekte und Dienste
• Interaktion durch Nachrichten
– Nachrichten müssen erzeugt werden
– Ausführen der Nachrichten(, wenn möglich)
9/19
Christian Pfeffer
Matr.FS‘2000
Das gesamte System wird quasi als eine objekt-orientierte Virtuelle Realität
gesehen, in der die Objekte Mitglieder sind und miteinander kommunizieren.
Diese Menge muss natürlich vor dem Zugriff von nicht autorisieren
Anwendern geschützt werden und daher ist die Identifikation des Anwenders
notwendig um die dem Anwender sichtbare Menge von Diensten und Objekte
zu bestimmen.
9
5.2.3 Ausführungsmodell (Execution Model) (3/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
10/19
Christian Pfeffer
Matr.FS‘2000
Durch Nachrichten werden Dienste aktiviert, deren
Ausführung ganz allgemein so charakterisiert
werden kann:
– Statusübergang prüfen
– Prüfen der Vorbedingungen
Wenn 1 oder 2 fehlschlagen
Exception
– Modifikationen lt. Funktionalem Modell
durchführen
– Integritätstest des neuen Zustands
Wenn 4 fehlschlägt
Exception und Anfangszustand wiederherstellen
– Ausführen der Trigger
Î
Î
Die Dienste werden über Nachrichten aktiviert, denen bei Bedarf Parameter
übergeben werden können.
10
5.3 Vom Modell zu Java - Eine Architektur zur
Implementierung des Ausführungsmodells
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
• Ausgangspunkt:
abstrakte generische Betrachtung
• Ziel:
konkrete Implementierung mit einer WebTechnologie und Java als Zielsprache
• Bedingung:
Applikation und konzeptuelles Modell sollen
funktional äquivalent sein
11/19
Christian Pfeffer
Matr.FS‘2000
Bisher war die gesamte Betrachtung eher abstrakt und generisch als konkret.
Das soll sich nun ändern, da das Ziel ja eine funktional zum konzeptuellen
Modell äquivalente Java-Applikation ist.
11
5.3.1 Überführen des konzeptuellen Modells in
Java-Klassen über das Ausführungsmodell (1/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
Aufteilung in drei logische Schichten
–
Interface-Schicht
Enthält Klassen, die die Interaktion mit dem Anwender
Realisieren
•
Access_control-Klasse
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
-
5.4 Beispiel
5.4 Fazit
•
System_view-Klasse
-
•
Sammlung aller Objekte und Dienste mit denen der User
interagieren kann
Service_activation-Klasse
-
12/19
Christian Pfeffer
Matr.FS‘2000
Implementiert den ersten Schritt des Ausführungsmodells
Authentifiziert den Anwender
Ergebnis ist eine gültige User-Instanz
Enthält, falls der Dienst dies erfordert, Elemente zur
Auswahl/Eingabe von Parametern
Die Drei-Schicht-Architektur gliedert sich in drei Schichten:
•
Benutzerschnittstellen-Schicht,
•
Applikations-Schicht,
•
Persistenz-Schicht.
12
5.3.1 Überführen des konzeptuellen Modells in
Java-Klassen über das Ausführungsmodell (2/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
Aufteilung in drei logische Schichten
–
Application-Schicht
•
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
•
Implementiert das Verhalten der Business-Klassen aus der
konzeptuellen Modellierung
Definition eines OASIS-Interfaces zur Unterstützung der
Struktur des Ausführungsmodells und dessen Implementierung
in allen Klassen
public interface Oasis
{
public void check_state_transition(String event);
public void check_precondition(String event);
public void check_integrity_constraint(String event);
public void check_trigger(String event);
}
13/19
Christian Pfeffer
Matr.FS‘2000
Das Oasis-Interface bildet die Struktur des Ausführungsmodells nach und
wird von allen Klassen der Applikationsschicht implementiert um seine
Realisierung zu ermöglichen.
Die Schritte der Abarbeitung einer Nachricht spiegeln sich in den
Methodendeklarationen wieder.
13
5.3.1 Überführen des konzeptuellen Modells in
Java-Klassen über das Ausführungsmodell (3/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
Aufteilung in drei logische Schichten
–
Persistenz-Schicht
•
Implementiert die Speicherung der Business Objekte in einem
persistenten sekundären Speicher
Stützt sich dabei auf JDBC-Klassen
Definition einer Basisklasse mit den notwenigen Methoden zum
Lesen, Speichern und Löschen der Objekte
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
•
•
5.4 Fazit
public class
{
public
public
public
}
Alle Business Objekte leiten sich von dieser Klasse ab
Object_mediator
void delete() {...}
void save() {...}
void retrieve() {...}
14/19
Christian Pfeffer
Matr.FS‘2000
Die Realisierung der Persistenzierung der Objektdaten in einem sekundären
Speicher, also einer Datenbank im vorliegenden Fall, findet in der danach
benannten Persistenzschicht statt.
Zu diesem Zweck sind alle Objekte der Applikationsschicht von der Klasse
Object_mediator abgeleitet und erben so die Fähigkeit zur Persistenzierung.
14
5.3.2 Distribution der Java-Klassen
in einer Web-Architektur
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
15/19
Christian Pfeffer
Matr.FS‘2000
Aus der Graphik ist diese Struktur zu erkennen:
-Ein HTML-Browser dient als Client.
-Ein Web-Server stellt die Seiten und Applets zur Verfügung.
-Ein Web-Application-Server verwaltet die Java-System-Objects und
stellt Schnittstellen zum Zugriff auf diese bereit.
-Die Anbindung des Datenservers wird per JDBC realisiert.
Alle Teile wurden mittels des OO-Method-CASE-Tools, durch Mapping
einer endlichen Menge von Verhaltensmustern auf ihre Implementierung in
Java, generiert.
Alle Vorbedingungen, Statusübergänge, Integritätsregeln und Trigger sind
vorher grafisch deklariert worden.
Da sie wohlgeformte Formeln in OASIS darstellen, können sie in die JavaSyntax überführt werden.
15
5.4 Automatisiertes Programmieren
am Beispiel einer Autovermietung (1/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
Anforderungen an die Software
• Vermietung von Autos ohne Fahrer
• Kauf der Fahrzeuge bei Saisonbeginn
• Verkauf der Fahrzeuge bei Saisonende
• Ein Vertrag wird erzeugt, wenn ein Kunde ein
Fahrzeug mietet
• Der Vertrag wird geschlossen, wenn der Kunde das
Fahrzeug zurück gibt
• Kalkulation der Mietkosten
16/19
Christian Pfeffer
Matr.FS‘2000
Um das Konzept der Code-Generierung mittels OO-Method etwas
anschaulicher zu gestalten, wird nun der Ablauf mittels eines Beispiels
gezeigt. Dazu wird hier eine Autovermietung als Aufgabenstellung benutzt,
die wie auf der Folie gezeigt, spezifiziert wird.
16
5.4 Automatisiertes Programmieren
am Beispiel einer Autovermietung (2/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
Identifizierte Klassen
• Contract
• Customer
• Vehicle
• Company
Jede Klasse besitzt Attribute, Dienste und
Deklarationen von Vorbedingungen, Integritätsregeln,
Statusübergängen und Triggern
5.4 Fazit
Daraus ergeben sich die folgenden Tabellen/Klassen:
Persistence Tier Application Tier
17/19
Christian Pfeffer
Matr.FS‘2000
Interface Tier
Customer table
Customer class
Access_control class
Vehicle table
Vehicle class
System_view class
Contract table
Contract class
Service_activation class
Aus der Spezifikation ergeben sich die Klassen Vertrag, Kunde, Fahrzeug
und Firma. Alle Klassen sind vollständig beschrieben.
Daraus lassen sich die Datenbanktabellen, Applikationsklassen und
Benutzerschnittstellenklassen herleiten. Dies geschieht, wie erwähnt, alles im
Hintergrund ohne das der Anwender mehr als das konzeptuelle Modell und
das Ausführungsmodell zu Gesicht bekommt.
17
5.4 Automatisiertes Programmieren
am Beispiel einer Autovermietung (3/3)
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
5.4 Beispiel
5.4 Fazit
18/19
Christian Pfeffer
Matr.FS‘2000
Die gezeigten Fenster stellen die Benutzeroberfläche der generierten
Anwendung dar.
Links oben befindet sich der Anmeldebildschirm über den der Anwender
Zugang zum System erlangt. Nach erfolgreicher Anmeldung gelangt man auf
den Bildschirm rechts oben, der die für den Anwender sichtbaren Dienste und
Klassen präsentiert. Wählt der Anwender nun den Link „Vehicle“ aus,
gelangt er auf den Bildschirm links unten, auf dem die ein Fahrzeug
betreffenden Dienste dargestellt werden. Wenn dort nun der Dienst zum
Neuanlegen eines Fahrzeugs aufgerufen wird, gelangt man auf die Seite
rechts unten auf der die Parameter zum Aufrufen des Dienstes zur Neuanlage
von Fahrzeugen vom Anwender mit Daten befüllt werden können.
18
5.5 Fazit
Seminar
„Modellgetriebene
Programmiermaschinen“
5.1 Einführung
5.2 OO-Method
5.3 Vom Model zu Java
• Positives
–
–
–
–
Interessanter Ansatz
Logisch schlüssig nachvollziehbar
Baut auf bekannten Methoden auf
Generierung eines Softwaresystems ist prinzipiell möglich
5.4 Beispiel
5.4 Fazit
• Negatives
–
–
–
–
Keine Optimierung der Anwendung erkennbar
GUI sehr simpel, keine aufwendigen grafischen Editoren
Eingeschränkter Einsatzbereich (Business applications)
Manuelle Nacharbeiten am Quellcode sind für Entwickler
sehr unangenehm
19/19
Christian Pfeffer
Matr.FS‘2000
Wie man im vorangegangenen Beispiel sehen konnte, ist das Resultat eine
Drei-Schicht-Applikation, womit der Beweis geführt wurde, dass es möglich
ist Applikationen aus konzeptuellen Modellen zu generieren.
Was aber auch aus dem Beispiel zu entnehmen ist, ist ein prinzipielles
Problem dieser Technologie, nämlich die eingeschränkte Anwendbarkeit. Es
ist z.Zt. nicht denkbar auf diese Art einen Grafikkartentreiber oder
komplizierte graphische Editoren zu entwickeln.
Alles in allem handelt es sich jedoch um ein bemerkenswertes CASE-Tool,
welches auf bekannten Methoden aufbaut und einen Schritt weiter geht, als
die bisher im Markt etablierten Werkzeuge.
19
Document
Kategorie
Technik
Seitenansichten
3
Dateigröße
209 KB
Tags
1/--Seiten
melden