Skip to content

antokarant/Software_Engineering_Project2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NTUA ECE Software Engineering Project

Fall 2020

Αντώνης Καραντώνης (03117439)

Δημήτρης Κυριακίδης (03117077)

Σωτήρης Κανελλόπουλος (03117101)

Χάρης Δάλπης (03117067)

Έχουμε υλοποιήσει τρία use cases:

  1. φόρτιση αυτοκινήτου
  2. αναζήτηση σταθμών
  3. επεξεργασία δεδομένων.

Στο πρώτο use case υποθέτουμε ότι ένας πελάτης επισκέπτεται ένα σταθμό, διαλέγει ένα φορτιστή και φορτίζει το αυτοκίνητό του. Στη διαδικασία της συναλλαγής δίνει την πινακίδα του στο σταθμό, από την οποία ο σταθμός μπορεί να βρει τα στοιχεία του από τη βάση δεδομένων του υπουργείου. Πριν ξεκινήσει η φόρτιση, ο πελάτης επιλέγει πόση ενέργεια θέλει να βάλει και του δίνεται μια εκτίμηση του κόστους αυτής, ώστε να βεβαιωθεί ότι επιθυμεί να γίνει η συναλλαγή. Στη συνέχεια έχει επιλογή να πληρώσει με μετρητά ή με κάρτα και (προαιρετικά) να αξιολογήσει το σταθμό. Τέλος, όλα τα δεδομένα της φόρτισης εισάγονται στη βάση ως ένα νέο session.

Στο δεύτερο use case θεωρούμε ότι ένας πελάτης αναζητεί σταθμό για να φορτίσει το αυτοκίνητό του. Για αυτό το σκοπό, με βάση την τοποθεσία του πελάτη η εφαρμογή μας του προτείνει τους κοντινότερους σταθμούς στην περιοχή του και του δίνει τις αντίστοιχες πληροφορίες. Επειδή δεν ήταν εφικτό να υπολογίζουμε όντως κάποια απόσταση σαν ένα πραγματικό σύστημα gps, έχουμε απλουστεύσει το πρόβλημα προτείνοντας όλους τους σταθμούς που βρίσκονται στην ίδια πολιτεία με τον πελάτη. Το σύστημά μας επίσης υπολογίζει μια εκτίμηση του χρόνου αναμονής για καθέναν από τους σταθμούς, με βάση το πόσους ενεργούς φορτιστές διαθέτει ο καθένας και πόσα αυτοκίνητα περιμένουν σε αυτόν. Ο χρήστης έχει τη δυνατότητα να κάνει sort τους σταθμούς που του επιστρέφονται, είτε με βάση το χρόνο αναμονής είτε με βάση τις αξιολογήσεις χρηστών (δηλαδή τον μέσο όρο των ratings που προκύπτουν από το προηγούμενο use case).

Στο τρίτο use case θεωρούμε ότι ένας σταθμός επεξεργάζεται τα δεδομένα των transactions για κάποια χρονική περίοδο που επιλέγει ο ίδιος. Με βάση αυτά τα δεδομένα, ο σταθμός μπορεί να επιλέξει είτε να του εμφανιστούν διαγράμματα για τις φορτίσεις ανά μέρα, είτε να του εμφανιστούν αναλυτικά στοιχεία συνολικά για την επιλεγμένη περίοδο, είτε να εκδώσει λογαριασμό για κάποιο όχημα για την ίδια περίοδο.

Για την ανάπτυξη του συστήματος χρησιμοποιήθηκαν οι εξής τεχνολογίες:

  • Back-end: Java σε συνδυασμό με Spring (framework), Gradle (building tool), JDBC (σύνδεση με βάση) και Apache Tomcat Server.
  • Παραγωγή των δεδομένων της βάσης: Python 3 με τα επιπρόσθετα modules Faker και Numpy, καθώς και το αρχείο electric_vehicles_data.json (από τη σελίδα του μαθήματος).
  • CLI: Javascript με χρήση Node.js και axios requests, για επικοινωνία μεταξύ back-end και API.
  • Front-end: React.js framework, με τις βιβλιοθήκες chart.js, react-chartjs-2 και react-router-dom.

Για εγκατάσταση του project:

  1. Εγκατάσταση του back-end ακολουθώντας τις οδηγίες του README στον αντίστοιχο φάκελο.
  2. Κατασκευή της βάσης και παραγωγή των δεδομένων της ακολουθώντας τις οδηγίες του README στο φάκελο Database.
  3. Εγκατάσταση του CLI με τις οδηγίες του αντίστοιχου README.
  4. Ομοίως για το front-end.