Ανάλυση Διαλόγων Προγραμματιστών με το
ChatGPT
Επίβλεψη:
Ανδρέας Συμεωνίδης,
Καθηγητής
Θεμιστοκλής Διαμαντόπουλος,
Μεταδιδακτορικός Ερευνητής
Δημήτριος Νικήτας Νάστος,
Υποψήφιος Διδάκτωρ
Εκπόνηση:
Κωνσταντίνος Μωράτης
ΑΕΜ: 9589
Μάρτιος 2024
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Πολυτεχνική Σχολή
Τμήμα Ηλεκτρολόγων Μηχανικών
& Μηχανικών Υπολογιστών
Περιεχόμενα
➢ Εισαγωγή
➢ Υλοποίηση
➢ Αποτελέσματα
➢ Συμπεράσματα
& Μελλοντική Εργασία
2
➢ Εισαγωγή
➢ Υλοποίηση
➢ Αποτελέσματα
➢ Συμπεράσματα
& Μελλοντική Εργασία
3
Το ChatGPT στη Μηχανική Λογισμικού
➢ Η άφιξη των Μεγάλων Γλωσσικών Μοντέλων και του ChatGPT έχει
μεταβάλλει τον τρόπο ανάπτυξης και συντήρησης λογισμικού,
προσφέροντας προηγμένες δυνατότητες όπως η αυτοματοποιημένη
παραγωγή και τροποποίηση κώδικα
➢ Ως αποτέλεσμα, οι προγραμματιστές χρησιμοποιούν τα μοντέλα
αυτά ολοένα και περισσότερο στην καθημερινή τους εργασία
➢ Επομένως, η διερεύνηση της δυναμικής και των προκλήσεων που
σχετίζονται με την ενσωμάτωση του ChatGPT στην περιοχή της
μηχανικής λογισμικού είναι κρίσιμης σημασίας
4
➢ Το Mining Challenge είναι ένας ετήσιος διαγωνισμός στα πλαίσια του
Διεθνούς Συνεδρίου στο Mining Software Repositories (MSR)
➢ Θέμα: Η αξιοποίηση του συνόλου δεδομένων DevGPT, το οποίο
κατασκευάστηκε για τις ανάγκες του διαγωνισμού και αποτελείται
από συνομιλίες μεταξύ προγραμματιστών και του ChatGPT
➢ Στόχος: Η διερεύνηση του περιεχομένου και του αντίκτυπου της
χρήσης του ChatGPT από τους προγραμματιστές
5
Mining Challenge 2024
➢ Το σύνολο DevGPT αποτελείται από διαλόγους προγραμματιστών με
το ChatGPT που έχουν κοινοποιηθεί στα εξής πεδία:
○ GitHub Commits, Code files, Issues,
Pull requests και Discussions
○ Posts στο Hacker News
➢ Επίσης, περιλαμβάνει τα μετα-δεδομένα των πηγών στις οποίες
διαμοιράστηκαν οι διάλογοι
6
Το σύνολο DevGPT
7
Παράδειγμα εγγραφής DevGPT
Αξιοποιώντας το σύνολο δεδομένων DevGPT, η ανάλυση εστίασε στα
παρακάτω Ερευνητικά Ερωτήματα (Research Questions - RQs):
● RQ1: Πόσο εύκολο είναι το να κατευθύνουμε το ChatGPT προς τη
συγγραφή κώδικα για ένα σενάριο ανάπτυξης;
● RQ2: Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται
από το ChatGPT;
● RQ3: Ποια είναι η επίδραση της χρήσης του ChatGPT στην ποιότητα
του υπάρχοντος κώδικα;
8
Σκοπός της Διπλωματικής Εργασίας
➢ Εισαγωγή
➢ Υλοποίηση
➢ Αποτελέσματα
➢ Συμπεράσματα
& Μελλοντική Εργασία
9
10
Αρχιτεκτονική Συστήματος
11
Προεπεξεργασία Δεδομένων
Το πρώτο βήμα της υλοποίησης, αφορά στην προεπεξεργασία των
δεδομένων. Στο βήμα αυτό πραγματοποιήθηκε:
1. Καθαρισμός των δεδομένων (π.χ. απομάκρυνση διπλοτύπων)
2. Εμπλουτισμός των δεδομένων με χρήση του GitHub API
3. Αναγνώριση της γλώσσας προγραμματισμού του παραγόμενου
κώδικα και επιλογή της JavaScript ως proof of concept
Στη συνέχεια, οι διάλογοι εξετάστηκαν και κατηγοριοποιήθηκαν με βάση το
σενάριο χρήσης του ChatGPT:
12
Επισήμανση Διαλόγων
Κατηγορία Περιγραφή Πλήθος
Improve this code Ο χρήστης παρέχει ένα τμήμα κώδικα και ζητά κάποιες αλλαγές 693
Write me this code Ο χρήστης ζητά τη δημιουργία ενός τμήματος κώδικα 548
Fix this issue
Ο χρήστης παρέχει ένα τμήμα κώδικα ή τον κωδικό ενός
σφάλματος και ζητά την επίλυσή του
159
Example usage
Ο χρήστης ζητά την παροχή ενός παραδείγματος σχετικά με τη
χρήση κάποιας συνάρτησης/ κλάσης
129
Explain this code Ο χρήστης παρέχει ένα τμήμα κώδικα και ζητά να του το εξηγήσει 38
Παράδειγμα διαλόγου τύπου “Write me this code”:
13
Επισήμανση Διαλόγων (2)
Mε στόχο να εντοπίσουμε τις περιπτώσεις όπου οι προγραμματιστές
ενσωμάτωσαν κώδικα από το ChatGPT στα έργα τους
Ανιχνεύσαμε τους κλώνους κώδικα μεταξύ των αρχείων που έγιναν
commit στο GitHub και του κώδικα που παράχθηκε με το ChatGPT
Για τον υπολογισμό της ομοιότητας μεταξύ των τμημάτων κώδικα,
χρησιμοποιήθηκε το εργαλείο Simian
14
Εντοπισμός Κλώνων Κώδικα
Παράδειγμα εντοπισμού Κλώνου Κώδικα:
15
Εντοπισμός Κλώνων Κώδικα (2)
Εν συνεχεία, αναλύσαμε την ποιότητα του κώδικα που παράγεται με το
ChatGPT, σε δύο στάδια:
a. Εξετάζοντας τα τμήματα κώδικα που δημιουργήθηκαν με το ChatGPT
b. Συγκρίνοντας την ποιότητα μεταξύ των δύο εκδοχών των αρχείων στο
GitHub, πριν και μετά την ενσωμάτωση του κώδικα που προήλθε από το
ChatGPT
Για την εξαγωγή των κατάλληλων παραβάσεων και μετρικών ποιότητας,
αξιοποιήσαμε τα εργαλεία στατικής ανάλυσης PMD και SourceMeter
16
Ανάλυση Ποιότητας
PMD: Κατά τη χρήση του, ανιχνεύει προβλήματα ποιότητας, τα οποία
κατατάσσονται σε τρεις κατηγορίες:
a. Best Practices: Παραβάσεις που σχετίζονται με καλές προγραμματιστικές
τεχνικές (π.χ. Η χρήση καθολικών μεταβλητών)
b. Code Style: Παραβάσεις που σχετίζονται με την αναγνωσιμότητα του
κώδικα (π.χ. Η μη χρήση αγκυλών για τα if blocks)
c. Error Prone: Παραβάσεις που μπορεί να οδηγήσουν σε σφάλματα
(π.χ. Η χρήση του τελεστή “==” αντί του “===” για τη σύγκριση)
SourceMeter: Εντοπίζει αυτόματα τις περιπτώσεις όπου κάποια μετρική
ξεπερνάει τα προκαθορισμένα όρια. Οι μετρικές που υπολογίζει αφορούν
την πολυπλοκότητα, τη συντηρησιμότητα και την αναγνωσιμότητα του
κώδικα.
17
Ανάλυση Ποιότητας (2)
➢ Εισαγωγή
➢ Υλοποίηση
➢ Αποτελέσματα
➢ Συμπεράσματα
& Μελλοντική Εργασία
18
19
Ερευνητικό Ερώτημα 1:
Πόσο εύκολο είναι το να κατευθύνουμε το ChatGPT προς τη συγγραφή κώδικα για ένα
σενάριο ανάπτυξης;
❖ Εξετάστηκαν συνολικά 548
διάλογοι τύπου “Write me this
code”
❖ Σε 205 εξ αυτών (37%),
εντοπίστηκαν κλώνοι κώδικα
❖ Στις μισές των περιπτώσεων,
χρειάστηκαν 3 ή λιγότερα
ερωτήματα για τη δημιουργία
του επιθυμητού μπλοκ
20
Ερευνητικό Ερώτημα 1:
Πόσο εύκολο είναι το να κατευθύνουμε το ChatGPT προς τη συγγραφή κώδικα για ένα
σενάριο ανάπτυξης;
21
Ερευνητικό Ερώτημα 2:
Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
❖ Αναλύθηκαν 1.041 τμήματα
κώδικα JavaScript, από
διαλόγους τύπου
“Write me this code”
❖ Τα 513 (49%) εξ αυτών,
περιέχουν τουλάχιστον μία
παράβαση ποιότητας
22
Ερευνητικό Ερώτημα 2:
Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
❖ Χωρίζονται σε:
➢ 78.9% - “Best Practices”
➢ 14.5% - “Error Prone”
➢ 6.6% - “Code Style”
❖ SourceMeter:
➢ 60 συναρτήσεις με μεγάλο
πλήθος γραμμών
(Αναγνωσιμότητα)
➢ 2 συναρτήσεις με μεγάλο πλήθος
ορισμάτων (Συντηρησιμότητα)
23
Ερευνητικό Ερώτημα 2: (2)
Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
24
Ερευνητικό Ερώτημα 3:
Ποια είναι η επίδραση της χρήσης του ChatGPT στην ποιότητα του υπάρχοντος κώδικα;
❖ Αναλύθηκαν 241 αρχεία
κώδικα JavaScript, στα οποία
εντοπίστηκαν κλώνοι από
διαλόγους τύπου
“Improve this code”
❖ Σε 25 εξ αυτών
παρατηρήθηκε αύξηση των
παραβάσεων του αρχείου,
ενώ σε 24 μείωσή τους
25
Ερευνητικό Ερώτημα 3:
Ποια είναι η επίδραση της χρήσης του ChatGPT στην ποιότητα του υπάρχοντος κώδικα;
➢ Εισαγωγή
➢ Υλοποίηση
➢ Αποτελέσματα
➢ Συμπεράσματα
& Μελλοντική Εργασία
26
➔ Το ChatGPT μπορεί να αποτελέσει ένα πολύτιμο εργαλείο στην περιοχή
της μηχανικής λογισμικού
➔ Καθώς, είναι ικανό να δημιουργεί κώδικα απαντώντας σε ένα σχετικά
περιορισμένο αριθμό ερωτημάτων
➔ Ωστόσο, το 50% περίπου του παραγόμενου κώδικα περιέχει μία ή
περισσότερες παραβάσεις ποιότητας
➔ Επομένως, απαιτείται η προσοχή των προγραμματιστών και η επιμελής
εξέταση του κώδικα πριν από τη χρήση του
27
Συμπεράσματα
➔ Διερεύνηση και άλλων σεναρίων χρήσης από όσα αναγνωρίστηκαν (π.χ.
“Fix this issue”), με χρήση κατάλληλων συνόλων δεδομένων
➔ Διενέργεια έρευνας σε χρήστες για τον καθορισμό της ευκολίας και της
πρακτικότητας χρήσης του ChatGPT ανά περίπτωση
➔ Διενέργεια περαιτέρω έρευνας για τη σύγκριση των αποτελεσμάτων του
ChatGPT με εκείνα που προέρχονται από προγραμματιστές ή άλλα μοντέλα
➔ Επέκταση της ανάλυσης ποιότητας που επιχειρήθηκε εδώ, με την
ενσωμάτωση μετρικών ασφαλείας, καθώς και με τον καθορισμό του
αντίκτυπου της χρήσης του ChatGPT στο σύνολο του πηγαίου κώδικα
28
Μελλοντική Εργασία
❖ Στο πλαίσιο της διπλωματικής εργασίας καταφέραμε να υποβάλλουμε
ένα paper με τίτλο “Write me this Code: An Analysis of ChatGPT Quality
for Producing Source Code”, στο φετινό διαγωνισμό MSR Mining
Challenge
❖ Tο paper αυτό, έγινε δεκτό από την επιτροπή και θα παρουσιαστεί στις
15 Απριλίου στη Λισαβόνα, στο πλαίσιο του διεθνούς συνεδρίου Mining
Software Repositories 2024
29
MSR Mining Challenge accepted paper
❖ Στο σημείο αυτό, θα ήθελα να εκφράσω τις βαθιές μου ευχαριστίες
στους:
κ. Ανδρέα Συμεωνίδη
κ. Θεμιστοκλή Διαμαντόπουλο
κ. Δημήτριο Νικήτα Νάστο
για την εμπιστοσύνη που μου έδειξαν και τη συνεχή υποστήριξή τους
κατά τη διάρκεια της διπλωματικής εργασίας
30
Ευχαριστίες
Ευχαριστώ για την προσοχή σας!
Ερωτήσεις ?
Κωνσταντίνος Μωράτης

More Related Content

PPTX
Fengomytis Thomas
PPTX
Μιχαήλ Παπαμιχαήλ
PPTX
Nikolaos Oikonomou
PPTX
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
PPTX
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
PDF
Evangelos papathomas diploma thesis presentation
PPTX
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
PPTX
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Fengomytis Thomas
Μιχαήλ Παπαμιχαήλ
Nikolaos Oikonomou
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
Evangelos papathomas diploma thesis presentation
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...

Similar to Ανάλυση διαλόγων προγραμματιστών με το ChatGPT (20)

PPTX
Νικόλαος Κατιρτζής 7185
PDF
Aristotelis Mikropoulos
PDF
Κωνσταντίνος Σιδέρης 7254
PPTX
Ιωάννη Α. Ζαφειρίου
PPTX
Upon evaluating source code generated by LLMs and improving the prompt engine...
PDF
Giorgos Karagiannoulos
PPTX
Αλεξάνδρα Μπαλτζή 7485
PPTX
Τεχνολογική επισκόπηση
PPTX
Επικοινωνία & συγχρονισμός, αλληλεπίδραση με το χρήστη, παράλληλος προγραμματ...
PDF
Πρόβλημα-->Αλγόριθμος-->Πρόγραμμα
PPTX
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
PPTX
A mechanism for extracting semantically-awknowledge in Software Repositories
PPTX
Development of an automatic procedure for Continuous Integration
PPTX
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
PPTX
Οικονόμου Ναπολέων – Χρήστος
PPTX
Ελευθεριάδου
PPTX
Νίνα Ελευθεριάδου
PDF
KanoutasThomasThesis
PPTX
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
PPTX
Vasilis Remmas
Νικόλαος Κατιρτζής 7185
Aristotelis Mikropoulos
Κωνσταντίνος Σιδέρης 7254
Ιωάννη Α. Ζαφειρίου
Upon evaluating source code generated by LLMs and improving the prompt engine...
Giorgos Karagiannoulos
Αλεξάνδρα Μπαλτζή 7485
Τεχνολογική επισκόπηση
Επικοινωνία & συγχρονισμός, αλληλεπίδραση με το χρήστη, παράλληλος προγραμματ...
Πρόβλημα-->Αλγόριθμος-->Πρόγραμμα
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
A mechanism for extracting semantically-awknowledge in Software Repositories
Development of an automatic procedure for Continuous Integration
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Οικονόμου Ναπολέων – Χρήστος
Ελευθεριάδου
Νίνα Ελευθεριάδου
KanoutasThomasThesis
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
Vasilis Remmas
Ad

More from ISSEL (20)

PPTX
A hybrid Edge-to-Cloud Architecture towards low-code development of global fo...
PPTX
Implementation of a recording and playback tool for data served by IoT brokers
PPTX
Source Code Bug Detection and Repair using Deep Learning Techniques
PPTX
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
PPTX
Bias detection and evaluation in personalized ubiquitous computing
PPTX
Development of a Data Stream Prediction Methodology using AutoML models
PPTX
Methodology and prototype design for the identification of recyclable materia...
PPTX
DynaCraft: a super-strongly typed programming language
PPTX
Applying Machine Learning Techniques on Software Data Streams for Automated I...
PPTX
Application of Drift Detection and Management Techniques in Data Streams Usin...
PPTX
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
PDF
Σχεδιασμός και υλοποίηση No-Code μηχανισμού για τη δημιουργία και εφαρμογή π...
PPTX
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
PPTX
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
PPTX
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
PPTX
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
PDF
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
PPTX
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
PPTX
Σχεδίαση και ανάπτυξη πλατφόρμας για χρήση του Node-red απομακρυσμένα από πο...
PPTX
Σχεδίαση και Ανάπτυξη Συστήματος Ενεργής Παρακολούθησης Διαδικτυακών Εφαρμογών
A hybrid Edge-to-Cloud Architecture towards low-code development of global fo...
Implementation of a recording and playback tool for data served by IoT brokers
Source Code Bug Detection and Repair using Deep Learning Techniques
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
Bias detection and evaluation in personalized ubiquitous computing
Development of a Data Stream Prediction Methodology using AutoML models
Methodology and prototype design for the identification of recyclable materia...
DynaCraft: a super-strongly typed programming language
Applying Machine Learning Techniques on Software Data Streams for Automated I...
Application of Drift Detection and Management Techniques in Data Streams Usin...
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
Σχεδιασμός και υλοποίηση No-Code μηχανισμού για τη δημιουργία και εφαρμογή π...
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
Σχεδίαση και ανάπτυξη πλατφόρμας για χρήση του Node-red απομακρυσμένα από πο...
Σχεδίαση και Ανάπτυξη Συστήματος Ενεργής Παρακολούθησης Διαδικτυακών Εφαρμογών
Ad

Ανάλυση διαλόγων προγραμματιστών με το ChatGPT

  • 1. Ανάλυση Διαλόγων Προγραμματιστών με το ChatGPT Επίβλεψη: Ανδρέας Συμεωνίδης, Καθηγητής Θεμιστοκλής Διαμαντόπουλος, Μεταδιδακτορικός Ερευνητής Δημήτριος Νικήτας Νάστος, Υποψήφιος Διδάκτωρ Εκπόνηση: Κωνσταντίνος Μωράτης ΑΕΜ: 9589 Μάρτιος 2024 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
  • 2. Περιεχόμενα ➢ Εισαγωγή ➢ Υλοποίηση ➢ Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 2
  • 3. ➢ Εισαγωγή ➢ Υλοποίηση ➢ Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 3
  • 4. Το ChatGPT στη Μηχανική Λογισμικού ➢ Η άφιξη των Μεγάλων Γλωσσικών Μοντέλων και του ChatGPT έχει μεταβάλλει τον τρόπο ανάπτυξης και συντήρησης λογισμικού, προσφέροντας προηγμένες δυνατότητες όπως η αυτοματοποιημένη παραγωγή και τροποποίηση κώδικα ➢ Ως αποτέλεσμα, οι προγραμματιστές χρησιμοποιούν τα μοντέλα αυτά ολοένα και περισσότερο στην καθημερινή τους εργασία ➢ Επομένως, η διερεύνηση της δυναμικής και των προκλήσεων που σχετίζονται με την ενσωμάτωση του ChatGPT στην περιοχή της μηχανικής λογισμικού είναι κρίσιμης σημασίας 4
  • 5. ➢ Το Mining Challenge είναι ένας ετήσιος διαγωνισμός στα πλαίσια του Διεθνούς Συνεδρίου στο Mining Software Repositories (MSR) ➢ Θέμα: Η αξιοποίηση του συνόλου δεδομένων DevGPT, το οποίο κατασκευάστηκε για τις ανάγκες του διαγωνισμού και αποτελείται από συνομιλίες μεταξύ προγραμματιστών και του ChatGPT ➢ Στόχος: Η διερεύνηση του περιεχομένου και του αντίκτυπου της χρήσης του ChatGPT από τους προγραμματιστές 5 Mining Challenge 2024
  • 6. ➢ Το σύνολο DevGPT αποτελείται από διαλόγους προγραμματιστών με το ChatGPT που έχουν κοινοποιηθεί στα εξής πεδία: ○ GitHub Commits, Code files, Issues, Pull requests και Discussions ○ Posts στο Hacker News ➢ Επίσης, περιλαμβάνει τα μετα-δεδομένα των πηγών στις οποίες διαμοιράστηκαν οι διάλογοι 6 Το σύνολο DevGPT
  • 8. Αξιοποιώντας το σύνολο δεδομένων DevGPT, η ανάλυση εστίασε στα παρακάτω Ερευνητικά Ερωτήματα (Research Questions - RQs): ● RQ1: Πόσο εύκολο είναι το να κατευθύνουμε το ChatGPT προς τη συγγραφή κώδικα για ένα σενάριο ανάπτυξης; ● RQ2: Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT; ● RQ3: Ποια είναι η επίδραση της χρήσης του ChatGPT στην ποιότητα του υπάρχοντος κώδικα; 8 Σκοπός της Διπλωματικής Εργασίας
  • 9. ➢ Εισαγωγή ➢ Υλοποίηση ➢ Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 9
  • 11. 11 Προεπεξεργασία Δεδομένων Το πρώτο βήμα της υλοποίησης, αφορά στην προεπεξεργασία των δεδομένων. Στο βήμα αυτό πραγματοποιήθηκε: 1. Καθαρισμός των δεδομένων (π.χ. απομάκρυνση διπλοτύπων) 2. Εμπλουτισμός των δεδομένων με χρήση του GitHub API 3. Αναγνώριση της γλώσσας προγραμματισμού του παραγόμενου κώδικα και επιλογή της JavaScript ως proof of concept
  • 12. Στη συνέχεια, οι διάλογοι εξετάστηκαν και κατηγοριοποιήθηκαν με βάση το σενάριο χρήσης του ChatGPT: 12 Επισήμανση Διαλόγων Κατηγορία Περιγραφή Πλήθος Improve this code Ο χρήστης παρέχει ένα τμήμα κώδικα και ζητά κάποιες αλλαγές 693 Write me this code Ο χρήστης ζητά τη δημιουργία ενός τμήματος κώδικα 548 Fix this issue Ο χρήστης παρέχει ένα τμήμα κώδικα ή τον κωδικό ενός σφάλματος και ζητά την επίλυσή του 159 Example usage Ο χρήστης ζητά την παροχή ενός παραδείγματος σχετικά με τη χρήση κάποιας συνάρτησης/ κλάσης 129 Explain this code Ο χρήστης παρέχει ένα τμήμα κώδικα και ζητά να του το εξηγήσει 38
  • 13. Παράδειγμα διαλόγου τύπου “Write me this code”: 13 Επισήμανση Διαλόγων (2)
  • 14. Mε στόχο να εντοπίσουμε τις περιπτώσεις όπου οι προγραμματιστές ενσωμάτωσαν κώδικα από το ChatGPT στα έργα τους Ανιχνεύσαμε τους κλώνους κώδικα μεταξύ των αρχείων που έγιναν commit στο GitHub και του κώδικα που παράχθηκε με το ChatGPT Για τον υπολογισμό της ομοιότητας μεταξύ των τμημάτων κώδικα, χρησιμοποιήθηκε το εργαλείο Simian 14 Εντοπισμός Κλώνων Κώδικα
  • 15. Παράδειγμα εντοπισμού Κλώνου Κώδικα: 15 Εντοπισμός Κλώνων Κώδικα (2)
  • 16. Εν συνεχεία, αναλύσαμε την ποιότητα του κώδικα που παράγεται με το ChatGPT, σε δύο στάδια: a. Εξετάζοντας τα τμήματα κώδικα που δημιουργήθηκαν με το ChatGPT b. Συγκρίνοντας την ποιότητα μεταξύ των δύο εκδοχών των αρχείων στο GitHub, πριν και μετά την ενσωμάτωση του κώδικα που προήλθε από το ChatGPT Για την εξαγωγή των κατάλληλων παραβάσεων και μετρικών ποιότητας, αξιοποιήσαμε τα εργαλεία στατικής ανάλυσης PMD και SourceMeter 16 Ανάλυση Ποιότητας
  • 17. PMD: Κατά τη χρήση του, ανιχνεύει προβλήματα ποιότητας, τα οποία κατατάσσονται σε τρεις κατηγορίες: a. Best Practices: Παραβάσεις που σχετίζονται με καλές προγραμματιστικές τεχνικές (π.χ. Η χρήση καθολικών μεταβλητών) b. Code Style: Παραβάσεις που σχετίζονται με την αναγνωσιμότητα του κώδικα (π.χ. Η μη χρήση αγκυλών για τα if blocks) c. Error Prone: Παραβάσεις που μπορεί να οδηγήσουν σε σφάλματα (π.χ. Η χρήση του τελεστή “==” αντί του “===” για τη σύγκριση) SourceMeter: Εντοπίζει αυτόματα τις περιπτώσεις όπου κάποια μετρική ξεπερνάει τα προκαθορισμένα όρια. Οι μετρικές που υπολογίζει αφορούν την πολυπλοκότητα, τη συντηρησιμότητα και την αναγνωσιμότητα του κώδικα. 17 Ανάλυση Ποιότητας (2)
  • 18. ➢ Εισαγωγή ➢ Υλοποίηση ➢ Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 18
  • 19. 19 Ερευνητικό Ερώτημα 1: Πόσο εύκολο είναι το να κατευθύνουμε το ChatGPT προς τη συγγραφή κώδικα για ένα σενάριο ανάπτυξης;
  • 20. ❖ Εξετάστηκαν συνολικά 548 διάλογοι τύπου “Write me this code” ❖ Σε 205 εξ αυτών (37%), εντοπίστηκαν κλώνοι κώδικα ❖ Στις μισές των περιπτώσεων, χρειάστηκαν 3 ή λιγότερα ερωτήματα για τη δημιουργία του επιθυμητού μπλοκ 20 Ερευνητικό Ερώτημα 1: Πόσο εύκολο είναι το να κατευθύνουμε το ChatGPT προς τη συγγραφή κώδικα για ένα σενάριο ανάπτυξης;
  • 21. 21 Ερευνητικό Ερώτημα 2: Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
  • 22. ❖ Αναλύθηκαν 1.041 τμήματα κώδικα JavaScript, από διαλόγους τύπου “Write me this code” ❖ Τα 513 (49%) εξ αυτών, περιέχουν τουλάχιστον μία παράβαση ποιότητας 22 Ερευνητικό Ερώτημα 2: Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT; Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
  • 23. ❖ Χωρίζονται σε: ➢ 78.9% - “Best Practices” ➢ 14.5% - “Error Prone” ➢ 6.6% - “Code Style” ❖ SourceMeter: ➢ 60 συναρτήσεις με μεγάλο πλήθος γραμμών (Αναγνωσιμότητα) ➢ 2 συναρτήσεις με μεγάλο πλήθος ορισμάτων (Συντηρησιμότητα) 23 Ερευνητικό Ερώτημα 2: (2) Υπάρχουν προβλήματα ποιότητας στον κώδικα που παράγεται από το ChatGPT;
  • 24. 24 Ερευνητικό Ερώτημα 3: Ποια είναι η επίδραση της χρήσης του ChatGPT στην ποιότητα του υπάρχοντος κώδικα;
  • 25. ❖ Αναλύθηκαν 241 αρχεία κώδικα JavaScript, στα οποία εντοπίστηκαν κλώνοι από διαλόγους τύπου “Improve this code” ❖ Σε 25 εξ αυτών παρατηρήθηκε αύξηση των παραβάσεων του αρχείου, ενώ σε 24 μείωσή τους 25 Ερευνητικό Ερώτημα 3: Ποια είναι η επίδραση της χρήσης του ChatGPT στην ποιότητα του υπάρχοντος κώδικα;
  • 26. ➢ Εισαγωγή ➢ Υλοποίηση ➢ Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 26
  • 27. ➔ Το ChatGPT μπορεί να αποτελέσει ένα πολύτιμο εργαλείο στην περιοχή της μηχανικής λογισμικού ➔ Καθώς, είναι ικανό να δημιουργεί κώδικα απαντώντας σε ένα σχετικά περιορισμένο αριθμό ερωτημάτων ➔ Ωστόσο, το 50% περίπου του παραγόμενου κώδικα περιέχει μία ή περισσότερες παραβάσεις ποιότητας ➔ Επομένως, απαιτείται η προσοχή των προγραμματιστών και η επιμελής εξέταση του κώδικα πριν από τη χρήση του 27 Συμπεράσματα
  • 28. ➔ Διερεύνηση και άλλων σεναρίων χρήσης από όσα αναγνωρίστηκαν (π.χ. “Fix this issue”), με χρήση κατάλληλων συνόλων δεδομένων ➔ Διενέργεια έρευνας σε χρήστες για τον καθορισμό της ευκολίας και της πρακτικότητας χρήσης του ChatGPT ανά περίπτωση ➔ Διενέργεια περαιτέρω έρευνας για τη σύγκριση των αποτελεσμάτων του ChatGPT με εκείνα που προέρχονται από προγραμματιστές ή άλλα μοντέλα ➔ Επέκταση της ανάλυσης ποιότητας που επιχειρήθηκε εδώ, με την ενσωμάτωση μετρικών ασφαλείας, καθώς και με τον καθορισμό του αντίκτυπου της χρήσης του ChatGPT στο σύνολο του πηγαίου κώδικα 28 Μελλοντική Εργασία
  • 29. ❖ Στο πλαίσιο της διπλωματικής εργασίας καταφέραμε να υποβάλλουμε ένα paper με τίτλο “Write me this Code: An Analysis of ChatGPT Quality for Producing Source Code”, στο φετινό διαγωνισμό MSR Mining Challenge ❖ Tο paper αυτό, έγινε δεκτό από την επιτροπή και θα παρουσιαστεί στις 15 Απριλίου στη Λισαβόνα, στο πλαίσιο του διεθνούς συνεδρίου Mining Software Repositories 2024 29 MSR Mining Challenge accepted paper
  • 30. ❖ Στο σημείο αυτό, θα ήθελα να εκφράσω τις βαθιές μου ευχαριστίες στους: κ. Ανδρέα Συμεωνίδη κ. Θεμιστοκλή Διαμαντόπουλο κ. Δημήτριο Νικήτα Νάστο για την εμπιστοσύνη που μου έδειξαν και τη συνεχή υποστήριξή τους κατά τη διάρκεια της διπλωματικής εργασίας 30 Ευχαριστίες
  • 31. Ευχαριστώ για την προσοχή σας! Ερωτήσεις ? Κωνσταντίνος Μωράτης