Anleitung C4 - Technische Informatik / Eingebettete Systeme

Werbung
1
Seminar zum Programmierprojekt SS 2008
Uni Tübingen, Arbeitsbereich Technische Informatik
Anleitung C4
Einführung in die SW-Architektur des Host
Einführung
Abbildung 1 zeigt ein vereinfachtes Bild der SW-Architektur im Host. Die Anwendungen,
die in unserem Bild auf den Java-APIs und dem BT-Stack liegen, stellen bereits die Funktionen unseres kleinen Informationssystems dar. Allerdings sind keine Klassen dargestellt. In
der Aufgabe 4 sollen Sie selbst Klassen entwerfen.
Eigene ServerAnwendungs
-Klassen
Native Klassen
Java und BT-APIs
Bluetooth-Stack und Betriebssystem
Geräte-Treiber
BT-HW: Sende/Empfangsteil (Radio): BT-Dongle
Abbildung 1: Vereinfachte SW-Architektur im Host-PC
In unserem Praktikum werden wir den standardisierten Suchassistenten wegen Kompatibilitätsproblemen nicht verwenden, sondern stattdessen einen eigenen Suchassistenten auf der
Basis des „Serial Port Profile (SPP)“ entwickeln.
Java APIs für Bluetooth
Java bietet durch die JSR-82 (Java Specification Request 82) ein optionales Paket für J2ME
an, welches eine Schnittstelle für Javaprogrammierer zur Nutzung von Bluetooth bietet. Die
JSR-82 API bietet bietet den Zugriff auf:
1. reine Datenübertragungen (Sprache und Daten)
2. Die folgenden Protokolle:
o
L2CAP(nur verbindungsorientiert)
o
RFCOMM
2
o
SDP
o
OBject Exchange protocol (OBEX)
3. Die folgenden Profile:
o
Generic Access Profile (GAP)
o
Service Discovery Application Profile (SDAP)
o
Serial Port Profile (SPP)
o
Generic Object Exchange Profile (GOEP)
Die JSR-82 Spezifikation stellt keine APIs fÜr:
1. Audio (Sprach) Übertragungen
2. Telephony Control Protocol - Binary (TCS Binary oder TCS-BIN)
Die API soll dem Programmierer die Möglichkeit bieten
1. Services zu registrieren
2. Services und Geräte zu finden
3. RFCOMM, L2CAP und OBEX Verbindungen aufzubauen
4. Diese Tätigkeiten auf eine sichere Art durchzuführen
All diese Funktionen sind in den beiden Paketen javax.bluetooth und javax.obex enthalten.
Sequenzdiagramme
Auf der Basis der Spezifikation werden die Funktionen in UML-Sequenzdiagrammen (sog.
"Use-Cases") erstellt. Ein Sequenzdiagramm zeigt verschiedene Module oder Prozesse eines
Systems bzw. verschiedene Systeme, die gleichzeitig existieren, als parallele vertikale Linien.
Die Zeitachse verläuft vertikal, von oben nach unten. Nachrichten, die zwischen den Modulen oder Systemen ausgetauscht werden, werden als horizontale Pfeile in der Reihenfolge in
der sie auftreten, dargestellt. Dies erlaubt die graphische Darstellung der Spezifikation einfacher Laufzeitszenarios und Kommunikationsabläufe.
Beispiele, die der oben gegebenen Beschreibung entsprechen, sind in Abbildung 2 und 3 gezeigt. In den Abbildungen ist links der Host als Server dargestellt, rechts das Mobile Telefon
als Client. In Abbildung 3 ist eine Verzweigung bei der Auswahl der Dienste gezeigt. Die
Aktionen: „Gerätesuche“ (Inquiry) und „Geräteauswahl“, sowohl als auch die erste Verbindung zum Gerät sind weggelassen.
Erstellen Sie (zusätzlich) ein Sequenzdiagramm speziell für das Quiz und sprechen es mit
Gruppe B ab.
3
Gerätesuche: (Inquiry)
Antworten der Geräte
Zeige GeräteListe an
Selektiere Gerät
Verbindungsrequest zum selektierten Gerät
Gerät akzeptiert und öffnet die Verbindung
Dienste-Anfrage
Dienste-Angebot
Abbildung 2: Einfaches Sequenzdiagramm für die Kommunikation zwischen Host und MT:
Gerätesuche, Verbindung (ohne Authentifizierung), Dienstanfrage und Dienstangebot
Mobiles Telefon: Client
Host (PC): Server
Dienste-Angebot
Zeige Dienste
Akzeptiere und öffne die Verbindung
Hole Gebäudeplan
Aus dem Speicher
Sende Gebäudeplan
Zeige Gebäudeplan
Abbildung 3: Dienstselektion, Verbindung zum selektierten Dienst
Quiz
Telefondienst
Verbindungsrequest mit dem selektierten Dienst
(z.B. sende Gebäudeplan)
Gebäudeplan
Quiz
Telefondienst
Gebäudeplan
Selektiere Dienst:
Gebäudeplan
4
Festlegung der Klassen
In Aufgabe 3 haben Sie bereits (mindestens) eine Client-Klasse geschrieben (Inquiry ist eine
Client-Funktion). Entwerfen Sie die Server-Klassen für die in der Spezifikation angegebenen
Funktionen bzw. Dienste. Beziehen Sie in Ihre Klassen die GUI mit ein. Überlegen Sie, ob
Sie Threads benötigen (nebenläufig arbeitende Klassen). Zeichnen Sie ein umfassendes Klassendiagramm für den Host.
Herunterladen