Κατανεμημένα Συστήματα Android Grid Application Θωμάς Αντώνιος (3050073) Καραβέλλας Θεμιστοκλής (3050055)
1. Εισαγωγή Το Android αποτελεί ένα λειτουργικό σύστημα για κινητές συσκευές. Το λειτουργικό αυτό σύστημα αναπτύχθηκε από την Google και την Open Handset Alliance. Είναι βασισμένο σε Linux πυρήνα και αυτό που το κάνει να ξεχωρίζει από τα υπόλοιπα λειτουργικά συστήματα αυτού του είδους είναι η δυνατότητα που παρεχει στους προγραμματιστές, να αναπτύσουν προγράμματα για το λειτουργικό συστημα και τη συσκευή στην οποία είναι αγκατεστημένο,χρησιμοποιώντας βιβλιοθήκες της Java που αναπτύχθηκαν και στις οποίες παρέχεται πρόσβαση από τη Google. Η εργασία μας αφορα την λειτουργία ενός κατανεμημένου συστήματος σε επίπεδο κινητής συσκεής στην οποία είναι εγκατεστημένο το Android. Για την επίτευξη της λειτουργίας δημιουργήσαμε δύο εφαρμογές οι οποίες λειτουργούν και λαμβάνουν το αποτέλεσμα τους μέσω της υλοποίησης ενός κατανεμημένου συστήματος. 1. Η πρώτη εφαρμογή που αναπτύξαμε προσθέτει ένα πλήθος τυχαίων ακέραιων αριθμών που βρίσκονται στο διάστημα από το 1 έως το 100. Το πλήθος των αριθμών που θα προστεθουν καθορίζεται από το χρήστη κατά την εκκίνηση του προγράμματος. Οι αριθμοί διανέμονται στους διαθέσιμους προς εργασία κόμβους οι οποίοι είναι συνδεδεμένοι στο σύστημα. Ο κάθε κόμβος πρέπει να προσθέσει τους αριθμούς που του έχουν σταλεί και να επιστρέψει το άθροισμα. Αφού αυτή η εργασία ολοκληρωθεί από τον κάθε κόμβο-εργατη το πρόγραμμα το οποίο εκτελεί ο χρήστης αναλαμβάνει να προσθέσει όλα τα επιμέρους αποτελέσματα-αθροίσματα που έχει λάβει από τους υπόλοιπους κόμβους του δικτύου, δίνοντας στον χρήστη τοτ ελικό αποτέλεσμα. 2. Η δεύτερη εφαρμογή που αναπυξαμε εκτελεί τη λειτουργία ενός φίλτρου ανεπιθύμητων μηνυμάτων το οποίο μπορεί να εξετάζει κάθε εισερχόμενο SMS. Η εφαρμογή υλοποιεί έναν listener ο οποίος για κάθε εισερχόμενο μήνυμα εμφανίζει την επιλογή του ελέγχου του περιεχομένου του. Κατα τον έλεγχο αυτό το κείμενο του εισερχόμενου μηνύματος διασπάται στις λέξεις από τις οποίες αποτελείται και διανέμεται στους κόμβους εργάτες του συστήματος. Οι κόμβοι εργάτες θα πρέπει να ελέγξουν για κάθε δωσμένη λέξη, αν ανήκει σε ένα σύνολο λέξεων οι οποίες συναντώνται συχνά σε ανεπιθύμητα μηνύματα. Για κάθε λέξη η οποία ανήκει σ αυτό το σύνολο αυξάνει την τιμή ενός μετρητή κατά μία μονάδα. Ολοκληρώνοντας τους ελέγχους, ο κάθε κόμβος-εργάτης στέλνει την τιμή του μετρητή στο πρόγραμμα που εκτελεί ο χρήστης. Η εφαρμογή αθροίζει τις τιμές των μετρητών και αν αυτές ξεπερνούν μια συγκεκριμένη τιμή τότε το μήνυμα χαρακτιρίζεται ώς ανεπιθύμητο.
2. Ο κώδικας Η υλοποίηση της κάθε εφαρμογής έχει αναπτυχθεί με τη χρήση εννέα packages. Για τις εφαρμογές θα αναφερθούμε σε κάποια από τα ποιο σημαντικά: gr.aueb.cs.androidgrid: Στο πακέτο αυτο γίνεται η ρύθμιση τoυ configuration με το οποίο θα λειτουργήσει το σύστημα. Ορίζονται οι διευθύνσεις για τον server,τον client,τους workers καθώς και οι παράμετροι λειτουργίας τους μέσα στο σύστημα. gr.aueb.cs.androidgrid.admin: Περιέχει την υλοποίηση των εργασιών του Admin του συστήματος. Παρέχει κυρίως πληροφορίες σχετικά με τη λειτουργία. gr.aueb.cs.androidgrid.server: Εδώ βρίσκεται η υλοποίηση των λειτουργιών του κόμβου o ο οποίος είναι server του συστήματος. Έχει μεθόδους για επικοινωνία με όλους τους κόμβους του συστήματος και καθορίζει την κίνηση των δεδομένων μέσα σ αυτό.ο Server αποτελεί το κομβικό σημείο που συνδέει τους διάφορους κόμβους και είναι υψίστης σημασίας η παρουσία του για τη λειτουργία του συστήματος. gr.aueb.cs.androidgrid.client: Εδώ υλοποιείται η λειτουργία του client μέσα στο δίκτυο. Καθορίζεται το διαθέσιμο σύνολο εργασιών αλλά και η επικοινωνία με το server. gr.aueb.cs.androidgrid.worker: Όμοια με τον client εδώ υπάρχουν κλάσεις που καθορίζουν τις εργασίες που μπορεί να εκτελέσει ο worker και παρέχουν πληροφορίες σχετικά με αυτές. gr.aueb.cs.androidgrid.messages: Είναι το πακέτο στο οποίο υλοποιούνται όλα τα μηνύματα με τα οποία επικοινωνούν οι κόμβοι μεταξύ τους. gr.aueb.cs.androidgrid.dummy: Στο πακέτο αυτό γίνεται η υλοποίηση της καθε μίας από τις εφαρμογές. Καθορίζουμε τον τρόπο με τον οποίο θέλουμε να λειτουργήσουν και μπορούν να λειτουργήσουν o client, ο worker και ο server στα πλαίσια της εφαρμογής. Ρυθμίζουμε τον τρόπο με τον οποίο επεξεργάζεται o worker τα δεδομένα που του αποστέλονται. Καθορίζουμε τις ενέργειες της client εφαρμογής που εκτελεί ο χρήστης και τις παραμέτρους του server που ρυθμίζει την επικοινωνία ανάμεσα στους κόμβους. Στο Grid συστημά μας ακόμα θα υλοποιήσουμε το virtual file system του JCGrid και τη χρήση SSL_Sockets τα οποία στην παρούσα έκδοση δεν είναι λειτουργικά. Παραπάνω τεκμηρίωση θα γράψουμε στο androidgrid.blogspot.com και θα προσπαθήσουμε να γράψουμε javadoc. Θεωρώντας ότι η εργασία μπορεί να φανεί χρήσιμη στην κοινότητα developers του Android θα την ανεβάσουμε σαν open source project και θα προσπαθήσουμε να την ανανέωνουμε τακτικά με νέες εκδόσεις και λειτουργίες.
3. ScreenShots Α) Εφαρμογή πρόσθεσης τυχαίων αριθμών.
B) Εφαρμογή φίλτρου ανεπιθύμητων μηνυμάτων: