Σύγχρονα Θέματα Τεχνολογίας Λογισμικού
- Δομή εργασίας Θέμα: Στην παρούσα εργασία θα πρέπει να κατασκευάσετε μια εφαρμογή με τίτλο «SmartAlert», άμεσης ειδοποίησης πολιτών σε έκτακτες περιστάσεις υψηλού κινδύνου. Παραδοχές: Θα θεωρήσετε ότι την εφαρμογή που θα δημιουργήσετε θα την έχει εγκατεστημένη ένας πολύ μεγάλος αριθμός από χρήστες, σε όλη την Ελλάδα. Λογική: Η εφαρμογή σας θα είναι σε θέση να ενημερώνει εγγεγραμμένους χρήστες αλλά και άλλους εμπλεκόμενους (βλέπε τους παρακάτω ρόλους χρηστών) για καταστάσεις κινδύνου, όπως αυτές που περιγράφονται στη συνέχεια. Η ενημέρωση θα γίνεται μέσω γραπτού μηνύματος σε ένα σύνολο από παραλήπτες (εφόσον πληρούνται συγκεκριμένα κριτήρια, όπως θα δείτε παρακάτω). Σε κάθε ειδοποίηση θα περιλαμβάνεται η κατάσταση ανάγκης (με την όποια πληροφορία συνοδεύεται), η γεωγραφική θέση του τρέχοντος event, ένα timestamp (ημερομηνία/ώρα), καθώς και οδηγίες από την πολιτική προστασία. Ρόλοι χρηστών: • Εγγεγραμμένος Χρήστης: Ο εγγεγραμμένος χρήστης θα έχει 2 υπό-ρόλους: ➢ Τον ρόλο του χρήστη που ειδοποιεί για ένα περιστατικό υψηλού κινδύνου ➢ Τον ρόλο του χρήστη που πρόκειται να ειδοποιηθεί για ένα περιστατικό υψηλού κινδύνου • Υπάλληλος πολιτικής προστασίας: Ο ρόλος του υπαλλήλου πολιτικής προστασίας είναι ιδιαίτερα σημαντικός. Ο συγκεκριμένος ρόλος θα «βλέπει» τις υποβληθείσες καταστάσεις υψηλού κινδύνου και αναλόγως με το δείκτη επικινδυνότητας (αναλύεται), θα επιλέγει την αυτόματη ειδοποίηση των χρηστών που βρίσκονται σε μικρή ακτίνα από το περιστατικό υψηλού κινδύνου, ή θα απορρίπτει τον συναγερμό, ή θα εξετάζει το περιστατικό με άλλους τρόπους και πάλι θα επιλέγει την ειδοποίηση χρηστών, ή την απόρριψη του περιστατικού. Καταστάσεις Υψηλού Κινδύνου: Πιο αναλυτικά θα κατασκευάσετε μια εφαρμογή, η οποία θα ικανοποιεί τις παρακάτω προδιαγραφές σχετικά με πιθανές καταστάσεις κινδύνου. Πιθανές καταστάσεις υψηλού κινδύνου είναι: Πλημμύρες, Πυρκαγιές, Σεισμοί, Άλλες φυσικές καταστροφές (π.χ. Ανεμοστρόβιλος). Τις συγκεκριμένες κατηγορίες θα τις επιλέξετε εσείς και θα υπάρχουν μέσα στο σύστημα καταγραφής περιστατικών υψηλού κινδύνου. Προδιαγραφές:
- Η εφαρμογή σας θα δίνει τη δυνατότητα στον εγγεγραμμένο χρήστη να υποβάλλει ένα περιστατικό υψηλού κινδύνου στο σύστημα “SmartAlert”. Η εν λόγω υποβολή θα συνοδεύεται από σχόλια του χρήστη, από το είδος του κινδύνου (πυρκαγιά, πλημμύρα, κ.λπ.)(θέλουμε οι κατηγορίες να προϋπάρχουν, όπως αναφέρεται παραπάνω), από την τοποθεσία του χρήστη (αυτόματα από το κινητό), από χρονοσφραγίδα και από πιθανή επισυναπτόμενη φωτογραφία. Επίσης, θα εμφανίζεται με toast message το σχετικό μήνυμαεπαλήθευσης. Η υποβολή θα γίνεται σε remote DB/backend της επιλογής σας, για περαιτέρω έλεγχο από τον υπάλληλο πολιτικής προστασίας.
- Όπως προαναφέρθηκε και στους ρόλους των χρηστών, ο υπάλληλος πολιτικής προστασίας θα πρέπει να ελέγχει, να απορρίπτει, ή να επικυρώνει μια κατάσταση υψηλού κινδύνου. Για την επιλογή του θα λαμβάνει σοβαρά υπόψη και τη «σύσταση» του backend συστήματος σας, ως προς την κατάταξη του κάθε υποβληθέντα κινδύνου.
- Η εφαρμογή σας θα πρέπει να διαθέτει ένα backend module, βασική λειτουργία του οποίου θα είναι η κατάταξη των υποβληθέντων περιστατικών με βάση το επίπεδο συναγερμού, το οποίο θα υπολογίζεται ως εξής: Για τα υποβληθέντα περιστατικά θα υπάρχουν δύο κριτήρια «βαρύτητας». Το 1ο είναι το πλήθος των χρηστών που έχουν υποβάλλει το συγκεκριμένο περιστατικό κινδύνου (όσο περισσότερα άτομα, τόσο πιο «έγκυρο» το περιστατικό), σε συγκεκριμένο εύρος χρόνου (δεν μπορεί να υποβάλουν μια πλημμύρα με χρονική απόσταση μιας ημέρας). Το 2ο είναι η γεωγραφική απόσταση μεταξύ των υποβληθέντων περιστατικών (δεν μπορεί μια πυρκαγιά να έχει απόσταση 200 χιλιομέτρων). Τόσο για το 1ο, όσο και για το 2ο κριτήριο, τα βάρη θα υπολογιστούν από εσάς.
- Εφόσον, ο υπάλληλος πολιτικής προστασίας επιλέξει την ειδοποίηση των χρηστών, τότε θα ειδοποιηθούν μόνο οι χρήστες οι οποίοι βρίσκονται σε συγκεκριμένη απόσταση από το περιστατικό (επιλέγετε εσείς την απόσταση). Θα λάβουν μήνυμα κινδύνου με τις απαραίτητες πληροφορίες
- Η εφαρμογή σας, εκτός από τα ελληνικά θα πρέπει να υποστηρίζει και ακόμα μια γλώσσα. Θα πρέπει να την τροποποιήσετε έτσι, ώστε οι πληροφορίες να μπορούν να εμφανιστούν σε συνολικά 2 γλώσσες, μαζί με τα αγγλικά (τυχόν ηχητικά μηνύματα δεν χρειάζεται να αλλαχθούν).
- Στην εφαρμογή σας, οι χρήστες θα πρέπει να κάνουν login με Authentication της επιλογής σας. Σημαντικά: ➢ Όλα τα περιστατικά υψηλού κινδύνου θα πρέπει να καταγράφονται σε βάση δεδομένων. Απαίτηση είναι να γίνεται είτε στη firebase, είτε σε δικό σας web service (π.χ. Java Spring Boot), ενώ προαιρετικά μπορείτε να διατηρείτε και τοπική βάση (sqlite, shared preferences). Το feature αυτό είναι βασικό (firebase ή web service και πιάνει 2 μονάδες), για να μπορέσουμε να έχουμε την συγκέντρωση δεδομένων από πολλαπλούς χρήστες. Αν δεν τα καταφέρετε, χρησιμοποιήστε τοπική ΒΔ μόνο. ➢ Θα διαθέτει ξεχωριστό Activity προβολής στατιστικών, όπου θα μπορεί ο κάθε χρήστης πόσες φορές έχει ενεργοποιηθεί συμβάν κινδύνου. Προαιρετικά, οι πληροφορίες θα μπορούν να δοθούν με φίλτρα βάσει χρόνου και κατηγορίας συμβάντος. ➢ Προαιρετικά μπορείτε να υλοποιήσετε και κάποιες εντολές και φωνητικά (π.χ. το πέρασμα από μια οθόνη σε μια άλλη). Για όλα τα παραπάνω θα πρέπει να φροντίσετε να γίνονται οι απαραίτητοι έλεγχοι μέσα στον κώδικά σας (π.χ. θα αποθηκεύσετε κάτι στη ΒΔ, εάν δεν έχετε στίγμα εκείνη τη στιγμή;), ώστε η εφαρμογή σας να μπορεί να λειτουργήσει με όσο το δυνατόν λιγότερα προβλήματα (ιδανικά χωρίς καθόλου προβλήματα). Η εφαρμογή σας θα πρέπει να ελεγχθεί σε διαφορετικούς emulators, για smartphones και tablets ώστε να φροντίσετε να μην «αλλοιώνεται» το UI της.2. Ανάλυση και σχεδιασμός