Micro Front-ends and Microservices Architecture in Web Application DevelopmentISSEL
Today, Web Development has left the static structure of monolithic code far behind and has adopted new architectures that allow interaction, more efficient and easy data management, tolerance of potential errors, easier code upgrade, etc. Two of these architectures are those of micro front-ends and microservices which aim to separate a page or application into smaller services for more efficient management of client requests and data. In this thesis, the advantages of these two architectures are studied and analyzed, as well as their patterns, which offer different advantages depending on the developer’s goal. The bibliography used to extract the information mostly consists of scientific research from the last decade (between 2011 and 2022), concerning different aspects and uses of microservices and micro front-ends. In addition, examples are provided from the implementation of two e-commerce applications that were created in the context of the diploma thesis in order to highlight the use of micro front-ends using JavaScript and REACT framework. Finally, disadvantages of the architectures are presented as well as conclusions for their implementation.
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...ISSEL
Σήµερα, το Web Development έχει αφήσει κατά πολύ πίσω του την στατική δοµή του µονολιθικού κώδικα και έχει υιοθετήσει νέες αρχιτεκτονικές που επιτρέπουν την διάδραση, την πιο αποτελεσµατική και εύκολη διαχείριση δεδοµένων, την ανοχή σε δυνητικά σφάλµατα, την ευκολότερη αναβάθµιση του κώδικα, κ.α. ∆ύο από αυτές τις αρχιτεκτονικές είναι και αυτές των micro front-ends και microservices οι οποίες αποσκοπούν στον διαχωρισµό µίας σελίδας ή εφαρµογής σε µικρότερες υπηρεσίες για την αποτελεσµατικότερη διαχείριση των αιτηµάτων του client και την καλύτερη διαχείριση των δεδοµένων. Στην παρούσα διπλωµατική εργασία, µελετώνται και αναλύονται τα πλεονεκτήµατα των δύο αυτών αρχιτεκτονικών, καθώς επίσης και τα patterns αυτών, τα οποία προσφέρουν ξεχωριστά πλεονεκτήµατα ανάλογα µε τον στόχο του developer. Η ϐιβλιογραφία που χρησιµοποιήθηκε για την άντληση των πληροφοριών, απαρτίζεται ως επί το πλείστον από επιστηµονικές έρευνες της τελευταίας δεκαετίας (µεταξύ 2011 και 2022), που αφορούν διαφορετικές πτυχές και χρήσεις των microservices και micro front-ends. Επιπροσθέτως, παράθετονται παραδείγµατα από την υλοποίηση δύο e-commerce εφαρµογών που δηµιουργήθηκαν στα πλαίσια της διπλωµατικής εργασίας µε σκοπό την ανάδειξη της εϕαρµογής των micro front-ends µε τη χρήση JavaScript και REACT framework. Τέλος, παρουσιάζονται µειονεκτήµατα των αρχιτεκτονικών καθώς και συµπεράσµατα για την εϕαρµογή τους.
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
Το διευρυµένο τοπίο του λογισµικού ανοιχτού κώδικα OSS αποδεικνύει την αυξανόµενη παραγωγική δραστηριότητα των µηχανικών λογισµικού που συνεισφέρουν σε πολλαπλές πλατφόρµες και διάφορα έργα λογισµικού. Η συµµετοχή τους σε αυτά τα έργα αναδεικνύει το ευρύ ϕάσµα των δεξιοτήτων τους, από τη συγγραφή κώδικα έως τη συνεργασία τους µε άλλους µηχανικούς λογισµικού. Καθώς στο οικοσύστηµα του λογισµικού ανοιχτού κώδικα υπάρχει µια διαρκής και συνεχώς αυξανόµενη δραστηριότητα, είναι πολύ σηµαντική µια πιο ολοκληρωµένη κατανόηση των συνεισφορών και των δεξιοτήτων των µηχανικών λογισµικού. Σκοπός της παρούσας διπλωµατικής είναι να αξιοποιήσει δεδοµένα από την υποδοµή World of Code (WoC) που περιέχει συγκεντρωµένα δεδοµένα από τα περισσότερα δη µόσια συστήµατα ελέγχου εκδόσεων για να παρέχει µια πιο ολοκληρωµένη εικόνα του προφίλ ενός µηχανικού λογισµικού. Εξάγοντας, αναλύοντας και οπτικοποιώντας αυτά τα δεδοµένα, αναπτύχθηκε µια εφαρµογή που παρουσιάζει µια περιεκτική επισκόπηση των δραστηριοτήτων ενός µηχανικού στα έργα λογισµικού ανοικτού κώδικα. Η οπτική αναπαράσταση των δεδοµένων, µετατρέπει πολύπλοκα σύνολα δεδοµένων σε εύκολα κατανοητές γραφικές µορφές. Η αξιολόγηση της εφαρµογής σε ένα σύνολο µηχανικών λογισµικού δείχνει ότι πετυχαίνει τους στόχους της. Προσφέρει µια εικόνα της δραστηριότητας, του ϱόλου και των τεχνικών δεξιοτήτων ενός µηχανικού, ενισχύοντας τη διαφάνεια και την κατανόηση της συνεισφοράς του στο οικοσύστηµα του OSS.
Micro Front-ends and Microservices Architecture in Web Application DevelopmentISSEL
Today, Web Development has left the static structure of monolithic code far behind and has adopted new architectures that allow interaction, more efficient and easy data management, tolerance of potential errors, easier code upgrade, etc. Two of these architectures are those of micro front-ends and microservices which aim to separate a page or application into smaller services for more efficient management of client requests and data. In this thesis, the advantages of these two architectures are studied and analyzed, as well as their patterns, which offer different advantages depending on the developer’s goal. The bibliography used to extract the information mostly consists of scientific research from the last decade (between 2011 and 2022), concerning different aspects and uses of microservices and micro front-ends. In addition, examples are provided from the implementation of two e-commerce applications that were created in the context of the diploma thesis in order to highlight the use of micro front-ends using JavaScript and REACT framework. Finally, disadvantages of the architectures are presented as well as conclusions for their implementation.
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...ISSEL
Σήµερα, το Web Development έχει αφήσει κατά πολύ πίσω του την στατική δοµή του µονολιθικού κώδικα και έχει υιοθετήσει νέες αρχιτεκτονικές που επιτρέπουν την διάδραση, την πιο αποτελεσµατική και εύκολη διαχείριση δεδοµένων, την ανοχή σε δυνητικά σφάλµατα, την ευκολότερη αναβάθµιση του κώδικα, κ.α. ∆ύο από αυτές τις αρχιτεκτονικές είναι και αυτές των micro front-ends και microservices οι οποίες αποσκοπούν στον διαχωρισµό µίας σελίδας ή εφαρµογής σε µικρότερες υπηρεσίες για την αποτελεσµατικότερη διαχείριση των αιτηµάτων του client και την καλύτερη διαχείριση των δεδοµένων. Στην παρούσα διπλωµατική εργασία, µελετώνται και αναλύονται τα πλεονεκτήµατα των δύο αυτών αρχιτεκτονικών, καθώς επίσης και τα patterns αυτών, τα οποία προσφέρουν ξεχωριστά πλεονεκτήµατα ανάλογα µε τον στόχο του developer. Η ϐιβλιογραφία που χρησιµοποιήθηκε για την άντληση των πληροφοριών, απαρτίζεται ως επί το πλείστον από επιστηµονικές έρευνες της τελευταίας δεκαετίας (µεταξύ 2011 και 2022), που αφορούν διαφορετικές πτυχές και χρήσεις των microservices και micro front-ends. Επιπροσθέτως, παράθετονται παραδείγµατα από την υλοποίηση δύο e-commerce εφαρµογών που δηµιουργήθηκαν στα πλαίσια της διπλωµατικής εργασίας µε σκοπό την ανάδειξη της εϕαρµογής των micro front-ends µε τη χρήση JavaScript και REACT framework. Τέλος, παρουσιάζονται µειονεκτήµατα των αρχιτεκτονικών καθώς και συµπεράσµατα για την εϕαρµογή τους.
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
Το διευρυµένο τοπίο του λογισµικού ανοιχτού κώδικα OSS αποδεικνύει την αυξανόµενη παραγωγική δραστηριότητα των µηχανικών λογισµικού που συνεισφέρουν σε πολλαπλές πλατφόρµες και διάφορα έργα λογισµικού. Η συµµετοχή τους σε αυτά τα έργα αναδεικνύει το ευρύ ϕάσµα των δεξιοτήτων τους, από τη συγγραφή κώδικα έως τη συνεργασία τους µε άλλους µηχανικούς λογισµικού. Καθώς στο οικοσύστηµα του λογισµικού ανοιχτού κώδικα υπάρχει µια διαρκής και συνεχώς αυξανόµενη δραστηριότητα, είναι πολύ σηµαντική µια πιο ολοκληρωµένη κατανόηση των συνεισφορών και των δεξιοτήτων των µηχανικών λογισµικού. Σκοπός της παρούσας διπλωµατικής είναι να αξιοποιήσει δεδοµένα από την υποδοµή World of Code (WoC) που περιέχει συγκεντρωµένα δεδοµένα από τα περισσότερα δη µόσια συστήµατα ελέγχου εκδόσεων για να παρέχει µια πιο ολοκληρωµένη εικόνα του προφίλ ενός µηχανικού λογισµικού. Εξάγοντας, αναλύοντας και οπτικοποιώντας αυτά τα δεδοµένα, αναπτύχθηκε µια εφαρµογή που παρουσιάζει µια περιεκτική επισκόπηση των δραστηριοτήτων ενός µηχανικού στα έργα λογισµικού ανοικτού κώδικα. Η οπτική αναπαράσταση των δεδοµένων, µετατρέπει πολύπλοκα σύνολα δεδοµένων σε εύκολα κατανοητές γραφικές µορφές. Η αξιολόγηση της εφαρµογής σε ένα σύνολο µηχανικών λογισµικού δείχνει ότι πετυχαίνει τους στόχους της. Προσφέρει µια εικόνα της δραστηριότητας, του ϱόλου και των τεχνικών δεξιοτήτων ενός µηχανικού, ενισχύοντας τη διαφάνεια και την κατανόηση της συνεισφοράς του στο οικοσύστηµα του OSS.
Evaluation is a very vital research interest in the digital library domain. This has been exhibited by the growth of the literature in the main conferences and journal papers. However it is very difficult for one to navigate in this extended corpus. For these reasons the DiLEO ontology has been developed in order to assist the exploration of important concepts and the discovery of trends in the evaluation of digital libraries. DiLEO is a domain ontology, which aims to conceptualize the DL evaluation domain by correlating its key entities and provide reasoning paths that support the design of evaluation experiments.
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...ISSEL
Με την ολοένα και αυξανόμενη υιοθέτηση των πρακτικών DevOps και την άνοδο του Continuous Integration/Continuous Deployment (CI/CD) στην ανάπτυξη λογισμικού, ο κύκλος ζωής ανάπτυξης λογισμικού (SDLC) έχει επιφέρει σημαντικές αλλαγές στη βιομηχανία. Αν και αυτές οι μέθοδοι προσφέρουν πολλά πλεονεκτήματα, παρουσιάζουν επίσης μοναδικές προ κλήσεις ασφαλείας, καθώς οι εφαρμογές που αναπτύσσονται με αυτές είναι πιο επιρρεπείς σε κυβερνοεπιθέσεις συγκριτικά με τις παραδοσιακές μεθόδους ανάπτυξης λογισμικού. Το DevSecOps, ένας συνδυασμός πρακτικών ανάπτυξης (Dev), ασφάλειας (Sec) και λειτουργιών (Ops), έχει αναδειχθεί ως μια κρίσιμη προσέγγιση στην ασφάλεια λογισμικού στο σημερινό ταχέως εξελισσόμενο τεχνολογικό τοπίο. Αυτή η μεθοδολογία είναι ουσιαστική και σχετική για διάφορους λόγους. Πρώτον, αντιμετωπίζει την αυξανόμενη ανάγκη για ασφάλεια στην ανάπτυξη λογισμικού. Καθώς οι απειλές και οι επιθέσεις στον κυβερνοχώρο γίνονται πιο εξελιγμένες, η ενσωμάτωση της ασφάλειας στον αγωγό DevOps βοηθά τους οργανισμούς να εντοπίζουν και να μετριάζουν προληπτικά τις ευπάθειες από το πρώιμο στάδιο ανάπτυξης του λογισμικού, μειώνοντας τον κίνδυνο παραβίασης δεδομένων και διακοπής λειτουργίας. Δεύτερον, η ανάγκη για ταχύτερες και συχνότερες εκδόσεις λογισμικού απαιτεί μια μετατόπιση από τις παραδοσιακές πρακτικές ασφαλείας, οι οποίες συχνά προκαλούν καθυστε ρήσεις. Το DevSecOps απλοποιεί την ασφάλεια αυτοματοποιώντας τις δοκιμές και τους ελέγχους συμμόρφωσης, επιτρέποντας τη συνεχή παράδοση (CD) χωρίς να θυσιάζεται η ασφάλεια. Επιπλέον, το DevSecOps ενθαρρύνει μια κουλτούρα κοινής ευθύνης, ενισχύοντας τη συνεργασία μεταξύ προγραμματιστών, επαγγελματιών ασφάλειας και ομάδων επιχειρήσεων. Αυτή η συλλογική προσέγγιση οδηγεί σε βελτιωμένη επικοινωνία, βελτιωμένη επίγνωση των ανη συχιών για την ασφάλεια και ταχύτερη απόκριση σε αναδυόμενες απειλές. Σε μια εποχή όπου ο ψηφιακός μετασχηματισμός βρίσκεται στην πρώτη γραμμή των επιχει ρηματικών στρατηγικών, το DevSecOps είναι απαραίτητο για τη διασφάλιση της ανθεκτικότητας, της ακεραιότητας και της εμπιστευτικότητας των συστημάτων λογισμικού. Ευθυγραμμίζει την ασφάλεια με το ρυθμό της σύγχρονης ανάπτυξης λογισμικού, καθιστώντας το ένα κρίσιμο και επίκαιρο παράδειγμα για τη διαφύλαξη των ψηφιακών δεδομένων και περιουσιακών στοιχείων. Η παρούσα διπλωματική προτείνει μια μέθοδο για τη συμπλήρωση και την αυτοματοποίηση σαρώσεων ασφάλειας έργων λογισμικού με χρήση αποκλειστικά εργαλείων ανοιχτού κώδικα (Open-source software) για την πραγματοποίηση των σαρώσεων ασφάλειας, την παρακολούθηση των αποτελεσμάτων και την αυτοματοποίηση επιδιορθώσεων ευπαθειών. Η προτεινόμενη έρευνα έχει ενσωματωθεί σε υποδομή Continuous Integration/Continuous Delivery, επιτρέποντας την αυτόματη σάρωση και επιδιόρθωση τρωτών σημείων κατά τη διαδικασία και τον κύκλο ανάπτυξης και παράδοσης του λογισμικού.
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...ISSEL
Στο πλαίσιο της διαδικασίας ανάπτυξης λογισμικού, η ανάθεση εργασιών θεωρείται μια κρίσιμη πτυχή η οποία επιδιώκει να αναθέσει τις εργασίες προς επίλυση στον πιο κατάλληλο προγραμματιστή. Η υπάρχουσα έρευνα σε αυτόν τον τομέα επικεντρώνεται κυρίως σε πληροφορίες που συλλέγονται από τις αναφορές των εργασιών λογισμικού, αλλά υπάρχει ακόμα αρκετή πολύτιμη πληροφορία διαθέσιμη στα σχετικά commits των μηχανικών λογισμικού που δεν έχει διερευνηθεί πλήρως. Η παρούσα διπλωματική εργασία εμβαθύνει στη χρήση πληροφορίας από τα commits για τη βελτίωση της προσέγγισης ανάθεσης εργασιών λογισμικού. Αξιοποιώντας δεδομένα εργασιών λογισμικού και πληροφορίες από commits συνδεδεμένα με τις εργασίες λογισμικού, αναπτύξαμε ένα σύστημα που στοχεύει στην ενίσχυση της υπάρχουσας μεθοδολογίας. Ο πρωταρχικός στόχος ήταν να αξιολογηθεί η αποτελεσματικότητα της ενσωμάτωσης της πληροφορίας από commits σε σύγκριση με την αποκλειστική στήριξη στις αναφορές εργασιών λογισμικού. Μέσω τεχνικών προεπεξεργασίας, ανακαλύψαμε ότι τα πεδία των commits περιέχουν πολύτιμες πληροφορίες που μπορούν να συμβάλουν σημαντικά στη διαδικασία ανάθεσης των εργασιών. Προς αυτόν τον στόχο, κατασκευάσαμε ένα μοντέλο νευρωνικών δικτύων, ειδικά προσαρμοσμένο στις απαιτήσεις μας. Η προεπεξεργασία περιλάμβανε εξαγωγή και ανάλυση πεδίων κειμένου τόσο από αναφορές εργασιών λογισμικού όσο και από commits, καθώς και από το περιεχόμενο του κώδικα από τα commits. Επιπλέον, κωδικοποιήσαμε βασικά πεδία για την εξαγωγή σημαντικών χαρακτηριστικών, εμπλουτίζοντας έτσι το σύνολο δεδομένων. Στη συνέχεια χρησιμοποιήθηκε το εκπαιδευμένο μοντέλο νευρωνικών δικτύων για την ταξινόμηση των εργασιών λογισμικού, αναθέτοντάς τις στον καταλληλότερο προγραμματιστή. Για να επικυρώσουμε την αποτελεσματικότητα της προσέγγισής μας, χωρίσαμε τα διαθέσιμα δεδομένα σε υποσύνολα με βάση τα έργα και πραγματοποιήσαμε διαδικασίες εκπαίδευσης και ελέγχου. Ενσωματώνοντας πληροφορία από τα commits στη διαδικασία ανάθεσης εργασιών λογισμικού, το σύστημά μας επέδειξε την ικανότητα να επιτυγχάνει υψηλή ακρίβεια και αποτελεσματικότητα στην ανάθεση εργασιών σε προγραμματιστές.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
Evaluation is a very vital research interest in the digital library domain. This has been exhibited by the growth of the literature in the main conferences and journal papers. However it is very difficult for one to navigate in this extended corpus. For these reasons the DiLEO ontology has been developed in order to assist the exploration of important concepts and the discovery of trends in the evaluation of digital libraries. DiLEO is a domain ontology, which aims to conceptualize the DL evaluation domain by correlating its key entities and provide reasoning paths that support the design of evaluation experiments.
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...ISSEL
Με την ολοένα και αυξανόμενη υιοθέτηση των πρακτικών DevOps και την άνοδο του Continuous Integration/Continuous Deployment (CI/CD) στην ανάπτυξη λογισμικού, ο κύκλος ζωής ανάπτυξης λογισμικού (SDLC) έχει επιφέρει σημαντικές αλλαγές στη βιομηχανία. Αν και αυτές οι μέθοδοι προσφέρουν πολλά πλεονεκτήματα, παρουσιάζουν επίσης μοναδικές προ κλήσεις ασφαλείας, καθώς οι εφαρμογές που αναπτύσσονται με αυτές είναι πιο επιρρεπείς σε κυβερνοεπιθέσεις συγκριτικά με τις παραδοσιακές μεθόδους ανάπτυξης λογισμικού. Το DevSecOps, ένας συνδυασμός πρακτικών ανάπτυξης (Dev), ασφάλειας (Sec) και λειτουργιών (Ops), έχει αναδειχθεί ως μια κρίσιμη προσέγγιση στην ασφάλεια λογισμικού στο σημερινό ταχέως εξελισσόμενο τεχνολογικό τοπίο. Αυτή η μεθοδολογία είναι ουσιαστική και σχετική για διάφορους λόγους. Πρώτον, αντιμετωπίζει την αυξανόμενη ανάγκη για ασφάλεια στην ανάπτυξη λογισμικού. Καθώς οι απειλές και οι επιθέσεις στον κυβερνοχώρο γίνονται πιο εξελιγμένες, η ενσωμάτωση της ασφάλειας στον αγωγό DevOps βοηθά τους οργανισμούς να εντοπίζουν και να μετριάζουν προληπτικά τις ευπάθειες από το πρώιμο στάδιο ανάπτυξης του λογισμικού, μειώνοντας τον κίνδυνο παραβίασης δεδομένων και διακοπής λειτουργίας. Δεύτερον, η ανάγκη για ταχύτερες και συχνότερες εκδόσεις λογισμικού απαιτεί μια μετατόπιση από τις παραδοσιακές πρακτικές ασφαλείας, οι οποίες συχνά προκαλούν καθυστε ρήσεις. Το DevSecOps απλοποιεί την ασφάλεια αυτοματοποιώντας τις δοκιμές και τους ελέγχους συμμόρφωσης, επιτρέποντας τη συνεχή παράδοση (CD) χωρίς να θυσιάζεται η ασφάλεια. Επιπλέον, το DevSecOps ενθαρρύνει μια κουλτούρα κοινής ευθύνης, ενισχύοντας τη συνεργασία μεταξύ προγραμματιστών, επαγγελματιών ασφάλειας και ομάδων επιχειρήσεων. Αυτή η συλλογική προσέγγιση οδηγεί σε βελτιωμένη επικοινωνία, βελτιωμένη επίγνωση των ανη συχιών για την ασφάλεια και ταχύτερη απόκριση σε αναδυόμενες απειλές. Σε μια εποχή όπου ο ψηφιακός μετασχηματισμός βρίσκεται στην πρώτη γραμμή των επιχει ρηματικών στρατηγικών, το DevSecOps είναι απαραίτητο για τη διασφάλιση της ανθεκτικότητας, της ακεραιότητας και της εμπιστευτικότητας των συστημάτων λογισμικού. Ευθυγραμμίζει την ασφάλεια με το ρυθμό της σύγχρονης ανάπτυξης λογισμικού, καθιστώντας το ένα κρίσιμο και επίκαιρο παράδειγμα για τη διαφύλαξη των ψηφιακών δεδομένων και περιουσιακών στοιχείων. Η παρούσα διπλωματική προτείνει μια μέθοδο για τη συμπλήρωση και την αυτοματοποίηση σαρώσεων ασφάλειας έργων λογισμικού με χρήση αποκλειστικά εργαλείων ανοιχτού κώδικα (Open-source software) για την πραγματοποίηση των σαρώσεων ασφάλειας, την παρακολούθηση των αποτελεσμάτων και την αυτοματοποίηση επιδιορθώσεων ευπαθειών. Η προτεινόμενη έρευνα έχει ενσωματωθεί σε υποδομή Continuous Integration/Continuous Delivery, επιτρέποντας την αυτόματη σάρωση και επιδιόρθωση τρωτών σημείων κατά τη διαδικασία και τον κύκλο ανάπτυξης και παράδοσης του λογισμικού.
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...ISSEL
Στο πλαίσιο της διαδικασίας ανάπτυξης λογισμικού, η ανάθεση εργασιών θεωρείται μια κρίσιμη πτυχή η οποία επιδιώκει να αναθέσει τις εργασίες προς επίλυση στον πιο κατάλληλο προγραμματιστή. Η υπάρχουσα έρευνα σε αυτόν τον τομέα επικεντρώνεται κυρίως σε πληροφορίες που συλλέγονται από τις αναφορές των εργασιών λογισμικού, αλλά υπάρχει ακόμα αρκετή πολύτιμη πληροφορία διαθέσιμη στα σχετικά commits των μηχανικών λογισμικού που δεν έχει διερευνηθεί πλήρως. Η παρούσα διπλωματική εργασία εμβαθύνει στη χρήση πληροφορίας από τα commits για τη βελτίωση της προσέγγισης ανάθεσης εργασιών λογισμικού. Αξιοποιώντας δεδομένα εργασιών λογισμικού και πληροφορίες από commits συνδεδεμένα με τις εργασίες λογισμικού, αναπτύξαμε ένα σύστημα που στοχεύει στην ενίσχυση της υπάρχουσας μεθοδολογίας. Ο πρωταρχικός στόχος ήταν να αξιολογηθεί η αποτελεσματικότητα της ενσωμάτωσης της πληροφορίας από commits σε σύγκριση με την αποκλειστική στήριξη στις αναφορές εργασιών λογισμικού. Μέσω τεχνικών προεπεξεργασίας, ανακαλύψαμε ότι τα πεδία των commits περιέχουν πολύτιμες πληροφορίες που μπορούν να συμβάλουν σημαντικά στη διαδικασία ανάθεσης των εργασιών. Προς αυτόν τον στόχο, κατασκευάσαμε ένα μοντέλο νευρωνικών δικτύων, ειδικά προσαρμοσμένο στις απαιτήσεις μας. Η προεπεξεργασία περιλάμβανε εξαγωγή και ανάλυση πεδίων κειμένου τόσο από αναφορές εργασιών λογισμικού όσο και από commits, καθώς και από το περιεχόμενο του κώδικα από τα commits. Επιπλέον, κωδικοποιήσαμε βασικά πεδία για την εξαγωγή σημαντικών χαρακτηριστικών, εμπλουτίζοντας έτσι το σύνολο δεδομένων. Στη συνέχεια χρησιμοποιήθηκε το εκπαιδευμένο μοντέλο νευρωνικών δικτύων για την ταξινόμηση των εργασιών λογισμικού, αναθέτοντάς τις στον καταλληλότερο προγραμματιστή. Για να επικυρώσουμε την αποτελεσματικότητα της προσέγγισής μας, χωρίσαμε τα διαθέσιμα δεδομένα σε υποσύνολα με βάση τα έργα και πραγματοποιήσαμε διαδικασίες εκπαίδευσης και ελέγχου. Ενσωματώνοντας πληροφορία από τα commits στη διαδικασία ανάθεσης εργασιών λογισμικού, το σύστημά μας επέδειξε την ικανότητα να επιτυγχάνει υψηλή ακρίβεια και αποτελεσματικότητα στην ανάθεση εργασιών σε προγραμματιστές.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
Αρχές Οικονομικής Θεωρίας - Το γραπτό των πανελλαδικών εξετάσεωνPanagiotis Prentzas
Αρχές Οικονομικής Θεωρίας (ΑΟΘ): Τι πρέπει να προσέξουν οι υποψήφιοι κατά τη διάρκεια των πανελλαδικών εξετάσεων στη δομή των απαντήσεών τους, αλλά και στην εμφάνιση του γραπτού τους.
Μπορείτε να δείτε και τη διαδραστική παρουσίαση στο www.study4economy.edu.gr.
Διδακτέα - Εξεταστέα ύλη για το μάθημα "Οικονομία" (ΑΟΘ) της Γ τάξης του Επαγγελματικού λυκείου. Μπορείτε να δείτε και αναλυτικά την ύλη του μαθήματος επιλέγοντας τον παρακάτω σύνδεσμο:
https://view.genially.com/6450d17ad94e2600194eb286
2. 2.2 ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Μετά την προδιαγραφή των απαιτήσεων, ακολουθεί η δραστηριότητα της ανάπτυξης
του λογισμικού που περιλαμβάνει τις φάσεις της σχεδίασης και της κωδικοποίησης
Στη φάση της σχεδίασης, θεωρείται γνωστό το τι θα κάνει το λογισμικό και
αντιμετωπίζεται το πρόβλημα του πως θα το κάνει.
Περιγράφονται τεκμηριωμένα οι μονάδες που αποτελούν το λογισμικό, οι συσχετίσεις
μεταξύ τους, η διαταξη τους και η εσωτερική λειτουργία τους.
Τα προϊόντα της σχεδίασης επαληθεύονται σε σχέση με το έγγραφο των
προδιαγραφών των απαιτήσεων.
3. ακολουθείται η από πάνω προς τα κάτω (top-down) προσέγγιση
Προσδιορίζει ποιες είναι οι μονάδες που συγκροτούν το σύστημα λογισμικού και
πώς αυτές διατάσσονται στις υπολογιστικές μονάδες που είναι διαθέσιμες.
Το αρχιτεκτονικό σχέδιο αποτυπώνεται σε ιεραρχικό διάγραμμα δομής
προγράμματος
Αφορά την επικοινωνία των χειριστών ή των συσκευών με τις
μονάδες λογισμικού, αλλά και των μονάδων μεταξύ τους.
Καθορίζει τις παραμέτρους της κάθε τέτοιας επικοινωνίας και τις
αποτυπώνει στο διάγραμμα δομής προγράμματος.
Οι διεπαφές των χρηστών πρέπει να σχεδιάζονται με γνώμονα
την φιλικότητα προς το χρήστη (user friendliness) γιατί σε
αντίθετη περίπτωση ένα καλά σχεδιασμένο σύστημα μπορεί να
μην αποδώσει τα αναμενόμενα
Αφορά τον καθορισμό της εσωτερικής δομής κάθε
μονάδας και παράγει το λεπτομερές σχέδιο μονάδων με τη
μορφή ψευδοκώδικα (ή άλλης γλώσσας σχεδίασης).
Πρόκειται για την λεπτομερή σχεδίαση της δομής που θα έχουν τα δεδομένα στη βάση δεδομένων
χρησιμοποιώντας το μοντέλο οντοτήτων- συσχετίσεων (ER), έτσι ώστε να εξασφαλίζεται η ανεξαρτησία των
δεδομένων από τις μονάδες λογισμικού
4. Η σχεδίαση, η κωδικοποίηση και ο έλεγχος πραγματοποιούνται (περισσότερο ή λιγότερο το
καθένα) τμηματικά σε κύκλους ανάπτυξης των φάσεων της επεξεργασίας, της κατασκευής και
της μετάβασης.
Εκτός από αυτό, κατά τη σχεδίαση
προστίθενται κατασκευαστικές
λεπτομέρειες και
χαρακτηριστικά του περιβάλλοντος (π.χ.
κατανομή συστατικών του λογισμικού σε
υπολογιστικούς πόρους) ώστε να
ικανοποιηθούν και μη λειτουργικές
απαιτήσεις.
Η σχεδίαση βασίζεται στο μοντέλο
ανάλυσης το οποίο εξειδικεύει και
εκλεπτύνει περισσότερο, παρέχοντας
καλά προσδιορισμένες κλάσεις
(πεδία, μέθοδοι) και σχέσεις μεταξύ
αυτών.
Προκύπτει
έτσι το μοντέλο σχεδίασης ως
ένα σύνολο από νέα (πιο
λεπτομερή) μοντέλα, επίσης σε
Unified
Modeling Language (UML), το
οποίο δεδομένου ότι βρίσκεται
ακόμη πιο κοντά στην
υλοποίηση, βοηθά στη λήψη
αποφάσεων κωδικοποίησης.
5.
6. Η κατασκευή και η διαρκής ενημέρωση του πλήθους των
διαγραμμάτων, μοντέλων και εγγράφων είναι μια δύσκολη
εργασία που καλό είναι να υποστηρίζεται από κάποιο εργαλείο
CASE (Computer Aided Software Engineering).
Τα εργαλεία CASE, είναι εργαλεία λογισμικού
που στοχεύουν στην υποστήριξη ή και αυτοματοποίηση της
ίδιας της κατασκευής λογισμικού.
7. 2.3 Μεθοδολογίες και εργαλεία διαχείρισης έργων πληροφορικής
Ας δούμε τώρα κάποιους ορισμούς:
Έργο προσωρινό εγχείρημα που στοχεύει στη δημιουργία ενός μοναδικού
προϊόντος ή υπηρεσίας.
Προσωρινό σημαίνει ότι κάθε έργο έχει καθορισμένο τέλος.
Μοναδικό σημαίνει ότι το προϊόν ή η υπηρεσία διαφέρει κατά διακριτό τρόπο από
όλα τα υπόλοιπα παρόμοια προϊόντα ή υπηρεσίες.
Έργο εγχείρημα κατά το οποίο ανθρώπινοι πόροι, μηχανές, οικονομική πόροι και πρώτες
ύλες οργανώνονται κατά καινοφανή τρόπο, με στόχο την ανάληψη συγκεκριμένου
αντικειμένου εργασιών που έχουν συγκεκριμένες προδιαγραφές και υπόκεινται σε
δεδομένους κοστολογικούς και χρονικούς περιορισμούς, ώστε να παραχθεί μία επωφελής
μεταβολή, η οποία ορίζεται μέσω ποσοτικών και ποιοτικών στόχων≫.
Turner (1999)
8. «Διοίκηση Έργου (Project Management) είναι η διεργασία συνδυασμού συστημάτων,
τεχνικών και γνώσης με σκοπό την ολοκλήρωση ενός έργου μέσα σε καθορισμένα πλαίσια
χρόνου, προϋπολογισμού, ποιότητας και σκοπού/ αντικειμένου≫.
Το εγχειρίδιο για τη διοίκηση έργου (Project Management Body Of Knowledge, PMBOK)
ορίζει ως διοίκηση έργου τη διαδικασία κατά την οποία: εφαρμόζουμε γνώσεις, δεξιότητες,
εργαλεία και τεχνικές κατά την εκτέλεση των δραστηριοτήτων του έργου, με στόχο να
ικανοποιήσουμε τις απαιτήσεις και τις προσδοκίες των συμμετεχόντων.
Μπορεί όλα αυτά να σου φαίνονται περίεργα και βαρετά, όμως και
εσύ ο ίδιος εκτελείς φάσεις/κύκλους/βήματα διοίκησης έργου σε
πολλές δραστηριότητες και φάσεις της ζωής σου, είτε απλές είτε
σύνθετες
πχ. Αγορά ενός υπολογιστή, διοργάνωση μιας εκδρομής, ενός πάρτι,
μιας εξόδου, εκπόνηση μιας εργασίας, διάβασμα/μελέτη κτλ