Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής πληροφορικών από το περιβάλλον για την ανάπτυξη εφαρμογών με επίγνωση συγκειμένου (context-aware εφαρμογές). Παράλληλα η χρήση πλατφόρμων με μικροελεγκτές και ειίσοδο/έξοδο που διευκολύνουν τον προγραμματισμό και τη σύνδεση με διάφορα εξωτερικά κυκλώματα έχει διαδοθεί πολύ το τελευταιο διάστημα. Ο συνδυασμός των πλατφόρμων αυτών με αισθητήρες που υπάρχουν στο περιβάλλον ή σε εξωτερικές συσκευές έχει μεγάλο ενδιαφέρον για τη διευκόλυνση της ανάπτυξης εφαρμιγών με επίγνωση συγκειμένου. Θέμα 1: Χρήση πλατφόρμας μικροελεγκτή Arduino/Rasbperry pi για έλεγχο περιβάλλοντος Σκοπός της παρούσας διπλωματικής αποτελεί η εξοικειωση και ο πειραματισμός με πλατφόρμες μικροελεγκτών (κυρίως Arduino και Raspberry pi) και η χρήση τους για έλεγχο άλλων συσκευών στο περιβάλλον. Ζητείται να γίνει χρήση υπάρχόντων προγραμμάτων για σύνδεση του μικροελεγκτή με αισθητήρες (π.χ. θερμοκρασίας) και η δημιουργία ενός προγραμματιστικού πλαισίου (API) για την ανάπτυξη εφαρμογών ελέγχου περιβάλλοντος. H υλοποίηση θα λάβει υπόψη και το προγραμματιστικό πλαίσιο HTML5 Context Middleware (H5CM, https://code.google.com/p/h5cm/), ώστε να είναι δυνατός ο συνδυασμός της λύσης με το H5CM. Α) Μελέτη και εξοικείωση με χρήση Arduino/Raspberry pi και τον έλεγχο συσκευών περιβάλλοντος μέσω αυτών Β) Σχεδίαση και υλοποίηση προγραμματιστικού πλαισίου για την ανάπτυξη εφαρμογών ελέγχου περιβάλλοντος μέσω συστατικών (modules) που καλύπτουν βασικές λειτουργίες. Δ) Σύνδεση με H5CM μέσω της κατασκευής κατάλληλου plugin E) Σχεδίαση και υλοποίηση δοκιμαστικής εφαρμογής για χρήση των πληροφοριών αυτών Προαπαιτούμενα: εξοικείωση με χρήση πλατφόρμων μικροελεγκτών (Arduino/Raspberry pi), καλή γνώση προγραμματισμού σε C / C++ και σε Java, εξοικείωση με JavaScript, HTML5. 1
Θέμα 2: Μοντελοκεντρική ανάπτυξη εφαρμογών για πλατφόρμες μικροελεγκτών Arduino/Rasbperry pi Σκοπός της παρούσας διπλωματικής αποτελεί η εξοικείωση και ο πειραματισμός με πλατφόρμες μικροελεγκτών (Arduino/Raspberry pi) και η σχεδίαση μιας μεθοδολογίας για την ανάπτυξη εφαρμογών για τους μικροελεγκτέρς αυτούς μέσω μοντελοκεντρικής ανάπτυξης λογισμικού (model driven engineering). Θα οριστούν τα κατάλληλα μοντέλα και μεταμοντέλα σε μια γλώσσα μοντελοποίησης (π.χ. UML, MOF) που θα υποστηρίζουν την ανάπτυξη βασικών εφαρμογών για τις πλατφόρμες αυτές. Θα γίνεται η κατάλληλη παραγωγή κώδικα για τις εφαρμογές που σχεδιάζονται. Α) Μελέτη και εξοικείωση με χρήση Arduino/Raspberry pi, την ανάπτυξη εφαρμογών και τη σύνδεση αισθητήρων σε αυτό Β) Σχεδίαση και υλοποίηση ενός μεταμοντέλου ανάπτυξη εφαρμογών για πλατφόρμες μικροελεγκτών Δ) Δημιουργία ενός Plugin για το Eclipse για μοντελοποίηση και ανάπτυξη εφαρμογών Προαπαιτούμενα: εξοικείωση με χρήση πλατφόρμων μικροελεγκτών (Arduino/Raspberry pi), καλή γνώση προγραμματισμού σε C / C++ και σε Java, εξοικείωση με εργαλεία μοτνελοποίησης (Eclipse Modeling Framwework). ΠΕΡΙΟΧΗ Β: ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ ΑΝΟΙΚΤΟΥ ΚΩΔΙΚΑ Τα τελευταία χρόνια παρατηρείται μεγάλη ανάπτυξη του λογισμικού ανοικτού κώδικα (open source). Όλο και περισσότερες εταιρίες παρέχουν τη δυνατότητα χρήσης του λογισμικού τους υπό ένα είδος άδειας δημοσιεύοντας παράλληλα τον κώδικα υλοποίησης των εφαρμογών. Για αυτό το είδος λογισμικού χρησιμοποιείται ο όρος free/libre/opensource software (FLOSS) που καλύπτει συστήματα λογισμικού με διάφορα είδη αδειών (licenses), περισσότερο ή λιγότερο περιοριστικών κατά τη χρήση του αντίστοιχου λογισμικού. Ένα σημαντικό κομμάτι στην τεχνολογία λογισμικού κατά την κατασκευή συστημάτων λογισμικού αποτελεί η χρήση βιβλιοθηκών, συστατικών και συστημάτων τρίτων που παρέχουν τη λειτουργικότητα που θέλουμε να ενσωματώσουμε στο υπό κατασκευή σύστημα. Θέμα 3: Συμβατότητες σε σύστημα συστάσεων αδειών λογισμικού ανοικτού κώδικα (Compatibilities in recommender system for open source licenses) Από τη χρήση λογισμικού τρίτων πρέπει να προκύπτει λογισμικό που συνοδεύεται από τις κατάλληλες άδειες και να αποφεύγεται η παραβίαση των αρχών των αδειών (license violation). Σκοπός της παρούσας διπλωματικής αποτελεί η επέκταση ενός υφιστάμενου συστήματος συστάσεων (recommender system) που προτείνει στο χρήστη ποια(/ποιες) 2
άδεια(/ες) λογισμικού ανοικτού κώδικα μπορεί να χρησιμοποιήσει. Υπάρχουν διάφορες άδειες που εντάσσονται σε 3 βασικές κατηγορίες. Π.χ. ο OSI (Οpen Source Intitiative) έχει εγκρίνει περίπου 70, αλλά υπάρχουν περισσότερες. Οι άδειες έχουν νομικό κείμενο για την περιγραφή τους. Το σύστημά θα επεκτείνει ένα υφιστάμενο σύστημα λαμβάνοντας υπόψη συμβατότητες και ασυμβατότητες μεταξύ αδειών λογισμικού καλύπτοντας άδειες που υποστηρίζονται από το Open Source Initiative (ΟSI) και το Free Software Foundation (FSF). Α) μελέτη αδειών λογισμικού ανοικτού κώδικα εγκριμένων από το OSI και το FSF Β) μελέτη και επέκταση υφιστάμενου αλγορίθμου συστήματος για προτάσεις Γ) μελέτη και κατασκευή αλγορίθμου για τον έλεγχο συμβατότητας αδειών από διάφορες βιβλιοθήκες λογισμικού χρησιμοποιώντας εργαλεία για τη στιγμιαία ανάλυση αδειών της βιβλιοθήκης (π.χ., χρήση εργαλείου FOSSology) Δ) σχεδίαση και επέκταση υφιστάμενου συστήματος που υλοποιεί τον αλγόριθμο και προτείνει ποια(/ποιες) άδεια/(-ες) μπορεί να χρησιμοποιήσει Προαπαιτούμενα: γνώση αρχών τεχνολογίας λογισμικού και επαναχρησιμοποίησης συστατικών λογισμικού, γλώσσας προγραμματισμού (Java ή C++ ή άλλη γλώσσα), γνώσεις τεχνητής νοημοσύνης (artificial intelligence) και συστημάτων συστάσεων (recommender systems). Θέμα 4: Ανάπτυξη και χρήση καθολικής γλώσσας μοντελοποίησης αδειών λογισμικού ανοικτού κώδικα (Modeling language for open source software licenses) Από τη χρήση λογισμικού τρίτων πρέπει να προκύπτει λογισμικό που συνοδεύεται από τις κατάλληλες άδειες και να αποφεύγεται η παραβίαση των αρχών των αδειών (license violation). Σκοπός της παρούσας διπλωματικής είναι η καθολική μοντελοποίηση των πληροφοριών που περιέχονται σε μια άδεια λογισμικού ανοικτού κώδικα. Η άδεια είναι σε μορφή κειμένου που πλησιάζει τη δομή των νομικών κειμένων. Μια παρουσίαση διαφόρων αδειών στην ίδια μορφή μπορεί να δώσει σημαντικές πληροφορίες για τις δυνατότητες χρήσης της άδειας συμπεριλαμβανομένου των δικαιωμάτων και των υποχρεώσεων των χρηστών. Η μοντελοποίηση θα πρέπει να είναι σε διαγραμματική μορφή. Από την πληροφορία που θα προσφέρει θα μπορούν να εξαχθούν χρήσιμα συμπεράσματα για τον τρόπο χρήσης της άδειας και τους περιορισμούς της. Στόχος είναι η μελέτη όσο το δυνατόν περισσότερων αδειών όπως έχουν συμπεριληφθεί στη λίστα αδειών του Open Source Initiative (OSI). Α) Μελέτη υφιστάμενων και πιο διαδεδομένων αδειών λογισμικού ανοικτού κώδικα Β) Σχεδίαση γλώσσας μοντελοποίησης πληροφοριών αδειών λογισμικού ανοικτού κώδικα καλύπτοντας τα δικαιώματα και τις υποχρεώσεις της άδειας Γ) Σχεδίαση και υλοποίηση εργαλείων ανάγνωσης/επεξεργασίας πληροφοριών αδειών λογισμικού ανοικτού κώδικα βάσει της προτεινόμενης γλώσσας 3
Πρόσθετες πληροφορίες: Ανάλυση στοιχείων κειμένου αδειών ανοικτού κώδικα έχει πραγματοποιηθεί μόνο για μικρά σύνολα αδειών Υπάρχει η δυνατότητα παρουσίασης ερευνητικής εργασίας σε διεθνές συνέδριο ή περιοδικό εφόσον πραγματοποιηθεί ποιοτική εργασία κατά την εκπόνηση της διατριβής Υπάρχει ανάγκη ύπαρξης αντίστοιχων συστημάτων στη βιομηχανία λογισμικού, όπου η διάδοση της χρήσης λογισμικού ανοικτού κώδικα μεγαλώνει συνεχώς Προαπαιτούμενα: γνώση αρχών τεχνολογίας λογισμικού και επαναχρησιμοποίησης συστατικών λογισμικού, γλώσσας προγραμματισμού (Java ή C++ ή άλλη γλώσσα), γνώσεις τεχνητής νοημοσύνης (artificial intelligence) και συστημάτων συστάσεων (recommender systems). Θέμα 5: Δημιουργία προφίλ μηχανικών λογισμικού από κοινωνικά δίκτυα (Crossplatform user modeling for software engineers) Στις μέρες μας παρέχεται ένας μεγάλος αριθμός εφαρμογών κοινωνικής δικτύωσης και ερωτοαπαντήσεων στις οποίες μπορούν να συμμετέχουν διάφοροι μηχανικοί λογισμικού και να συνεισφέρουν στην κοινότητα ανοικτού λογισμικού. Ενδεικτικά αναφέρονται τα: github, BiTorrent, stackoverflow. Σκοπός της παρούσας διπλωματικής εργασίας είναι η μελέτη των παραπάνω εφαρμογών όσον αφορά τη δυνατότητα συμμετοχής των χρηστών, η ανάλυση των πληροφοριών που αποθηκεύονται για κάθε χρήστη και η εξαγωγή ενός κατάλληλου προφίλ χρήστη που συνδυάζει πληροφορίες από διάφορες πηγές. Μέρος της εργασία αποτελεί ο ορισμός του προφίλ του μηχανικού λογισμικού. Το προφίλ που θα εξαχθεί από αυτή την πληροφορία θα μπορεί να αναπαρασταθεί σε μια διαφορετική μορφή (π.χ. διαγραμματική) και να μπορεί να χρησιμοποιηθεί στη συνέχεια για την εξαγωγή συμπερασμάτων για τις δραστηριότητες, την εμπειρία και τις ικανότητες του μηχανικού λογισμικού. Α) Μελέτη υφιστάμενων και πιο διαδεδομένων σελίδων κοινωνικής δικτύωσης για προγραμματιστές (μηχανικούς λογισμικού) Β) Σχεδίαση γλώσσας μοντελοποίησης προφίλ χρήστη που να εκφράζει τις ικανότητες και τη δραστηριοποίηση του χρήστη λαμβάνοντας υπόψη τη μορφή πληροφοριών των διαφόρων σελίδων κοινωνικής δικτύωσης που θα έχουν μελετηθεί Γ) Σχεδίαση και υλοποίηση εργαλείων εξαγωγής, παρουσίασης (visualization) και ανάλυσης του προφίλ του χρήστη όπως αυτό εξάγεται από τα διάφορα κοινωνικά δίκτυα Δ) Χρήση του εργαλείου και του προφίλ του προγραμματιστή σε μια δοκιμαστική εφαρμογή που θα συστήνει (recommender system) το κατάλληλο άτομο για συγκεκριμένη εργασία υλοποίησης βάσει απαιτήσεων που προτείνει κάποιος χρήστης Προαπαιτούμενα: γνώση αρχών τεχνολογίας λογισμικού και επαναχρησιμοποίησης λογισμικού, κατανόηση αρχών μοντελοποίηση χρηστών, γνώση γλώσσας προγραμματισμού (Java ή C++ ή άλλη γλώσσα), γνώσεις τεχνητής νοημοσύνης (artificial intelligence) και συστημάτων συστάσεων (recommender systems). 4
ΠΕΡΙΟΧΗ Γ: ΙΔΙΩΤΙΚΟΤΗΤΑ Η προστασία της ιδιωτικότητας αναφέρεται στην προστασία της διάδοσης και χρήσης των ευαίσθητων δεδομένων του χρήστη. Θέμα 6: Σχεδίαση και υλοποίηση Android εφαρμογής χειρισμού απαιτήσεων χρήστη για πρόσβαση σε ευαίσθητες πληροφορίες Κατά την εγκατάσταση μιας νέας εφαρμογής της πλατφόρμας Android σε μια κινητή συσκευή ο χρήστης ενημερώνεται για τους πόρους στους οποίους απαιτεί πρόσβαση για τη λειτουργία της η συγκεκριμένη εφαρμογή. Οι πόροι αυτοί αποτελούν κομμάτι των προσωπικών πληροφοριών του χρήστη και κατ επέκταση συνδέονται με θέματα προστασίας της ιδιωτικότητας. Η παρακολούθηση των πληροφοριών που απαιτούν οι εφαρμογές είναι σημαντική. Σκοπός της παρούσας διπλωματικής είναι η κατασκευή μιας εφαρμογής που 1) να επιτρέπει στο χρήστη να διαχειριστεί την πρόσβαση των εφαρμογών σε ευαίσθητες πληροφορίες προτείνοντας εφαρμογές που δεν παραβιάζουν τις απαιτήσεις του χρήστη για την προστασία της ιδιωτικότητας, και 2) να απαγορεύει την εκτέλεση εντολών και εφαρμογών που παραβιάζουν τις προτιμήσεις του χρήστη. Στην παρούσα διπλωματική ζητείται: Α) Μελέτη του Android API που αφορά πόρους του συστήματος Β) Σχεδίαση και υλοποίηση μιας εφαρμογής που να: 1. Επιτρέπει στο χρήστη να ορίσει προτιμήσεις για την προστασία της ιδιωτικότητάς του, 2. Προτείνει εφαρμογές που να μην παραβιάζουν τις προτιμήσεις του χρήστη, 3. Μην επιτρέπει παραβίαση των προτιμήσεων του χρήστη από κάποια εφαρμογή. Προαπαιτούμενα: γνώση αρχών τεχνολογίας λογισμικού, γλώσσας προγραμματισμού Java, γνώση πλατφόρμας Android και εξοικείωση με Android SDK, XML. Χρήσιμες πηγές/εφαρμογές: MockDroid ΠΕΡΙΟΧΗ Ε: ΠΡΑΚΤΙΚΑ ΠΡΟΒΛΗΜΑΤΑ Θέμα 7: Σχεδίαση και Υλοποίηση Συστήματος για Διαδικασίες Διαχείρισης Υλικού (συνεπίβλεψη με Αναπλ. Καθηγητή Χρύση Γεωργίου) Σε πολλά συστήματα άμυνας υπάρχει η ανάγκη διάθεσης και διαχείρισης εξοπλισμού ποικίλης εμβέλειας και μεγέθους. Στην παρούσα διπλωματική καλείστε να σχεδιάσετε και να αναπτύξετε ένα σύστημα που θα καλύπτει τις ανάγκες ενός τέτοιου συστήματος αναφορικά με τις διαδικασίες συντήρησης του διαθέσιμου εξοπλισμού. Η διπλωματική αφορά μια εφαρμογή των γνώσεών σας σε ένα πραγματικό σύστημα. Περισσότερες πληροφορίες θα λάβετε από τους επιβλέποντες και από τα εμπλεκόμενα άτομα. 5
Στην παρούσα διπλωματική ζητείται: Α) Μελέτη υφιστάμενου τρόπου διαχείρισης υλικού Β) Σχεδίαση και υλοποίηση (διαδικτυακού) συστήματος για την αυτοματοποίηση της διαχείρισης των διαδικασιών συντήρησης υλικού Προαπαιτούμενα: πολύ καλή γνώση βάσεων δεδομένων (σχεσιακών βάσεων δεδομένων), γνώση αρχών διαδικτυακού προγραμματισμού και σχετικών γλωσσών/τεχνολογιών (PHP, JavaScript, HTML), γνώση αρχών τεχνολογίας λογισμικού, γνώση γλώσσας προγραμματισμού (Java ή C++ ή άλλη γλώσσα). 6