Τεχνολογία Λογισμικού για κινητές εφαρμογές

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Τεχνολογία Λογισμικού για κινητές εφαρμογές"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΔΙΟΙΚΗΣΗ» ΤΜΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Τεχνολογία Λογισμικού για κινητές εφαρμογές Διπλωματική Εργασία της Παπαδοπούλου Ιωάννας (ΑΕΜ: 354) Εξεταστική Επιτροπή Επιβλέπων: Σταμέλος Ιωάννης Μέλη: Αγγελής Ελευθέριος Κουσενίδης Δημήτριος ΘΕΣΣΑΛΟΝΙΚΗ ΣΕΠΤΕΜΒΡΙΟΣ i-

2

3 Ευχαριστίες Η παρούσα Πτυχιακή εργασία εκπονήθηκε στα πλαίσια του διατμηματικού προγράμματος μεταπτυχιακών σπουδών στην «Πληροφορική και Διοίκηση», υπό την επίβλεψη του καθηγητή Ιωάννη Σταμέλου. Στο σημείο αυτό θα ήθελα να τον ευχαριστήσω για την βοήθεια και την καθοδήγησή του αλλά και για την εμπιστοσύνη που έδειξε στο πρόσωπό μου. Θα ήθελα επίσης να ευχαριστήσω τον Στέφανο Σκαλιστή για τον χρόνο του αλλά και για την πολύτιμη βοήθειά του σε όλα τα προβλήματα τα οποία αντιμετώπισα, καθώς και για την άριστη συνεργασία την οποία είχαμε. Τέλος θα ήθελα να ευχαριστήσω όλους όσους ήταν δίπλα μου και με στήριξαν αυτό το διάστημα. Ιωάννα Παπαδοπούλου Σεπτέμβριος i-

4

5 Περιεχόμενα ΕΥΧΑΡΙΣΤΙΕΣ... I ΠΕΡΙΕΧΟΜΕΝΑ... III 1 ΕΙΣΑΓΩΓΗ ΔΟΜΗ ΕΡΓΑΣΙΑΣ SMARTPHONES Η ΑΡΧΗ ΤΩΝ «ΕΞΥΠΝΩΝ» ΚΙΝΗΤΩΝ ΤΗΛΕΦΩΝΩΝ (SMARTPHONES) DESKTOP VS. MOBILE APPLICATIONS ΣΤΑΔΙΑ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ Ορισμός και Ανάλυση Απαιτήσεων Σχεδιασμός και Αναλυτική Σχεδίαση Υλοποίηση - Κωδικοποίηση Έλεγχος Μονάδων, Ενοποίησης, Συστήματος Παράδοση Συντήρηση ΚΑΝΟΝΕΣ ΑΝΑΠΤΥΞΗΣ ANDROID Η ΔΗΜΙΟΥΡΓΙΑ ΠΩΣ ΛΕΙΤΟΥΡΓΕΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΑ ΒΑΣΙΚΑ ΣΥΣΤΑΤΙΚΑ Activity (Δραστηριότητα) Services (Υπηρεσίες) Content Providers (Πάροχος Περιεχομένου) Broadcast Receivers (Δέκτες Μεταδόσεων) iii-

6 3.5 Η ΔΟΜΗ ΕΝΟΣ ANDROID PROJECT COPE ΛΕΙΤΟΥΡΓΙΑ ΠΡΟΣΑΡΜΟΓΗ ΓΙΑ ANDROID PROJECTS ΜΕΘΟΔΟΛΟΓΙΑ ΕΡΓΑΛΕΙΑ ΑΝΑΛΥΣΗ ΜΕΘΟΔΟΛΟΓΙΑΣ ΑΠΟΤΕΛΕΣΜΑΤΑ ABOUT COMPONENT ο Στάδιο Εντοπισμός του πιθανού Component ο Στάδιο Εξαγωγή του Component ο Στάδιο Χρήση του Component MUSIC COMPONENT QUIZ COMPONENT Η ΕΦΑΡΜΟΓΗ FIND THE MOVIE ο Component: Quiz Component ο Component: About Component ο Component: Music Component ΣΥΜΠΕΡΑΣΜΑΤΑ ΒΙΒΛΙΟΓΡΑΦΙΑ ΠΑΡΑΡΤΗΜΑ I iv-

7 1 Εισαγωγή Είναι γεγονός πως οι κινητές συσκευές συνεχώς κερδίζουν έδαφος εις βάρος των σταθερών υπολογιστών. Σύμφωνα με πρόσφατες έρευνες 1 για τη χρήση έξυπνων - κινητών τηλεφώνων, μέχρι το 2014 η χρήση mobile internet θα ξεπεράσει τη χρήση desktop internet, ενώ μέχρι και σήμερα περισσότερες από το 50% των αναζητήσεων στο Διαδίκτυο γίνονται μέσω κινητών συσκευών. Συνεπώς είναι κοινά αποδεκτό ότι αποτελούν πλέον μέρος τόσο της καθημερινής ζωής όσο και της επαγγελματικής ζωής του καθενός. Από την μεριά της Πληροφορικής, είναι επιτακτική η ανάγκη να κάνει την εμπειρία της χρήσης μιας κινητής συσκευής όσο το δυνατό πλουσιότερη, με τα όποια κόστη αυτό συνεπάγεται. Η φιλοσοφία της ανάπτυξης εφαρμογών για κινητές συσκευές διαφέρει κατά πολύ από αυτή της ανάπτυξης εφαρμογών για κανονικούς υπολογιστές. Παράλληλα η Τεχνολογία Λογισμικού έχει προχωρήσει αρκετά τα τελευταία χρόνια, εισάγοντας έννοιες όπως η Επαναχρησιμοποίηση Κώδικα, προκειμένου να διευκολυνθεί η διαδικασία ανάπτυξης ενός συστήματος. Τα οφέλη της Επαναχρησιμοποίησης είναι πολλά και στόχος της παρούσας εργασίας είναι να επεκτείνει την Επαναχρησιμοποίηση Κώδικα και σε κώδικα ο οποίος να αφορά κινητές εφαρμογές. Το γεγονός όμως ότι η Επαναχρησιμοποίηση κώδικα μέχρι σήμερα αφορούσε μόνο κανονικές εφαρμογές αποτέλεσε μια πρόκληση και συγχρόνως το έναυσμα για τη δημιουργία της συγκεκριμένης εργασίας. 1.1 Δομή Εργασίας Η παρούσα εργασία αποτελείται από 6 κεφάλαια, συμπεριλαμβανομένου του παρόντος κεφαλαίου το οποίο αποτελεί μια γενική εισαγωγή στο θέμα της εργασίας. Στο δεύτερο Κεφάλαιο, παρουσιάζονται κάποια στοιχεία τα οποία αφορούν την ανάπτυξη εφαρμογών για κινητές συσκευές, εστιάζοντας στις διαφορές οι οποίες υφίστανται ανάμεσα σε εφαρμογές κινητών συσκευών και σε κανονικές εφαρμογές οι

8 οποίες απευθύνονται σε σταθερούς υπολογιστές. Παράλληλα παρουσιάζονται οι διαφοροποιήσεις οι οποίες γίνονται στα επτά στάδια της διαδικασίας Ανάπτυξης Λογισμικού, όταν αυτό αναφέρεται σε κινητές συσκευές. Στο τέλος του Κεφαλαίου επισημαίνονται ορισμένοι κανόνες που θα πρέπει να ακολουθούνται για την ανάπτυξη εύχρηστων και αποδοτικών εφαρμογών. Στο τρίτο Κεφάλαιο, γίνεται μια εισαγωγή στο σύστημα του Android, με ορισμένες λεπτομέρειες που αφορούν τη χρήση και τη λειτουργία του. Στο τέταρτο Κεφάλαιο παρουσιάζεται το εργαλείο COPE, το οποίο χρησιμοποιήθηκε για την εξαγωγή επαναχρησιμοποιήσιμων Συστατικών Λογισμικού (Reusable Components) καθώς και οι τροποποιήσεις οι οποίες έγιναν προκειμένου να είναι εφικτή η εξαγωγή Συστατικών Λογισμικού που αφορούν έργα Android (Android Components). Στο πέμπτο Κεφάλαιο, αναλύεται η μεθοδολογία η οποία ακολουθήθηκε καθώς και τα εργαλεία τα οποία χρησιμοποιήθηκαν, πέραν του COPE. Στο έκτο Κεφάλαιο, παρουσιάζονται τα αποτελέσματα τα οποία είχε η συγκεκριμένη μεθοδολογία, δηλαδή ορισμένα από τα Συστατικά Λογισμικού τα οποία βρέθηκαν καθώς και η εφαρμογή Find the Movie η οποία δημιουργήθηκε αποκλειστικά από Επαναχρησιμοποιήσιμα Συστατικά Λογισμικού. Η παρούσα εργασία κλείνει με το έβδομο Κεφάλαιο όπου παρουσιάζονται τα συμπεράσματα τα οποία προέκυψαν αλλά και ορισμένες προτάσεις για μελλοντική εργασία. -2-

9 2 Smartphones Λίγα χρόνια πριν τα κινητά τηλέφωνα χρησιμοποιούνταν μόνο από ένα μικρό κομμάτι του πληθυσμού και κυρίως για επαγγελματικούς λόγους. Σήμερα, έχουν γίνει αναπόσπαστο μέρος της ζωής όλων. Η αλλαγή αυτή ξεκίνησε περίπου στα τέλη της δεκαετίας του 90, οπότε και έγιναν ευρέως διαδεδομένα καθώς για πολλούς προσέφεραν την έννοια της ασφάλειας. Για πρώτη φορά μπορούσε κάποιος να έχει τη δυνατότητα να επικοινωνήσει με οποιονδήποτε άλλο όπου και να βρισκόταν. Από το σημείο εκείνο και έπειτα ο κλάδος της κινητής τηλεφωνίας και άρχισε να αποκτά μεγάλο κομμάτι του μεριδίου της αγοράς, ενώ αναμένεται αυτή η πρόοδος να συνεχιστεί καθώς τα κινητά τηλέφωνα, αλλά και γενικότερα οι κινητές συσκευές (tablets, netbooks κτλ) προσφέρουν ολοένα και περισσότερες δυνατότητες στους χρήστες τους. 2.1 Η αρχή των «έξυπνων» κινητών τηλεφώνων (smartphones) Το πρώτο κινητό τηλέφωνο, διατέθηκε στην αγορά το 1983 και επρόκειτο για ένα μοντέλο της Motorola, με το όνομα DynaTAC 8000X (Εικόνα 2.1). Το συγκεκριμένο τηλέφωνο είχε βάρος περίπου 1 κιλό και διαστάσεις ενός τούβλου για αυτό και συχνά στη βιβλιογραφία αποκαλείται έτσι. Όσο αναφορά το κόστος του, υπολογίζεται περίπου στις δολάρια, συν τα πάγια των ISVs τα οποία ήταν ιδιαίτερα ακριβά εκείνη την εποχή. Ωστόσο η ιδέα των Smartphones, γεννήθηκε περίπου δέκα χρόνια νωρίτερα, από τον ελληνικής καταγωγής Θεόδωρο Παρασκευάκο, ο οποίος εισήγαγε στον κλάδο της τηλεφωνίας έννοιες όπως intelligence, data processing και visual display screens. Σχεδόν είκοσι χρόνια αργότερα, το 1992, δημιουργήθηκε το πρώτο Smartphone από την εταιρεία IBM με το κωδικό όνομα Angler, ενώ δύο χρόνια αργότερα δόθηκε στην αγορά η επίσημη έκδοσή του με το όνομα Simon (Εικόνα 2.1). Επρόκειτο ουσιαστικά για ένα κινητό τηλέφωνο που εκτός από το να πραγματοποιεί και να δέχεται κλήσεις, είχε και τα χαρακτηριστικά ενός PDA (Personal Digital Assistant), οθόνη αφής και -3-

10 αρκετές εφαρμογές όπως ημερολόγιο, επαφές, παιχνίδια, σημειωματάριο, ηλεκτρονικό ταχυδρομείο κτλ. Μερικά χρόνια αργότερα, το 1996, η Nokia δημιούργησε το Nokia9000, το οποίο είχε ενσωματωμένο πληκτρολόγιο QWERTY, υποστήριζε s και web-browsing με το τότε λειτουργικό GEOS v3.0. Το συγκεκριμένο μοντέλο εμφανίστηκε και σε δύο ταινίες, The Saint το 1997 και Bad Company το 2002, κάνοντας έτσι πιο αισθητή την παρουσία των κινητών τηλεφώνων στην καθημερινή ζωή. Στη συνέχεια πολλές ακόμα εταιρείες ακολούθησαν με τη δημιουργία των δικών τους Smartphones. Εικόνα 2.1: Το DynaTAC 8000X της Motorola και το Simon της IBM Πώς όμως ορίζεται ένα Smartphone και πώς διαφοροποιείται από ένα απλό κινητό τηλέφωνο; Πρόκειται για ένα κινητό τηλέφωνο το οποίο παρέχει επιπλέον μια πλειάδα λειτουργιών (applications-εφαρμογών) και δυνατοτήτων (digital audio player, digital camera, video camera, GPS, ), έχει την υπολογιστική δύναμη και τις δυνατότητες δικτύωσης ενός κλασικού υπολογιστή, και παρέχει δυνατότητα για συνδεσιμότητα (π.χ. Desktop sync). Το 2000 παρουσιάστηκε από την Ericsson το R380 το οποίο είναι το πρώτο Smartphone που έτρεχε σε ανοιχτό λειτουργικό σύστημα, το Symbian OS. Στη συνέχεια ακόμα μια μεγάλη εταιρεία, η Nokia εμπιστεύθηκε το Symbian OS. Από αυτό το σημείο και έπειτα, τα smartphones άρχισαν να αποκτούν πολλές επιπλέον λειτουργίες όπως GPS, Wi-Fi, κάμερα κτλ. Από το 2006 έως το 2011, το Symbian OS ήταν η νούμερο ένα πλατφόρμα για κινητά τηλέφωνα. Το 2011 όμως το λειτουργικό σύστημα Android της Google κέρδισε την πρώτη θέση 2, αφήνοντας το Symbian OS στη δεύτερη, με το μερίδιο αγοράς του να 2 Τα στοιχεία αυτά προέκυψαν έπειτα από έρευνες. Ολόκληρη η έρευνα στο -4-

11 έχει ανέβει στο 43% κατά το δεύτερο τετράμηνο του 2011 (βλ. Εικόνα 2.2). Σήμερα πλέον, πέρα από το Android και το Symbian OS, πολλές εταιρείες έχουν αναπτύξει δικά τους λειτουργικά συστήματα για κινητά τηλέφωνα με πιο δημοφιλή το Windows Mobile της Microsoft και το ios της Apple. Εικόνα 2.2: Τα μερίδια αγοράς των εταιρειών κατά το δεύτερο τετράμηνο του 2011 (Gartner) 2.2 Desktop vs. Mobile Applications Οι εφαρμογές που αναπτύσσονται για ένα σταθερό υπολογιστή και για μια κινητή συσκευή μπορεί εμφανισιακά να είναι ίδιες, ίσως με ελάχιστες διαφορές, ωστόσο εσωτερικά διαφέρουν σε μεγάλο βαθμό. Οι διαφορές αυτές έγκεινται στις διαφορές που έχουν οι δύο κατηγορίες ως προς τις χρήσεις τους, τα όρια τους και την κατασκευή τους και θα αναλυθούν στο υπόλοιπο της παραγράφου. Εστιάζοντας στις διαφορές των δύο κατηγοριών, η πιο προφανής ίσως διαφορά είναι το μέγεθος. Εκ των πραγμάτων οι κινητές συσκευές είναι μικρότερες. Η πιο κάτω παρομοίωση δίνει ίσως την πιο ξεκάθαρη εικόνα της πραγματικότητας των δύο περιπτώσεων. Οι σταθεροί υπολογιστές παρομοιάζονται με μια μεγάλη μεζονέτα στην εξοχή, ενώ οι κινητές συσκευές με ένα μοντέρνο studio-διαμέρισμα σε μια πόλη [1]. Σαφέστατα και τα δύο έχουν τα πλεονεκτήματα και τα μειονεκτήματά τους, ικανοποιούν όμως διαφορετικές ανάγκες, υπακούν σε διαφορετικούς περιορισμούς και έχουν διαφορές ως προς τη χρήση τους. -5-

12 Ως προς το μέγεθος η παρομοίωση είναι ξεκάθαρη. Το ίδιο όμως ισχύει και για την αρχιτεκτονική των δύο κατηγοριών. Οι κινητές συσκευές έχουν πιο μικρούς αποθηκευτικούς χώρους και συνεπώς οτιδήποτε δε χρειάζεται άμεσα είναι προτιμότερο να απελευθερωθεί από τη μνήμη, όπως ακριβώς συμβαίνει και με τα σπίτια. Στην περίπτωση της μεζονέτας υπάρχει η αποθήκη και το υπόγειο προκειμένου να αποθηκεύονται πράγματα τα οποία χρησιμοποιούνται σπάνια, ενώ στο διαμέρισμα είναι προτιμότερο να δανειστεί κάποιος κάτι το οποίο θα χρησιμοποιήσει μερικές φορές, παρά να το κρατά αποθηκευμένο στο διαμέρισμά του. Αυτό ακριβώς συμβαίνει και με τις κινητές συσκευές. Οτιδήποτε δε χρησιμοποιείται συχνά είναι προτιμότερο να «σπρωχτεί» (pushed) στον server, ώστε να υπάρχει πρόσβαση σε αυτό όταν χρειαστεί και να μη σπαταλάει χώρο εφόσον δεν είναι απαραίτητο. Όσο αναφορά τη μνήμη RAM, στους υπολογιστές χρησιμοποιείται αποκλειστικά για την εκτέλεση των προγραμμάτων, ενώ υπάρχει επιπλέον μνήμη για μακροπρόθεσμη αποθήκευση (long-term storage). Αυτό δε συμβαίνει στις κινητές συσκευές. Η μνήμη RAM χρησιμοποιείται τόσο για την εκτέλεση προγραμμάτων όσο και για την μεσοπρόθεσμη και μακροπρόθεσμη αποθήκευση (mid και long-term storage). Ωστόσο τα τελευταία χρόνια για μακροπρόθεσμη αποθήκευση χρησιμοποιούνται ως επί το πλείστον flash storage συσκευές, κυρίως αφαιρούμενες κάρτες μνήμης (removable memory cards) που φτάνουν σε μέγεθος συνήθως τα 32GB. Λόγω λοιπόν του περιορισμένου μεγέθους μνήμης που υπάρχει στις κινητές συσκευές η αποδοτική Διαχείριση Μνήμης (Memory management) είναι ιδιαίτερα σημαντική, σε αντίθεση με τους υπολογιστές όπου ορισμένα λάθη γίνονται αποδεκτά και αρκετές φορές ίσως και μη αντιληπτά. Επιπλέον διαφορές προκύπτουν ως προς τη χρήση των δύο κατηγοριών. Οι κινητές συσκευές χρησιμοποιούνται κυρίως για μικρά χρονικά διαστήματα, για συγκεκριμένες εργασίες και κατά τη διάρκεια της χρήσης τους συχνά προκύπτουν διακοπές λόγω αλληλεπιδράσεων του χρήστη με το περιβάλλον του. Έτσι είναι ιδιαίτερα σημαντικό ο χρόνος έναρξης των συσκευών αυτών (startup time) να είναι μικρός, καθώς μεγάλες καθυστερήσεις προκαλούν τη δυσαρέσκεια του χρήστη, ο οποίος είναι πιθανό να έχει στη διάθεσή του μικρό χρονικό διάστημα προκειμένου να διεκπεραιώσει μια συγκεκριμένη εργασία. Είναι επίσης γεγονός ότι οι κινητές συσκευές και ειδικά τα κινητά τηλέφωνα πολλές φορές παραμένουν συνέχεια ανοικτά (always on), χωρίς να -6-

13 γίνονται επανεκκινήσεις (reboot) με αποτέλεσμα και πάλι η απόδοσή τους να εξαρτάται από την αποδοτική διαχείριση μνήμης. Οι σταθεροί υπολογιστές αντίθετα, μπορούν να χρησιμοποιούνται για ώρες, για ένα μεγάλο εύρος εργασιών ενώ μπορούν παράλληλα να κάνουν πολλά πράγματα ταυτόχρονα. Καθυστερήσεις στον χρόνο έναρξης δεν έχουν ιδιαίτερη σημασία Η διαφορά αυτή ανάμεσα σε σταθερούς υπολογιστές και κινητές συσκευές, έγκειται κυρίως στο γεγονός ότι οι κινητές συσκευές για να λειτουργήσουν χρησιμοποιούν μπαταρία η οποία όσο και να βελτιωθεί ποιοτικά πάντα θα υπάρχει η ανάγκη για φόρτιση. Σήμερα, η φόρτιση της συσκευής μία φορά τη μέρα θεωρείται ένα αποδεκτό όριο. Αυτός είναι και ένας από τους κύριους λόγους για τους οποίους οι εφαρμογές για κινητές συσκευές είναι απαραίτητο να εστιάζουν στην απόδοση και να λειτουργούν όσο πιο οικονομικά γίνεται, τόσο από άποψη καθυστερήσεων όσο και από άποψη διαχείρισης μνήμης. Οι διαφορές που αναφέρθηκαν στη συγκεκριμένη παράγραφο φαίνονται συνοπτικά στο Σχήμα 2.1 Σχήμα 2.1: Διαφορές Desktop Mobile εφαρμογών 2.3 Στάδια Ανάπτυξης Λογισμικού Μπορεί να θεωρηθεί πλέον ως δεδομένο το γεγονός ότι σταθεροί υπολογιστές και κινητές συσκευές έχουν μεγάλες διαφορές. Επομένως λογικό είναι να ακολουθείται και διαφορετική διαδικασία ανάπτυξης του λογισμικού που αφορά την κάθε κατηγορία. -7-

14 Ωστόσο τα στάδια ανάπτυξης του λογισμικού, είτε αυτό θα χρησιμοποιηθεί σε κινητές συσκευές είτε σε απλούς υπολογιστές, παραμένουν τα ίδια. Υπάρχουν όμως ορισμένες βασικές διαφορές στις οποίες θα πρέπει η ομάδα ανάπτυξης λογισμικού κινητών εφαρμογών να δώσει έμφαση. Στο τέλος του κεφαλαίου, στο Σχήμα 2.2, φαίνονται συνοπτικά τα στάδια ανάπτυξης με τις αλλαγές που είναι απαραίτητες για λογισμικό που αφορά κινητές εφαρμογές και θα αναλυθεί στη συνέχεια της παραγράφου Ορισμός και Ανάλυση Απαιτήσεων Αρχικά στο πρώτο στάδιο, το στάδιο του Ορισμού και της Ανάλυσης των απαιτήσεων, ο developer ή η ομάδα ανάπτυξης του λογισμικού, αν πρόκειται για μεγάλη εφαρμογή, θα πρέπει να είναι σε θέση να γνωρίζουν ακριβώς τις λειτουργίες τις οποίες θα εκτελεί η εφαρμογή. Στο συγκεκριμένο στάδιο, αντιμετωπίζονται και τα περισσότερα προβλήματα καθώς πρέπει να θεωρείται δεδομένο το γεγονός ότι θα προκύπτουν συνεχώς αλλαγές. Οι αλλαγές αυτές μπορεί να οφείλονται στο μεγάλο εύρος συσκευών που θα πρέπει να ικανοποιεί η εφαρμογή, στις νέες λειτουργίες που πιθανό να προστεθούν στο μέλλον, σε ένα νέο λειτουργικό σύστημα που δημιουργήθηκε κτλ. Με δεδομένες λοιπόν τις συνεχείς αλλαγές θα πρέπει να αποφασιστεί και το ανάλογο μοντέλο ανάπτυξης του λογισμικού. Σίγουρα μοντέλα που δεν επιτρέπουν τις συχνές αλλαγές (πχ. Καταρράκτης) είναι ανεπαρκή για ανάπτυξη mobile εφαρμογών, ενώ αντίθετα, μοντέλα ανάπτυξης σε φάσεις ή επαναληπτικά μοντέλα θεωρούνται ιδανικά για ανάπτυξή τους. Επιπλέον των απαιτήσεων που αφορούν το τι θα κάνει η εφαρμογή προκύπτουν και ορισμένες απαιτήσεις οι οποίες είναι κοινές για όλες τις mobile εφαρμογές. Πολλοί θεωρούν ότι οι κινητές συσκευές, ως προς τη λειτουργία τους μοιάζουν περισσότερο με servers παρά με σταθερούς υπολογιστές. Στηρίζουν μάλιστα τη συγκεκριμένη άποψη στο γεγονός ότι οι κινητές συσκευές και ιδιαίτερα τα κινητά τηλέφωνα, όπως ακριβώς και οι servers, συχνά παραμένουν ανοικτά επί εικοσιτετραώρου βάσεως. Επίσης πολλές φορές συμβαίνει ορισμένες εφαρμογές να εκτελούνται παράλληλα με άλλες εφαρμογές που έχουν μεγαλύτερη προτεραιότητα. Για παράδειγμα σε ένα κινητό τηλέφωνο, ένα παιχνίδι μπορεί να τρέχει, αλλά όταν προκύψει μια νέα κλήση το παιχνίδι χάνει τον έλεγχο της συσκευής. Σε αυτό το σημείο ο developer του παιχνιδιού, θα πρέπει να έχει φροντίσει ώστε η εφαρμογή του να μην χάσει όποια δεδομένα χρειάζεται. Γενικότερα όμως, δεδομένου ότι θα προκύπτουν ορισμένα τέτοια μη αναμενόμενα γεγονότα τα οποία θα προκαλούν τη μη ομαλή έξοδο των εφαρμογών ο -8-

15 developer οφείλει να έχει μεριμνήσει για τους τρόπους αντιμετώπισης τέτοιων καταστάσεων. Παράλληλα είναι ιδιαίτερα σημαντικό η εφαρμογή να ανταποκρίνεται συνεχώς στις ενέργειες του χρήστη. Επειδή ο χρήστης συνήθως δεν έχει πολύ χρόνο στη διάθεσή του, είναι σημαντικό πέρα από τη γρήγορη εκκίνηση της εφαρμογής, να μπορεί μέσα σε μικρό χρονικό διάστημα να ολοκληρώσει την εργασία του. Παρόλα αυτά, σίγουρα θα υπάρξουν στιγμές που η εφαρμογή θα πρέπει να εκτελέσει μια χρονοβόρα ενέργεια. Ακόμα όμως και σε αυτή τη περίπτωση ο χρήστης θα πρέπει να ενημερωθεί είτε με κάποιο μήνυμα είτε με μια κλεψύδρα, ώστε να μπορεί να ενεργήσει κατάλληλα Σχεδιασμός και Αναλυτική Σχεδίαση Στο δεύτερο στάδιο της διαδικασίας Ανάπτυξης Λογισμικού, το στάδιο της Σχεδίασης, είναι σημαντικό να ακολουθείται μια φιλοσοφία οδηγούμενη από το στόχο για βέλτιστη απόδοσης (Performance - oriented), γεγονός το οποίο πρακτικά σημαίνει πως σε όλη τη διαδικασία της σχεδίασης αυτό που πρέπει να οδηγεί τις αποφάσεις της ομάδας ανάπτυξης είναι η απόδοση. Με τον όρο απόδοση εννοείται η γενικότερη απόδοση της εφαρμογής και κυρίως η ταχύτητα και η άμεση απόκρισή της στις ενέργειες του χρήστη. Η επιλογή των κατάλληλων αλγορίθμων και των κατάλληλων διαδικασιών οι οποίες θα οδηγήσουν σε μια εφαρμογή υψηλής απόδοσης πρέπει να είναι ο στόχος του σταδίου της Σχεδίασης. Παράλληλα όμως θα πρέπει να υπάρχει και μια ευελιξία ως προς τη σχεδίαση ικανή να αντιμετωπίσει τις όποιες αλλαγές προκύπτουν. Σημαντικό είναι επίσης, να επιλεγεί η κατάλληλη μεθοδολογία για την ανάπτυξη του λογισμικού προκειμένου να αποφευχθούν μελλοντικά προβλήματα. Μια «Component-oriented μεθοδολογία» συνίσταται ιδιαίτερα. Με τον όρο Componentoriented Methodology, αναφερόμαστε στην μεθοδολογία ανάπτυξης λογισμικού η οποίο προτείνει τον διαχωρισμό του προβλήματος σε μικρότερα διακριτά κομμάτια (components). Με τον τρόπο αυτό, γίνεται ευκολότερη ολόκληρη η διαδικασία ανάπτυξης λογισμικού αλλά και η επαναχρησιμοποίηση κώδικα. Συνεπώς τα οφέλη που προκύπτουν είναι πολλαπλά, καθώς χρησιμοποιώντας κομμάτια κώδικα τα οποία έχουν ήδη ελεγχθεί και ικανοποιούν κάποια κριτήρια ποιότητας κατάλληλα ορισμένα, εξοικονομείται χρόνος και χρήμα. -9-

16 Στην περίπτωση των mobile εφαρμογών συνίσταται η χρήση Μηχανών Καταστάσεων (State Machines). Κάθε εφαρμογή, όπως θα αναλυθεί και στη συνέχεια, ανά πάσα στιγμή βρίσκεται σε μία ορισμένη κατάσταση, για παράδειγμα running, paused, stopped κτλ. Η χρήση των State Machines βοηθάει ώστε να γίνουν ξεκάθαρες τόσο οι μεταβάσεις της εφαρμογής από τη μία κατάσταση στην άλλη όσο και οι αλλαγές που προκύπτουν με την μεταβολή των καταστάσεων. Με τον τρόπο αυτό, προκύπτει μια οργανωμένη συμπεριφορά όπου ο developer έχει τον πλήρη έλεγχο της εφαρμογής ανά πάσα στιγμή και αποφεύγει ανεπιθύμητες αντιδράσεις της εφαρμογής Υλοποίηση - Κωδικοποίηση Στο στάδιο της Υλοποίησης, ο developer οφείλει να προγραμματίζει αμυντικά ( code defensively ) προκειμένου να αποφύγει μελλοντικά προβλήματα. Αμυντικά λέγοντας, εννοείται πως ο προγραμματιστής θα πρέπει να λαμβάνει υπόψη του το γεγονός ότι είναι αναμενόμενο να προκύπτουν σφάλματα και αποτυχίες και για το λόγο αυτό οφείλει να λαμβάνει τα «μέτρα του» κατά τη διάρκεια της κωδικοποίησης αλλά και κατά τη διάρκεια του ελέγχου. Σημαντικό είναι να χρησιμοποιούνται ορόσημα (milestones), με βάση τα οποία θα γίνεται έλεγχος προκειμένου να διαπιστωθεί κατά πόσο επιτυγχάνονται οι στόχοι απόδοσης. Παράλληλα σημαντικό είναι να ορίζονται ορισμένα πρότυπα κωδικοποίησης (coding standards) και να διενεργούνται αναθεωρήσεις κώδικα (peer reviews) με βάση αυτά τα πρότυπα, έτσι ώστε να διασφαλίζεται η ποιότητα του κώδικα. Έχει μεγάλη σημασία επίσης, ο developer να μπορεί να βοηθάει τον χρήστη να κάνει αυτό που θέλει. Για να το πετύχει αυτό θα πρέπει να εκμεταλλεύεται τις όποιες βελτιστοποιήσεις υπάρχουν όπως για παράδειγμα στην εισαγωγή δεδομένων. Το λεξικό Τ9 είναι ιδιαίτερα βοηθητικό κυρίως για χρήστες μικρών συσκευών, όπου η οθόνη και το πληκτρολόγιο είναι σχετικά μικρά δυσκολεύοντας τον χρήστη να εισάγει δεδομένα. Ένα άλλο παράδειγμα είναι να μπορεί να δίνεται η επιλογή στον χρήστη να επιλέγει αυτό που θέλει μέσα από μία λίστα. Έτσι ο χρήστης διευκολύνεται να κάνει αυτό που θέλει με αποτέλεσμα να αυξάνεται και η «αντιλαμβανόμενη απόδοση» (perceived-performance) της εφαρμογής. Λόγω της χαμηλότερης υπολογιστικής ισχύος και της μικρότερης μνήμης που διαθέτουν οι κινητές συσκευές σε σχέση με τους κανονικούς υπολογιστές, ο χώρος και -10-

17 ο χρόνος που μπορεί να διατεθεί για κάθε εφαρμογή είναι περιορισμένος. Είναι συνεπώς σημαντικό να ακολουθούνται τεχνικές που βοηθούν στη μείωση του χώρου ή του χρόνου που χρειάζεται μια εφαρμογή για να εκτελέσει μια ενέργεια. Μια ιδιαίτερα βοηθητική τεχνική είναι η χρήση του pre-emptive processing. Η τεχνική αυτή στηρίζεται στην ικανότητα του developer να μαντέψει τις επόμενες κινήσεις του χρήστη έτσι ώστε να μπορέσει να αρχίσει την εκτέλεση μιας χρονοβόρα ενέργεια στο παρασκήνιο -ίσως σε κάποιο background thread- πριν ακόμα τη ζητήσει ο χρήστης. Με αυτό τον τρόπο ο βελτιώνεται η απόδοση της εφαρμογής και ο χρήστης δεν χρειάζεται να περιμένει για μεγάλο χρονικό διάστημα. Λόγω όμως του μεγάλου κόστους που συνεπάγεται η χρήση pre-emptive processing είναι καλό να χρησιμοποιείται μόνο σε περιπτώσεις που είναι σχεδόν σίγουρη η επόμενη κίνηση του χρήστη. Ένα καλό παράδειγμα είναι μια εφαρμογή κατά την οποία ο χρήστης βλέπει τις φωτογραφίες που έχει αποθηκευμένες στο κινητό του. Είναι σχεδόν βέβαιο πως αφότου αρχίσει να βλέπει τις φωτογραφίες, θα προχωράει κάθε φορά στην επόμενη. Σε αυτή τη περίπτωση αξίζει να γίνει χρήση pre-emptive τεχνικών καθώς το όφελος θα είναι μεγάλο Έλεγχος Μονάδων, Ενοποίησης, Συστήματος Ο έλεγχος είναι από τα πιο σημαντικά στάδια ανάπτυξης όταν αναφερόμαστε σε mobile εφαρμογές. Είναι υψίστης σημασίας ο έλεγχος να γίνεται με δεδομένα ρεαλιστικού μεγέθους. Οι προσομοιώσεις σε Emulators είναι ικανοποιητικοί μόνο για αρχικά στάδια ελέγχου και κυρίως για μικρές εφαρμογές. Είναι απαραίτητο η εφαρμογή να τρέξει σε διαφορετικά είδη συσκευών και σε διαφορετικά μεγέθη. Ειδικά στην περίπτωση των Android συσκευών, λόγω του πλήθους μεγεθών που μπορεί να κυκλοφορούν ο κατάλληλος έλεγχος είναι απαραίτητος. Το κομμάτι του ελέγχου ωστόσο, πρέπει να υπάρχει ενσωματωμένο σε κάθε στάδιο και να μη γίνεται μόνο αφότου τελειώσει το στάδιο της κωδικοποίησης. Η διαδικασία Test-first-design από τις Ευέλικτες Μεθόδους (Agile Methods), είναι μια καλή πρακτική και συνιστάται ιδιαίτερα στην περίπτωση των mobile εφαρμογών. Κατά τη διαδικασία αυτή πρώτα συγγράφονται οι περιπτώσεις ελέγχου (test cases) και στη συνέχεια γίνεται η κωδικοποίηση. Για τις περιπτώσεις ελέγχου θα πρέπει να δημιουργούνται αυτοματοποιημένα τεστ μονάδας (unit tests) και τεστ αποδοχής (acceptance tests) τα οποία θα εφαρμόζονται κάθε φορά που προστίθεται νέος κώδικας στην εφαρμογή. -11-

18 Οι μετρήσεις είναι επίσης ένα σημαντικό κομμάτι του ελέγχου. Θα πρέπει να χρησιμοποιούνται αυτοματοποιημένες μετρικές ελέγχου (automated testing metrics), οι οποίες κάνουν συγκρίσεις με προηγούμενα builds προκειμένου να διαπιστωθεί εάν οι αλλαγές που έγιναν είχαν επιπτώσεις στην απόδοση της εφαρμογής. Επίσης, καλό είναι να ακολουθούνται τεχνικές όπως η Code instrumentation, κατά την οποία προστίθεται κώδικας μέσα στην εφαρμογή ο οποίος μετράει χαρακτηριστικά επίδοσης και βοηθά να γίνει καλύτερα αντιληπτή η όλη απόδοση της εφαρμογής Παράδοση Όσο αναφορά το στάδιο της Παράδοσης, πρέπει να λαμβάνεται υπόψη ο τρόπος εγκατάστασης της εφαρμογής. Οι περισσότερες εφαρμογές είναι διαθέσιμες στα online καταστήματα των ανάλογων λειτουργικών (Play store για τα Android, AppStore για τα προϊόντα της Apple, κτλ) ωστόσο υπάρχουν και περιπτώσεις κατά τις οποίες οι εφαρμογές διανέμονται από μια εταιρεία στους υπαλλήλους τις για επαγγελματικούς λόγους. Το εάν θα μπορεί ο χρήστης να κατεβάζει την εφαρμογή δωρεάν ή αν θα πρέπει να πληρώσει, αν θα μπορεί να την κατεβάσει από την ιστοσελίδα μιας επιχείρησης ή όχι κτλ είναι όλα αποφάσεις οι οποίες αφορούν το στάδιο της Παράδοσης της εφαρμογής. Επίσης θα πρέπει να λαμβάνονται υπόψη οι άδειες χρήσης οι οποίες απαιτούνται καθώς και το αν η εφαρμογή θα είναι ανοιχτού λογισμικού ή όχι Συντήρηση Μια εφαρμογή είναι σχεδόν σίγουρο ότι θα χρειαστεί βελτιώσεις. Έτσι πολλές φορές πρέπει να αναπτυχθεί μια νέα έκδοση προκειμένου να λυθούν όσα προβλήματα υπήρχαν στην προηγούμενη. Παράλληλα δεδομένου του γεγονότος ότι συνεχώς βγαίνουν νέα μοντέλα συσκευών στην αγορά τα οποία τρέχουν νέες εκδόσεις λειτουργικών συστημάτων είναι σημαντικό η εφαρμογή να είναι συμβατή τόσο με τις νέες αλλά και με τις παλαιότερες εκδόσεις. Θα πρέπει ακόμα, να υπάρχει μέριμνα για τον τρόπο με τον οποίο θα λαμβάνονται οι αναβαθμισμένες εκδόσεις από τους χρήστες. Τις περισσότερες φορές η σύνδεση με το διαδίκτυο είναι απαραίτητη προκειμένου να κατεβάσει ο χρήστης επιπλέον δεδομένα για την αναβάθμιση. Έτσι θα πρέπει να του δίνεται η ευκαιρία να αποφασιστεί για το αν η σύνδεση θα γίνεται μέσω Wi-fi ή μέσω mobile network και αν θα υπάρξει κάποια χρέωση. -12-

19 Σχήμα 2.2: Στάδια ανάπτυξης λογισμικού για mobile εφαρμογές 2.4 Κανόνες Ανάπτυξης Στις εφαρμογές που αναπτύσσονται για κινητές συσκευές το πιο σημαντικό σημείο στο οποίο θα πρέπει να εστιάζει αυτός που δημιουργεί μια τέτοια εφαρμογή είναι η απόδοση. Θα πρέπει ο developer να έχει στο μυαλό του πως η εφαρμογή την οποία πρόκειται να αναπτύξει θα αποτελεί μια «εμπειρία» για τον χρήστη και ως εκ τούτου οφείλει να την κάνει όσο το δυνατό καλύτερη μπορεί. Υπάρχουν ορισμένοι κανόνες οι οποίοι θα πρέπει να ακολουθούνται κατά τη διάρκεια της ανάπτυξης λογισμικού προκειμένου η εφαρμογή να έχει ένα αποδεκτό επίπεδο ποιότητας και συνεπώς να προσφέρει μια πλούσια εμπειρία στον χρήστη. Ωστόσο, η ποιότητα σε μια εφαρμογή δεν μπορεί να προστεθεί στο τέλος. Πρέπει από την αρχή της δημιουργίας της τα θέματα ποιότητας να λαμβάνονται υπόψη προκειμένου να δημιουργηθεί μια καλή - ποιοτική εφαρμογή. Ο πιο σημαντικός κανόνας είναι πως το Περιβάλλον Διασύνδεσης Χρήστη (User Interface - UI), θα πρέπει να παραμένει συνεχώς ενεργό και να ανταποκρίνεται στις εντολές του χρήστη (responsive). Σε αντίθετη περίπτωση ο χρήστης θεωρεί πως δεν έχει τον έλεγχο της συσκευής του και αυτό προκαλεί τη δυσαρέσκειά του. Για αυτό το -13-

20 λόγο τα λάθη που προκύπτουν και έχουν σχέση με την απόκριση της εφαρμογής στις ενέργειες του χρήστη θα πρέπει να διορθώνονται τη στιγμή που προκύπτουν και όχι να αναβάλλονται για το μέλλον, καθώς είναι σχεδόν σίγουρο ότι θα συνεχίσουν να εμφανίζονται και μάλιστα πολλαπλασιασμένα. Σίγουρα θα υπάρχουν στιγμές όπου η εφαρμογή θα πρέπει να φορτώσει κάποια δεδομένα ή να εκτελέσει μια ενέργεια η οποία θα είναι χρονοβόρα. Εφόσον η συγκεκριμένη ενέργεια δεν είναι δυνατό να βελτιωθεί με κάποιον αλγόριθμο βελτιστοποίησης και θα πρέπει αναγκαστικά να καθυστερήσει, ο χρήστης θα πρέπει να ενημερωθεί. Στις πλείστες περιπτώσεις η εμφάνιση μιας κλεψύδρας ή μιας μπάρας που φορτώνει είναι αρκετή. Στις περιπτώσεις εκείνες, κατά τις οποίες ο χρήστης θα χρειαστεί να περιμένει αρκετά, θα πρέπει να υπάρχει η επιλογή για ακύρωση της διαδικασίας και ολοκλήρωσή της σε κάποια μελλοντική στιγμή. Αυτό που διαφοροποιεί ορισμένες εφαρμογές από τις υπόλοιπες, τις περισσότερες φορές, είναι η λεγόμενη «αντιληπτή απόδοση» ( perceived performance ), δηλαδή το πώς εκλαμβάνει ο χρήστης την απόδοση της εφαρμογής. Είναι σημαντικό ακόμα και σε περιπτώσεις που η εφαρμογή καθυστερεί, ο χρήστης να μην το αντιλαμβάνεται και να νιώθει πως έχει τον έλεγχο της συσκευής του. Αυτό επιτυγχάνεται με τους τρόπους που αναφέρθηκαν πιο πάνω. Σε αντίθετες περιπτώσεις, όπου για παράδειγμα η εφαρμογή φορτώνει κάποιες πληροφορίες από μια βάση δεδομένων και κατά τη διάρκεια της φόρτωσης ο χρήστης βλέπει μια μαύρη οθόνη, έστω και αν η φόρτωση των δεδομένων διαρκέσει μερικά μόλις δευτερόλεπτα, ο χρήστης από τη στιγμή που βλέπει μια μαύρη ή κενή οθόνη θεωρεί πως η εφαρμογή κόλλησε. Έτσι αρχίζει να πατάει διάφορα κουμπιά με αποτέλεσμα να πρέπει η εφαρμογή να διαχειριστεί και τις ενέργειες του χρήστη. Όλα αυτά μπορούν να αποφευχθούν με ένα μήνυμα στην οθόνη ή με μια μπάρα που φορτώνει (progress bar). Παράλληλα πρέπει να δίνεται ιδιαίτερη έμφαση στο σχεδιασμό της Γραφικής Διασύνδεσης Χρήστη (Graphical User Interface). Είναι σημαντικό να λαμβάνεται υπόψη το navigation model της κάθε συσκευής, ιδιαίτερα στην περίπτωση των Android συσκευών, όπου υπάρχουν πολλά και διαφορετικά είδη συσκευών. Κάθε μια από τις συσκευές έχει διαφορετικά χαρακτηριστικά. Ορισμένες έχουν πληκτρολόγιο, άλλες χρησιμοποιούν stylus, άλλες έχουν μικρή οθόνη, άλλες μεγάλη κοκ. Δεν γίνεται να σχεδιάζεται ένα γενικό Περιβάλλον Διασύνδεσης Χρήστη για όλες τις συσκευές καθώς αυτό συνεπάγεται ότι δε θα είναι λειτουργικό. -14-

21 Είναι σημαντικό ένας developer να έχει στο μυαλό του τον κανόνα των 20 δευτερολέπτων ( 20 sec rule ) [1]. Ο συγκεκριμένος κανόνας αναφέρει πως ιδανικά ο χρήστης θα πρέπει να είναι σε θέση να βγάλει τη συσκευή από την τσέπη του και μέσα σε 20 δευτερόλεπτα να βρει την πληροφορία που χρειάζεται. Ο κανόνας αυτός ουσιαστικά τονίζει το πόσο σημαντικό είναι η απόδοση της εφαρμογής να είναι υψηλή και χωρίς καθυστερήσεις. Επίσης ο χρόνος που θα χρειαστεί για την έναρξη μίας εφαρμογής (startup session) θα πρέπει να είναι σαφώς μικρότερος από τον χρόνο που θα χρειαστεί ο χρήστης να χρησιμοποιεί την συγκεκριμένη εφαρμογή (user session). Παρόλο που σε desktop-εφαρμογές ο χρόνος έναρξης δεν παίζει ιδιαίτερο ρόλο, ούτε προκαλεί τη δυσαρέσκεια του χρήση, στις mobile-εφαρμογές είναι ιδιαίτερα σημαντικό και θα πρέπει να λαμβάνεται υπόψη. Παράλληλα είναι γεγονός ότι όσο μικρότερη είναι μια συσκευή, τόσο μικρότερες θα είναι και οι συνεδρίες χρήσης κάθε φορά (sessions). Αυτό συνεπάγεται ότι απαιτήσεις για γρήγορη απόκριση θα είναι ακόμα μεγαλύτερες δεδομένου του μικρού χρόνου χρήσης. Για να μπορέσει να επιτευχθεί ένα αποδεκτό επίπεδο ποιότητας στην εφαρμογή είναι σημαντικό να γίνεται κατάλληλος έλεγχος της εφαρμογής (Testing) τόσο σε emulators όσο και σε πραγματικές συσκευές. Οι εφαρμογές θα πρέπει να ελέγχονται με πραγματικά δεδομένα και κάτω από πραγματικές συνθήκες. Για αυτό το λόγο είναι ιδιαίτερα σημαντικός ο κανόνας Write environmental code reduce, reuse, recycle. Ουσιαστικά θα πρέπει να επαναχρησιμοποιείται κώδικας ο οποίος είναι κατάλληλα ελεγμένος με υψηλά επίπεδα ποιότητας, ώστε να μειωθεί ο χρόνος που απαιτείται για τη δημιουργία της εφαρμογής και να αυξηθεί η απόδοσή της. Το κομμάτι της Επαναχρησιμοποίησης Κώδικα θεωρείται πολλά υποσχόμενο και για αυτό το λόγο εστιάζει σε αυτό η παρούσα εργασία. -15-

22 -16-

23 3 Android Το Android είναι ένα λειτουργικό σύστημα το οποίο απευθύνεται κυρίως σε κινητές συσκευές. Ωστόσο το Android μπορεί να στηρίξει ένα πλήθος τεχνολογικών καταναλωτικών προϊόντων (Google TV, φορητά media players, αναγνώστες e-books κτλ ), αρκεί αυτά να διαθέτουν μια οθόνη και ένα τρόπο κατάδειξης [2]. Σύμφωνα με την επίσημη ιστοσελίδα της Google η οποία απευθύνεται στους developers 3, Android είναι : «Μια στοίβα (stack) λογισμικού για κινητές συσκευές, η οποία περιλαμβάνει ένα λειτουργικό σύστημα, το ενδιάμεσο λογισμικό (middleware) και μια σειρά από βασικές εφαρμογές». Πρόκειται για ένα λογισμικό ανοιχτού κώδικα το οποίο διανέμεται ως επί το πλείστον υπό τους όρους της Apache License, μιας ελεύθερης άδειας λογισμικού. Έχει δημιουργηθεί έτσι ώστε να επιτρέπει στους developers να εκμεταλλεύονται όλες τις λειτουργίες της συσκευής ενώ παράλληλα τους δίνεται η ευκαιρία να χρησιμοποιήσουν ή και να αλλάξουν οποιαδήποτε από τις βασικές εφαρμογές της συσκευής (πχ κλήσεις, επαφές, μηνύματα, κτλ.) γεγονός που την διαφοροποιεί σε σχέση σε με άλλες πλατφόρμες. 3.1 Η δημιουργία Πατέρας της συγκεκριμένης πλατφόρμας θεωρείται ο Andy Rubins ο οποίος δημιούργησε την Android Inc. η οποία το 2005 αγοράστηκε από την Google. Στη συνέχεια και με τη συνεργασία της Open Handset Alliance (OHA), ξεκίνησαν τη δημιουργία μιας πλατφόρμας η οποία βασίζεται σε Ανοικτά Πρότυπα (Standards). Η Open Handset Alliance, είναι μια επιχειρηματική συμμαχία η οποία αποτελείται από τις πιο μεγάλες και πιο επιτυχημένες εταιρείες στον χώρο της κινητής τηλεφωνίας από κατασκευαστές chips έως μεγάλες εταιρείες Πληροφορικής. Αρκεί να αναφερθούν ορισμένες από τις εταιρείες που αποτελούν την OHA ώστε να γίνει αντιληπτό το μέγεθος και η ισχύς της. Ορισμένα από τα 84 μέλη της είναι η Vodafone, η HTC, η Samsung, η Lg, η T-mobile, η Andago κτλ, ενώ συνεχώς μεγάλα ονόματα αποφασίζουν

24 να συμμετέχουν και αυτά στην ΟΗΑ. Κύριος σκοπός των δημιουργών της Open Handset Alliance είναι να επιταχύνουν την καινοτομία στον χώρο της Κινητής τηλεφωνίας και να προσφέρουν στους χρήστες μια ποιοτική, λιγότερο ακριβή και καλύτερη εμπειρία όσο αναφορά τη χρήση κινητών συσκευών. Παράλληλα με το μεγάλο εύρος συσκευών και τις ανάλογες διαβαθμίσεις των τιμών τους, έχουν πετύχει το να γίνουν πιο προσιτές στο ευρύ κοινό οι κινητές συσκευές οι οποίες δεν θεωρούνται πλέον προϊόν πολυτελείας. Η πρώτη έκδοση Android που κυκλοφόρησε είχε το όνομα Astro, και η δεύτερη το όνομα Bender. Στη συνέχεια αποφασίστηκε ότι στις επόμενες εκδόσεις τα ονόματα των εκδόσεων θα συνεχίζουν να ακολουθούν αλφαβητική σειρά, και θα αντιπροσωπεύουν ένα γλυκό από το αντίστοιχο γράμμα. Έτσι η Τρίτη έκδοση ονομάστηκε Cupcake, η τέταρτη Donut, η πέμπτη Eclair κτλ (βλ. Εικόνα 3.1). Εικόνα 3.1: Οι εκδόσεις του Android. Τα ονόματα των εκδόσεων ακολουθούν αλφαβητική σειρά, αντιπροσωπεύοντας ένα γλυκό από κάθε γράμμα. 3.2 Πώς λειτουργεί Το λειτουργικό σύστημα Android μπορεί να θεωρηθεί ως ένα σύστημα Linux με πολλούς χρήστες (multi-user Linux system). Κάθε εφαρμογή η οποία τρέχει πάνω στο Android OS μπορεί να θεωρηθεί ως ένας χρήστης και για αυτό, το σύστημα της απονέμει ένα μοναδικό Linux User ID, με βάση το οποίο παίρνει και ανάλογες άδειες -18-

25 (permissions). Κάθε διαδικασία (process) τρέχει πάνω στο δικό της Virtual Machine (Εικονική Μηχανή). Με αυτό τον τρόπο ο κώδικας κάθε εφαρμογής τρέχει ξεχωριστά και απομονωμένα από τον κώδικα των άλλων εφαρμογών προσθέτοντας έτσι ένα τείχος ασφαλείας τόσο στις εφαρμογές όσο και στο ίδιο το σύστημα. Μια από τις μεγαλύτερες καινοτομίες του Android είναι το γεγονός ότι επιτρέπει σε οποιαδήποτε εφαρμογή τρέχει, να ξεκινήσει ένα από τα Βασικά Συστατικά (πχ μια Δραστηριότητα ή μια Υπηρεσία) κάποιας άλλης εφαρμογής στέλνοντας απλά ένα μήνυμα στο σύστημα με την πρόθεσή της να το κάνει. Τότε το σύστημα αναλαμβάνει να ξεκινήσει το συγκεκριμένο Συστατικό της δεύτερης εφαρμογής για χάρη της πρώτης, εφόσον βέβαια η πρώτη έχει τις κατάλληλες άδειες που της το επιτρέπουν. Αυτό είναι εφικτό καθώς τη στιγμή κατά την οποία το σύστημα ξεκινάει την εκτέλεση ενός Συστατικού μιας άλλης εφαρμογής, αυτό το οποίο κάνει στην ουσία είναι να ξεκινάει τη διαδικασία (process) για τη συγκεκριμένη εφαρμογή και να αρχικοποιεί όλες τις κλάσεις που χρειάζονται για το συγκεκριμένο Συστατικό. Για παράδειγμα έστω ότι υπάρχει μια εφαρμογή η οποία πραγματοποιεί βιντεοκλήσεις με το όνομα «Χ» και επιθυμεί να βγάλει μια φωτογραφία του χρήστη προκειμένου να φαίνεται στις συνομιλίες του με άλλους χρήστες. Για να μπορέσει να βγάλει τη φωτογραφία η εφαρμογή «Χ» χρειάζεται να ξεκινήσει το Συστατικό της εφαρμογής «Κάμερα», η οποία είναι pre-built στο σύστημα, το οποίο βγάζει μια φωτογραφία. Για να γίνει αυτό η εφαρμογή στέλνει μια «πρόθεση» (intent) στο σύστημα, το οποίο είναι ουσιαστικά ένα μήνυμα με την πρόθεσή της να ξεκινήσει το Συστατικό της εφαρμογής «Κάμερα». Τότε το σύστημα ξεκινάει να τρέχει την Δραστηριότητα - Activity (βλ. Παράγραφο 3.4.1) της εφαρμογής «Κάμερα», που είναι υπεύθυνη για να τραβάει φωτογραφίες, στο process της εφαρμογής «Κάμερα» και όχι της εφαρμογής «Χ» όπως θα περίμενε κανείς. Αυτός είναι και ο λόγος που δεν υπάρχει main() συνάρτηση στις εφαρμογές, εφόσον δεν υπάρχει ουσιαστικά ένα και μόνο σημείο έναρξης μιας εφαρμογής. 3.3 Αρχιτεκτονική Η αρχιτεκτονική του Android χτίζεται από κάτω προς τα πάνω. Στο κατώτατο σημείο βρίσκεται ο πυρήνας του Linux, στον οποίο και είναι βασισμένο ολόκληρο το Android, ενώ στο ανώτατο επίπεδο βρίσκονται οι εφαρμογές με τις οποίες αλληλεπιδρά ο χρήστης. Στην Εικόνα 3.2 φαίνεται ένα διάγραμμα της αρχιτεκτονικής του Android OS με τα βασικότερα συστατικά του. -19-

26 Στο ανώτερο επίπεδο του διαγράμματος ανήκουν οι Εφαρμογές (Applications). Σε αυτό το επίπεδο περιλαμβάνονται οι βασικές εφαρμογές που περιέχονται σε μια συσκευή Android. Στις εφαρμογές αυτές περιλαμβάνονται οι κλήσεις, τα μηνύματα, ο τηλεφωνικός κατάλογος, ο browser, κτλ. Στο δεύτερο επίπεδο βρίσκεται το API Framework (Application Framework), δηλαδή το Πλαίσιο Λογισμικού (Software Framework) το οποίο χρησιμοποιείται από τις εφαρμογές οι οποίες βρίσκονται στο πιο πάνω επίπεδο, προκειμένου να επικοινωνήσουν με το «υποσκάπτων» (underlying) Android σύστημα και να εκτελέσουν τις λειτουργίες που επιθυμούν. Είναι σημαντικό να επισημανθεί το γεγονός ότι σε μια ανοιχτή πλατφόρμα, όπως είναι το Android, δίνεται η δυνατότητα στους developers να χρησιμοποιούν τις ίδιες λειτουργίες και συστατικά που χρησιμοποιούνται και για τις βασικές pre-built εφαρμογές των συσκευών. Εικόνα 3.2: H αρχιτεκτονική του Android Το γεγονός αυτό δίνει ένα τεράστιο ανταγωνιστικό πλεονέκτημα στην πλατφόρμα Android καθώς οι δυνατότητες οι οποίες δίνονται στους developers αυξάνονται σημαντικά σε σχέση με αυτές που δίνονται σε ανταγωνιστικές πλατφόρμες. Το API Framework στο Android είναι ιδιαίτερα πλούσιο και στηρίζεται στην Επαναχρησιμοποίηση Συστατικών (Components). Παρέχει επίσης μια σειρά από -20-

27 Μάνατζερ (πχ. Activity Manager, Location Manager, Notification Manager κτλ.) οι οποίοι αναλαμβάνουν τη διαχείριση ορισμένων λειτουργιών ώστε ο developer να μπορεί ευκολότερα να διαχειριστεί την εφαρμογή που αναπτύσσει. Για παράδειγμα ο Μάνατζερ Δραστηριοτήτων (Activity Manager), αναλαμβάνει να διευθύνει ελέγχει τον κύκλο ζωής των Δραστηριοτήτων (Activities), παρέχοντας τις κατάλληλες διαδικασίες οι οποίες πρέπει να κληθούν προκειμένου να γίνει αυτό. Κάθε εφαρμογή είναι συμβατή προς τα εμπρός (forward compatible) με τις νέες εκδόσεις της Android πλατφόρμας. Κάθε έκδοση Android χαρακτηρίζεται από ένα API Level, δηλαδή, έναν ακέραιο ο οποίος προσδιορίζει μοναδικά την έκδοση του Framework API (Framework API revision) που προσφέρει η συγκεκριμένη έκδοση της Android πλατφόρμας. Καθώς εξελίσσονται οι εκδόσεις Android, εμπλουτίζεται και το API Framework, με αποτέλεσμα να δημιουργούνται και νέα API Levels. Το τρίτο επίπεδο αποτελείται από τις βιβλιοθήκες (Libraries) και το Android Runtime. Οι βιβλιοθήκες περιλαμβάνουν γνωστές βιβλιοθήκες, γραμμένες σε C και C++, οι οποίες προσφέρουν τη λειτουργικότητα την οποία οι developers χρησιμοποιούν μέσω του API Framework. Οι βιβλιοθήκες είναι βελτιστοποιημένες για χρήση στην Android πλατφόρμα. Από τις πιο γνωστές είναι η System C, η OpenGL για γραφικά και η SQLite για βάσεις δεδομένων. Το Android Runtime περιέχει μερικές από τις βασικές (core) βιβλιοθήκες που παρέχουν τις περισσότερες λειτουργίες που περιέχουν οι βιβλιοθήκες της Java, μαζί με την εικονική μηχανή Dalvik Virtual Machine. Η Dalvik VM, τρέχει αρχεία της μορφής.dex (Dalvik executable), βασίζεται στον πυρήνα του Linux (Linux kernel) και είναι βελτιστοποιημένη ώστε να παρέχει το ελάχιστο memory footprint. Η κύρια διαφορά της με άλλες εικονικές μηχανές είναι πως είναι πιο αποδοτική και πιο συμπαγής (compact). Μια συσκευή Android τρέχει πολλές εφαρμογές όπως αναφέρθηκε πιο πάνω, και η κάθε μια από αυτές τρέχει στο δικό της process με το δικό της στιγμιότυπο (instance) της Dalvik VM. Με αυτό τον τρόπο ο κώδικας κάθε εφαρμογής τρέχει απομονωμένα από όλες τις υπόλοιπες και συνεπώς δεν αλληλεπιδρά με κώδικα άλλων εφαρμογών προσφέροντας ένα επιπλέον επίπεδο ασφάλειας. Η κάθε Android συσκευή να μπορεί να τρέχει ταυτόχρονα πολλαπλές εικονικές μηχανές, έτσι ο κώδικας μιας εφαρμογής, μεταφράζεται (compiled) από ένα εργαλείο, το dx tool, σε bytecodes. Τα bytecodes, τα οποία είναι οδηγίες ανεξάρτητες από τη μηχανή - machine independent -21-

28 instructions - στη συνέχεια εκτελούνται από το Dalvik VM στην εκτελέσιμη μορφή.dex (βλ. Εικόνα 3.3). Στο τέταρτο και τελευταίο επίπεδο βρίσκεται ο πυρήνας του Linux. Το Android είναι βασισμένο στον πυρήνα του Linux για όλες τις λειτουργίες του. Το επίπεδο αυτό περιλαμβάνει τους drivers για την οθόνη, το πληκτρολόγιο, το Wi-Fi κτλ. Ουσιαστικά ο πυρήνας δρα σαν ένα επίπεδο αφαίρεσης μεταξύ υλικού και λογισμικού και διευθύνει την μεταξύ τους επικοινωνία. Εικόνα 3.3: Εκτέλεση κώδικα στην εικονική μηχανή Dalvik 3.4 Τα βασικά συστατικά Στο Android υπάρχουν τέσσερα βασικά συστατικά (components). Καθένα από αυτά εξυπηρετεί διαφορετικό σκοπό για αυτό και είναι σκόπιμο να αναλυθούν σύντομα οι χρήσεις του καθενός. Είναι σημαντικό, στο σημείο αυτό, να επισημανθεί πως κάθε εφαρμογή στο Android μπορεί να ξεκινήσει οποιοδήποτε συστατικό οποιασδήποτε άλλης εφαρμογής επιθυμεί. Ωστόσο δεν είναι απαραίτητο κάθε εφαρμογή να χρησιμοποιεί και τα τέσσερα βασικά συστατικά που υπάρχουν Activity (Δραστηριότητα) Μια εφαρμογή αποτελείται από μια ή περισσότερες Δραστηριότητες και το Linux process. Κάθε οθόνη UI (User Interface) στον κώδικα συνήθως αναπαριστάται με μια κλάση Δραστηριότητας. Για παράδειγμα, σε ένα απλό παιχνίδι θα μπορούσε να υπάρχει μια αρχική οθόνη η οποία θα δείχνει ένα μενού με τρεις επιλογές, την έναρξη του παιχνιδιού, τις ρυθμίσεις και τα υψηλότερα σκορ που έχουν πετύχει οι παίκτες. Για κάθε μια από αυτές τις επιλογές καθώς και για την αρχική οθόνη, θα μπορούσε να υπάρχει από μια Δραστηριότητα. Application = Activities + Linux Process -22-

29 Η κάθε Δραστηριότητα, έχει το δικό της κύκλο ζωής. Κατά τη διάρκεια που τρέχει η εφαρμογή οι διάφορες Δραστηριότητες που την απαρτίζουν μεταβαίνουν σε διαφορετικές καταστάσεις. Ο developer δεν ελέγχει σε ποια κατάσταση βρίσκεται κάθε φορά η κάθε Δραστηριότητα, αυτό γίνεται από το σύστημα. Δουλειά του developer είναι, να χειρίζεται το τι κάνει η εφαρμογή κάθε φορά που αλλάζει η κατάστασή της. Για να το πετύχει αυτό χρειάζεται απλά να κάνει override τις ανάλογες συναρτήσεις onxx() κάθε φορά. Υπάρχουν ειδικές συναρτήσεις για κάθε κατάσταση στην οποία μεταβαίνει μια Δραστηριότητα κάθε φορά, όπως για παράδειγμα oncreate() όταν δημιουργείται, onpause() όταν κάνει παύση, onresume() όταν επανέρχεται κοκ Services (Υπηρεσίες) Οι Υπηρεσίες είναι ένα Βασικό Συστατικό του Android το οποίο αναπαριστά είτε την πρόθεση μιας εφαρμογής να εκτελέσει μια χρονοβόρα (long-running) λειτουργία την ώρα που δεν αλληλεπιδρά με τον χρήστη, είτε να παρέχει κάποια λειτουργικότητα η οποία μπορεί να χρησιμοποιηθεί από άλλες εφαρμογές. Πολλές φορές οι Υπηρεσίες παρομοιάζονται με τα Unix daemons. Όταν δημιουργείται μια Υπηρεσία, το σύστημα ξεκινάει το συγκεκριμένο Συστατικό καλώντας την oncreate() συνάρτησή του καθώς και τις ανάλογες callbacks του στο main thread εφόσον υπάρχουν. Οι Υπηρεσίες συνήθως χρησιμοποιούνται για να εκτελούν στο παρασκήνιο εργασίες οι οποίες απαιτούν χρόνο όπως για παράδειγμα η προσθήκη μουσικής την ώρα που τρέχει μια εφαρμογή. Δεν είναι απαραίτητο να έχουν ένα UI (User Interface), καθώς καλούνται συνήθως μέσω άλλων Δραστηριοτήτων Content Providers (Πάροχος Περιεχομένου) Ένας Πάροχος Περιεχομένου διαχειρίζεται τα διαμοιραζόμενα σύνολα δεδομένων των εφαρμογών. Τα δεδομένα μιας εφαρμογής, για παράδειγμα τα υψηλότερα σκορ που έχει πετύχει ένας παίκτης σε ένα παιχνίδι, έστω ότι η εφαρμογή τα αποθηκεύει σε μια βάση δεδομένων. Μέσω του Παρόχου Περιεχομένου, άλλες εφαρμογές μπορούν, εφόσον έχουν τις κατάλληλες άδειες, να έχουν πρόσβαση στα δεδομένα αυτά είτε για να τα δουν απλά είτε και για να τα τροποποιήσουν. Μέσω των Παρόχων Περιεχομένου κάποιος μπορεί να διαβάσει ή να γράψει δεδομένα τα οποία είναι private στην εφαρμογή του. Το πιο κλασσικό παράδειγμα για Πάροχο Περιεχομένου είναι με -23-

30 τις Επαφές (Contacts), όπου ένας developer μπορεί να έχει πρόσβαση σε αυτές, πάντα με τις κατάλληλες άδειες, προκειμένου να πάρει ή να επεξεργαστεί δεδομένα Broadcast Receivers (Δέκτες Μεταδόσεων) Ένας Δέκτης Μεταδόσεων αποκρίνεται σε ανακοινώσεις που αφορούν το σύστημα (system-wide announcements). Ένα παράδειγμα θα μπορούσε να είναι ένα broadcast - μήνυμα το οποίο ενημερώνει ότι το επίπεδο της μπαταρίας είναι χαμηλό. Οι Δέκτες Μεταδόσεων δεν εμφανίζουν ένα UI (User Interface), ωστόσο μπορούν να εμφανίσουν μια ειδοποίηση (notification) στο Status Bar ώστε να ενημερώσουν τον χρήστη ότι προέκυψε ένα broadcast γεγονός. Τα μηνύματα (broadcasts), μεταφέρονται ως intent-objects (αντικείμενα πρόθεσης). Τα intents (προθέσεις), προσδιορίζουν την ενέργεια την οποία έχει πρόθεση ο developer να εκτελέσει. Για να εκτελεστεί η συγκεκριμένη ενέργεια αποστέλλεται ένα μήνυμα στο σύστημα με την πρόθεση intent να εκτελεστεί η ενέργεια και το σύστημα αναλαμβάνει την εκτέλεσή της. Μια ενέργεια θα μπορούσε να είναι η έναρξη μιας Δραστηριότητας σε μια εφαρμογή. Έτσι, η εφαρμογή στέλνει ένα intent στο σύστημα που έχει ως παράμετρο τη Δραστηριότητα που προτίθεται να ενεργοποιήσει και το σύστημα την ενεργοποιεί. Με αυτό τον τρόπο λειτουργούν όλες οι εφαρμογές και όπως αναφέρθηκε και στην παράγραφο 3.2, αυτός είναι ο κύριος λόγος που δεν υπάρχει συνάρτηση main(), καθώς δεν υπάρχει ένα και μοναδικό σημείο έναρξης (entry point) στην εφαρμογή, όπως γίνεται συνήθως στις περισσότερες γλώσσες προγραμματισμού. Οποιαδήποτε εφαρμογή μπορεί ανά πάσα στιγμή να ενεργοποιήσει οποιοδήποτε συστατικό άλλης εφαρμογής στέλνοντας απλά ένα μήνυμα (intent) στο σύστημα. 3.5 Η Δομή ενός Android Project Ένα Android Έργο, αποτελείται από αρκετά αρχεία. Τα αρχεία αυτά με την εκτέλεση της εφαρμογής γίνονται build σε ένα αρχείο με την κατάληξη.apk προκειμένου να εγκατασταθεί η εφαρμογή σε μια κινητή συσκευή. Ορισμένα από τα αρχεία που απαιτούνται δημιουργούνται αυτόματα κατά την ώρα της εκτέλεσης και δε χρειάζεται ο developer να μεριμνήσει για αυτά. Στην Εικόνα 5.1, φαίνεται ένα Android Έργο με το όνομα HelloWorld. -24-

31 Εικόνα 5.1: Ένα Android Έργο όπως φαίνεται στον Project Explorer του Eclipse Στον φάκελο src (source), περιέχεται ο κώδικας της εφαρμογής. Στη συγκεκριμένη περίπτωση επειδή πρόκειται για ένα απλό Έργο, ο φάκελος αυτός περιέχει μόνο μια κλάση, την MyMainActivity. Στο φάκελο gen (generated), περιέχονται αρχεία τα οποία δημιουργούνται αυτόματα από το ADT plug-in. Σε αυτό τον φάκελο περιλαμβάνεται και η κλάση R.java στην οποία αποθηκεύονται οι πόροι του Έργου. Στο φάκελο bin περιέχεται το τελικό αρχείο.apk καθώς και διάφορα άλλα μεταγλωττισμένα (compiled) αρχεία. Στον φάκελο lib (libraries), περιέχονται οι διάφορες ιδιωτικές βιβλιοθήκες τις οποίες χρησιμοποιεί η εφαρμογή. Ο φάκελος res (resources) περιλαμβάνει τους πόρους του Έργου. Ως πόρους θεωρούμε εικόνες, αρχεία μουσικής, αρχεία layout και διάφορα.xml αρχεία του Έργου. Τα αρχεία layout είναι αρχεία.xml τα οποία μεταφράζονται στις διάφορες «οθόνες» που εμφανίζει η εφαρμογή. -25-

32 Τέλος το αρχείο AndroidManifest.xml, περιλαμβάνει τους ορισμούς των διαφόρων συστατικών που χρησιμοποιούνται στην εφαρμογή, τις απαιτήσεις της εφαρμογής, τις διάφορες άδειες (permissions) που χρειάζονται προκειμένου να τρέξει η εφαρμογή, τα API Levels που απαιτούνται και ορισμένα άλλα στοιχεία που αφορούν την εφαρμογή. -26-

33 4 COPE Η παρούσα εργασία εστιάζει στο κομμάτι της Επαναχρησιμοποίησης (Reusability) σε Ελεύθερο Λογισμικό/Λογισμικό Ανοιχτού Κώδικα ΕΛ/ΛΑΚ (Free/Libre Open Source Software F/LOSS). Από την επαναχρησιμοποίηση κώδικα προκύπτουν πολλαπλά οφέλη. Τα πιο σημαντικά από αυτά είναι η μείωση του χρόνου που απαιτείται για την ανάπτυξη ενός προγράμματος - συστήματος και η βελτίωση της ποιότητάς του. Ο χρόνος μειώνεται αισθητά, καθώς κομμάτια κώδικα τα οποία έχουν ήδη χρησιμοποιηθεί και ελεγχθεί κατάλληλα μπορούν να επαναχρησιμοποιηθούν εύκολα χωρίς να πρέπει να αναπτυχθούν και να ελεγχθούν από την αρχή. Παράλληλα η ποιότητα του προγράμματος βελτιώνεται σημαντικά, δεδομένου ότι τα κομμάτια κώδικα που επιλέγονται για επαναχρησιμοποίηση έχουν δημιουργηθεί με τέτοιο τρόπο ώστε να είναι βελτιστοποιημένα ως προς τις λειτουργίες τους. Στα πλαίσια της συγκεκριμένης εργασίας χρησιμοποιήθηκε το περιβάλλον του COPE (Component Adaptation Environment), για τον εντοπισμό και την εξαγωγή των πιθανών Συστατικών Λογισμικού. Στο παρόν κεφάλαιο θα αναλυθεί η λειτουργία του COPE, καθώς και οι αλλαγές που έγιναν προκειμένου να εξάγονται Συστατικά Λογισμικού από έργα Android. 4.1 Λειτουργία Το COPE είναι ένα εργαλείο το οποίο διευκολύνει τον εντοπισμό, την εξαγωγή, τον έλεγχο και την τεκμηρίωση Συστατικών Λογισμικού (Components). Ως Συστατικό Λογισμικού ορίζουμε ένα αυτόνομο κομμάτι ενός προγράμματος Έργου, το οποίο εκτελεί μια συγκεκριμένη λειτουργία και μπορεί να χρησιμοποιηθεί ανεξάρτητα από το Έργο στο οποίο ανήκει. Το COPE, έχει αναπτυχθεί στο εργαστήριο SWENG του Αριστοτέλειου Πανεπιστημίου Θεσσαλονίκης στα πλαίσια του προγράμματος OPEN- SME. Ο χρήστης του COPE, δηλαδή το άτομο το οποίο ασχολείται με τον εντοπισμό -27-

34 και την χρήση των Συστατικών Λογισμικού, ονομάζεται Μηχανικός Επαναχρησιμοποίησης (Reuse Engineer) και έτσι θα αναφέρεται στο υπόλοιπο της συγκεκριμένης εργασίας. Ένα έργο (Project) όταν εισάγεται στο COPE ακολουθεί τέσσερις φάσεις. Πρώτη είναι η φάση της Ανάλυσης (Analysis Phase). Στο στάδιο αυτό, αναλύεται ο κώδικας του προγράμματος που εισήχθη στο COPE, και τα αποτελέσματα της ανάλυσης αποθηκεύονται στη βάση δεδομένων του προγράμματος. Η ανάλυση η οποία γίνεται είναι στατική (Static Analysis) και συλλέγει στοιχεία που αφορούν το Έργο προτού αυτό εκτελεστεί. Στη συνέχεια ακολουθεί η δεύτερη φάση, η φάση της Πρότασης Πιθανών Συστατικών Λογισμικού (Component Recommendation Phase). Στη φάση αυτή το COPE προτείνει ομάδες κλάσεων που θα μπορούσαν να θεωρηθούν πιθανά επαναχρησιμοποιήσιμα Συστατικά Λογισμικού. Οι προτάσεις αυτές στηρίζονται σε τρεις διαφορετικούς Εισηγητές (Recommenders). Ο πρώτος εισηγητής, ο «Εισηγητής με βάση τις εξαρτήσεις» (Dependencies Recommender), προτείνει τα πιθανά Συστατικά Λογισμικού σχηματίζοντας συστάδες (clusters) που προκύπτουν από έναν γενετικό αλγόριθμο. Ο δεύτερος εισηγητής, ο «Εισηγητής με βάση τα Πρότυπα Σχεδιασμού» (Pattern Recommender), σχηματίζει συστάδες με βάση τα Πρότυπα Σχεδιασμού που ανιχνεύθηκε ότι ακολουθούνται στο συγκεκριμένο Έργο. Η ανίχνευση των Προτύπων, γίνεται με το εργαλείο που περιγράφεται στο [3]. Ο τρίτος και τελευταίος εισηγητής είναι ο «Εισηγητής με βάση την Επαναχρησιμοποίηση» (Reusability Recommender). Στα πλαίσια της συγκεκριμένης εργασίας, ο Μηχανικός Επαναχρησιμοποίησης, επιλέγει μια κλάση και εξάγει ένα Συστατικό Λογισμικού με βάση αυτή την κλάση. Το Συστατικό Λογισμικού, θα περιλαμβάνει ένα Interface με βάση τις public μεθόδους της κλάσης και θα περιλαμβάνει όλες τις κλάσεις που απαιτούνται για την επαναχρησιμοποίηση της συγκεκριμένης κλάσης. Προκειμένου να επιλεχθεί η κατάλληλη κλάση πρέπει να εξεταστούν οι μετρικές που προκύπτουν από τη Στατική Ανάλυση του Έργου (βλ. Εικόνα 4.1). Συνήθως δίνεται έμφαση στο μέγεθος της ομάδας (cluster size), στο Επίπεδο (Layer) της κλάσης στον δίγραφο (digraph) του Έργου, καθώς και στην μετρική R η οποία βασίζεται στις Chidamber και Kemerer [4]. Περισσότερες λεπτομέρειες για τις μετρικές δίνονται στο έκτο κεφάλαιο, όπου αναλύεται ένα παράδειγμα ενός Έργου από -28-

35 το οποίο εξάγονται ορισμένα Συστατικά Λογισμικού. Πιθανά Συστατικά Λογισμικού αποτελούν κλάσεις οι οποίες βρίσκονται σε χαμηλά επίπεδα (Layers), έχουν μικρό μέγεθος συστάδας (cluster size), καθώς θα έχουν λιγότερες εξαρτήσεις, και έχουν υψηλή τιμή στη μετρική R, η οποία δείχνει πόσο επαναχρησιμοποιήσιμες είναι. Κλάσεις με μεγάλα μεγέθη ομάδας, δεν προτιμώνται καθώς αυξάνουν σημαντικά την πολυπλοκότητα του Συστατικού Λογισμικού, και συνήθως περιέχουν λειτουργικότητες οι οποίες δεν είναι σχετικές με την αρχική κλάση. Έπειτα ακολουθεί η τρίτη φάση, η φάση της Δημιουργίας των Συστατικών Λογισμικού (Component Making Phase). Κατά τη φάση αυτή ο Μηχανικός Επαναχρησιμοποίησης, μπορεί να εξάγει είτε ορισμένα από τα Συστατικά Λογισμικού τα οποία του προτάθηκαν στην προηγούμενη φάση, είτε να επιλέξει ο ίδιος μια κλάση η οποία θεωρεί, πως περιέχει κάποια λειτουργικότητα που θα ήταν χρήσιμο να επαναχρησιμοποιηθεί. Στη δεύτερη περίπτωση η συγκεκριμένη κλάση μαζί με τις διάφορες εξαρτήσεις που μπορεί να έχει δημιουργούν ένα νέο Συστατικό Λογισμικού το οποίο και εξάγεται. Το τέταρτο και τελευταίο στάδιο, είναι το στάδιο της Διαχείρισης Γνώσης (Knowledge Management Phase). Σε αυτή τη φάση, ο Μηχανικός Λογισμικού παρέχει περισσότερες πληροφορίες για το Συστατικό Λογισμικού το οποίο εξήγαγε. Τέτοιες πληροφορίες είναι η λειτουργικότητά του, η κατηγορία στην οποία θα μπορούσε να ανήκει κτλ. Εικόνα 4.1: Οι μετρικές οι οποίες προκύπτουν έπειτα από τη Στατική Ανάλυση του Έργου -29-

36 Στην Εικόνα 4.2 [5], φαίνεται η λειτουργία του COPE. Το COPE λειτουργεί σε τρία επίπεδα (layers). Στο πρώτο επίπεδο βρίσκονται οι Αναλυτές (Analyzers). Οι Αναλυτές αναλύουν τα OSS Έργα που εισάγονται στο COPE και εισάγουν την πληροφορία την οποία παρήγαγαν στη Βάση Δεδομένων με τη μορφή γεγονότων. Στο δεύτερο επίπεδο βρίσκονται οι Εισηγητές (Recommenders), οι οποίοι με βάση τα γεγονότα τα οποία παίρνουν από τη Βάση Δεδομένων, συνιστούν εισηγούνται συστάδες (clusters) κλάσεων οι οποίες πιθανό να περιέχουν χρήσιμα Συστατικά Λογισμικού. Στο τρίτο και τελευταίο επίπεδο βρίσκονται οι Δημιουργοί των Συστατικών Λογισμικού (Component Makers), οι οποίοι σχηματίζουν τα Συστατικά Λογισμικού με βάση τις εισηγήσεις του προηγούμενου επιπέδου. Εικόνα 4.2: Τα 3 στρώματα του COPE -30-

37 4.2 Προσαρμογή για Android Projects Το COPE, όπως αναφέρθηκε λειτουργεί για Java Έργα και συνεπώς μπορεί να λειτουργήσει και για Android έργα, δεδομένου ότι και αυτά είναι γραμμένα σε Java. Ωστόσο υπάρχουν ορισμένες αλλαγές οι οποίες έγιναν λόγω της διαφορετικής μορφής που έχουν τα Έργα Android. Όπως αναλύθηκε στην Παράγραφο 3.5, τα Android Έργα περιέχουν ορισμένα αρχεία και φακέλους οι οποίοι δεν περιέχονται στα Java Έργα. Συνεπώς για να λειτουργήσει αυτόνομα ένα Συστατικό Λογισμικού το οποίο αφορά ένα Android Έργο, είναι απαραίτητο να εξαχθούν μαζί με τον κώδικα και κάποια επιπλέον αρχεία. Τα επιπλέον αυτά αρχεία είναι ο φάκελος res, ο οποίος περιλαμβάνει τους πόρους της εφαρμογής, το αρχείο AndroidManifest.xml, στο οποίο γίνονται οι απαραίτητοι ορισμοί ώστε να μπορεί να εκτελεστεί μια εφαρμογή και το αρχείο project.properties το οποίο περιέχει ορισμένες από τις ρυθμίσεις του Έργου. Παράλληλα σε ορισμένα Έργα υπάρχουν μερικά επιπλέον αρχεία τα οποία πρέπει να εξαχθούν, εφόσον βέβαια υπάρχουν, τα οποία περιέχονται στους φακέλους libs και assets. Ο φάκελος libs περιλαμβάνει διάφορες εσωτερικές βιβλιοθήκες που χρησιμοποιεί μια εφαρμογή ενώ ο φάκελος assets περιέχει τα «ακατέργαστα» αρχεία (raw assets files), τα οποία αποθηκεύονται στο.apk αρχείο της εφαρμογής ως έχουν χωρίς να υποστούν κάποια επεξεργασία. Ο συγκεκριμένος φάκελος περιέχεται σε όλες τις εφαρμογές, στις περιπτώσεις όμως που δεν χρησιμοποιούνται τέτοια αρχεία, δημιουργείται από το Eclipse αυτόματα και παραμένει κενός. Επίσης για Έργα Android δεν είναι απαραίτητη η ύπαρξη ενός αρχείου Interface και συνεπώς δεν απαιτείται η δημιουργία ενός τέτοιου αρχείου. -31-

38 -32-

39 5 Μεθοδολογία Στα πλαίσια της παρούσας εργασίας ακολουθήθηκε η εξής μεθοδολογία. Αρχικά εξετάζονται Έργα από διάφορα Repositories προκειμένου να εντοπιστεί κάποιο το οποίο είναι πιθανό να περιέχει χρήσιμα και επαναχρησιμοποιήσιμα Συστατικά Λογισμικού. Αφού εντοπιστεί ένα τέτοιο Έργο, εισάγεται στο COPE όπου διεξάγεται στατική ανάλυση. Στη συνέχεια με βάση τους διάφορους Εισηγητές (Recommenders) του COPE εξετάζονται ορισμένα πιθανά Συστατικά Λογισμικού. Τέλος επιλέγονται ένα ή περισσότερα Συστατικά Λογισμικού τα οποία και εξάγονται από το COPE. Στη συνέχεια εισάγονται σε ένα IDE (πχ Eclipse, Netbeans κτλ) για περαιτέρω επεξεργασία. Στο συγκεκριμένο κεφάλαιο θα αναλυθούν τα απαραίτητα εργαλεία και η μεθοδολογία που ακολουθήθηκε Στο επόμενο κεφάλαιο θα αναλυθεί ένα παράδειγμα καθώς και τα αποτελέσματα που είχε η συγκεκριμένη μέθοδος. 5.1 Εργαλεία Το πρακτικό κομμάτι της συγκεκριμένης εργασίας αναπτύχθηκε σε περιβάλλον Linux (Ubuntu 11.10, 12.04). Για την δημιουργία Android εφαρμογών είναι απαραίτητο να υπάρχει εγκατεστημένο το JDK (Java Development Kit), ένα IDE (Integrated Development Environment), το Android SDK (Software Development Kit) και το ADT (Android Developers Tool) plug-in εφόσον χρησιμοποιείται το περιβάλλον του Eclipse ως IDE. Όλα τα εργαλεία τα οποία χρειάζονται είναι διαθέσιμα δωρεάν ενώ υπάρχουν αναλυτικές οδηγίες που αφορούν τη χρήση τους στην ιστοσελίδα της Google 4. Για την ανάλυση των προγραμμάτων και την εξαγωγή των Συστατικών Λογισμικού χρησιμοποιήθηκε το περιβάλλον του COPE, το οποίο είναι επίσης Ανοικτού Κώδικα και διαθέσιμο στο [6]

40 Για την επεξεργασία και ανάπτυξη των Android εφαρμογών χρησιμοποιήθηκε το περιβάλλον Eclipse με εγκατεστημένο το ADT plug-in. Η χρήση του Eclipse για Android εφαρμογές συνιστάται καθώς έχει δημιουργηθεί ένα ειδικό plug-in, το ADT plug-in, για ευκολότερη ανάπτυξη Android εφαρμογών στο περιβάλλον του Eclipse. Με το ADT plug-in διευκολύνεται η δημιουργία των εφαρμογών, το debugging και το χτίσιμο (build) των εφαρμογών. Εγκαταστάθηκε επίσης το Android SDK, το οποίο παρέχει τα κατάλληλα εργαλεία και τα απαραίτητα APIs έτσι ώστε κάποιος να είναι σε θέση να αναπτύξει Android εφαρμογές, προγραμματίζοντας πάντοτε σε γλώσσα Java. Το Android SDK ενσωματώνεται στο περιβάλλον του Eclipse, ωστόσο μπορεί να λειτουργήσει και ανεξάρτητα από αυτό. Τα διάφορα Έργα τα οποία δοκιμάστηκαν έτρεξαν είτε σε Emulators (με κατάλληλα AVDs Android Virtual Device κάθε φορά), είτε σε συσκευές κινητών τηλεφώνων. Μετά την εγκατάσταση του ADT plug-in στο Eclipse είναι απαραίτητο να δημιουργηθεί τουλάχιστον μία Εικονική Συσκευή (AVD) στην οποία θα τρέχει η εφαρμογή η οποία εκτελείται. Στην Εικόνα 5.1 φαίνεται το παράθυρο του Emulator στην αρχική οθόνη. Εικόνα 5.1: Ο Emulator στο περιβάλλον του Eclipse -34-

41 Μία Εικονική Συσκευή είναι ουσιαστικά μια παραμετροποίηση του Emulator (Emulator configuration) που επιτρέπει στον developer να προσομοιώσει - μοντελοποιήσει μια πραγματική συσκευή ορίζοντας ο ίδιος τα χαρακτηριστικά της, για παράδειγμα το μέγεθος της μνήμης, το εάν έχει κάμερα ή όχι, το αν έχει πληκτρολόγιο ή αν έχει οθόνη αφής, την έκδοση του Android που θα τρέχει κτλ. Έτσι μπορεί η εφαρμογή να ελεγχθεί κατάλληλα προκειμένου να λειτουργεί σωστά σε μια γκάμα συσκευών. Ωστόσο για να είναι ο έλεγχος επαρκής είναι απαραίτητο να δοκιμαστούν οι εφαρμογές και σε πραγματικές συσκευές. Για τη διαχείριση των Virtual Devices, το SDK περιλαμβάνει ένα εργαλείο τον AVD Manager, με τη βοήθεια του οποίου μπορούν να οριστούν όσες συσκευές επιθυμεί ο developer. Στα εργαλεία για ανάπτυξη Android εφαρμογών (Android SDK και ADT plug-in) γίνονται συνεχώς αναβαθμίσεις με αποτέλεσμα να διευκολύνεται και να απλοποιείται ιδιαίτερα η ανάπτυξη των εφαρμογών αλλά και να επιλύονται λάθη που υπήρχαν σε παλαιότερες εκδόσεις. Για το λόγο αυτό συνιστάται ιδιαίτερα ο περιοδικός έλεγχος για τυχόν αναβαθμίσεις στο λογισμικό αυτό. Παλαιότερα η εγκατάσταση και μόνο του απαραίτητου λογισμικού αποτελούσε μια χρονοβόρα διαδικασία καθώς προέκυπταν αρκετά σφάλματα κατά τη διαδικασία αυτή. Στο διάστημα από το ξεκίνημα της παρούσας εργασίας μέχρι την ολοκλήρωσή της, έχουν επιλυθεί πολλά από τα προβλήματα τα οποία δυσκόλευαν την ανάπτυξη των εφαρμογών και έχουν προστεθεί αρκετές λειτουργίες οι οποίες αυτοματοποιούν κάποιες από τις διαδικασίες ανάπτυξης μιας εφαρμογής. 5.2 Ανάλυση Μεθοδολογίας Η διαδικασία του εντοπισμού και της εξαγωγής των Συστατικών Λογισμικού μπορεί να συμπτυχθεί σε τρία βασικά στάδια. Το πρώτο στάδιο είναι ο Εντοπισμός του πιθανού Συστατικού Λογισμικού, το δεύτερο είναι η Εξαγωγή του και το τρίτο η Χρήση του Συστατικού Λογισμικού που προϋποθέτει την εισαγωγή του σε ένα Έργο. Αρχικά θα πρέπει να αναφερθεί πως για την ολοκλήρωση της διαδικασίας όλα τα Έργα τα οποία χρησιμοποιήθηκαν είναι Ανοιχτού Κώδικα (Open Source) και εντοπίστηκαν σε διάφορα Αποθετήρια Προγραμμάτων Ανοικτού Κώδικα (Open Source Repositories) αλλά και στο διαδίκτυο. -35-

42 Στο πρώτο στάδιο, στον Εντοπισμό του πιθανού Συστατικού Λογισμικού εντοπίζεται ένα ενδιαφέρον Έργο και στη συνέχεια αναλύεται για να διαπιστωθεί εάν όντος περιέχει κάποιο χρήσιμο Συστατικό Λογισμικού. Προκειμένου να διαπιστωθεί εάν ένα Έργο περιέχει επαναχρησιμοποιήσιμα Συστατικά Λογισμικού, είναι απαραίτητη η εκτέλεση του προγράμματος και ο έλεγχος του κώδικα του. Με την εκτέλεση του προγράμματος διαπιστώνεται εάν το συγκεκριμένο Έργο τηρεί τους κανόνες που αναφέρθηκαν στην Παράγραφο 2.4, δηλαδή αν ανταποκρίνεται στις κινήσεις του χρήστη, αν είναι λειτουργικό και εύχρηστο και αν περιέχει κάποια λειτουργικότητα η οποία αξίζει να χρησιμοποιηθεί και από άλλους developers. Στη συνέχεια με τον έλεγχο ανάγνωση του κώδικα μπορεί να διαπιστωθεί κατά πόσο το πρόγραμμα είναι καλογραμμένο, τηρεί τους όρους του ορθού προγραμματισμού και γενικά αξίζει να επαναχρησιμοποιηθεί. Εφόσον βρεθεί ένα τέτοιο Έργο το πρώτο στάδιο ολοκληρώνεται. Έπειτα ακολουθεί το δεύτερο στάδιο, το στάδιο της εξαγωγής του Συστατικού Λογισμικού. Αφού διαπιστώθηκε κατά το προηγούμενο στάδιο ότι το συγκεκριμένο Έργο όντως περιέχει κάποια επαναχρησιμοποιήσιμη λειτουργία γίνεται η εισαγωγή του στο COPE από όπου και εξάγεται το Συστατικό Λογισμικού. Το δεύτερο στάδιο τυπικά ολοκληρώνεται με την εξαγωγή του Συστατικού Λογισμικού, και ουσιαστικά ολοκληρώνεται και όλη η διαδικασία. Παρόλα αυτά για να γίνει κατανοητή η χρήση του Συστατικού Λογισμικού προχωράμε στο τρίτο στάδιο και στην εισαγωγή του σε ένα ήδη υπάρχον Android Έργο ή στη δημιουργία ενός νέου Android Έργου το οποίο θα περιέχει το Συστατικό Λογισμικού που δημιουργήθηκε. Είναι πιθανό, όπως θα φανεί και στη συνέχεια, να χρειαστούν ορισμένες αλλαγές ή τροποποιήσεις προκειμένου να «ταιριάξει» το Συστατικό Λογισμικού σε ένα ήδη υπάρχον Έργο. Ιδανικά μπορούν να γίνουν βελτιώσεις στο Συστατικό Λογισμικού προκειμένου να βελτιωθεί η ποιότητά του, ωστόσο θα πρέπει να αποφεύγονται Έργα τα οποία δεν είναι ποιοτικά αξιόλογα με την ελπίδα ότι θα βελτιωθούν στη συνέχεια, καθώς κάτι τέτοιο ανεβάζει υψηλά το επίπεδο δυσκολίας, και ξεφεύγει από την ιδέα του επαναχρησιμοποιήσιμου Συστατικού Λογισμικού. -36-

43 6 Αποτελέσματα Στη συγκεκριμένη παράγραφο θα παρουσιαστεί αναλυτικά η διαδικασία που ακολουθήθηκε για την εξαγωγή ενός Συστατικού Λογισμικού η οποία συνοψίζεται στα τρία στάδια που αναφέρθηκαν στην προηγούμενη παράγραφο (βλ. Εικόνα 6.1). Μέσω ενός παραδείγματος που αφορά το πρώτο Συστατικό Λογισμικού το οποίο βρέθηκε θα παρουσιαστεί και η μέθοδος που ακολουθήθηκε. Στη συνέχεια του κεφαλαίου θα παρουσιαστούν και τα υπόλοιπα Συστατικά Λογισμικού τα οποία εντοπίστηκαν με πιο σύντομο τρόπο. Στο τέλος του Κεφαλαίου θα παρουσιαστεί μια εφαρμογή η οποία αναπτύχθηκε αποκλειστικά από επαναχρησιμοποιήσιμα Συστατικά Λογισμικού. 1 ο Στάδιο 2 ο Στάδιο 3 ο Στάδιο Εντοπισμός Πιθανού Component Εξαγωγή Component Χρήση Component Εικόνα 6.1: Τα τρία στάδια που ακολουθούνται για τον εντοπισμό, την εξαγωγή και την χρήση των Συστατικών Λογισμικού 6.1 About Component 1 ο Στάδιο Εντοπισμός του πιθανού Component Το πρώτο Συστατικό Λογισμικού το οποίο θα παρουσιαστεί προέρχεται από ένα παιχνίδι, το Sokoban. Το Sokoban είναι ένα παιχνίδι από την κατηγορία Puzzle games και βρέθηκε μέσω του F-droid, ενός FOSS (Free and Open Source Software) Repository. Αρχικά αφού κατέβει ο κώδικας του συγκεκριμένου Έργου, είτε μέσω Git Hub, είτε απευθείας από το F-droid, το επόμενο βήμα είναι η δημιουργία ενός Android Έργου -37-

44 προκειμένου να διαπιστωθεί αν το συγκεκριμένο Έργο έχει όντος κάποια λειτουργία η οποία θα μπορούσε να φανεί χρήσιμη και να αποτελέσει ένα Συστατικό Λογισμικού. Για τη δημιουργία νέου Android Έργου στο Eclipse το οποίο θα βασίζεται σε ήδη υπάρχον κώδικα, είτε θα ακολουθηθεί η διαδρομή File/New/Project/Android/Android Project from Existing Code και στο Root Directory θα μπει η διεύθυνση που είναι αποθηκευμένος ο κώδικας της εφαρμογής, είτε θα ακολουθηθεί η διαδρομή File/Import/Android/Existing Android Code into Workspace και πάλι στο Root Directory θα μπει η διεύθυνση του φακέλου που είναι αποθηκευμένος ο κώδικας. Στη συνέχεια τρέχουμε το συγκεκριμένο Έργο (run) και επιλέγουμε την εικονική συσκευή (AVD) στην οποία θέλουμε να γίνει η εγκατάσταση της εφαρμογής. Το αποτέλεσμα που θα δούμε είναι η εφαρμογή να τρέχει στον Emulator στη συσκευή που επιλέξαμε. Έπειτα επεξεργαζόμαστε την εφαρμογή προκειμένου να εντοπίσουμε κάποια πιθανά Συστατικά Λογισμικού. Ένα Συστατικό Λογισμικού θα μπορούσε να είναι το κουμπί About το οποίο εμφανίζει μια οθόνη με πληροφορίες για τον κατασκευαστή της εφαρμογής, την ιστοσελίδα της και κάποιες χρήσιμες πληροφορίες για αυτή (βλ. Εικόνα 6.2). Η συγκεκριμένη λειτουργία, παρόλο που αποτελεί ένα σχετικά απλό Συστατικό Λογισμικού είναι ιδιαίτερα χρήσιμη καθώς κάθε εφαρμογή περιλαμβάνει μια ανάλογη λειτουργία. Εικόνα 6.2: Η οθόνη που εμφανίζεται με το πάτημα του κουμπιού About -38-

45 2 ο Στάδιο Εξαγωγή του Component Στη συνέχεια εισάγεται το συγκεκριμένο Έργο στο COPE, προκειμένου να εξαχθεί το Συστατικό Λογισμικού. Για την επεξεργασία του Έργου στο COPE, απαιτείται η δημιουργία ενός Reuse Project, η δημιουργία του οποίου προϋποθέτει τη χρήση τριών επιμέρους αντικειμένων artifacts (βλ. Εικόνες 6.3, 6.4). Εικόνα 6.3: Το περιβάλλον του COPE για τη δημιουργία ενός νέου Reuse Project Εικόνα 6.4: Τα Artifacts που απαιτούνται για τη δημιουργία ενός νέου Reuse Project -39-

46 Το πρώτο το οποίο εισάγεται είναι το δυαδικό αρχείο του μεταγλωττισμένου (compiled) προγράμματος, το οποίο στην περίπτωση της Java είναι ένα Java Archive (δηλαδή ένα.jar αρχείο). Το.jar αρχείο δημιουργείται από μόνο του στον φάκελο Workspace του Eclipse ή παράγεται με δεξί κλικ πάνω στο Project ακολουθώντας τη διαδρομή Export/Java/Jar file. Το δεύτερο που χρειάζεται είναι οι βιβλιοθήκες που χρησιμοποιεί το συγκεκριμένο Έργο, δηλαδή τα διάφορα Dependencies τα οποία μπορεί να υπάρχουν (φαίνονται στον Project Manager του Eclipse, βλ. Εικόνα 6.5). Τέλος εισάγεται ο φάκελος στον οποίο βρίσκεται ο κώδικας με τα.java αρχεία. Όσο αναφορά τον φάκελο που βρίσκεται ο κώδικας είναι σημαντικό να επισημανθεί πως στο σημείο αυτό εισάγουμε τον φάκελο στον οποίο περιέχεται ολόκληρο το αρχικό πακέτο του κώδικα με τα αρχεία.java. Στα Android Έργα ο κώδικας βρίσκεται στον φάκελο Src (βλ. Παράγραφο 3.5). Εικόνα 6.5: Τα δύο Dependencies που υπάρχουν στο Έργο, το android.jar και το annotations.jar Αφού δημιουργηθεί το Reuse Project, εκτελούμε Στατική Ανάλυση προκειμένου να δοθούν πληροφορίες σχετικά με το Έργο. Η Στατική Ανάλυση, γίνεται προκειμένου να αναλυθεί ο κώδικας στατικά (χωρίς την εκτέλεσή του), και να υπολογιστούν ορισμένες μετρικές καθώς και οι εξαρτήσεις ανάμεσα στις κλάσεις του προγράμματος. Αφού διεξαχθεί η Στατική Ανάλυση ο χρήστης ειδοποιείται με το μήνυμα που φαίνεται στην Εικόνα

47 Εικόνα 6.6: Το παράθυρο διαλόγου μετά τη διεξαγωγή στατικής Ανάλυσης Τα αποτελέσματα της Στατικής Ανάλυσης φαίνονται στις στήλες της κύριας οθόνης του COPE. Αρχικά στην πρώτη στήλη φαίνεται το όνομα της κλάσης για την οποία υπολογίστηκαν οι μετρικές. Στη δεύτερη στήλη φαίνεται ο τύπος της κλάσης, δηλαδή εάν είναι κλάση Αφαίρεσης (Abstract Class) αν είναι απλή κλάση (Class) ή αν πρόκειται για κάποιο Interface κτλ. Στην επόμενη στήλη φαίνεται το μέγεθος της κλάσης σε bytes ενώ στις τρείς επόμενες στήλες - Used By, Uses(I), Uses(E) - φαίνονται αντίστοιχα οι κλάσεις οι οποίες χρησιμοποιούν την συγκεκριμένη κλάση, οι εσωτερικές κλάσεις τις οποίες χρησιμοποιεί η κλάση και οι εξωτερικές κλάσεις τις οποίες χρησιμοποιεί η κλάση. Παράλληλα μπορεί κανείς να δει, στην έβδομη στήλη το στρώμα-layer στο οποίο βρίσκεται η συγκεκριμένη κλάση με βάση τον Κατευθυνόμενο Μη κυκλικό Γράφο (Directed Acyclic Graph - DAG). Στις επόμενες οκτώ στήλες φαίνονται οι μετρικές Chidamber & Kemerer Java Metrics οι οποίες χρησιμοποιούνται προκειμένου να υπολογιστεί η τιμή του R (Reusability Index). Το R χρησιμοποιείται προκειμένου να δείξει το κατά πόσο είναι επαναχρησιμοποιήσιμη μια κλάση. Όσο μεγαλύτερος ο αριθμός του R τόσο πιο επαναχρησιμοποιήσιμη είναι η συγκεκριμένη κλάση, ενώ ενδέχεται να έχει και αρνητικές τιμές. Στην προτελευταία στήλη, φαίνεται το εάν μια κλάση εμπλέκεται σε κάποιο Software Pattern. Στη συγκεκριμένη περίπτωση καμία από τις κλάσεις δεν εμπλέκεται σε κάποιο Pattern, όπως φαίνεται και -41-

48 από τις τιμές της στήλης Pattern No involvement in any pattern. Τέλος η τελευταία στήλη δείχνει το Cluster Size της συγκεκριμένης κλάσης, δηλαδή τον αριθμό των κλάσεων οι οποίες απαιτούνται προκειμένου η κλάση να εκτελεί μια λειτουργία ως αυτόνομο Συστατικό Λογισμικού, ανεξάρτητα από το υπόλοιπο Έργο. Στην Εικόνα 6.7 φαίνονται τα αποτελέσματα της Στατικής Ανάλυσης και με κόκκινο χρώμα επισημαίνεται η κλάση SokobanAboutActivity, η οποία θα παράγει το επιθυμητό Συστατικό Λογισμικού. Προκειμένου να εξαχθεί το Συστατικό Λογισμικού αρχικά επιλέγεται η συγκεκριμένη κλάση και έπειτα με δεξί κλικ επιλέγεται το Extract Component From Here. Εικόνα 6.7: Οι μετρικές που προκύπτουν έπειτα από τη Στατική Ανάλυση του Έργου. Στη συνέχεια δίνεται το κατάλληλο όνομα στο Συστατικό Λογισμικού (έστω AboutComponent ), και επιλέγεται το Generate Component. Με το κουμπί Show Generated Files εμφανίζεται το URL του Συστατικού Λογισμικού που δημιουργήθηκε. Το Συστατικό Λογισμικού το οποίο δημιουργήθηκε περιλαμβάνει μια μόνο κλάση την κλάση SokobanAboutActivity, γεγονός το οποίο ήταν αναμενόμενο καθώς το Cluster size της κλάσης ήταν 1 και επίσης πρόκειται για ένα απλό Συστατικό Λογισμικού. -42-

49 3 ο Στάδιο Χρήση του Component Τελικός στόχος της όλης διαδικασίας είναι να δημιουργηθεί ένα Έργο στο οποίο θα ενταχθεί το Συστατικό Λογισμικού προκειμένου να επιβεβαιωθεί η λειτουργία του. Για να γίνει αυτό πρέπει να δημιουργηθεί ένα νέο Έργο στο Eclipse με βάση τον κώδικα του Συστατικού Λογισμικού ακολουθώντας τη διαδρομή File/New/Project/Android/ Android Project from Existing Code, με Root Directory το Directory του AboutComponent, δηλαδή τον φάκελο που παρήγαγε το COPE. Το Συστατικό Λογισμικού που δημιουργήθηκε, τρέχει χωρίς να παρουσιάζει κάποιο σφάλμα, ωστόσο τα αποτελέσματα της λειτουργίας του δεν είναι ορατά, εφόσον δεν καλείται κάπου η oncreate() συνάρτησή του. Στην περίπτωση που αναφερόμασταν σε Έργα Java (Java Projects), προκειμένου να πάρουμε κάποια αποτελέσματα, θα έπρεπε να δημιουργηθεί μια συνάρτηση main() μέσα στην οποία θα καλείται το Συστατικό Λογισμικού που δημιουργήθηκε. Ωστόσο, όπως αναφέρθηκε σε προηγούμενα κεφάλαια, τα Android Έργα, σε αντίθεση με τα περισσότερα Έργα (πχ Java projects), δεν έχουν μια συνάρτηση main(), από την οποία να ξεκινάει η εκτέλεση του προγράμματος. Αυτό συνεπάγεται τη μη ύπαρξη ενός και μόνο σημείου εκκίνησης, γεγονός το οποίο δίνει τη δυνατότητα σε οποιαδήποτε εφαρμογή να μπορεί να καλέσει οποιοδήποτε κομμάτι άλλης εφαρμογής επιθυμεί στέλνοντας ένα μήνυμα (intent) στο σύστημα. Συνεπώς, εφόσον δεν μπορεί να δημιουργηθεί μια main() συνάρτηση όπως γίνεται στα Java Έργα, θα πρέπει να δημιουργηθεί μια αντίστοιχη Android-main() συνάρτηση μέσα στην οποία θα δημιουργείται το Συστατικό Λογισμικού και θα καλείται η oncreate() μέθοδός του. Προκειμένου τα αποτελέσματα της δημιουργίας του Συστατικού Λογισμικού να είναι ορατά στον χρήστη, θα πρέπει η εφαρμογή που δημιουργήθηκε με βάση το Συστατικό Λογισμικού, να τροποποιηθεί έτσι ώστε να έχει μια αρχική οθόνη η οποία θα παρουσιάζει στον χρήστη ένα κουμπί, με το πάτημα του οποίου θα καλείται το AboutComponent, μεταφέροντας τον χρήστη στη δεύτερη οθόνη η οποία θα δείχνει τα στοιχεία της εφαρμογής (βλ. Εικόνα 5.3.1). Όπως αναφέρθηκε στο Κεφάλαιο 3, μια οθόνη UI, στον κώδικα αναπαριστάται με μια Activity κλάση, ενώ γραφικά αντιπροσωπεύεται με ένα layout αρχείο. Συνεπώς θα πρέπει να υπάρχουν δύο Activities και δύο layout αρχεία. Δεδομένου ότι το AboutComponent, το οποίο εξήχθη από το COPE περιέχει τα απαραίτητα αρχεία που χρειάζεται, δηλαδή μια κλάση και ένα layout αρχείο, είναι απαραίτητη η δημιουργία μιας μόνο νέας κλάσης. Η νέα -43-

50 αυτή κλάση θα πρέπει να είναι μια Activity κλάση, η οποία θα δημιουργεί ένα κουμπί το οποίο θα μεταφέρει τον χρήστη στην οθόνη About (βλ. Εικόνα 5.3.1). Για τη γραφική απεικόνιση του κουμπιού είναι απαραίτητη η δημιουργία ενός ακόμα layout αρχείου. Το αρχείο αυτό ονομάζεται menu.xml και ορίζεται με τη βοήθεια της XML για ευκολία (βλ. Εικόνα 5.3.3). Εικόνα 5.3.3: Το layout αρχείο menu.xml. Αποθηκεύεται στον φάκελο res/layout/menu.xml Για τη δημιουργία της νέας Activity κλάσης δημιουργείται ένα νέο java αρχείο, μέσα στο οποίο θα οριστεί η νέα κλάση με το όνομα SokobanMenuActivity (βλ. Εικόνα 5.3.4), η οποία λειτουργεί σαν Main Activity προκειμένου να είναι εμφανή στον χρήστη τα αποτελέσματα της εκτέλεσης του Συστατικού Λογισμικού. Η κλάση αυτή επεκτείνει (extends) την Android κλάση Activity έτσι ώστε να μπορεί να χρησιμοποιεί τις μεθόδους της. Μέσα στην κλάση αυτή θα πρέπει να κληθεί η συνάρτηση oncreate(), βλ. γραμμή 16, η οποία θα κληθεί κατά τη δημιουργία της. Έτσι αυτό το οποίο θα πρέπει να κάνει η συγκεκριμένη συνάρτηση είναι να ορίζει το περιεχόμενο της οθόνης την οποία θα δει ο χρήστης. Αυτό το οποίο θα δει ο χρήστης πρέπει να είναι ένα κουμπί About, με το πάτημα του οποίου θα μεταφέρεται στην άλλη οθόνη. Οπότε καλείται η συνάρτηση setcontentview(), βλ. γραμμή 19, η οποία παίρνει σαν όρισμα το layout αρχείο που θα εμφανίσει. Στη συνέχεια είναι απαραίτητος ο ορισμός του κουμπιού που θα εμφανιστεί, βλ. γραμμή 24, έτσι ώστε να «ακούει» τα πατήματα του χρήστη. Για να γίνουν αυτά, αρχικά ορίζεται ένα νέο κουμπί και στη συνέχεια ενεργοποιείται ένας Listener («Ακροατής»), βλ. γραμμή 25, ο οποίος όταν λάβει-«ακούσει» ένα πάτημα του χρήστη στο συγκεκριμένο κουμπί θα εκτελέσει κάποια ενέργεια. Η ενέργεια αυτή στη -44-

51 συγκεκριμένη περίπτωση είναι η μεταφορά του χρήστη στην About οθόνη. Όπως έχει αναφερθεί στο Κεφάλαιο 3, για να ενεργοποιηθεί ένα συστατικό αποστέλλεται ένα μήνυμα (Intent) στο σύστημα με την πρόθεση αυτή και το σύστημα αναλαμβάνει να την εκτελέσει. Έτσι, προκειμένου να μεταφερθεί ο χρήστης στη νέα οθόνη, ορίζεται ένα νέο Intent το οποίο θα κάνει αυτή τη μεταφορά εφικτή, βλ. γραμμές Εικόνα 5.3.4: Η κλάση SokobanMenuActivity Προκειμένου η νέα αυτή κλάση να αναγνωριστεί από την εφαρμογή θα πρέπει να γίνει ο κατάλληλος ορισμός της νέας Activity στο αρχείο AndroidManifest.xml, καθώς χωρίς αυτόν δεν γίνεται γνωστή η ύπαρξη της συγκεκριμένης κλάσης. Το COPE όταν εξάγει ένα Android Συστατικό Λογισμικού εξάγει και το αρχείο Android Manifest του συγκεκριμένου Έργου. Το κάθε Έργο όμως, εκτελεί ένα πλήθος λειτουργιών, οι οποίες δεν είναι απαραίτητες για να μπορέσει να εκτελεστεί το ένα μόνο Συστατικό -45-

52 Λογισμικού. Συνεπώς θα πρέπει να γίνουν οι κατάλληλες τροποποιήσεις στο AndroidManifest.xml προκειμένου στοιχεία τα οποία ορίζονται αλλά δεν χρησιμοποιούνται στο Συστατικό Λογισμικού, όπως Activities, Intent-filters κτλ να διαγράφονται. Το κομμάτι το οποίο θα πρέπει να κρατηθεί από το AndroidManifest.xml το αρχικού Έργου φαίνεται στην Εικόνα και εισάγεται στο AndroidManifest του νέου Έργου. Εικόνα 5.3.5: Ο ορισμός της SokobanAboutActivity μέσα στο AndroidManifest.xml Αλλαγές θα πρέπει να γίνουν και στο layout αρχείο του AboutComponent, έτσι ώστε να εμφανίζει στοιχεία για την εφαρμογή στην οποία θα χρησιμοποιείται και όχι για την εφαρμογή Sokoban. Στη συνέχεια του κεφαλαίου όπου θα χρησιμοποιηθεί το συγκεκριμένο Συστατικό Λογισμικού θα φανούν και οι αλλαγές που χρειάζονται. Το τελικό αποτέλεσμα το οποίο προκύπτει από την εκτέλεση του Συστατικού Λογισμικού είναι μια αρχική οθόνη η οποία εμφανίζει ένα κουμπί About, το πάτημα του οποίου μεταφέρει τον χρήστη στην δεύτερη οθόνη της εφαρμογής όπου φαίνονται οι πληροφορίες σχετικά με την εφαρμογή (βλ. Εικόνα 5.3.6). Εικόνα 5.3.6: Οι δύο οθόνες του AboutComponent -46-

53 6.2 Music Component Το Συστατικό Λογισμικού το οποίο θα παρουσιαστεί στη συνέχεια προέρχεται από το Έργο Sudoku, το οποίο περιλαμβάνεται στο βιβλίο του Ed Brunette με τίτλο Hello Android [7]. Πρόκειται για ένα Συστατικό Λογισμικού το οποίο προσθέτει μουσική στην εφαρμογή, πατώντας το Menu Button της συσκευής και επιλέγοντας το checkbox με τίτλο Μusic (βλ. Εικόνα 6.1). Θεωρήθηκε αρκετά χρήσιμο καθώς πολλές εφαρμογές δίνουν τη δυνατότητα στο χρήστη να ακούει μουσική την ώρα που εκτελούνται. Παράλληλα το συγκεκριμένο Έργο είναι αρκετά καλογραμμένο και το επίπεδο ποιότητάς του είναι αρκετά υψηλό, ενώ τρέχοντάς το στον Emulator παρατηρείται ότι και η απόδοσή του είναι επίσης υψηλή. Συνεπώς αξίζει να αναζητηθούν Συστατικά Λογισμικού στο συγκεκριμένο Έργο, και για αυτό εισάγεται στο COPE για περαιτέρω ανάλυση. Εικόνα 6.1: Η οθόνη μετά το πάτημα του Menu Button στην εφαρμογή Sudoku. Με τον ίδιο τρόπο που παρουσιάστηκε στο προηγούμενο Κεφάλαιο, εισάγεται το Έργο στο COPE και δημιουργείται ένα νέο Reuse Project. Στη συνέχεια, έπειτα από τη Στατική Ανάλυση του Έργου παρατηρούμε τις κλάσεις οι οποίες εμφανίζονται και εντοπίζουμε την κλάση Music. Η συγκεκριμένη κλάση έχει cluster size 2 (βλ. Εικόνα -47-

54 6.2), και συνεπώς στο Συστατικό Λογισμικού το οποίο θα εξαχθεί θα περιλαμβάνονται 2 κλάσεις. Εικόνα 6.2: Το Έργο μετά την εισαγωγή του στο COPE και την εκτέλεση Στατικής Ανάλυσης Παράλληλα από τα αποτελέσματα της Στατικής Ανάλυσης, παρατηρείται ότι η κλάση Music είναι μια απλή κλάση, το μέγεθός της είναι 1019 bytes, χρησιμοποιείται από άλλες δύο κλάσεις, ενώ η ίδια χρησιμοποιεί μια εσωτερική και τρεις εξωτερικές κλάσεις. Παρατηρείται ακόμα ότι η τιμή της R είναι σχετικά μεγάλη, και βρίσκεται σε χαμηλό επίπεδο στον δίγραφο DAG, γεγονότα τα οποία δείχνουν πως πρόκειται για ένα αρκετά επαναχρησιμοποιήσιμο Συστατικό Λογισμικού. Τέλος φαίνεται να μην έχει κάποια ανάμειξη σε Πρότυπα Λογισμικού (Software Pattern). Με τα στοιχειά αυτά τα -48-

55 οποία δίνει το COPE, μπορούν να βγουν κάποια αρχικά συμπεράσματα, όπως το αν είναι όντως μια επαναχρησιμοποιήσιμη κλάση, το αν χρησιμοποιείται από άλλες κτλ. Συνεπώς από την Στατική Ανάλυση και μόνο, χωρίς να εξεταστεί καθόλου ο κώδικας του προγράμματος, μπορεί ο Μηχανικός Επαναχρησιμοποίησης να πάρει ορισμένες αποφάσεις σχετικά με το αν θα προχωρήσει με την εξαγωγή κάποιου Συστατικού Λογισμικού ή όχι. Στη συγκεκριμένη περίπτωση αποφασίζεται εξαγωγή ενός Συστατικού Λογισμικού από την κλάση Music. Αφού ακολουθηθούν τα βήματα τα οποία περιγράφηκαν πιο πάνω, το Συστατικό Λογισμικού αποτελείται από δύο κλάσεις. Την κλάση Music και την κλάση Prefs, οι οποίες θα αναλυθούν στη συνέχεια. Όπως φαίνεται και από τον κώδικα της κλάσης Prefs (βλ. Εικόνα 6.3) η συγκεκριμένη κλάση επεκτείνει (extends) μία από τις βασικές κλάσεις του Android την PreferenceActivity. Εικόνα 6.3: Ο κώδικας της κλάσης Prefs -49-

56 Με τη συγκεκριμένη κλάση μπορούν να οριστούν διάφορες ρυθμίσεις της εφαρμογής. Οι ρυθμίσεις ελέγχονται από ένα αρχείο το οποίο τοποθετείται στον φάκελο res/xml, με όνομα settings.xml (βλ. Εικόνα 6.4). Το αρχείο αυτό περιέχει την οθόνη προτιμήσεων, (Preference Screen), η οποία στην περίπτωση του Music Component θα περιέχει απλά ένα Checkbox, το οποίο ο χρήστης θα ενεργοποιεί εφόσον επιθυμεί να εισάγει μουσική στην εφαρμογή (βλ. Εικόνα 6.5). Εικόνα 6.4: Το αρχείο settings.xml Αξίζει να σημειωθεί ότι παρόλο που πρόκειται για ένα αρχείο το οποίο προσδιορίζει ένα layout δεν τοποθετείται στον φάκελο res/layout καθώς προσδιορίζει τις ρυθμίσεις της εφαρμογής, οπότε αναλαμβάνει το σύστημα με την κλήση της συνάρτησης addpreferencefromresource() να φορτώσει το συγκεκριμένο xml αρχείο από τους πόρους του συστήματος. Εικόνα 6.5: Η νέα οθόνη Preference Screen Η κλάση PreferenceActivity συνιστάται ιδιαίτερα καθώς προσφέρει ένα συνεπές UI με άλλες εφαρμογές αλλά και με το ίδιο το σύστημα ενώ παράλληλα αυτοματοποιεί -50-

57 ορισμένες διαδικασίες. Για αυτό το λόγο και το συγκεκριμένο Συστατικό Λογισμικού θεωρήθηκε χρήσιμο. Γενικά ένας developer όταν αναπτύσσει μια εφαρμογή πρέπει να έχει στο μυαλό του τόσο το σύστημα στο οποίο θα τρέχει η εφαρμογή του (στην συγκεκριμένη περίπτωση το Android) αλλά και τις άλλες εφαρμογές οι οποίες θα τρέχουν σε αυτό, καθώς καλό είναι να ακολουθείται ένα όσο το δυνατόν πιο συνεπές περιβάλλον για όλες τις εφαρμογές, προκειμένου να μην προκαλείται σύγχυση στον χρήστη. Στην περίπτωση των Android εφαρμογών, υπάρχει ειδικό κομμάτι στην ιστοσελίδα η οποία αφορά τους developers, με οδηγίες σχεδίασης, προκειμένου η κάθε εφαρμογή να εμπλουτίζει αυτό το οποίο αναφέρουν ως Android Experience (εμπειρία Android) [8]. Στη σελίδα αυτή δίνονται ορισμένες συμβουλές σχεδίασης οι οποίες εκφράζουν ορισμένους από τους κανόνες οι οποίοι αναφέρθηκαν στην παράγραφο 2.4, με παραδείγματα. Ωστόσο, για τις ανάγκες του Έργου Sudoku, υπήρχε και μια άλλη ρύθμιση η οποία περιλαμβάνεται στην κλάση. Η ρύθμιση αυτή αφορά στη δυνατότητα η οποία δίνεται στον χρήστη να επιλέξει εάν επιθυμεί κατά τη διάρκεια του παιχνιδιού να δίνονται συμβουλές - βοήθεια (hints) όσο αναφορά το παιχνίδι. Η συγκεκριμένη λειτουργία ωστόσο είναι πολύ συγκεκριμένη και αφορά μόνο παιχνίδια Sudoku. Κατά αυτό τον τρόπο, η λειτουργία αυτή είναι επαναχρησιμοποιήσιμη μόνο σε περιπτώσεις ανάπτυξης παιχνιδιών Sudoku. Έτσι αποφεύγεται η δημιουργία ενός τέτοιου Συστατικού Λογισμικού και συνεπώς ο κώδικας που αφορά τη λειτουργία αυτή μπορεί να διαγραφεί από το Συστατικό Λογισμικού. Είναι επιθυμητό, στα διάφορα Συστατικά Λογισμικού που εξάγονται από το COPE να γίνονται ορισμένες τροποποιήσεις προκειμένου να μην περιέχονται κομμάτια κώδικα τα οποία δεν είναι απαραίτητα και απλώς αυξάνουν την πολυπλοκότητα του προγράμματος. Το νόημα της δημιουργίας Επαναχρησιμοποιήσιμων Συστατικών Λογισμικού είναι να δημιουργηθούν συστατικά λογισμικού τα οποία θα είναι επαναχρησιμοποιήσιμα από αρκετούς developers. Το να βρεθεί ένα Συστατικό Λογισμικού το οποίο εκτελεί μια πολύ συγκεκριμένη λειτουργία, είναι πιθανό να χρησιμοποιηθεί από ελάχιστους developers, γεγονός που συνεπάγεται ότι δεν αξίζει να αφιερωθεί χρόνος για αυτό. Συνεπώς, έπειτα από τις απαιτούμενες τροποποιήσεις που έγιναν, δηλαδή έπειτα από τη διαγραφή του κώδικα που αφορούσε τη δημιουργία hints, η νέα κλάση Prefs φαίνεται στην Εικόνα

58 Εικόνα 6.6: Η κλάση Prefs μετά τη διαγραφή μη απαραίτητων λειτουργιών Η δεύτερη κλάση η οποία εξάγεται από το COPE είναι η κλάση Music (βλ. Εικόνα 6.7). Η συγκεκριμένη κλάση ορίζει τις συναρτήσεις start() και stop(), οι οποίες είναι υπεύθυνες για την έναρξη και τη διακοπή της μουσικής αντίστοιχα αλλά και για την φόρτωση του τραγουδιού. Η κλάση Music χρησιμοποιεί την κλάση Media Player η οποία δίνεται έτοιμη από το σύστημα και είναι υπεύθυνη για τον έλεγχο της αναπαραγωγής μουσικής και βίντεο, και παρέχει όλες τις απαραίτητες μεθόδους. Εικόνα 6.7: Η κλάση Music -52-

59 Στη συνέχεια, αφού έγιναν οι απαραίτητες τροποποιήσεις, το επόμενο βήμα είναι η δημιουργία ενός νέου Έργου με βάση τον κώδικα του Music Component. Συνεπώς σε περιβάλλον Eclipse δημιουργείται ένα νέο Android Έργο με βάση τον ήδη υπάρχον κώδικα. Το Συστατικό Λογισμικού όπως είναι αναμενόμενο εκτελείται αλλά ο χρήστης δεν είναι σε θέση να δει κάποιο αποτέλεσμα. Ως εκ τούτου, θα πρέπει να δημιουργηθεί μια νέα κλάση, η οποία θα καλεί το Συστατικό Λογισμικού (βλ. Εικόνα 6.8) Εικόνα 6.8: Η κλάση MyMainActivity -53-

60 Έτσι δημιουργείται η κλάση MyMainActivity, η οποία θα λειτουργεί σαν αρχική οθόνη προκειμένου να εμφανίζει στον χρήστη ένα μήνυμα ώστε να τον καθοδηγεί να πατήσει το Menu Button της συσκευής του, και έτσι να δει τα αποτελέσματα της εκτέλεσης του Music Component που δημιουργήθηκε. Συνεπώς δημιουργείται ένα νέο αρχείο Java, το MyMainActivity.java, το οποίο περιλαμβάνει τη συγκεκριμένη κλάση. Η κλάση αυτή, αποτελείται από τρία κομμάτια. Το πρώτο κομμάτι (γραμμές 13-17), περιλαμβάνει τη δημιουργία της αρχικής οθόνης η οποία θα εμφανίζει ένα μήνυμα προτρέποντας τον χρήστη να πατήσει το Menu Button. Το δεύτερο κομμάτι (γραμμές 20-30) αποτελείται από τον κώδικα ο οποίος καλεί τις συναρτήσεις της κλάσης Music προκειμένου να ξεκινήσει ή να σταματήσει η αναπαραγωγή μουσικής. Το τρίτο και τελευταίο κομμάτι (γραμμές 32-50), αναλαμβάνει τη δημιουργία του μενού το οποίο θα εμφανίζεται με το πάτημα του Menu Button καθώς και τις λειτουργίες τις οποίες θα περιλαμβάνει. Το πρώτο κομμάτι κώδικα θέτει το περιεχόμενο της αρχικής οθόνης να είναι ένα XML αρχείο, το main.xml (βλ. Εικόνα 6.9). Το αρχείο αυτό απλά εμφανίζει το κείμενο If you click the menu button you can see the Music Component. Το κείμενο αυτό δεν θα εμφανίζεται σε καμία εφαρμογή, απλώς στη συγκεκριμένη περίπτωση για λόγους επίδειξης του Συστατικού Λογισμικού προστίθεται προκειμένου να κάνει πιο εμφανές το τι πρέπει να κάνει ο χρήστης. Εικόνα 6.9: Το αρχείο main.xml Στο σημείο αυτό, αξίζει να σημειωθεί η προειδοποίηση την οποία εμφανίζει ο Compiler (γραμμή 9), όπου επισημαίνει πως το κείμενο το οποίο εμφανίζεται στον χρήστη ( If you click the menu button ) είναι προτιμότερο να αποθηκεύεται στο αρχείο strings.xml. Ο λόγος για τον οποίο επισημαίνεται η συγκεκριμένη προειδοποίηση είναι πως για λόγους βελτίωσης της απόδοσης, αλλά κυρίως για ευκολία -54-

61 μετάφρασης των διάφορων εφαρμογών σε άλλες γλώσσες είναι προτιμότερο όλα τα κείμενα τα οποία εμφανίζει μια εφαρμογή να αποθηκεύονται στο αρχείο strings.xml στον φάκελο values των πόρων της εφαρμογής (resources, φάκελος res). Έτσι είναι προτιμότερο στο αρχείο main.xml, το κείμενο να αποθηκευτεί στη μεταβλητή instructions_text (βλ. Εικόνα 6.10α), και στη συνέχεια το instructions_text να οριστεί στο αρχείο strings.xml (βλ. Εικόνα 6.10β). (α) αρχείο main.xml <string name="instructions_text">\ If you click on the menu button you can see the Music Component. </string> (β) αρχείο strings.xml Εικόνα 6.10: Η τροποποίηση για την αποθήκευση κειμένων Το MusicComponent το οποίο εξήχθη από το COPE, στους πόρους του συστήματος περιλαμβάνει ένα αρχείο μουσικής το οποίο θα ακούγεται εφόσον ενεργοποιηθεί το checkbox Music από τον χρήστη. Το αρχείο αυτό, με όνομα main.mp3, είναι αποθηκευμένο στον φάκελο res raw main.mp3, και πρόκειται για ένα τραγούδι ενός λεπτού με χαμηλή σχετικά ποιότητα ήχου. Εφόσον ο ήχος θα ακούγεται από κινητές συσκευές και όχι από κάποιο στερεοφωνικό σύστημα ήχου τελευταίας τεχνολογίας, και συνεπώς η ποιότητα δεν παίζει καθοριστικό ρόλο, θα ήταν σοφό να χρησιμοποιηθεί ένα μικρό σε μέγεθος αρχείο με χαμηλή σχετικά ποιότητα ήχου προκειμένου η εφαρμογή να είναι πιο μικρή σε μέγεθος και να έχει υψηλότερη απόδοση. Τέλος θα πρέπει να γίνουν οι κατάλληλες αλλαγές στο αρχείο AndroidManifest.xml το οποίο είναι το Manifest της εφαρμογής Sudoku. Εφόσον δημιουργήθηκε μια νέα κλάση Activity, η MyMainActivity, θα πρέπει να οριστεί κατάλληλα και στο Manifest. Έτσι με τις ανάλογες τροποποιήσεις το AndroidManifest.xml φαίνεται στην Εικόνα Το συγκεκριμένο αρχείο περιλαμβάνει και κάποιους άλλους ορισμούς, όπως το package name, τις συσκευές στις οποίες θα τρέχει η εφαρμογή, την έκδοση Android που συνίσταται και διάφορα άλλα. Στο σημείο αυτό δεν κρίνεται απαραίτητο να γίνουν αλλαγές σε αυτά τα κομμάτια καθώς είναι χαρακτηριστικά τα οποία θα αλλάζει ο κάθε developer με βάση τη δική του εφαρμογή. -55-

62 Εικόνα 6.11: Το αρχείο AndroidManifest.xml Συνεπώς ο χρήστης εφόσον τρέξει την εφαρμογή Music Component, θα δει την αρχική οθόνη με το μήνυμα να τον καθοδηγεί να πατήσει το Menu Button, το πάτημα του οποίου θα ανοίξει ένα μενού με την επιλογή Settings η οποία θα τον μεταφέρει στην οθόνη επιλογών για να ενεργοποιήσει ή όχι τη λειτουργία της μουσικής (βλ. Εικόνα 6.12). Εικόνα 6.12: Οι οθόνες της εφαρμογής Music Component -56-

63 6.3 Quiz Component Το επόμενο Συστατικό Λογισμικού βρέθηκε σε μια εφαρμογή, την Android-flags-quiz, μέσω του GitHub. Πρόκειται για μια εφαρμογή-παιχνίδι η οποία εμφανίζει τη σημαία ενός κράτους μαζί με τέσσερις πιθανές απαντήσεις χώρες. Ο χρήστης πρέπει να επιλέξει σε ποια από τις τέσσερις χώρες ανήκει η συγκεκριμένη σημαία. Η συγκεκριμένη εφαρμογή είναι ιδιαίτερα χρήσιμη καθώς μπορούν να αναπτυχθούν πολλές παρόμοιες εφαρμογές με ερωτήσεις απαντήσεις και συνεπώς μπορεί να θεωρηθεί ολόκληρη ως ένα επαναχρησιμοποιήσιμο Συστατικό Λογισμικού. Το σημείο όμως στο οποίο υστερεί είναι το γραφικό περιβάλλον και η έλλειψη επιλογών προς τον χρήστη όπως φαίνεται και στην Εικόνα Παρόλα αυτά εξακολουθεί να είναι μια χρήσιμη εφαρμογή η λειτουργικότητα της οποίας θα μπορούσε να επαναχρησιμοποιηθεί και από άλλους developers. Εικόνα 6.2.1: Η αρχική οθόνη της εφαρμογής Flags Quiz, και η επόμενη οθόνη μετά το πάτημα του κουμπιού Start game Για αυτό το λόγο αποφασίστηκε να εισαχθεί στο COPE για περαιτέρω ανάλυση. Έτσι, αρχικά δημιουργείται ένα Reuse Project και εκτελείται Στατική ανάλυση. Στη συγκεκριμένη περίπτωση, εφόσον δε θα εξαχθούν Συστατικά Λογισμικού από τη συγκεκριμένη εφαρμογή, αλλά θα θεωρηθεί η ίδια ως ένα Συστατικό Λογισμικού, παραλείπονται τα στάδια της Εξαγωγής και της Χρήσης του Component. -57-

64 6.4 Η εφαρμογή Find the Movie Στα πλαίσια της συγκεκριμένης πτυχιακής, προκειμένου να κατανοηθεί καλύτερα η διαδικασία τόσο του εντοπισμού αλλά και της χρήσης των Συστατικών Λογισμικού, αναπτύχθηκε μια εφαρμογή, η οποία αποτελείται αποκλειστικά από Επαναχρησιμοποιήσιμα Συστατικά Λογισμικού τα οποία παρουσιάστηκαν πιο πάνω. Πρόκειται για μια εφαρμογή παιχνίδι η οποία εμφανίζει μια σκηνή από μια ταινία και δίνονται στον χρήστη τέσσερις επιλογές τίτλων. Σκοπός του παιχνιδιού είναι να βρεθεί ο τίτλος ο οποίος αντιστοιχεί στην ταινία που απεικονίζεται στη σκηνή ο Component: Quiz Component Αρχικά το πρώτο Συστατικό Λογισμικού το οποίο χρησιμοποιήθηκε είναι το Quiz Component. Έτσι δημιουργείται ένα Έργο με βάση τον κώδικα του συγκεκριμένου Συστατικού Λογισμικού. Προκειμένου να εμφανίζει σκηνές ταινιών αντί να εμφανίζει σημαίες, αρκεί να τροποποιηθεί το αρχείο countries.xml και να αποθηκευτούν στους πόρους της εφαρμογής οι εικόνες από τις σκηνές των ταινιών και να διαγραφούν οι σημαίες από τον φάκελο res drawable. Η αλλαγή που γίνεται φαίνεται στις εικόνες 6.3.1α και 6.3.1β. Στο tag <name> εισάγεται το όνομα της χώρας ή της ταινίας ενώ στο tag <imagefile> εισάγεται το όνομα της εικόνας που αντιπροσωπεύει τη σημαία της χώρας ή τη σκηνή της ταινίας αντίστοιχα. Εικόνα 6.3.1α: Το αρχείο countries.xml στην περίπτωση του Flags Quiz -58-

65 Εικόνα 6.3.1β: Το αρχείο countries.xml στην περίπτωση του Find the Movie Όσο αναφορά τη λειτουργικότητα της εφαρμογής δεν χρειάζεται να γίνει κάποια άλλη αλλαγή στο Συστατικό Λογισμικού. Όσο αναφορά όμως τη γραφική απεικόνιση της εφαρμογής μπορούν να γίνουν αρκετές βελτιώσεις. Αρχικά, στην αρχική οθόνη της εφαρμογής στην οποία εμφανίζονται τα κουμπιά Start game και View scores μπορεί να προστεθεί μια εικόνα στο background ώστε η εφαρμογή να γίνει πιο ελκυστική. Αυτό γίνεται με την εισαγωγή της πιο κάτω εντολής στο layout αρχείο της αρχικής οθόνης, δηλαδή στο a_home.xml (στον φάκελο res layout). android: όπου background1 το όνομα της εικόνας η οποία θα τεθεί ως background και θα αποθηκευτεί στον φάκελο res drawable. Παράλληλα θα μπορούσαν να προστεθούν εικόνες στα κουμπιά της αρχικής οθόνης καθώς και η δυνατότητα να αλλάζουν μορφή ή χρώμα όταν πατιούνται από τον χρήστη. Για να γίνει αυτό είναι απαραίτητη η χρήση Image Buttons. Έτσι ο κώδικας του αρχείου a_home.xml (βλ. Εικόνα 6.3.2α) μετατρέπεται έτσι ώστε να χρησιμοποιεί Image Buttons (βλ. Εικόνα 6.3.2β). Εικόνα 6.3.2α : Το αρχείο a_home.xml με απλά Buttons -59-

66 Εικόνα 6.3.2β : Το αρχείο a_home.xml με Image Buttons Στον κώδικα για τα Image Buttons, αξίζει να σημειωθεί το γεγονός ότι προστέθηκε η εντολή η οποία φαίνεται στη γραμμή 14. Στο attribute src μπορεί να προστεθεί μια εικόνα η οποία θα εμφανίζεται στο κουμπί. Στην περίπτωση όμως που το κουμπί θα αλλάζει χρώμα ή μορφή τη στιγμή που πατιέται θα πρέπει στο src attribute να προστεθεί ένα xml αρχείο το οποίο θα ορίζει τις αλλαγές που θα υφίσταται το κουμπί. Έτσι προστίθεται ένα νέο αρχείο το sel_btn_start.xml ο κώδικας του οποίου φαίνεται στην εικόνα Εικόνα : Το αρχείο sel_btn_start.xml Το αρχείο αυτό χρησιμοποιείται προκειμένου να οριστεί μια Λίστα Καταστάσεων (State List). Μια Λίστα Καταστάσεων χρησιμεύει προκειμένου να παρέχονται διαφορετικές εικόνες σε ένα γραφικό (πχ Κουμπί) ανάλογα με την κατάσταση στην οποία βρίσκεται (Pressed, Focused ή Ουδέτερο). Έτσι στο xml αρχείο κάθε εικόνα αναπαριστάται με ένα στοιχείο <item> στο tag <selector>. Στη συγκεκριμένη περίπτωση χρησιμοποιήθηκε η ίδια εικόνα στις περιπτώσεις focused και default καθώς δεν είναι επιθυμητή η αλλαγή της εικόνας κατά τη μετάβαση από τη μια κατάσταση στην άλλη. Ωστόσο αξίζει να σημειωθεί πως όταν γίνεται η αλλαγή από τη μια κατάσταση στην άλλη το αρχείο xml διατρέχεται από πάνω προς τα κάτω έως ότου βρεθεί ένα <item> το οποίο να ταιριάζει στην τρέχουσα κατάσταση. Τέλος να σημειωθεί ότι θα πρέπει να προστεθούν οι αντίστοιχες εικόνες για τα κουμπιά στον -60-

67 φάκελο res drawable. Με τον ίδιο τρόπο δημιουργείται και το αρχείο sel_btn_view_scores.xml για το κουμπί View scores. Με αυτό τον τρόπο η εφαρμογή βελτιώνεται σημαντικά όσο αναφορά το γραφικό περιβάλλον της (βλ. Εικόνα 6.3.4). Εικόνα 6.3.4: Η εφαρμογή Find the Movie με βελτιωμένο UI. Δεξιά φαίνεται η οθόνη με πατημένο το κουμπί Start ο Component: About Component Στην εφαρμογή Find the Movie, θα ήταν χρήσιμο να προστεθεί και η λειτουργία ενός About box, δηλαδή μιας επιπλέον οθόνης ή ενός dialog box το οποίο θα παρέχει πληροφορίες που αφορούν την εφαρμογή. Για την προσθήκη της συγκεκριμένης λειτουργίας θα χρησιμοποιηθεί το About Component το οποίο αναλύθηκε στην Παράγραφο 6.1. Έτσι εισάγονται στην εφαρμογή ο φάκελος src ο οποίος περιέχει τα αρχεία των κλάσεων (Import/General/File System/src), οι πόροι του About Component, ο φάκελος assets και ο φάκελος libs. Σημαντικό είναι να επισημανθεί ότι εάν ένα Συστατικό Λογισμικού πρόκειται να χρησιμοποιηθεί σε ένα ήδη υπάρχον Έργο, όπως συμβαίνει με το About Component, το οποίο εισάγεται στην εφαρμογή Find the Movie, το αρχείο AndroidManifest.xml, παρόλο που περιέχεται στον φάκελο του Συστατικού Λογισμικού που εξάγει το COPE, δεν αντιγράφεται ως έχει στο ήδη υπάρχον Έργο. Ο χρήστης του Συστατικού -61-

68 Λογισμικού είναι υπεύθυνος να επιλέξει από το αρχείο αυτό τα τμήματα τα οποία αφορούν το συγκεκριμένο Συστατικό Λογισμικού και να τα εισάγει στο AndroidManifest.xml του ήδη υπάρχοντος έργου. Για να αλλάζει το χρώμα του κουμπιού About όταν πατιέται αλλά και για να προστεθεί χρώμα στο κουμπί γίνονται οι απαραίτητες αλλαγές όπως περιγράφηκαν στην προηγούμενη παράγραφο, με την προσθήκη των κατάλληλων αρχείων εικόνων και του αρχείου sel_btn_about. Προκειμένου το κείμενο το οποίο θα φαίνεται στην οθόνη όπου μεταφέρεται ο χρήστης με το πάτημα του κουμπιού να είναι το κείμενο το οποίο αφορά την εφαρμογή Find the Movie και όχι την εφαρμογή Sokoban, από την οποία και προήλθε το Συστατικό Λογισμικού, αρκεί να γίνουν οι κατάλληλες αλλαγές στο κείμενο στο αρχείο about.xml. Οπότε το τελικό αποτέλεσμα διαμορφώνεται όπως φαίνεται στην Εικόνα Εικόνα 6.3.5: Η εφαρμογή μετά την προσθήκη του About Component ο Component: Music Component Προκειμένου να εμπλουτιστεί περισσότερο η εφαρμογή Find the Movie θα προστεθεί μουσική. Για την προσθήκη της μουσικής θα χρησιμοποιηθεί το Music Component (Παράγραφος 6.2), με την εισαγωγή των αρχείων του στο ήδη υπάρχον Έργο στο Eclipse. Στην εφαρμογή Find the Movie, με το πάτημα του Menu Button εμφανιζόταν ένα dialog box στον χρήστη προκειμένου να καθορίσει τον αριθμό των ερωτήσεων που θα -62-

69 έχει το Quiz που θα δημιουργηθεί. Για να εισάγουμε μουσική στην εφαρμογή, θα πρέπει ο χρήστης με το πάτημα του Menu Button να κατευθύνεται στο ανάλογο μενού προκειμένου να επιλέξει ή όχι τη λειτουργία της μουσικής. Έτσι όταν πατιέται το Menu Button ο χρήστης θα έχει πλέον δύο επιλογές. Η πρώτη είναι να αλλάξει τις ρυθμίσεις που αφορούν τον αριθμό των ερωτήσεων του Quiz και η δεύτερη είναι να επιλέξει αν θα έχει μουσική ή όχι στην εφαρμογή. Οπότε θα πρέπει να γίνουν οι απαραίτητες τροποποιήσεις προκειμένου το αποτέλεσμα το οποίο θα δει ο χρήστης με το πάτημα του Menu Button στη συσκευή του να είναι αυτό που φαίνεται στην Εικόνα Εικόνα 6.3.6: Η οθόνη η οποία θα εμφανίζεται μετά τις ρυθμίσεις για προσθήκη μουσικής στην εφαρμογή Αρχικά απαραίτητο είναι να τροποποιηθεί και το αρχείο options.xml στον φάκελο res menu όπου περιέχονται τα στοιχεία τα οποία θα εμφανίζει το μενού έτσι ώστε να προστεθεί και το δεύτερο στοιχείο, το στοιχείο που θα μεταφέρει τον χρήστη στις επιλογές που αφορούν τη μουσική (βλ. Εικόνα 6.3.7). Εικόνα 6.3.7: Το αρχείο options.xml -63-

70 Στη συνέχεια εφόσον προστέθηκε στην εφαρμογή, μια ακόμα Activity, η κλάση Prefs η οποία προήλθε από το Music Component, είναι απαραίτητο να οριστεί στο AndroidManifest.xml. Έπειτα στην HomeActivity γίνονται οι απαραίτητες αλλαγές προκειμένου να προσδιοριστούν οι απαραίτητες λειτουργίες οι οποίες θα συμβαίνουν όταν επιλέγεται το μενού της μουσικής (βλ. Εικόνα Εικόνα 6.3.8: Η κλάση HomeActivity μετά την προσθήκη του δεύτερου στοιχείου στο μενού Όπως αντίστοιχα συμβαίνει και στην περίπτωση των ρυθμίσεων (settings), όπου καλείται η συνάρτηση gosettings() για το αντικείμενο navigator, της κλάσης ActivityNavigator, στην περίπτωση της μουσικής θα πρέπει να δημιουργηθεί μια συνάρτηση η playmusic() η οποία θα μεταφέρει τον χρήστη στην οθόνη όπου θα μπορεί να ελέγξει τις επιλογές της μουσικής. Έτσι είναι απαραίτητο να οριστεί η συνάρτηση playmusic στην ActivityNavigator (βλ. Εικόνα 6.3.9). Η συγκεκριμένη συνάρτηση θα ορίζει ένα νέο intent το οποίο θα ξεκινά την Activity Prefs. Εικόνα 6.3.9: Ο ορισμός της συνάρτησης playmusic() μέσα στην ActivityNavigator -64-

71 Τέλος καλούνται οι απαραίτητες συναρτήσεις για την έναρξη της μουσικής μέσα στην HomeActivity όπως ακριβώς προήλθαν από το MusicComponent (βλ. Εικόνα ). Εικόνα : Η κλήση των συναρτήσεων που αφορούν τη Μουσική στην κλάση Home Activity Η τελική μορφή της εφαρμογής φαίνεται στο Παράρτημα

72

73 7 Συμπεράσματα Συνοψίζοντας, μέσω των αποτελεσμάτων αυτής της εργασίας μπορεί κανείς να συμπεράνει την μεγάλη σημαντικότητα της Επαναχρησιμοποίησης. Η χρήση Συστατικών Λογισμικού συνεισφέρει ουσιαστικά σε αυτή και την καθιστά εύκολα εφαρμόσιμη. Απόδειξη για το γεγονός αυτό αποτελεί η εφαρμογή Find the Movie, η οποία δημιουργήθηκε αποκλειστικά και μόνο από Επαναχρησιμοποιήσιμα Συστατικά Λογισμικού. Με αυτό τον τρόπο ένας developer, αλλά και κάποιος ο οποίος δεν είναι ειδικός στην ανάπτυξη εφαρμογών για κινητές συσκευές, μπορεί να δημιουργήσει μια εφαρμογή με ελάχιστο κόπο σε πολύ μικρό χρονικό διάστημα. Αυτό ουσιαστικά είναι και το νόημα της Επαναχρησιμοποίησης Κώδικα, το οποίο στην συγκεκριμένη περίπτωση με την εφαρμογή Find the Movie, αποδεικνύεται εφικτό και στην πράξη. Ο κώδικας ο οποίος προστέθηκε, αλλά και οι τροποποιήσεις οι οποίες έγιναν, είχαν έναν μικρό σχετικά βαθμό δυσκολίας, ενώ το αποτέλεσμα είναι αρκετά ικανοποιητικό. Από αυτό το σημείο και έπειτα, ο οποιοσδήποτε ενδιαφέρεται να προχωρήσει περαιτέρω την εφαρμογή έχει στη διάθεσή του μια καλή βάση την οποία μπορεί να τροποποιήσει όπως επιθυμεί. Η παρούσα πτυχιακή όμως δεν σταματάει σε αυτό το σημείο. Μέχρι σήμερα έχουν εντοπιστεί και επεξεργαστεί πάνω από 20 Επαναχρησιμοποιήσιμα Συστατικά Λογισμικού, τα οποία εξυπηρετούν ένα πλήθος λειτουργιών (βλ. Πίνακα 7.1). Με αυτό τον τρόπο περισσότερες ακόμα λειτουργίες θα είναι διαθέσιμες προς επαναχρησιμοποίηση, απλουστεύοντας έτσι σημαντικά τη διαδικασία ανάπτυξης μιας εφαρμογής, δεδομένου ότι για πολλές από τις λειτουργίες θα υπάρχουν ήδη διαθέσιμα Επαναχρησιμοποιήσιμα Συστατικά Λογισμικού. Ωστόσο υπήρξαν ορισμένες δυσκολίες, πολλές από τις οποίες ξεπεράστηκαν ενώ άλλες αφήνονται ως μελλοντική εργασία. Το δυσκολότερο ίσως κομμάτι όλης της διαδικασίας η οποία ακολουθήθηκε ήταν να βρεθούν τα κατάλληλα Έργα μέσω των οποίων θα εξαχθούν τα Συστατικά Λογισμικού. Ο λόγος για τον οποίο υπάρχει δυσκολία στον εντοπισμό των Έργων είναι το γεγονός ότι εφόσον πρόκειται για έργα -67-

74 Ανοιχτού Κώδικα, δεν τηρούνται πάντα οι κανόνες ποιότητας που θα έπρεπε. Εξετάστηκαν αρκετά Έργα, τα οποία είχαν κενά στον κώδικα, η απόδοσή τους ήταν χαμηλή και συνεπώς ήταν ακατάλληλα για επαναχρησιμοποίηση. Παρόλα αυτά εντοπίστηκαν και αρκετά Έργα τα οποία ήταν ιδιαίτερα αποδοτικά και χρησιμοποιούσαν τις κατάλληλες τεχνικές όσο αναφορά την κωδικοποίηση. Α/Α Component Project 1 About About Tutorial 2 Date Picker Hello Date Picker 3 Random Music Player Google Random Music Player 4 Quiz Flags & Countries Quiz 5 Keypad Hello Android Google 6 EULA EULA Tutorial 7 Exit question box Internet tutorial 8 About page Sokoban 9 Dice GM Dice 10 Background Music Sudoku 11 Help Hot Death 12 About Hot Death 13 Help Asquare 14 About Majhong 15 Background Screen Majhong 16 Spinner Spinner Sample 17 Image Preview Multi Resolution Sample 18 Action Bar Action Bar Compat Sample 19 Progress Bar Internet Tutorial 20 Capture Photos Internet2 Tutorial Πίνακας 7.1: Τα Επαναχρησιμοποιήσιμα Συστατικά Λογισμικού τα οποία έχουν βρεθεί μέχρι σήμερα. Μια ακόμα δυσκολία αφορά στον εντοπισμό των απαραίτητων αρχείων πόρων που χρησιμοποιεί η εφαρμογή. Το COPE, αυτή τη στιγμή εξάγει τις κλάσεις οι οποίες αλληλεπιδρούν με το Συστατικό Λογισμικού, όλο τον φάκελο που περιέχει τους πόρους της εφαρμογής, το αρχείο project.properties και το αρχείο AndroidManifest.xml. Στον φάκελο με τους πόρους της εφαρμογής περιέχονται όλοι οι πόροι της εφαρμογής οι οποίοι μπορεί να μην χρησιμοποιούνται από το Συστατικό Λογισμικού που εξάγεται από το COPE. Το γεγονός αυτό, αυξάνει τόσο το μέγεθος του Συστατικού Λογισμικού όσο και την πολυπλοκότητά του. Στο μέλλον, θα μπορούσαν να γίνονται ορισμένοι έλεγχοι προκειμένου να εξακριβωθούν τα αρχεία των πόρων τα οποία είναι όντως -68-

75 απαραίτητα για το Συστατικό Λογισμικού και να αντιγράφονται μόνο αυτά στο Συστατικό Λογισμικού το οποίο εξάγει το COPE. Παράλληλα, ο χρήστης κάθε Συστατικού Λογισμικού, οφείλει να κάνει τις απαραίτητες τροποποιήσεις στο αρχείο AndroidManifest.xml. Αυτό θα μπορούσε να αποφευχθεί εάν ο κώδικας του συγκεκριμένου αρχείου ελεγχόταν έτσι ώστε να ξεχωρίζει τα κομμάτια που αφορούν το συγκεκριμένο Συστατικό Λογισμικού και να τα απομονώνει από το υπόλοιπο αρχείο. -69-

76 -70-

77 Βιβλιογραφία 1. Ivo Salmre: Writing Mobile Code, Essential Software Engineering for Building Mobile Applications, Addison Wesley, Κώστας Φάρκωνας: «2011: Η χρονιά του Android», Αφιέρωμα Ηλεκτρονικού Περιοδικού αθηνόραμαdigital.gr, διαθέσιμο στο: _android Nikos Tsantalis et al.: Design Pattern Detection Using Similarity Scoring, IEEE Transactions on Software Engineering, vol. 32, no. 11, pp , November, Shyam R. Chidamber and Chris F. Kemerer: A Metrics Suite for Object Oriented Design, IEEE Transactions on Software Engineering, vol.20, no. 6, pp , June G. Kakarontzas, I. Stamelos, S. Skalistis, A. Naskos: Extracting Components from Open Source, The Component Based Adaptation (COPE) Approach, Ed Brunette: Hello Android, Introducing Google s Mobile Development Platform, 3 rd Edition, Pragmatic Bookshelf, Οδηγίες για σχεδίαση Android εφαρμογών, διαθέσιμο στο 9. Lauren Darcey & Shane Conder: Android, Wireless Application Development, Developer s Library, 2 nd Edition, Addison Wesley, στατιστικές 11. Reto Meier: Professional Android Application Development, Wiley,

78

79 Παράρτημα I Η αρχική οθόνη της εφαρμογής Find the Movie και το πάτημα του πλήκτρου Start. Η έναρξη του παιχνιδιού και η επιλογή μιας εκ των τεσσάρων απαντήσεων -73-

80 Η επιλογή ήταν λανθασμένη και επισημαίνεται με κόκκινο, ενώ με πράσινο φαίνεται η σωστή απάντηση. Με το πάτημα του κουμπιού Next question ο χρήστης μεταφέρεται σε μια νέα ερώτηση όπου επιλέγει μια εκ των τεσσάρων απαντήσεων. Η επιλογή ήταν σωστή. Με το πάτημα του κουμπιού Next question γίνεται η μεταφορά σε νέα ερώτηση. Με το πάτημα του κουμπιού Back στη συσκευή, εμφανίζεται παράθυρο το οποίο επιβεβαιώνει τη θέληση του χρήστη να φύγει από το παιχνίδι. -74-

81 Το πάτημα του κουμπιού View Scores στην αρχική οθόνη της εφαρμογής και ο πίνακας με τις υψηλότερες βαθμολογίες που έχουν επιτευχθεί. Η αρχική οθόνη της εφαρμογής με πατημένο το About κουμπί, και η οθόνη στην οποία μεταφέρεται ο χρήστης. -75-

82 Η αρχική οθόνη έπειτα από το πάτημα του Menu Button στη συσκευή. Η επιλογή του κουμπιού Settings Η μεταφορά του χρήστη στην οθόνη επιλογών, προκειμένου να επιλέξει τον αριθμό των ερωτήσεων που θα περιλαμβάνονται στο παιχνίδι. -76-

83 Η αρχική οθόνη με επιλεγμένη την επιλογή για Μουσική. Η οθόνη στην οποία μεταφέρεται ο χρήστης προκειμένου να ενεργοποιήσει/απενεργοποιήσει τη λειτουργία της μουσικής. -77-

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Βιβλιογραφία: Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Προγραμματισμός Android Ian Clifton. AndroidTM User Interface Design, Addison-Wesley, 2013 P. Deitel. H. Deitel, A. Deitel.

Διαβάστε περισσότερα

ANDROID Προγραμματισμός Εφαρμογών

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

Διαβάστε περισσότερα

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος Λογισμικό Συστήματος Λογισμικό 2 Λογισμικό Συστήματος Τα ειδικά εργαλεία χρησιμοποιούνται για την ανάπτυξη λογισμικού εφαρμογών και την εκτέλεση βοηθητικών εργασιών. Το λειτουργικό σύστημα (operating system)

Διαβάστε περισσότερα

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης ΠΜΣ Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Διπλωματική Εργασία Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης Ονοματεπώνυμο: Βλάχος Αθανάσιος Επιβλέπων

Διαβάστε περισσότερα

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

Διαβάστε περισσότερα

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών Digital Academy Εισαγωγή στην ανάπτυξη Android Εφαρμογών Περιεχόμενα ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΕΝΟΤΗΤΑ 1 ΠΡΩΤΗ ΓΝΩΡΙΜΙΑ ΜΕ ΤΟ ANDROID... 4 1.1 ΕΙΣΑΓΩΓΗ... 4 1.2 ΠΗΓΕΣ ΓΝΩΣΗΣ... 4 1.3 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ... 5 1.4

Διαβάστε περισσότερα

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι Παρτώνας Αλέξανδρος Επιβλέπων: Δρ.

Διαβάστε περισσότερα

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

Διαβάστε περισσότερα

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη Παπαδόπουλου Κυριάκου Αρ. Μητρώου: 093507 Επιβλέπων καθηγητής: Ηλιούδης Χρήστος Εισαγωγή - Σκοπός Εργασίας Καινοτόμες

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

Διαβάστε περισσότερα

Smartphones και πολυμέσα

Smartphones και πολυμέσα Smartphones και πολυμέσα Λογοθέτης Σωτήρης ΚΑΘΗΓΗΤΗΣ/ΣΥΜΒΟΥΛΟΣ: ΓΕΩΡΓΙΟΣ ΣΤΥΛΙΑΡΑΣ Θεσσαλονίκη, 1 Νοεμβρίου 2009 Περιεχόμενα Ορισμοί Smartphones - Πολυμέσα Ιστορική Αναδρομή Τελευταίας τεχνολογίας Smartphones

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

Διαβάστε περισσότερα

Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android

Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android Ιωάννης Γιαννόπουλος, ΑΜ: 0430 Γεώργιος Δούρος, ΑΜ: 0686 Επιβλέπων: Γεώργιος Ασημακόπουλος Σεπτέμβριος 2014

Διαβάστε περισσότερα

Πολυμέσα. παρέχουν ένα περιβάλλον πρόσβασης στα τμήματα, μέσω συνδέσεων με οποιονδήποτε τρόπο

Πολυμέσα. παρέχουν ένα περιβάλλον πρόσβασης στα τμήματα, μέσω συνδέσεων με οποιονδήποτε τρόπο Περιεχόμενα Ορισμοί Smartphone-Πολυμέσα Η εξέλιξη Τελευταίας τεχνολογίας Smartphones Χαρακτηριστικά των smartphones Λειτουργικά Συστήματα στα Smartphones Στάδια παραγωγής πολυμεσικής εφαρμογής Κατηγορίες

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape Επιμέλεια: Γκέκα Ασπασία Ιωάννου Ελένη Κούνουπα Άννα Τμήμα Εφαρμογών Πληροφορικής Α 1 Εξάμηνο Δ.ΙΕΚ Αιγάλεω 1 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010 Python και Python και Νίκος Νοδαράκης 17 Μαΐου 2010 Python και Τι είναι το ; Περιγραφή του Ορισµός Το είναι µια στοίβα λογισµικού για ϕορητές συσκευές που περιλαµβάνει ένα λειτουργικό σύστηµα, middleware

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018 Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα

Διαβάστε περισσότερα

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας.

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας. Δεδομένα Πληροφορίες Δεδομένα: Μια ομάδα από σύμβολα, αριθμούς, λέξεις που αντιπροσωπεύουν κάτι και θα χρησιμοποιηθούν σε μια επεξεργασία. Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα,

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

ΛΟΓΙΣΜΙΚΟ (software)

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

Διαβάστε περισσότερα

Ενημέρωση σε Windows 8.1 από τα Windows 8

Ενημέρωση σε Windows 8.1 από τα Windows 8 Ενημέρωση σε Windows 8.1 από τα Windows 8 Τα Windows 8.1 και τα Windows RT 8.1 είναι βασισμένα στα Windows 8 και στα Windows RT, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

Διαβάστε περισσότερα

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης

Διαβάστε περισσότερα

Linux Terminal Server Project

Linux Terminal Server Project Linux Terminal Server Project Ένα κεντρικό σύστημα διαχείρισης των τερματικών κοινού της Βιβλιοθήκης & Κέντρου Πληροφόρησης του Πανεπιστημίου Μακεδονίας Κολοβός Φίλιππος filippos@uom.gr Ευάγγελος Μπάνος

Διαβάστε περισσότερα

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 6 Μαρτίου 2016 Παναγιώτης Σακαλάκης Αν υπάρχει κάτι που γνωρίζει ο περισσότερος κόσμος για το Facebook, αυτό είναι πως κατέχει την πρώτη θέση

Διαβάστε περισσότερα

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 4 η Βασίλης Στεφανής Πληροφοριακό σύστημα Υπενθύμιση του βασικού μοντέλου Είσοδος Επεξεργασία Έξοδος Ας δούμε επιπλέον λεπτομέρειες! Λογισμικό Λογισμικό: Δίνει εντολές στο

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

Διαβάστε περισσότερα

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

Διαβάστε περισσότερα

Λογισμικό - Προγράμματα

Λογισμικό - Προγράμματα Λογισμικό - Προγράμματα Πρόγραμμα είναι ένα σύνολο εντολών, βάση των οποίων ο υπολογιστής εκτελεί μια συγκεκριμένη εργασία Λογισμικό (Software) Το σύνολο των προγραμμάτων Προγράμματα Προγράμματα συστήματος

Διαβάστε περισσότερα

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα Λιόλιου Γεωργία ΕπιβλέπουσαΚαθηγήτρια: ΣατρατζέµηΜάγια, καθηγήτρια, τµ. ΕφαρµοσµένηςΠληροφορικής, ΠΑΜΑΚ Εισαγωγή Γενικά στοιχεία εφαρµογή

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων Λειτουργικά Συστήματα Ι Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων Δομή Η/Υ Ο Η/Υ αποτελείται από δυο βασικά στοιχεία: Υλικό (το ηλεκτρονικό-μηχανικό μέρος πχ συσκευές, πλακέτες κλπ) Λογισμικό

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Μάθημα 0.2: Το Λογισμικό (Software) Δίκτυα υπολογιστών Αντώνης Χατζηνούσκας 2 ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήματος

Διαβάστε περισσότερα

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 4 Λογισμικό συστήματος Καραμαούνας Πολύκαρπος 1 4.1 Λογισμικό συστήματος (application software) Καραμαούνας Πολύκαρπος 2 Λογισμικό εφαρμογών (application software): προγράμματα για την αντιμετώπιση

Διαβάστε περισσότερα

economy Δρ. Πάνος Φιτσιλής, Καθηγητής ΤΕΙ Θεσσαλίας fitsilis@teilar.gr Πρόγραμμα Μεταπτυχιακών Σπουδών Διοίκηση και Διαχείριση Έργων

economy Δρ. Πάνος Φιτσιλής, Καθηγητής ΤΕΙ Θεσσαλίας fitsilis@teilar.gr Πρόγραμμα Μεταπτυχιακών Σπουδών Διοίκηση και Διαχείριση Έργων economy Δρ. Πάνος Φιτσιλής, Καθηγητής ΤΕΙ Θεσσαλίας fitsilis@teilar.gr 1 Διοίκηση και Διαχείριση Έργων Τι είναι τα apps H λέξη app είναι μια λέξη που έχει μπει στο λεξικό όλων μας Λογισμικό εφαρμογή Λειτουργεί

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΣΤΟΧΟΙ: 1. Λογισμικό 2. Λογισμικό Λειτουργικού Συστήματος 3. Προσαρμοστικό Γραφικών Χρήστη 4. Λογισμικών Εφαρμογών 5. Διαφορά Μεταξύ Λογισμικού Λειτουργικού Συστήματος Και

Διαβάστε περισσότερα

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System) Υλικό Hardware Λογισμικό Software... κώδικας ΥΛΙΚΟ Κάθε ηλεκτρονικό, ηλεκτρικό και μηχανικό μέρος του Η/Υ. ΛΟΓΙΣΜΙΚΟ Προγράμματα,δηλαδή οδηγίες γιατοτιπρέπεινακάνειοη/υ. Λειτουργικό Σύστημα Είναι ένα βασικό

Διαβάστε περισσότερα

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Τι είναι το υλικό ενός υπολογιστικού συστήματος; Το σύνολο των ηλεκτρονικών και μηχανικών μερών του που έχουν

Διαβάστε περισσότερα

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΑΝΑΛΥΣΗ ΜΕΝΟΥ ΕΦΑΡΜΟΓΗΣ... 4 2. ΕΠΕΞΗΓΗΣΗ ΚΕΝΤΡΙΚΟΥ ΜΕΝΟΥ ΚΑΡΤΕΛΑΣ... 5 3. ΔΗΜΙΟΥΡΓΙΑ ΠΕΛΑΤΗ... 6 4. ΑΝΑΖΗΤΗΣΗ ΠΕΛΑΤΗ... 6 5. ΕΠΕΞΕΡΓΑΣΙΑ/ΔΙΑΓΡΑΦΗ

Διαβάστε περισσότερα

Symantec Backup Exec System Recovery 7.0 Server Edition. Πλήρης Επαναφορά Συστημάτων Windows Μέσα σε Λίγα Λεπτά και όχι σε Ώρες ή Ημέρες

Symantec Backup Exec System Recovery 7.0 Server Edition. Πλήρης Επαναφορά Συστημάτων Windows Μέσα σε Λίγα Λεπτά και όχι σε Ώρες ή Ημέρες ΒΑΣΙΚΑ ΠΛΕΟΝΕΚΤΗΜΑΤΑ Πλήρης Επαναφορά Συστημάτων Windows Μέσα σε Λίγα Λεπτά και όχι σε Ώρες ή Ημέρες Η Symantec έχει επανειλημμένα καταδείξει δημόσια ότι το Backup Exec System Recovery μπορεί να εκτελέσει

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Android Grid Application Θωμάς Αντώνιος (3050073) Καραβέλλας Θεμιστοκλής (3050055) 1. Εισαγωγή Το Android αποτελεί ένα λειτουργικό σύστημα για κινητές συσκευές. Το λειτουργικό αυτό

Διαβάστε περισσότερα

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Τι είναι Λειτουργικό Σύστημα Κάθε Η/Υ αποτελείται από το Υλικό (Hardware) και το Λογισμικό (Software). Το Υλικό είναι το ηλεκτρικό, ηλεκτρονικό και

Διαβάστε περισσότερα

Δίνουμε λύσεις, δεν προτείνουμε

Δίνουμε λύσεις, δεν προτείνουμε Δίνουμε λύσεις, δεν προτείνουμε Σχετικά με εμάς Ολοκληρωμένες λύσεις προβολής επαγγελματιών στο διαδίκτυο. Ο Όμιλος FOCUS-ON, ένας όμιλος Web & Mobile Services, ξεκίνησε τη δραστηριοποίησή του το 2008

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΤΗ JustAlert SPOTIT. Οδηγίες για την εγκατάσταση της εφαρμογής στο κινητό σας

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΤΗ JustAlert SPOTIT. Οδηγίες για την εγκατάσταση της εφαρμογής στο κινητό σας ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΤΗ JustAlert SPOTIT Συγχαρητήρια για την επιλογή σας να προμηθευτείτε την υπηρεσία JustAlert SPOTIT Μετά την ενεργοποίηση της υπηρεσίας, θα έχετε δωρεάν πρόσβαση στην προσωπική σας σελίδα

Διαβάστε περισσότερα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Page 1 Χρήστης Εφαρμογή Λειτουργικό Σύστημα Υλικό Γνωστά Λειτουργικά

Διαβάστε περισσότερα

Διεθνής έρευνα για την εξάπλωση των Smartphones και Tablets

Διεθνής έρευνα για την εξάπλωση των Smartphones και Tablets Διαγραφή από τη λίστα Σε αυτό το τεύχος: Φεβρουάριος 2014 Mobile e-commerce από την Altec Software Mobile e-commerce από την Altec Software Διεθνής έρευνα για την εξάπλωση των Smartphones και Tablets Ετήσια

Διαβάστε περισσότερα

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ Αριθμ. Πρωτ.: 129334/2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΤΟΥ ΑΡΙΣΤΟΤΕΛΕΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΑΚΟΙΝΩΝΕΙ Τη διενέργεια διαδικασίας ΑΠΕΥΘΕΙΑΣ

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Δημητρίου Σωτήρης 6417

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Δημητρίου Σωτήρης 6417 ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Δημητρίου Σωτήρης 6417 Παιχνίδια διάχυτου υπολογισμού Τεχνολογίες Σχεδιασμός Υλοποίηση Αξιολόγηση Προοπτικές Ένα παιχνίδι διάχυτου υπολογισμού είναι ένα παιχνίδι που έχει ένα ή περισσότερα

Διαβάστε περισσότερα

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΤΙΣ ΕΦΑΡΜΟΓΕΣ ΤΟΥ

ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΤΙΣ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΤΙΣ ΕΦΑΡΜΟΓΕΣ ΤΟΥ Το Linux είναι χτισμένο με ένα συγκεκριμένο σύνολο ενοποίηση αρχές στο μυαλό. Η κατανόηση αυτών των αρχών είναι πολύ χρήσιμη για την κατανόηση του πώς λειτουργεί

Διαβάστε περισσότερα

Σχεδιαστικά Προγράμματα Επίπλου

Σχεδιαστικά Προγράμματα Επίπλου Σχεδιαστικά Προγράμματα Επίπλου Καθηγήτρια ΦΕΡΦΥΡΗ ΣΩΤΗΡΙΑ Τμήμα ΣΧΕΔΙΑΣΜΟΥ & ΤΕΧΝΟΛΟΓΙΑΣ ΞΥΛΟΥ - ΕΠΙΠΛΟΥ Σχεδιαστικά Προγράμματα Επίπλου Η σχεδίαση με τον παραδοσιακό τρόπο απαιτεί αυξημένο χρόνο, ενώ

Διαβάστε περισσότερα

Κουμπί επαναφοράς (RESET BUTTON) Οπές εγκατάστασης συσκευής στην επιτοίχια βάση

Κουμπί επαναφοράς (RESET BUTTON) Οπές εγκατάστασης συσκευής στην επιτοίχια βάση Οδηγός Εγκατάστασης και Λειτουργίας Έξυπνου Ασύρματου κουδουνιού πόρτας ZV400V Εμπρόσθια Όψη Συσκευής Οπίσθια Όψη Συσκευής Οπές εγκατάστασης συσκευής στην επιτοίχια βάση Αισθητήρας κίνησης Κάμερα Θύρα

Διαβάστε περισσότερα

Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές.

Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές. Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές. 13ο ΕΘΝΙΚΟ ΣΥΝΕΔΡΙΟ ΧΑΡΤΟΓΡΑΦΙΑΣ Η ΧΑΡΤΟΓΡΑΦΙΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 15: Σχεδίαση Εφαρμογών Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Περίληψη ιπλωµατικής Εργασίας

Περίληψη ιπλωµατικής Εργασίας Περίληψη ιπλωµατικής Εργασίας Θέµα: Πρότυπη Εφαρµογή ιαλειτουργικότητας για Φορητές Συσκευές Όνοµα: Κωνσταντίνος Χρηστίδης Επιβλέπων: Ιωάννης Βασιλείου Συν-επιβλέπων: Σπύρος Αθανασίου 1. Αντικείµενο Αντικείµενο

Διαβάστε περισσότερα

Με την ολοκλήρωση της διαδικασίας μπορούμε αν θέλουμε να επιλέξουμε να ανοίξει ή όχι η εφαρμογή που έχει εγκατασταθεί.

Με την ολοκλήρωση της διαδικασίας μπορούμε αν θέλουμε να επιλέξουμε να ανοίξει ή όχι η εφαρμογή που έχει εγκατασταθεί. Πώς φτιάχνω Εφαρμογές για Android με το App Inventor Τι χρειάζεται για να ξεκινήσουμε; Η λειτουργία του App Inventor είναι κυρίως διαδικτυακή. Για να ξεκινήσει κανείς δηλαδή δεν απαιτείται ούτε κάποιο

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας) Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής

Διαβάστε περισσότερα

Κεφάλαιο 2: Λογισμικό (Software) Εφαρμογές Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2: Λογισμικό (Software) Εφαρμογές Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος Κεφάλαιο 2: Λογισμικό (Software) 1 2.1 Λογισμικό Συστήματος και Λογισμικό Εφαρμογών Λογισμικό Συστήματος: διαχειρίζεται το υλικό του υπολογιστή και αποτελεί τη βάση πάνω στην οποία αναπτύσσεται και εκτελείται

Διαβάστε περισσότερα

Διοίκηση Παραγωγής και Υπηρεσιών

Διοίκηση Παραγωγής και Υπηρεσιών Διοίκηση Παραγωγής και Υπηρεσιών Εισαγωγή -3 Γιώργος Ιωάννου, Ph.D. Αναπληρωτής Καθηγητής Σύνοψη διάλεξης Σχεδιασμός διαδικασιών ορισμός Συστημική προσέγγιση Μεθοδολογίες σχεδιασμού διαδικασιών Διαγράμματα

Διαβάστε περισσότερα

Οδηγός Εγκατάστασης και Λειτουργίας Έξυπνου Ασύρματου κουδουνιού πόρτας ZV400P. Εμπρόσθια Όψη Κουδουνιού. Ανιχνευτής κίνησης. Υπέρυθρος ανιχνευτής

Οδηγός Εγκατάστασης και Λειτουργίας Έξυπνου Ασύρματου κουδουνιού πόρτας ZV400P. Εμπρόσθια Όψη Κουδουνιού. Ανιχνευτής κίνησης. Υπέρυθρος ανιχνευτής Οδηγός Εγκατάστασης και Λειτουργίας Έξυπνου Ασύρματου κουδουνιού πόρτας ZV400P Εμπρόσθια Όψη Κουδουνιού Υπέρυθρος ανιχνευτής Ανιχνευτής κίνησης Κάμερα γωνίας ανίχνευσης 166 μοιρών Μικρόφωνο Ηχείο LED υπέρυθρου

Διαβάστε περισσότερα

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425 Cloud Computing with Google and Microsoft Despoina Trikomitou Andreas Diavastos Class: EPL425 Σχεδιάγραμμα Εισαγωγή Τεχνολογίες Cloud Computing Περιγραφή Εργασίας Επιτεύγματα Εργασίας Συμπεράσματα Cloud

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία AtYourService CY : Create a REST API Δημήτρης Χριστοδούλου Λεμεσός 2016 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ

Διαβάστε περισσότερα

APP INVENTOR ΟΔΗΓΟΣ 8 Οκτωβρίου 2018

APP INVENTOR ΟΔΗΓΟΣ 8 Οκτωβρίου 2018 Πώς φτιάχνω Εφαρμογές για Android με το App Inventor Έχετε μια ιδέα για μια mobile εφαρμογή, αλλά δεν ξέρετε πώς να την υλοποιήσετε; Το App Inventor είναι ένα χρήσιμο εργαλείο για κάθε αρχάριο προγραμματιστή

Διαβάστε περισσότερα

Internet Business Hellas

Internet Business Hellas Internet Business Hellas Περιεχόμενα Εισαγωγή email marketing IBNEWSLETTER Χαρακτηριστικά Πλεονεκτήματα Επικοινωνία Εισαγωγή email marketing «Το μάρκετινγκ μέσω ηλεκτρονικού ταχυδρομείου συνίσταται στην

Διαβάστε περισσότερα

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1 Ενότητα 2 Πηγές Λογισμικού Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1 Μαθησιακοί στόχοι Εξοικείωση με εναλλακτικές πηγές λογισμικού Κατανόηση του τρόπου αξιολόγησης έτοιμου λογισμικού

Διαβάστε περισσότερα

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο.

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο. Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο. Εισηγητής : Χρήστος Μανώλης δάσκαλος Θεσσαλονίκη Οκτώβριος - Δεκέμβριος

Διαβάστε περισσότερα

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45 Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45 ΤΟΜΟΣ Α «Ηλεκτρονικό Επιχειρείν» πηγή: ibm.com Ηλεκτρονικό Επιχειρείν Η εφαρμογή τεχνολογιών πληροφορίας και επικοινωνίας (ΤΠΕ) για

Διαβάστε περισσότερα

Ολοκληρωμένο σύστημα διαχείρισης παρουσιών στο Τ.Ε.Ι. Σερρών

Ολοκληρωμένο σύστημα διαχείρισης παρουσιών στο Τ.Ε.Ι. Σερρών Παρουσίαση πτυχιακής εργασίας Ολοκληρωμένο σύστημα διαχείρισης παρουσιών στο Τ.Ε.Ι. Σερρών Επιβλέπων Καθηγητής: Αθανάσιος Πανταζόπουλος Φοιτητής: Στράτος Παντατζόγλου Περιγραφή Σκοπός της πτυχιακής εργασίας

Διαβάστε περισσότερα

Οδηγίες EQL Desktop (rev.1.0.23) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Οδηγίες EQL Desktop (rev.1.0.23) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ Οδηγίες EQL Desktop (rev.1.0.23) Πρόγραμμα για τον Προγραμματισμό των Μηχανών D.P.S. S-800, Open Cash και S-710 μέσω Ηλεκτρονικού Υπολογιστή ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB Εγκατάσταση ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ Κεφάλαιο 1: Υλικό Υπολογιστών (Hardware) 1.1: Το υπολογιστικό σύστημα ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1. Τι αντιλαμβάνεστε με τον όρο υλικό (hardware); [σελ. 8] Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε

Διαβάστε περισσότερα

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η Δ.Πολίτης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification Speed-0 Web and Mobile Platform Speed-0 WMP: Web and Mobile Platform Software Requirements Specification Version Revision History Date Version Description People 5/4/2012 Αρχικές Προδιαγραφές

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 7 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ

ΜΑΘΗΜΑ 7 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 7 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ 1. Ποια από τις πιο κάτω δηλώσεις περιγράφει την σωστή διαδικασία ασφάλειας των πληροφοριών για ένα οργανισμό; a) Να μην υπάρχουν διαδικασίες για την αναφορά των

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Στρατηγική Επιλογή Capital B.O.S. Capital B.O.S.

Στρατηγική Επιλογή Capital B.O.S. Capital B.O.S. Στρατηγική Επιλογή Το ταχύτατα μεταβαλλόμενο περιβάλλον στο οποίο δραστηριοποιούνται οι επιχειρήσεις σήμερα, καθιστά επιτακτική -όσο ποτέ άλλοτε- την ανάπτυξη ολοκληρωμένων λύσεων που θα διασφαλίζουν,

Διαβάστε περισσότερα

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Εργαλεία CASE Computer Assisted Systems Engineering Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2011-2012 1 Εργαλεία CASE

Διαβάστε περισσότερα

Ηλεκτρονικό Επιχειρείν

Ηλεκτρονικό Επιχειρείν Ηλεκτρονικό Επιχειρείν Μαρίνος Θεμιστοκλέους Email: mthemist@unipi.gr Ανδρούτσου 150 Γραφείο 206 Τηλ. 210 414 2723 Ώρες Γραφείου: Δευτέρα11-12 πμ Βασικές Φάσεις Ανάπτυξης Η ανάλυση απαιτήσεων Ο λογικός

Διαβάστε περισσότερα

Server Virtualization με εργαλεία ΕΛ/ΛΑΚ. ΛΑΚ Δήμος Ρεθύμνης. www.rethymno.gr

Server Virtualization με εργαλεία ΕΛ/ΛΑΚ. ΛΑΚ Δήμος Ρεθύμνης. www.rethymno.gr Server Virtualization με εργαλεία ΕΛ/ΛΑΚ ΛΑΚ Μαθηνός Παναγιώτης Λ. Κουντουριώτη 80, τ.κ. 74100, Ρέθυμνο Τηλ: 28313 41310 e mail: mathinos@rethymno.gr www.linkedin.com/in/pmathinos Πληροφορική Μηχανοργάνωση

Διαβάστε περισσότερα

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΕΡΩΤΗΣΗ 1: Σε ποιες μεγάλες κατηγορίες μπορούμε να χωρίσουμε το Λογισμικό. Μπορούμε να χωρίσουμε το Λογισμικό στις παρακάτω μεγάλες κατηγορίες: στο Λογισμικό Συστήματος (System Software),

Διαβάστε περισσότερα