https://github.com/lydia-ath/eclass_advanced_programming
https://github.com/lydia-ath/eclass_advanced_programming
hibernate-jpa java jax-rs-jersey jpa-persistence-applications junit-test
Last synced: 9 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/lydia-ath/eclass_advanced_programming
- Owner: lydia-ath
- Created: 2022-01-15T20:07:17.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-01-15T20:11:46.000Z (over 4 years ago)
- Last Synced: 2025-03-08T12:44:24.357Z (over 1 year ago)
- Topics: hibernate-jpa, java, jax-rs-jersey, jpa-persistence-applications, junit-test
- Language: Java
- Homepage:
- Size: 368 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Σύστημα Διαχείρησης Σχολικής Μονάδας
==============================================================================================================
Πεδίο προβλήματος:
* Tο σύστημα θα υποστηρίζει μια σχολική μονάδα μεσης εκπαίδευσης (γυμνάσιο).
* Tο σύστημα θα έχει τη δυνατότητα καταχώρησης-εγγραφής μαθητών-καθηγητών (όνομα, επώνυμο, φύλο, διεύθυνση κατοικίας κτλ).
* Tο σύστημα θα έχει τη δυνατότητα διαγραφής μαθητών-καθηγητών από το σύστημα (οριστική διαγραφή, επανεγγραφή ή απλή διόρθωση/ενημέρωση στοιχείων).
* Το σύστημα θα καταχωρεί τους μαθητές σε αίθουσες συγκεκριμένης χωρητικότητας (15 άτομα) λόγω των μέτρων της πανδημίας, οπότε όταν μια αίθουσα γεμίζει οι
υπόλοιποι μαθητές τοποθετούνται στην επόμενη κτλ.
* Το σύστημα θα κάνει αυτόματη ανάθεση μαθητών σε τμήματα των 15 ατόμων.
* Η γραμματεία θα έχει δυνατότητα καταχώρισης των μαθημάτων για κάθε τάξη (1η, 2α, 3η γυμνασίου).
* Το σύστημα θα υποστηρίζει συγκεκριμένες ειδικότητες Μαθηματικά, Φιλολογικά, Φυσικές Επιστήμες, Φυσική Αγωγή
και Καλλιτεχνικά.
* Το σύστημα θα υποστηρίζει ανάθεση καθηγητών για διδασκαλία των μαθημάτων του κάθε τμήματος.
εξασφαλίζοντας την συμβατότητα μεταξύ μαθήματος και ειδικότητας καθηγητή καθώς και το μέγιστο ωράριο του
κάθε διδάσκοντας (20 ώρες).
* Το σύστημα θα υποστηρίζει την καταχώριση βαθμολογίας για συγκεκριμένο μάθημα και τμήμα από διδάσκοντά του
* Το σύστημα θα εκδίδει αναφορές με τη βαθμολογία κάθε μαθητή.
Οικοδόμηση
---------------------------------------------------------------------------------------------------------------
Η οικοδόμηση (build) του λογισμικού γίνεται με το εργαλείο [Maven 3](https://maven.apache.org/)
Η εγκατάσταση του Maven είναι σχετικά απλή. Αφού κατεβάσουμε το Maven (π.χ. έκδοση 3.5.0) και τα αποσυμπιέσουμε σε κατάλληλους καταλόγους
π.χ. C:\\Program Files\\apache-maven-3.5.0\\ αντίστοιχα θα πρέπει:
* να ορίσουμε τη μεταβλητή περιβάλλοντος JAVA_HOME η οποία θα δείχνει στον κατάλογο εγκατάστασης του JDK,
* να προσθέσουμε τον κατάλογο C:\\Program Files\\apache-maven-3.5.0\\bin στη μεταβλητή περιβάλλοντος PATH.
* να ορίσουμε τη μεταβλητή περιβάλλοντος M2_HOME. Στο παράδειγμά μας είναι ο κατάλογος C:\\Program Files\\apache-maven-3.5.0\\.
Για να εκτελέσουμε από τη γραμμή εντολών εργασίες οικοδόμησης του λογισμικού χρησιμοποιούμε το Maven μέσω της εντολής mvn,
αφού μετακινηθούμε στον κατάλογο όπου βρίσκεται το αρχείο pom.xml. Η τυπική εκτέλεση του Maven είναι:
mvn [options] [target [target2 [target3] … ]]
Τα παραγόμενα αρχεία δημιουργούνται από το Maven στο κατάλογο /target.
Τυπικές εργασίες με το Maven είναι:
* mvn clean καθαρισμός του project. Διαγράφονται όλα τα αρχεία του καταλόγου /target.
* mvn compile μεταγλώττιση του πηγαίου κώδικα. Τα αρχεία .class παράγονται στον κατάλογο /target/classes.
* mvn test-compile μεταγλώττιση του κώδικα ελέγχου. Τα αρχεία .class παράγονται στον κατάλογο /target/test-classes.
* mvn test εκτέλεση των ελέγχων με το JUnit framework.
* mvn site παραγωγή στο site του έργου το οποίο περιλαμβάνει την τεκμηρίωση του έργου.
* mvn umlet:convert -Dumlet.targetDir=src/site/markdown/uml παράγει αρχεία εικόνας png για όλα τα διαγράμματα που βρίσκονται στην τοποθεσία `src/site/markdown/uml`. Συστήνεται η κλήση της εντολής πριν την υποβολή μιας νέας έκδοσης διαγραμμάτων στο git repository (`git commit`). Ως αποτέλεσμα τα παραγόμενα αρχεία εικόνας των διαγραμμάτων συνοδεύουν τα πηγαία αρχεία έτσι ώστε να είναι εύκολη η πλοήγηση στην τεκμηρίωση του project μέσω του github.
Η τεκμηρίωση περιλαμβάνει:
* Ένα πρότυπο εγγράφου προδιαγραφών απαιτήσεων λογισμικού. Τα πηγαία αρχεία του εγγράφου βρίσκονται στον φάκελο /src/site.
* Το έγγραφο περιγραφής σχεδίασης λογισμικού. Τα πηγαία αρχεία του εγγράφου βρίσκονται στον φάκελο /src/site.
* Η τεκμηρίωση του κώδικα με το JavaDoc.
* Αναφορές καλύψεων κώδικα με χρήση του εργαλείου JaCoCo.
* Αναφορά αυτόματης επιθεώρησης κώδικα με το εργαλείο CheckStyle.
* Αναφορά αυτόματης επιθεώρησης κώδικα με το εργαλείο SpotBugs.
* Αναφορά αντιγραφής/επικόλλησης κώδικα με το εργαλείο CPD/PMD.
* Αναφορά αυτόματης επιθεώρησης κώδικα με το εργαλείο PMD.
Eclipse
-------------------------------------------------------------------------------------------------------------
Η εισαγωγή του project στο Eclipse γίνεται με την επιλογή File/Import/Maven/Existing Maven Projects με την επιλογή του καταλόγου που περιλαμβάνει το project.
Τεκμηρίωση
-------------------------------------------------------------------------------------------------------------
Για την τεκμηρίωση του λογισμικού χρησιμοποιήθηκε το Markdown markup για τη συγγραφή των κειμένων και το εργαλείο UMLet για την κατασκευή των διαγραμμάτων UML.
## Χρήσιμες εντολές:
Η διαχείριση της οικοδόμησης του έργου μπορεί να γίνει με μια σειρά βασικών εντολών:
- `mvn`: εκτελεί τον προκαθορισμένο κύκλο οικοδόμησης
- `mvn test`: εκτελεί τα unit tests του project
- `mvn site`: παράγει την τεκμηρίωση του project σε μορφή HTML. Τα παραγόμενα αρχεία
είναι διαθέσιμα στην τοποθεσία `target/site/`
- `mvn umlet:convert -Dumlet.targetDir=src/site/markdown/uml`: παράγει αρχεία εικόνας png για όλα τα διαγράμματα που βρίσκονται στην τοποθεσία `src/site/markdown/uml`. Συστήνεται η κλήση της εντολής πριν την υποβολή μιας νέας έκδοσης διαγραμμάτων στο git repository (`git commit`). Ως αποτέλεσμα τα παραγόμενα αρχεία εικόνας των διαγραμμάτων συνοδεύουν τα πηγαία αρχεία έτσι ώστε να είναι εύκολη η πλοήγηση στην τεκμηρίωση του project μέσω του github.