Πειραιάς S 2 Ε Lab Ιούνιος 2012 Εισηγητής: Δ. Ν. Καλλέργης, MSc. Εργ. Συνεργάτης
Πνευµατικά δικαιώµατα Τα πνευµατικά δικαιώµατα χρησιµοποίησης του µη πρωτότυπου υλικού της εργασίας ανήκουν στο/στη φοιτητή/-τρια και τον επιβλέποντα εις ολόκληρον, δηλαδή εκάτερος µπορεί να κάνει χρήση αυτών χωρίς τη συναίνεση του άλλου. Τα πνευµατικά δικαιώµατα χρησιµοποίησης του πρωτότυπου µέρους διπλωµατικής εργασίας ανήκουν στο/στη φοιτητή/-τρια και τον επιβλέποντα από κοινού, δηλαδή δεν µπορεί ο ένας από τους δύο να κάνει χρήση αυτού χωρίς τη συναίνεση του άλλου. Κατ εξαίρεση, επιτρέπεται η δηµοσίευση του πρωτότυπου µέρους της εργασίας σε επιστηµονικό περιοδικό ή πρακτικά συνεδρίου από τον ένα εκ των δύο, µε την προϋπόθεση να αναφέρονται τα ονόµατα και των δύο ως συν-συγγραφέων. Στην περίπτωση αυτή, προηγείται γραπτή ενηµέρωση του µη συµµετέχοντα στη συγγραφή του επιστηµονικού άρθρου. Δεν επιτρέπεται η κατά οποιοδήποτε τρόπο δηµοσιοποίηση υλικού το οποίο έχει δηλωθεί εγγράφως ως απόρρητο. Οι υπογράφοντες 1
ΕΥΧΑΡΙΣΤΙΕΣ Ευχαριστώ τους καθηγητές που με ενέπνευσαν και με δίδαξαν κατά τη διάρκεια των σπουδών μου. Ιδιαίτερες ευχαριστίες στον επιβλέποντα καθηγητή, κύριο Δημήτρη Καλλέργη, για το χρόνο που αφιέρωσε και στο φοιτητή του Τμήματος Η.Υ.Σ. Ευάγγελο Αυγερινό, ο οποίος βοήθησε σημαντικά στην ενσωμάτωση του υλικού της Πτυχιακής μου σε εξυπηρετητή του Εργαστηρίου Τεχνολογίας Λογισμικού και Υπηρεσιών. Ευχαριστώ την μητέρα μου, Ευφροσύνη Καρακάση, στην οποία θα είμαι πάντα ευγνώμων και τον φίλο και συνεργάτη μου, Γιάννη Δεληγιάννη για τις συμβουλές και τη βοήθεια που μου έχει προσφέρει τα τελευταία χρόνια. 2
ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1.1 Πρόλογος...7 1.2 Σκοπός Πτυχιακής Εργασίας...7 1.3 Δομή Πτυχιακής Εργασίας...8 ΚΕΦΑΛΑΙΟ 2: Διαχείριση Έργου...9 2.1 Ευέλικτες Μέθοδοι...9 2.2 Σχεδίαση Υλοποίησης Πτυχιακής Εργασίας...9 ΚΕΦΑΛΑΙΟ 3: Έρευνα Τεχνολογιών...11 3.1 Μελέτη περίπτωσης εγγενούς εφαρμογής (na\ve applica\on)...12 3.1.1 Android...12 3.1.2 Sinatra...13 3.1.3 JSON [9]...14 3.1.4 HTML5 WebSockets...14 3.1.5 Node.js...19 3.1.6 EventMachine, Twisted...20 3.1.7 Faye...21 3.2 Μελέτη περίπτωσης web mobile εφαρμογής...21 3.2.1 Ruby...22 3.2.2 Ruby on Rails...23 3.2.3 MySQL...33 3.2.4 jquery mobile...34 3.2.5 Git...39 3.3 Συμπέρασμα Θεωρητικής Μελέτης...42 ΚΕΦΑΛΑΙΟ 4: Εργαλεία και Μέθοδοι...43 4.1 Περιβάλλον ανάπτυξης Εργαλεία...43 4.1.1 Aptana...43 4.1.2 Phusion Passenger...43 4.1.3 RVM...43 4.1.4 Bundler...44 4.1.5 Gems Σημαντικές Βιβλιοθήκες της εφαρμογής...44 4.2 Μέθοδοι Κλάσεις...45 4.2.1 Μοντέλο: Σελίδα (Page)...47 4.2.2 Μοντέλο: Χρήστης (User)...48 4.2.3 Μοντέλο: Διαδρομή (Route)...48 4.2.4 Ελεγκτής εφαρμογής (applica\on_controller.rb)...49 4.2.5 Ελεγκτής σελίδας (pages_controller.rb)...50 4.2.6 Ελεγκτής διαδρομής (routes_controller.rb)...50 4.2.7 Assets...51 4.2.8 JavaScript: Κώδικας geocode και route...52 4.2.9 Κλάση αποστολής email (user_mailer.rb)...52 4.2.10 Διαδρομές απόκρισης της εφαρμογής (routes.rb)...52 4.2.11 Οργάνωση προβολών της εφαρμογής (Layout)...53 4.2.12 Κώδικας φάκελου locales...54 4.3 Tes\ng...54 3
ΚΕΦΑΛΑΙΟ 5: Αποτελέσματα Συζήτηση...60 ΚΕΦΑΛΑΙΟ 6: Μελλοντική Εργασία...66 6.1 Επιλογή οχήματος Μέγιστος αριθμός επιβατών...66 6.2 Αξιολόγηση συνεπιβάτη...66 6.3 Δυνατότητα επικοινωνίας μέσω της εφαρμογής...66 6.4 Προσθήκη ενδιάμεσων σημείων διαδρομής...66 6.5 Υπολογιστικό νέφος...67 6.5.1 Χρήση Εμπορικής Υλοποίησης Υπολογιστικού Νέφους...68 6.5.2 Υλοποιήση Υπολογιστικού Νέφους Ανοικτής Αρχιτεκτονικής...70 Αναφορές...74 Βιβλιογραφία...78 Παράρτημα...79 4
ΛΙΣΤΑ ΕΙΚΟΝΩΝ Εικόνα 3-1: Χρήση συσκευών για είσοδο στο διαδίκτυο...11 Εικόνα 3.1-1: Αλληλεπίδραση τεχνολογιών εγγενούς εφαρμογής...12 Εικόνα 3.1.1-1: Αναλογίες χρήσης λειτουργικών συστημάτων κινητών συσκευών για το 4ο εξάμηνο 2011...13 Εικόνα 3.1.2-1: Λογότυπο πλαισίου Sinatra...13 Εικόνα 3.1.4-1: Λογότυπο HTML5...14 Εικόνα 3.1.4-2: Μέθοδοι Σύνδεσης Εξυπηρετητή- Πελάτη...16 Εικόνα 3.1.4-3: Επικοινωνία εξυπηρετητή και πελάτη...17 Εικόνα 3.1.4-4: Πολιτική ίδιας προέλευσης...17 Εικόνα 3.1.4-5: Μεσολάβηση πληρεξούσιου εξυπηρετητή...18 Εικόνα 3.1.5-1: Λογότυπο node.js...19 Εικόνα 3.2-1: Αλληλεπίδραση τεχνολογιών εφαρμογής διαδικτύου...21 Εικόνα 3.2.1-1: Λογότυπο της γλώσσας Ruby...22 Εικόνα 3.2.2-1: Δομή φακέλων των εφαρμογών Ruby on Rails...28 Εικόνα 3.2.2-2: Μοντέλο "Μοντέλο- Προβολή- Ελεγκτής"...29 Εικόνα 3.2.4-1: Οθόνη εφαρμοφής jquery mobile...36 Εικόνα 3.2.4-2: Προεπιλεγμένα θέματα της jquery mobile...37 Εικόνα 3.2.4-3: Τρόποι μετάβασης από μία σελίδα σε άλλη...38 Εικόνα 3.2.5-1: Λογότυπο Git...39 Εικόνα 3.2.5-2: Εντολές και διάγραμμα ροής στο Git...40 Εικόνα 3.2.5-3: Ενημέρωση τοπικού και απομακρυσμένου αποθετηρίου...41 Εικόνα 3.2.5-4: Διακλαδώσεις στο Git...41 Εικόνα 4.2-1: Διάγραμμα κλάσσεων...47 Εικόνα 4.2.3-1: Μέθοδοι ελεγκτών...49 Εικόνα 4.2.10-1: Αντιστοίχιση διαδρομών εφαρμογής, HTTP ρημάτων, μορφής παραμέτρων, ελεγκτών και ενεργειών...53 Εικόνα 4.3-1: Εκτέλεση ελέγχων...57 Εικόνα 4.3-2: Έλεγχος προσθήκης νέας διαδρομής με το Capybara...59 Εικόνα 5-1: Σύγκριση Mongrel- Passenger- Unicorn ως προς το μέσο χρόνο απόκρισης...61 Εικόνα 5-2: Mongrel- Passenger- Unicorn ως προς το μέγιστο χρόνο απόκριση...61 Εικόνα 6.5.1-1: Λογότυπο heroku...68 Εικόνα 6.5.1-2: Λογότυπο Engine Yard...68 Εικόνα 6.5.1-3: Λογότυπο Google App Engine...69 5
ΛΙΣΤΑ ΠΙΝΑΚΩΝ Πίνακας 3.2.2-1: Αντιστοίχιση HTTP μεθόδων, Διαδρομών (paths), Λειτουργιών βάσης. 26 Πίνακας 6.5.1-2: Σύγκριση συμβατότητας PaaS με γλώσσες προγραμματισμού...70 Πίνακας 3.2.4-1: Συστήματα που υποστηρίζουν το πλαίσιο jquery mobile...35 Πίνακας 3.2.4-2: Τρόποι μετάβασης από μία σελίδα σε άλλη... 38 Πίνακας 4.2.6-1: Ενέργειες Ελεγκτή Διαδρομών... 51 Πίνακας 6.5.1-1: Σύγκριση συμβατότητας PaaS με γλώσσες προγραμματισμού... 71 Πίνακας 6.5.2-1: Γλώσσες προγραμματισμού που υποστηρίζονται από ανοικτού κώδικα PaaS... 74 6
Εισαγωγή 1.1 Πρόλογος Οι οικονομικές συνθήκες, τα περιβαλλοντικά προβλήματα και η κυκλοφοριακή συμφόρηση δυσχεραίνουν την καθημερινότητα χιλιάδων ανθρώπων. Ταυτόχρονα, η τεχνολογική πρόοδος στον τομέα των συσκευών κινητών επικοινωνιών έχει καταστήσει εφικτή την ανάπτυξη φορητών εφαρμογών. Οι χρήστες σήμερα είναι εξοικειωμένοι με τη χρήση διαδικτυακών εφαρμογών για τη διασκέδαση, ενημέρωση και εξυπηρέτηση αναγκών τους. Κανείς δεν μπορεί να αλλάξει τις συνήθειες άλλων ανθρώπων, αλλά έχει τη δυνατότητα να δημιουργήσει ένα εργαλείο που πιθανόν αν χρησιμοποιηθεί, θα φέρει αλλαγή σε κάποια συνήθεια. Η εφαρμογή που υλοποιήθηκε εντάσσεται στο επιστημονικό πεδίο της ανάπτυξης λογισμικού. Έγινε χρήση νέων τεχνολογιών που εφαρμόζουν τις πλέον σύγχρονες πρακτικές. Δόθηκε έμφαση στην ευκολία χρήσης και είναι προσανατολισμένη στις ανάγκες των έξυπνων συσκευών κινητών επικοινωνιών αλλά ταυτόχρονα είναι εξίσου προσβάσιμη από επιτραπέζιους υπολογιστές. 1.2 Σκοπός Πτυχιακής Εργασίας Σκοπός της πτυχιακής εργασίας είναι η μελέτη και ανάπτυξη λογισμικού προηγμένης εφαρμογής εξυπηρέτησης διαδρομών. Οι χρήστες που επιθυμούν να μοιραστούν μια διαδρομή είτε σαν οδηγοί είτε σαν επιβάτες, εγγράφονται στην υπηρεσία και καταχωρούν τα στοιχεία της διαδρομής τους. Έπειτα μπορούν να ψάξουν για συνταξιδιώτη και να διαλέξουν ανάμεσα στις διαθέσιμες διαδρομές που εμφανίζει η εφαρμογή σύμφωνα με τις παραμέτρους που έχουν δοθεί. Αν δεν υπάρχει κάποια διαδρομή που ταιριάζει με τα κριτήρια του χρήστη, παραμένει αποθηκευμένη στην υπηρεσία και μπορεί ο ίδιος να αναζητήσει αργότερα εκ νέου συνταξιδιώτη ή να λάβει ενημερωτικό μήνυμα όταν κάποιος θέλει να μοιραστεί την εν λόγω διαδρομή μαζί του. 7
1.3 Δομή Πτυχιακής Εργασίας Στο πρώτο κεφάλαιο παρατίθενται ο πρόλογος, ο σκοπός και η δομή της πτυχιακής εργασίας. Στο δεύτερο κεφάλαιο αναφέρεται ο τρόπος διαχείρισης και υλοποιήσης της εργασίας με χρήση των ευέλικτων μεθοδολογιών ανάπτυξης λογισμικού. Στο τρίτο κεφάλαιο εξετάζονται δύο περιπτώσεις υλοποιήσης του έργου. Αναλύονται και συγκρίνονται οι τεχνολογίες που μποροεί να χρησιμοποιηθούν. Στο τέταρτο κεφάλαιο δίνονται πληροφορίες για τα εργαλεία που χρησιμοποιήθηκαν στην ανάπτυξη του πρακτικού μέρους και σχολιάζεται ο κώδικας της εφαρμογής και των ελέγχων που διεξήχθησαν. Στο πέμπτο κεφάλαιο παρουσιάζονται τα αποτελέσματα, εστιάζοντας στο χρόνο απόκρισης του συστήματος στις αιτήσεις διαφορετικών χρηστών. Στο έκτο κεφάλαιο περιγράφονται πιθανές προσθήκες στην εφαρμογή. 8