12.12.2011
Technische Universität MünchenFakultät für InformatikLehrstuhl für Angewandte Softwaretechnik
Bachelorarbeit vonSchnell Adrian
Entwicklung und Implementierung einer mobilen Befragungsanwendung mit 3D
Produktmodellen
1Montag, 12. Dezember 11
12.12.2011
2
Einführung
Anforderungen
Analysemodell
Systementwurf
Prototyp
2Montag, 12. Dezember 11
12.12.2011
3
Reviews
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Produktlebenszyklus
3 Jahre 7 Jahre 10-15 Jahre
Zeit3 Jahre 10 Jahre
Entwicklung
Produktion
Betrieb und Service
3Montag, 12. Dezember 11
12.12.2011
4
Organisator
Designer
Reviewer
3D-Auto Modell erstellen
Fragebogen erstellen
mit Review-Gast Fragebogen
beantworten
Ergebnisse analysieren und
bewerten
Änderungen identifizieren
Design ändern
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Ablauf eines Reviews
mit Review-Gast Multiple Choice
fragen beantworten
4Montag, 12. Dezember 11
12.12.2011
5
Einführung
Anforderungen
Analysemodell
Systementwurf
Prototyp
5Montag, 12. Dezember 11
12.12.2011
6
Multimediaroutinen- 3D-Modell-Darstellung- Interaktion mit dem 3D-Modell
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Funktionale Anforderungen
Kommentieren und Multiple Choice
Import von 3D-Modelldaten
Export von Umfrageergebnissen
Benutzerverwaltung
Benutzeran- und abmeldung
6Montag, 12. Dezember 11
12.12.2011
7
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Nicht Funktionale Anforderungen
Benutzerfreundlichkeit- alle Funktionen mit drei Klicker erreichbar- Apple „Human Interface Guideline“
Zuverlässigkeit- kein Systemabsturz- Wechsel von 3D-Produktmodellen benötigt max. fünf Sekunden- Fehlerhafte Eingaben verursachen keine Fehler
Sicherheit- Benutzerauthentifikation mit Benutzername und Passwort- Automatische Abmeldung nach 10 Minuten- Verschlüsselte Serveranbindung
7Montag, 12. Dezember 11
12.12.2011
8
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Beschränkungen
Implementierungsanforderungen- Plattform iPad mit iOS 5- XCode (Programmiersprache: Objective-C)
Schnittstellenanforderungen- Serverschnittstelle für Daten Import sowie Export
8Montag, 12. Dezember 11
12.12.2011
9
all diese Fragebögen von Hand auszuwerten wird mich Stunden
kosten
Was heißt das denn? Ich kann diese Schrift nicht lesen..
Oh je - in 15 Minuten beginnt das Review - und jetzt kommt noch ein
neues Auto hinzu. In dieser Zeit kann ich keine neuen Fragebögen mehr
erstellen und austeilen..
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Problem-Szenarien
hoher Zeitaufwand
Fehlerquellen
Unflexibel
9Montag, 12. Dezember 11
12.12.2011
10
Neben der Eingabe von Kommentaren und der Beantwortung von Multiple
Choice Fragen kann ich mir auch separate Informationen zu allen Teilen eines Autos
anzeigen lassen.
Super - ich kann alle meine Umfragedaten auf einmal an den
Server übertragen...
.. und 3D-Modelle lassen sich genauso einfach laden.
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Visionäre-Szenarien
erhöhte Informationsdichte
Export der Umfragedaten an einen Server
Import von 3D-Produktmodellen
Diese Anwendung zu benutzen macht richtig viel Spaß.
Spaßfaktor
10Montag, 12. Dezember 11
12.12.2011
11
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Anwendungsfälle
ReviewApp
Reviewer
Organisator
Logout
Login
Kommentar verwalten
Importiere Modelldaten
Exportiere Review-
ergebnisse
Erfasse Multiple Choice
Zeige Auto-informationen
Verwalte Benutzer
Server
Importiere Fragen
11Montag, 12. Dezember 11
12.12.2011
12
Einführung
Anforderungen
Analysemodell
Systementwurf
Prototyp
12Montag, 12. Dezember 11
12.12.2011
13
MainController
+ autoName:string+ auto3DModel:3dmodell
AutoModell
1
*
+ bearbeiteNotiz()+ hinzufügenNotiz()+ entferneNotiz()
«abstract»Haftnotiz
1
* Organisator Reviewer
+ vorname:string+ nachname:string+ benutzername:string- passwort:password+ rechte:enum
«abstract»Benutzer
1 *Server + importiereAuto(int:ID)+ importiereMultipleChoice()+ exportNotiz()
«interface»ServerInterface
+ loginBenutzer()+ importModell()
VerwaltungView
MenuePopUpView
+ frage:string+ antworten:int[]
MultipleChoice
+ information:string
Information
+ kommentar:string
Kommentar
Überwacht den Ablauf des Reviews
Verwaltet Informationen des 3D-Modells
PersistanceManager aller ReviewDaten
Organisation der Benutzerdaten
Benutzereingabe-Masken
Serververbindung
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Klassendiagramm
13Montag, 12. Dezember 11
12.12.2011
14
Einführung
Anforderungen
Analysemodell
Systementwurf
Prototyp
14Montag, 12. Dezember 11
12.12.2011
Controller
View
Model
15
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Subsysteme
MainController
Review Controller
Serveranbindung
«use»
Cocos3D
3DCarModel
3D-Modell Verwaltung
«use»
Benutzeroberfläche
VerwaltungView
MenuePopUp View
«depends»
UserShared Manager
Benutzerverwaltung
«depends»
VerwaltungView
MenuePopUp View
StickyShared Manager
Kommentarverwaltung
«depends»
«depends»
Grafik-framework
15Montag, 12. Dezember 11
12.12.2011
16
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Subsysteme
ReviewController
- carModel: SpinningNode
MainController
- touchEvent (uint touchType, CGPoint touchPoint)- changeActiveCarModel(int ID)- spinCarFromSwipeAt (CGPoint touchPoint)
Cocos3D
- initializeWorld()
- lamp:CC3Light- camera: CC3Camera
CC3World
16Montag, 12. Dezember 11
12.12.2011
17
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Subsysteme
3D-Modell Verwaltung
+ initCarInWorld (carName:String; world:CC3World)
+ 3DCarModel: SpinningNode+ texture: CC3Texture+ CarParts: Array
3DCarModel
<<library>>Cocos3D
«deploy»
<<file>>Car.pod
«deploy»
17Montag, 12. Dezember 11
12.12.2011
18
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Subsysteme
1
Kommentarverwaltung
+ getInstance(): sharedManager- addComment (comment:string)- editComment (ID:int)- updateMC (ID:int)
- ArrayOfMC: NSMutableArray- ArrayOfComment: NSMutableArray- ArrayOfInformation: NSMutableArray
<<singleton>>StickySharedManager
<<artifact>>active3DCarModel.plist
«deploy»
MultipleChoice Comment Information** *1
18Montag, 12. Dezember 11
12.12.2011
19
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Subsysteme
Benutzerverwaltung
+ getInstance(): sharedManager
<<singleton>>UserSharedManager
<<artifact>>User.plist
«deploy»+ activeUserName: String+ activeUserRights: Boolean
UserManager
<<use>>
+ editUser(UserID:Integer)+ deleteUser(UserID:Integer)+ addUser(User:Dictionary)
19Montag, 12. Dezember 11
12.12.2011
20
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Subsysteme
Serveranbindung
+ import3dCarModel()+ importReviewData()+ exportReviewData(CarPlist:String)
<<interface>>ServerInterface
1
ServerInterface
<<artifact>>Server
20Montag, 12. Dezember 11
12.12.2011
21
Subsysteme
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Benutzeroberfläche
+ loginUser()+ logoutUser()+ import3dModel (ID:int)+ exportStickys()
VerwaltungView
Benutzer verwaltungViewServerView
MultipleChoice View
Kommentar View
MenuePopUp View
Information View1
11
11
* * *
<<use>>
<<use>>
21Montag, 12. Dezember 11
12.12.2011
22
Einführung
Anforderungen
Analysemodell
Systementwurf
Prototyp
22Montag, 12. Dezember 11
12.12.2011
23
Benutzerverwaltung
Kommentieren und Multiple Choice
Benutzeran- und abmeldung
Multimediaroutinen Import von Daten
Export von Daten
Erreichte Ziele
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
23Montag, 12. Dezember 11
12.12.2011
24
Zukünftige Arbeit
Lokalisierung
Multimediale Kommentare
Kommentare via Diktieren
Informationsdichte erhöhen - Multimediale Informationen
Review von Autointerieur
ARC
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
Storyboarding
24Montag, 12. Dezember 11
12.12.2011
25
Demo
Einführung - Anforderungen - Analysemodell - Systementwurf - Prototyp
25Montag, 12. Dezember 11
12.12.2011
26
Vielen Dank für Ihre Aufmerksamkeit.
Fragen?
26Montag, 12. Dezember 11
12.12.2011
27
Backup
27Montag, 12. Dezember 11
12.12.2011
28
Screenshot
28Montag, 12. Dezember 11
12.12.2011
29
Screenshot
29Montag, 12. Dezember 11
12.12.2011
30
Screenshot
30Montag, 12. Dezember 11
12.12.2011
31
Screenshot
31Montag, 12. Dezember 11
12.12.2011
32
Screenshot
32Montag, 12. Dezember 11
12.12.2011
33
Screenshot
33Montag, 12. Dezember 11
12.12.2011
34
Screenshot
34Montag, 12. Dezember 11
12.12.2011
35
Screenshot
35Montag, 12. Dezember 11
12.12.2011
36
Screenshot
36Montag, 12. Dezember 11
12.12.2011
37
Anwendungsfälle
Verwalte Kommentar
Reviewer
Freitext-eingabe
«extends»
Kommentar eingeben
Extension PointFreitext
AudioaufnahmeFotoaufnahmeVideoaufnahme Anhang
hinzufügen
«extends»
Bearbeite Kommentar
37Montag, 12. Dezember 11
12.12.2011
38
Anwendungsfälle
erfasse Multiple Choice
Reviewer
Wähle Frage
Wähle Antwort
38Montag, 12. Dezember 11
12.12.2011
39
Anwendungsfälle
Verwalte Benutzer
Benutzer hinzufügen
Lösche Benutzer
Bearbeite Benutzer
Kennwort Ändern
Reviewer
Organisator
Server
Sende Änderung an
Server«includes»
«participate»
39Montag, 12. Dezember 11
12.12.2011
40
Anwendungsfälle
Zeige Autoinformationen
Reviewer
Vergrößere Automodell
Drehe Modell
zeige Zusatz-information
40Montag, 12. Dezember 11
12.12.2011
41
Anwendungsfälle
Importiere Modelldaten
Super User Server
Lade Liste der Modelle
41Montag, 12. Dezember 11
12.12.2011
42
Anwendungsfälle
Exportiere Reviewergebnisse
Super UserExportieren Komprimiere
Daten«includes»
Server
42Montag, 12. Dezember 11
12.12.2011
43
Cocos3D
CC3Identifiable CC3Node
CC3LocalContentNode
CC3PODNode
CC3RessourceNode
CC3World
CC3TargettingNode
CC3MeshNode
CC3Camera
CC3LightTracker
CC3Light
CC3PODCamera
CC3PODLight
CC3BoxNode
CC3LineNode
CC3PlaneNode
CC3PODMeshNode
CC3Material
CC3Mesh
CC3Ressource
CC3Texture
43Montag, 12. Dezember 11
12.12.2011
44
Cocos3D
CC3World CC3Node CC3Rotator
CC3GLMatrixCC3WorldTouchHandler
touchHandler
world
pickedNode
pickedNode
rotator
globalRotationMatrix
44Montag, 12. Dezember 11
12.12.2011
45
Sequenzdiagramm
45Montag, 12. Dezember 11
12.12.2011
46
Auto modellieren
Organisator Reviewer
Gast um Review bitten
Multiple Choice Fragen
durchgehen
Kommentare bewerten
Ergebnis an Designer
weitergeben
Modelldaten, Fragen und
Multiple Choice laden
Freitext Kommentare aufnehmen
Multimedia Kommentar aufnehmen
Auto-informationen
Fragen
iPad verteilenFragebogen verteilen
Ergebnisse (XML) an Server übertragen
Fragebogen abgeben
Auto
To BeAs Is
Legende:
Fragebogen in XML generieren
Fragebogen (Textdatei) generieren
Multiple Choice maschinell auswerten lassen
Multiple Choice manuell auswerten lassen
Designer
Änderungen am Modell
vornehmen
Aktivitätsdiagramm
46Montag, 12. Dezember 11
12.12.2011
47
typ:enumerate
Kommentar
MainController
TextKommentar
VideoKommentar AudioKommentar
frage:string[]antworten:int[]
MultipleChoice
Rad LichtTüre Vorderseite RückseiteKotflügel
Fahrertüre Beifahrertüre Kofferraumtüre Vorderlicht Rücklicht
*
1
Organisator Reviewer
bearbeiteNotiz()hinzufügenNotiz()entferneNotiz()
sichtbar:boolean
Haftnotiz
1
Server + importAuto(int:ID)+ importMultipleChoice()+ exportNotiz()
«interface»ServerInterface
BildKommentar
+ vorname:string+ nachname:string+ benutzername:string- passwort:password+ rechte:enum
«abstract»Benutzer
author
Position
1
KontextPosition-Strategie
Bluetooth QRCode RFID
Kommentarverwaltung
3D-Modell Verwaltung
Positionsbestimmung
Serveranbindung
Benutzerverwaltung
autoName:stringauto3DModel:3dmodel
Auto
Benutzeroberfläche
1
*
loginBenutzer()importModell()exportNotiz()
VerwaltungViewBenutzer
VerwaltungView
ServerView
MultipleChoiceView
KommentarView
MenuePopUpView
InformationView
ReviewController
ReviewAppDelegate
1 1
kontrolliert/delegiert
information:string
Information
47Montag, 12. Dezember 11
12.12.2011
48
:Server
:MainController
vorname: String = ("Hans")nachname: string = ("Mustermann")benutzername: string = ("HansMu")passwort: password = ("654321")rechte:enum = (organisator)
Hans: Organisator
48Montag, 12. Dezember 11
12.12.2011
49
carName:string = ("Audi TT")carModel:string = ("TT")
Audi TT:Auto
text = "sieht klasse aus"
Kommentar1:TextKommentar
:MainController
visibility:boolean = true
Kommentarverwaltung
vorname: String = ("Stefan")nachname: string = ("Meier")benutzername: string = ("StefMei")passwort: password = ("123456")rechte:enum = (reviewer)
Stefan: Reviewer
49Montag, 12. Dezember 11