Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Teilprojekt 1: Peer to Peer Web 2.0 Services auf mobilen Endgeräten Ziele des Teilprojekts / Lastenheft Software Engineering / Vorgehen / Zeitplan Technologien.

Ähnliche Präsentationen


Präsentation zum Thema: "Teilprojekt 1: Peer to Peer Web 2.0 Services auf mobilen Endgeräten Ziele des Teilprojekts / Lastenheft Software Engineering / Vorgehen / Zeitplan Technologien."—  Präsentation transkript:

1 Teilprojekt 1: Peer to Peer Web 2.0 Services auf mobilen Endgeräten Ziele des Teilprojekts / Lastenheft Software Engineering / Vorgehen / Zeitplan Technologien

2 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Peer-to-Peer Social Network: Software auf Mobil-Gerät: Agent. Objekte die jeder Agent A kontrolliert: Liste von Agenten, die eine soziale Beziehung zu A etabliert haben; Liste von Items; zu jedem Item: Liste von Tags Vereinigung dieser Objekte: Informationsraum von A soziale Beziehungen sind ungerichtet. Tags sind beliebige Strings. Items sind beliebige Files. Szenario

3 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Dienste (Minimal-Anforderungen) Detektieren von Agenten in sozialer Interaktions-Reichweite (Bluetooth Range) und Anzeigen derselben. Wenn in Reichweite: Etablieren einer objektiven und gerichteten Beziehung möglich (Handshake nötig). (Jeweils auch offline einseitig löschbar). User entscheidet. Taggen von Items im persönlichen Informationsraum (Löschen und Einfügen) Suchen von Items mit bestimmten Tags: BFS Suche. Jeder Agent entscheidet anhand des Pfades, auf dem ihn die Anfrage erreicht, ob er die Anfrage prozessiert. (Bspw anhand der Pfadlänge) unter Pfad wird ein Pfad im sozialen Netzwerk verstanden. Nur entlang solcher Pfade ist es möglich Anfragen zu senden.

4 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Dienste (Minimal-Anforderungen) Prozessieren heisst: bei einer Suchanfrage: Suchen im eigenen Informationsraum und Weitergeben der Nachricht an alle eigene Kontakte, die gerade erreichbar sind. Wenn im eigenen Informationsraum Match  Zurücksenden des Matches auf dem gleichen Weg, auf dem die Suchanfrage den Agenten erreicht hat. bei einer Anfrage, die einen konkreten Zugriffspfad enthält (Zugriff auf gefundene Items) Weiterleiten an betreffenden Agenten. Erreichbar kann B von A aus sein wenn: Nahbereich (Bluetooth) oder Fernbereich (wenn A und B Internet-Access haben) Match: Wenn gesuchtes Tag in der Tag-Menge eines eigenen Items enthalten ist. An den anfragenden Agenten wird nur die Id des Items mit der Menge der Tags des Items geschickt (Zusammen mit einer Codierung des Pfades)

5 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Dienste (Minimal-Anforderungen) Verwalten von Locations (GPS-Koordinate plus Name). (Grund: (Automatischer) Zugriff auf GPS per API ist komplex)

6 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Dienste (mögliche Erweiterungen (freiwillig)) Was sind effektivere P2P Algorithmen für die Suche und den Zugriff auf Items? Wie könnte man ein feineres Maß für ein Matching als “Enthalten-Sein” auf Tag-Ebene konstruieren? Eingedenk der “6 degrees of separation” Hypothese: Welche Pfadlänge ist für die Prozessierungsentscheidung sinnvoll? Was ändert sich für die Prozessierungsentscheidung, wenn auch die Beziehungen getagged werden können? Könnte man auch die Historie der Diensterbringung für die Prozessierungsentscheidung heranziehen?

7 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft P2P–Protokoll: grundsaetzliche messageparameter: sender, receiver etc werden fuer alle messages schon vom servlet in bestimmter weise (siehe implementierung servlet) gesendet. ebenso ein ack und die message- nummer. festgelegt werden muss “nur” noch das p2p protokoll also der message-content der einzelnen messages fuer die verschiedenen funktionen (ausdruecke in sind entspr. zu ersetzen (ohne )): (1) normale textmessage: “type==1 ” (2) freundschaftsangebot: “type==2 subtype==query” weitere inhalte werden nicht benoetigt, denn sender und empfaenger werden ja in den grundsaetzlichen messageparametern schon geliefert (3) freundschaftsangebots-annahme/ablehnung “type==2 subtype==answer replyTo== friend=true/false”

8 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft P2P–Protokoll: (4) suchanfrage nach tags : “type==3 subtype==query tag1== tag2==...tagN== pathUp==(, )+(, )+...+(, )” pathUp bezeichnet dabei den bisherigen pfad auf dem die suchanfrage den sendenden agenten (inklusive) erreicht hat (5) antwort auf tagsuche: “type==3 subtype==answer replyTo== tag1= tag2==...tagN= pathUp==(, )+(, )+...+(, ) pathDown==(, )+(, )+...+(, ) matchingFile1== matchingFile2==... matchingFileI== ” pathUp bezeichnet dabei den pfad auf dem die suchanfrage den matchenden agenten (inklusive) erreicht hat; pathDown bezeichnet den bisherigen pfad auf dem rueckweg zu sender1. senderP ist der aktuell sendende Agent

9 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft P2P–Protokoll: (6)anfrage fuer files: “type==4 subtype==query pathUp==(, )+(, )+...+(, ) wantedFile1== wantedFile2==... wantedFileI== ” pathUp bezeichnet dabei den bisherigen pfad auf dem die suchanfrage den sendenden agenten (inklusive) erreicht hat (7) antwort auf filesuche: “type==4 subtype==answer replyTo== pathUp==(, )+(, )+...+(, ) pathDown==(, )+(, )+...+(, ) wantedFile1== wantedFile2==... wantedFileI== ” pathUp bezeichnet dabei den pfad auf dem die suchanfrage den matchenden agenten (inklusive) erreicht hat; pathDown bezeichnet den bisherigen pfad auf dem rueckweg zu sender1. senderP ist der aktuell sendende Agent. dieser message muessen dann noch I file-transfer-messages folgen (ueber das servlet)

10 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Vorschläge zur Umsetzung: zuerst Simulation des Frameworks auf Desktop: mobiles Gerät == Objekt mit eigenem Thread. Objekt enthält Referenzen auf Menge von Objekten die Instanzen der zu entwickelnden Applikation sind. Applikation könnte bestehen aus: Netzwerk-Klasse (u.a. Detektieren von Erreichbarkeit, Management von Bluetooth*, Detektieren von bestehendem Wifi- Access*; Senden + Empfangen von Messages (Zwischenspeicherung auf Stack);) In der Simulation werden Funktionen nur simuliert aber noch nicht implementiert (bspw. Messaging über Bluetooth durch Aufruf von Methoden im Objekt, das den anderen Agenten darstellt)

11 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Vorschläge zur Umsetzung: Hauptklasse (u.a.: Entscheidet über Prozessieren von Messages; führt Prozessierung aus (z.B. Suchen); verwaltet Items und Tags (bspw. Löschen und Hinzufügen)) Persistenzklasse (u.a.: Abspeichern des aktuellen Zustandes; Hochfahren der Applikation) GUI-Klasse Wenn Simulation läuft: Portieren auf mobil-Gerät und Testen *) Die Kommunikation Gerät zu Gerät direkt mit Bluetooth zu machen ist leider sehr komplex. Deswegen: Wir setzen einen Servlet basierten Server auf und machen die Kommunikation Device  Device über diesen Webserver. (Pull-basiert).

12 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Vorschläge zur Umsetzung: Bsp: Gerät A will Gerät B eine Text-Message schicken. Ablauf: A wählt sich normal über WIFI ins Netz ein. A schickt Message an Server. Parameter: Absender (MAC- Adresse), Aressat (MAC-Adresse), Location etc. Server speichert zwischen B wählt sich ein und ruft bei Server alle Machrichten ab (wie POP3) Weitere Dienste über Server: A schickt an B File A updated seine aktuelle Location Abruf aller Agenten in der Umgebung (Vergleich über upgeloadete Locations)

13 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Vorschläge zur Umsetzung: Warum keine elegantere Lösung bzgl Locations? Warum keine direkte Kommunikation Gerät  Gerät übr Bluetooth? Jedes Gerät hat seinen eigenen Bluetooth Stack. (IPAQ: Widcomm; HTC:unbekannt, wahrscheinlich Toshiba; viele andere: Microsoft BT Stack). Over the Air können die alle miteinander, ABER: JEDE hat ihre eigene API: Widcomm: C++ API Microsoft: über InTheHand per C# möglich Toshiba: ? Ähnliches gilt für GPS

14 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Vorschläge zur Umsetzung: Warum keine elegantere Lösung bzgl Locations? Warum keine direkte Kommunikation Gerät  Gerät übr Bluetooth? Warum nicht Java Bluetooth? Bei Sony-Ericcson und Nokia Geräten: No Problem. Grund: Effiziente JVM (Midlet-Manager) mit JSR-82 Compliance vorhanden  Bluetooth-Zugriff mit 3 Zeilen Java-Code Bei Windows Mobile: Midlet-Manager sind absoluter Mist und implementieren kein JSR-82  kein Zugriff auf Bluetooth

15 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Netzwerkklasse (Georg) Um die Arbeit zu erleichtern wird die gesamte (simulierte) Gerät zu Gerät Basis-Kommunikation über WIFI und Server vom Betreuer zur Verfügung gestellt: Java-Servlet und C#-Client Kommunikationsprimitive: send message (sender, senderName, momentaryLocation, momentaryLocationName, receiver, message): Schickt eine Nachricht an den receiver, die auf dem Server zwischengespeichert wird getAllNeighbours (sender, momentaryLocation): Gibt alle Agenten zurueck, die sich in einer bestimmten Entfernung zum sender befinden) setMomentaryLocation (sender, senderName, momentaryLocation, momentaryLocationName): Setzt die momentane Location des senders

16 Teilprojekt 1: Ziele des Teilprojekts / Lastenheft Netzwerkklasse (Georg) Kommunikationsprimitive: getMessages (sender): Ruft alle auf dem Server aufgelaufenen Messages ab sendItem (sender, file, receive): Sendet an receiver ein file receiveAllItems (sender): Veranlasst Server alle aufgelaufenen Items (files) per Mail an Client zu schicken Frage: Fehlen hier Primitive?

17 Teilprojekt 1: Software-Engineering / Vorgehen / Zeitplan Woche 1: Einarbeiten in die Technologien; Entwurf Woche 2: Implementieren Woche 3: Implementieren Woche 4: Evaluieren & Testen Vorgehen

18 Teilprojekt 1: Software-Engineering / Vorgehen / Zeitplan Vorschlag: Simulieren des Agentensystems auf dem Desktop (Grob: Agent == Objekt). Testen der Interaktionen und Strukturen. Dann portieren auf Mobilgerät.(Von vorneherein nur.NET CF 3.5 Klassen verwenden (siehe MSDN-Doku) Interaktion von Objekten auf Desktop: Threads. Interaktion von Mobil-Geräten: (Simuliert) Vorgehen bei der Entwicklung

19 Teilprojekt 1: Software-Engineering / Vorgehen / Zeitplan Kleines Projekt  nicht alle Phasen eines Prozessmodells darstellbar; nicht alle Elemente des Produktmodells darstellbar  “Kompromissmodell” SE grundsätzlich: Quelle / Referenz: Skripte / Folien: Software- Engineering I (Broy), Grundlagen Software Engineering (Prof Rombach, TU KL / Fraunhofer IESE) Software-Engineering

20 Teilprojekt 1: Software-Engineering / Vorgehen / Zeitplan Rollen: Groh: Auftraggeber; Gruppen: Umsetzende Firma. Lastenheft: siehe diese Folien. Pflichtenheft: Form: Folien: Werden in Mini-Seminar zu Beginn der zweiten Bearbeitungswoche vorgestellt und diskutiert. Entwurf: Form: UML Diagramme (mindestens: Klassendiagramm und Sequenzen- / State-Diagramme der wichtigsten Abläufe) ohne ausführliche Prosa-Beschreibung. Werden in Mini-Seminar zu Beginn der zweiten Bearbeitungswoche vorgestellt und diskutiert. Dokumentation: Stichwortartige Kommentierung und Aktualisierung des Pflichtenhefts und der UML Diagramme. (Orginalversionen aufheben). Prozessmodell: Siehe Vorgehen. Teamentscheidungen demokratisch. Vorschlag: Gegenseitiger Code-Review (Vorteil: Kennenlernen des gesamten Team-Codes) Software-Engineering: Kompromissmodell

21 Teilprojekt 1: Software-Engineering / Vorgehen / Zeitplan 22.04.2008: Vorstellung Folien Planung (Pflichtenheft und Entwurf) 29.04.2008 : Gemeinsame Veranstaltung: Besprechung Techn. Probleme; Gruppen organisieren weitere Treffen selbständig 06.05.2008 : Keine gemeinsame Veranstaltung: Gruppen organisieren Treffen selbständig 20.05.2008 : Testate. Ablauf: Gruppenweise; jeder wird gefragt; Stoff: Eigene Implementierung, beteiligte Technologien, beteiligte Algorithmen; Ziele: Sicherstellen dass jeder was beigetragen hat, Ggf: Aufträge für Nacharbeiten falls ungenügend, Teil-Bewertung; Zeitplan

22 Teilprojekt 1: Technologien Visual Studio 2008 Eclipse, Tomcat C#.NET Compact Framework Endgeräte

23 Teilprojekt 1: Technologien Eclipse 2.2.3, Tomcat6 und der Java-basierte Server (Servlet) Eclipse IDE for JavaEE developers downloaden und installieren. Warum JavaEE?  Diese Version bietet z.B. Dynamic Web Projects und WAR Export. Andere Möglichkeit: Eclipse IDE for Java Developers downloaden und installieren und das Plugin “Web Tools Platform (WTP)” dazu installieren (http://www.eclipse.org/webtools/) (dieses Plugin hat diverse Abhängigkeiten (Files beim Betreuer). Plugins installiert man, indem man einfach die Inhalte der “features” und “plugin” Folder in die entsprechenden Folder in der Eclipse Installation kopiert.)http://www.eclipse.org/webtools/ Tomcat 6 downloaden und installieren und starten. Dynamisches Webproject “mobileWeb2.0MessageBroker” in Workspace kopieren und öffnen. Mit rechtsklick  export als WAR in den Tomcat6/webapps Folder kopieren (wird währed des laufendenden Betriebs deployed). (Bemerkung: Das Servlet verwendet die file-upload Library von Apache/commons.) Nun kann man mit dem Servlet experimentieren. Man kann das Servlet unter http://localhost:8080/MobileWeb2/broker zugreifen http://localhost:8080/MobileWeb2/broker

24 Teilprojekt 1: Technologien Eclipse 2.2.3, Tomcat6 und der Java-basierte Server (Servlet) Warum Java? Warum Java-Servlets? Warum Tomcat? Antwort: Ist der einfachste und schnellste Weg einen Server aufzusetzen, sofern man aus der “Java-Welt kommt”.  Sollte auf die meisten Teilnehmer eher zutreffen als “aus der Microsoft Welt kommen”

25 Teilprojekt 1: Technologien Visual Studio 2008 DVD beim Betreuer oder Download bei Maniac www.maniac.tum.de/. WICHTIG: Man sollte nachher EIN 3,58 GB grosses Image haben. Sonst funktioniert die Installation nicht!www.maniac.tum.de/ Vorschlag: Von http://www.daemon-tools.cc/ DAEMON Tools Lite Version 4.12.1 downloaden und installieren: Lifert ein virtuelles DVD Laufwerk. Auf dem virtuellen DVD Laufwerk das iso-Image von Maniac „mounten“. Visual Studio („complete“) und MSDN Library von da installieren.http://www.daemon-tools.cc/ Doku im Web: http://msdn2.microsoft.com/en-us/library/52f3sw5c.aspx (MSDN Library) (oder MSDN Library auf Deutsch mit installieren). Empfehlung: Als Referenz! Nicht alles Lesen!http://msdn2.microsoft.com/en-us/library/52f3sw5c.aspx

26 Teilprojekt 1: Technologien C# Doku im Web: http://msdn2.microsoft.com/en-us/library/kx37x362.aspx (MSDN Library) (oder MSDN Library auf Deutsch mit installieren). Empfehlung: Als Referenz! Nicht alles Lesen!http://msdn2.microsoft.com/en-us/library/kx37x362.aspx Tutorial speziell für Java-Programmierer: http://msdn2.microsoft.com/en-us/library/ms228358.aspx (MSDN Library) ( oder MSDN Library auf Deutsch mit installieren ) Empfehlung: Lesen! Ca. eine Stunde dann hat mans kapiert. http://msdn2.microsoft.com/en-us/library/ms228358.aspx Interessante Unterschiede zu Java: (Delegates (Funktionspointer); Operatorüberladung wie in C++; Event-Handling mit Delegates)

27 Teilprojekt 1: Technologien.NET Compact Framework.NET Compact Framework 3.5 (Schritt kann ggf. weggelassen werden) http://www.microsoft.com/downloads/details.aspx?FamilyID=e3821449-3c6b-42f1- 9fd9-0041345b3385&DisplayLang=en auf PC und auf Mobil Gerät installieren (Verbindung mit Cradle und Active Sync VORHER herstellen) http://www.microsoft.com/downloads/details.aspx?FamilyID=e3821449-3c6b-42f1- 9fd9-0041345b3385&DisplayLang=en Gesamte.NET - Doku im Web: http://msdn2.microsoft.com/en- us/library/aa139615.aspx (MSDN Library) (oder MSDN Library auf Deutsch mit installieren). Empfehlung: Als Referenz! Nicht alles Lesen! http://msdn2.microsoft.com/en- us/library/aa139615.aspx.NET Compact – Doku im Web: http://msdn2.microsoft.com/en- us/library/f44bbwa1.aspx (MSDN Library) (oder MSDN Library auf Deutsch mit installieren). Empfehlung: Als Referenz! Nicht alles Lesen! http://msdn2.microsoft.com/en- us/library/f44bbwa1.aspx Sektion “Mobile and Embedded Development” http://msdn2.microsoft.com/en- us/library/ms376734.aspx (MSDN Library) (oder MSDN Library auf Deutsch mit installieren). Empfehlung: Reinschauen! Selektiv Lesen!http://msdn2.microsoft.com/en- us/library/ms376734.aspx

28 Teilprojekt 1: Technologien SVN svn ist ein versionierungstool aehnlich zu cvs. subversion.tigris.orgsubversion.tigris.org doku: http://svnbook.red-bean.com/en/1.4/svn-book.pdfhttp://svnbook.red-bean.com/en/1.4/svn-book.pdf ankh ist ein plugin fuer visual studio mit dem man ein svn repository ueber das netz zugreifen (checkout, commit etc.) kann. http://ankhsvn.open.collab.net/http://ankhsvn.open.collab.net/ Vorgehen: auf rayhalle einloggen svnadmin create euerRepository svnserve –d –r /u/halle/ /home_sun dann koennt ihr bsp auschecken mit: svn co svn://rayhalle.informatik.tu- muenchen.de:3690/euerRepository oder eben nach installation von ankh als visual studio plugin direkt in visual studio auschecken

29 Teilprojekt 1: Technologien Bluetooth Für Geräte mit Microsoft Stack (keines von unseren): How to video / Webcast: Beim Betreuer im Web: http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032341011 (MSDN Kennung nötig  kostenlos Registrieren) http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032341011 (Doku des MS Bluetooth Stacks / Wrappers im Web: http://msdn2.microsoft.com/en-us/embedded/aa714533.aspx (MSDN Library) (oder MSDN Library auf Deutsch mit installieren). Empfehlung: Als Referenz! Nicht alles Lesen!) http://msdn2.microsoft.com/en-us/embedded/aa714533.aspx InTheHand 32.feet.Net Bluetooth Bibliothek http://inthehand.com/files/  32feet.NET 2.2 Release installieren. http://inthehand.com/files/ 32feet.NET 2.2 Release

30 Teilprojekt 1: Technologien Bluetooth Für Geräte mit JSR-82 Midlet Manager (JavaME) (auch keines von unseren  Präsentation beim Betreuer erhältlich Bluetooth Für Geräte mit Widcomm Stack (IPAQ): Widcomm API (C++) und Beispiel-Code beim Betreuer erhältlich (funktioniert leider nur sehr rudimentär)


Herunterladen ppt "Teilprojekt 1: Peer to Peer Web 2.0 Services auf mobilen Endgeräten Ziele des Teilprojekts / Lastenheft Software Engineering / Vorgehen / Zeitplan Technologien."

Ähnliche Präsentationen


Google-Anzeigen