Übungen - Institut für Architektur von Anwendungssystemen

Werbung
Prof. Dr . Frank Leymann / Thorsten Scheibler
Institut für Architektur von Anwendungssystemen
Universität Stuttgart
Übungen
„Message-basierte Anwendungen“
WS 05/06
Blatt 1 – 12.12.2005
Ablauf der Übung
Raum und Zeit:
Termine:
0.363,
Übung
Übung
Übung
Übung
montags 11:30
1 – 12.12.
2 – 19.12.
3 – 09.01.06
4 – 16.01.
Uhr bis 13:00 Uhr
Übung 5 – 23.01.
Übung 6 – 30.01.
Übung 7 – 06.02.
Übung 8 – 13.02.
Einführung IDL
Eine Interface Definition Language (kurz: IDL) ist eine Sprachsyntax zur
Beschreibung von Schnittstellen einer Software-Komponente. Es ist im
Wesentlichen eine allgemeine Sprache, um eine Anleitung zu schreiben, wie ein
„Stück Software“ von einem anderen „Stück Software“ verwendet werden muss.
Dieses Vorgehen ist vergleichbar mit einem Benutzerhandbuch, welches dem
Benutzer den Gebrauch einer Anwendung erklären soll.
Mit Hilfe der IDL lassen sich Objekte und die auf sie anwendbaren Methoden
mitsamt den möglichen Parametern und Datentypen beschreiben, ohne dabei die
Eigenschaften einer bestimmten Programmiersprache zu verwenden. Daten
können nur über Datentypen ausgetauscht werden, die in einer IDL definiert
sind. Die IDL dient rein der Beschreibung, nicht jedoch der Formulierung von
Algorithmen.
Ausgehend von einer IDL kann ein spezieller Compiler die IDL Definitionen in
eine bestimmte Programmiersprache und Rechnerarchitektur umsetzen. So sind
beispielsweise IDL-Spezifikationen analog zu Java-Interfaces.
Eine IDL findet sich meist in verteilten Systemen (z.B. CORBA), bei denen ein
Client auf einem anderen Rechner Methoden ausführen kann (Remote Procedure
Call).
Für dieses Übungsblatt werden nur bestimmte Teile der IDL Syntax benötigt. Bei
der Bearbeitung wird nicht darauf Wert gelegt, dass die Syntax hundertprozentig
richtig ist. Vielmehr steht das Verständnis der Bedeutung und Verwendung einer
IDL im Vordergrund.
Eine IDL-Definition hat folgenden Aufbau:
module ModulName {
typedef unsigned long SpecialTypeDeclaration;
struct SpecicalStructure {
SepecialTypeDeclaration aVarName;
string anotherVarName;
};
exception InvalidValue {
string errorCode;
}
interface InterfaceName {
void anOperation (
in double inValue,
out string outValue);
string aMethod (in string aValue) raises
(InvalidValue);
}
}
Grundlegende Datentypen der IDL:
short
= 16 Bit
long
= 32 Bit
float
= 32 Bit
double
= 64 Bit
char
8-Bit ASCII-Zeichen
wchar
16-Bit Unicode-Zeichen
string
Zeichenketten
boolean
TRUE oder FALSE
Typendefinition:
Mit typedef können neue Typen erzeugt werden, z.B.:
typeDef unsigned long AgeType;
typedef string<20> Name;
Aufgabe 1.1 - IDL
Für einen einfachen Online-Shop wird das Modul shop mit drei darin
enthaltenden Schnittstellenbeschreibungen benötigt:
- Die Kunden bzw. Anbieter des Shops werden durch die Schnittstelle Buyer
bzw. Supplier beschrieben. Die Artefakte sollen Methoden besitzen, um
Kunden/Anbieter zu erstellen, zu aktualisieren und zu entfernen.
- Die angebotenen Artikel des Shops werden durch die Schnittstelle Article
definiert. Ein Artikel soll folgende Methoden anbieten:
o Preis abfragen bzw. setzen
o Vorrätige Stückzahl abfragen bzw. setzen
o Ein Stück verkaufen bzw. kaufen
o Mehrere Stücke verkaufen bzw. kaufen.
- Der eigentliche Laden wird mit Hilfe der Schnittstelle Store beschrieben.
Eine solche Schnittstelle soll folgende Methoden anbieten:
o Mehrere Möglichkeiten, um nach Artikeln zu suchen (z.B. über Name
oder ID oder nach Artikeln, deren Vorrat zur Neige geht,…)
o Neue Artikel hinzufügen bzw. Artikel aus dem Shop entfernen
o Mehrere Möglichkeiten, um nach Kunden bzw. Anbietern zu suchen
(über Name oder ID,…)
o Preise ganzer Artikelserien um einen bestimmten Prozentsatz
erhöhen bzw. zu erniedrigen
o Mehrwertsteuersatz für gesamten Shop setzen1
o Käufer dem Store hinzufügen
Ihre Aufgabe besteht nun darin, die verschiedenen Schnittstellen samt ihrer
Methoden mit Hilfe der oben erwähnten Syntax einer IDL zu definieren. Bei
einigen Methoden ist es unter Umständen nötig, eine Fehlerbehandlung
vorzusehen. Entwickeln Sie daher geeignete Ausnahmen und beschreiben Sie
diese ebenfalls mit Hilfe der IDL.
Neben den Schnittstellen werden besondere Strukturen zur Modellierung des
Shopsystems benötigt. Entwickeln Sie daher für Kunden bzw. Anbieter die
Struktur
Buyer- bzw. SupplierStruct und für Artikel die Struktur
ArticleStruct. Die Strukturen sollen dabei Felder besitzen wie Name, ID,
Anzahl, Beschreibung usw.
Aufgabe 1.2 – Java IDL
Erstellen Sie aus der oben entworfenen IDL-Beschreibung Store jeweils Java
Schnittstellen für Client und Server (falls ein Unterschied vorhanden ist). Setzten
Sie außerdem die Struktur BuyerStruct in Java um.
Aufgabe 1.3 a – LDAP Verzeichnis
Auf dem Server, der den zugehörigen Shop der oben erstellten Schnittstelle
anbietet, soll ein LDAP Verzeichnis aufgebaut werden, in welches die Daten von
Kunden, Anbietern und Artikeln abgelegt werden.
Entwickeln Sie zunächst eine geeignete (hierarchische) Struktur, mit deren Hilfe
diese Daten am geeignetsten abgebildet werden können. Achten Sie darauf, dass
der Shop neben Deutschland auch in Frankreich und Großbritannien angeboten
wird. Konzipieren Sie auf Grundlage dieser Vorgaben internationalisierbare
Kunden, Anbieter bzw. Artikel. Aus organisatorischen Gründen kann ein Kunde
allerdings nur in einem Land eine Kundenkennung besitzen. Möchte ein Kunde in
zwei Ländern den Shop bedienen können, so benötigt er jeweils eine Kennung
pro Shop. Artikel und Anbieter sind im Gegensatz dazu länderübergreifend. Sie
können z.B. Attribute besitzen, um zu zeigen, in welchen Ländershops sie
vertreten sind.
Aufgabe 1.3 b – Java Naming and Directory (JNDI)
Entwickeln Sie mit Hilfe von JNDI ein Programm in Java (evtl. Pseudo-Code),
welches folgende Arbeitsschritte durchläuft:
1. Erstellen eines initialen Kontextes shop.
2. Erstellen eines Subkontextes store, sowie die Subkontexte für den
deutschen, englischen und französischen Shop.
3. Anlegen eines Kunden „Karl Klos“ aus Deutschland, der eine
Benutzerkennung im deutschen Shop erhält.
4. Anlegen eines Kunden „Collin McGommery“, wohnhaft in England, der
sowohl für den englischen als auch für den französischen Shop eine
Benutzerkennung erhält.
5. Suche nach allen Kunden des französischen Shops.
6. Suche nach dem Anbieter „Spielzeug Müller“ und Ausgabe der Shops, in
denen er Waren anbietet.
7. Suche nach allen Artikeln, die von „Spielzeug Müller“ im deutschen und
englischen Shop angeboten werden.
8. Aktualisierung der Kundenkennung von „Collin McGommery“ auf
0047110815.
9. Löschen des Kunden mit der Kennung 0815471100.
1
Dieser Satz ist in verschiedenen Ländern unterschiedlich
Herunterladen