Ανταγωνιστικά ανθρώπινα ανταγωνιστικά προγράμματα σε αυτόματη επιδιόρθωση προγραμμάτων με επισκευή

Ο επισκευαστής είναι ένα bot. Παρακολουθεί συνεχώς τα σφάλματα λογισμικού που ανακαλύπτονται κατά τη συνεχή ενσωμάτωση του λογισμικού ανοιχτού κώδικα και προσπαθεί να τα διορθώσει αυτόματα. Αν καταφέρει να συνθέσει μια έγκυρη ενημερωμένη έκδοση κώδικα, ο Repairnator προτείνει το έμπλαστρο στους ανθρώπινους προγραμματιστές, μεταμφιεσμένοι κάτω από μια πλαστή ανθρώπινη ταυτότητα. Μέχρι σήμερα, το Repairnator κατάφερε να παράγει 5 μπαλώματα τα οποία έγιναν αποδεκτά από τους ανθρώπινους προγραμματιστές και συγχωνεύθηκαν μόνιμα στη βάση του κώδικα. Αυτό αποτελεί ένα ορόσημο για την ανταγωνιστικότητα του ανθρώπου στην έρευνα μηχανικής λογισμικού για την αυτόματη επισκευή του προγράμματος. Σε αυτή τη θέση, μιλάμε για την ιστορία αυτής της έρευνας που έγινε στο KTH Royal Institute of Technology, στην Ίντρια, στο Πανεπιστήμιο της Λιλ και στο Πανεπιστήμιο Valenciennes.

Η έρευνα επισκευής προγράμματος ακολουθεί την ιδέα ότι οι αλγόριθμοι μπορούν να αντικαταστήσουν τον άνθρωπο για να διορθώσουν τα σφάλματα λογισμικού [4]. Μια επιδιόρθωση σφάλματος είναι μια ενημερωμένη έκδοση κώδικα που εισάγει, διαγράφει ή τροποποιεί τον πηγαίο κώδικα. Για παράδειγμα, στην παρακάτω ενημερωμένη έκδοση κώδικα, ο προγραμματιστής έχει τροποποιήσει την κατάσταση της εντολής if:

- εάν (x <10)
+ αν (x <= 10)
foo ();

Ένα bot επισκευής προγράμματος είναι ένας τεχνητός παράγοντας που προσπαθεί να συνθέσει κώδικες πηγαίου κώδικα. Αναλύει σφάλματα και παράγει μπαλώματα, όπως και οι ανθρώπινοι προγραμματιστές που συμμετέχουν σε δραστηριότητες συντήρησης λογισμικού. Αυτή η ιδέα ενός bot επισκευής προγράμματος είναι αποδιοργανωτική, επειδή σήμερα οι άνθρωποι είναι υπεύθυνοι για την επίλυση σφαλμάτων. Σε άλλα λόγια, μιλάμε για ένα bot που προορίζεται να (μερικώς) αντικαταστήσει τους ανθρώπινους προγραμματιστές για κουραστικά καθήκοντα.

Όταν ένα bot προσπαθεί να επιτύχει ένα καθήκον που συνήθως γίνεται από τον άνθρωπο, είναι γνωστό ως ανθρώπινο ανταγωνιστικό έργο [1]. Οι εμπειρικές αξιολογήσεις της έρευνας επιδιόρθωσης προγραμμάτων [3] δείχνουν ότι τα τρέχοντα συστήματα επιδιόρθωσης προγραμμάτων είναι σε θέση να συνθέσουν μπαλώματα για πραγματικά σφάλματα σε πραγματικά προγράμματα. Ωστόσο, όλα αυτά τα μπαλώματα συντέθηκαν για παρελθόντα σφάλματα, για σφάλματα που είχαν καθοριστεί από ανθρώπους που είχαν αναπτύξει στο παρελθόν, συνήθως πριν από χρόνια. Παρόλο που αυτό υποδηλώνει την τεχνική σκοπιμότητα της επισκευής του προγράμματος, αυτό δεν δείχνει ότι η επισκευή του προγράμματος είναι ανταγωνιστική για τον άνθρωπο.

Ανθρώπινη ανταγωνιστικότητα

Για να αποδειχθεί ότι η επισκευή του προγράμματος είναι ανθρώπινη-ανταγωνιστική, ένα πρόγραμμα επισκευής bot πρέπει να βρει ένα υψηλής ποιότητας patch πριν από έναν άνθρωπο κάνει έτσι. Στο πλαίσιο αυτό, ένα έμπλαστρο μπορεί να θεωρηθεί ότι είναι ανταγωνιστικό για τον άνθρωπο εάν ικανοποιεί τις δύο προϋποθέσεις της επικαιρότητας και της ποιότητας. Η επικαιρότητα αναφέρεται στο γεγονός ότι το σύστημα πρέπει να βρει μια ενημερωμένη έκδοση κώδικα πριν από τον ανθρώπινο προγραμματιστή. Με άλλα λόγια, το πρωτότυπο σύστημα πρέπει να παράγει έμπλαστρα της τάξης μεγέθους των λεπτών, όχι ημερών. Επίσης, το έμπλαστρο που δημιουργείται από το bot πρέπει να είναι σωστό-αρκετά, παρόμοιας ποιότητας - σωστό και ευανάγνωστο - σε σύγκριση με ένα έμπλαστρο γραμμένο από έναν άνθρωπο. Σημειώστε ότι υπάρχουν μπαλώματα που φαίνονται σωστά από την άποψη του bot, όμως αυτά είναι λανθασμένα (αυτό είναι γνωστό ως overfitting patches στη βιβλιογραφία [6, 3]). Αυτά τα μπαλώματα είναι αναμφισβήτητα όχι ανταγωνιστικά από τον άνθρωπο, επειδή οι άνθρωποι δεν θα τα δεχτούν ποτέ στη βάση τους.

Συνεπώς, για να είναι ένα μάτσο ανταγωνιστικό για τον άνθρωπο 1) το bot πρέπει να συνθέσει το έμπλαστρο γρηγορότερα από το ανθρώπινο developer 2) το patch πρέπει να κρίνεται επαρκώς από τον ανθρώπινο προγραμματιστή και να συγχωνευθεί μόνιμα στη βάση κώδικα.

Υπάρχει μια ακόμη πτυχή που πρέπει να εξεταστεί. Έχει αποδειχθεί ότι οι ανθρώπινοι μηχανικοί δεν δέχονται εισφορές από bots τόσο εύκολα όσο οι συνεισφορές άλλων ανθρώπων, ακόμα και αν είναι απολύτως πανομοιότυπες [5]. Ο λόγος είναι ότι οι άνθρωποι τείνουν να έχουν εκ των προτέρων προκαταλήψεις κατά των μηχανών και είναι πιο ανεκτικοί σε σφάλματα, αν η συνεισφορά προέρχεται από έναν άνθρωπο ομότιμο. Στο πλαίσιο της επισκευής του προγράμματος, αυτό σημαίνει ότι οι προγραμματιστές μπορούν να βάλουν το μπαρ υψηλότερα στην ποιότητα του έμπλαστρου, αν γνωρίζουν ότι το έμπλαστρο προέρχεται από ένα bot. Αυτό θα εμπόδιζε την προσπάθειά μας για την απόδειξη της ανταγωνιστικότητας του ανθρώπου στο πλαίσιο της επισκευής του προγράμματος.

Για να ξεπεραστεί αυτό το πρόβλημα, αποφασίσαμε νωρίς το έργο ότι όλα τα μπαλώματα Repairnator θα προταθούν κάτω από μια ψεύτικη ανθρώπινη ταυτότητα. Δημιουργήσαμε ένα χρήστη του GitHub, που ονομάζεται Luc Esape, ο οποίος παρουσιάζεται ως μηχανικός λογισμικού στο ερευνητικό μας εργαστήριο. Ο Luc έχει μια εικόνα προφίλ και μοιάζει με junior developer, πρόθυμος να κάνει συνεισφορές ανοιχτού κώδικα στο GitHub. Τώρα φανταστείτε το Repairnator, μεταμφιεσμένο ως Luc Esape που προτείνει ένα έμπλαστρο: ο κύριος του έργου αναθεώρηση πιστεύει ότι εξετάζει μια ανθρώπινη συμβολή. Αυτό το καμουφλάζ απαιτείται για να δοκιμάσουμε την επιστημονική μας υπόθεση της ανθρώπινης ανταγωνιστικότητας. Τώρα, για λόγους ηθικής, η πραγματική ταυτότητα του Luc έχει αποκαλυφθεί σε κάθε από τα αιτήματά του.

Αυτόματη επισκευή και συνεχής ενσωμάτωση

Η συνεχής ολοκλήρωση, γνωστή και ως CI, είναι η ιδέα ότι ένας διακομιστής μεταγλωττίζει τον κώδικα και εκτελεί όλες τις δοκιμές για κάθε δέσμευση που γίνεται στο σύστημα ελέγχου έκδοσης ενός έργου λογισμικού (π.χ. Git). Στη γλώσσα του CI, υπάρχει ένα build για κάθε δέσμευση. Μια δομή περιέχει τις πληροφορίες σχετικά με το στιγμιότυπο πηγαίου κώδικα που χρησιμοποιείται (π.χ. μια αναφορά σε μια εντολή Git), το αποτέλεσμα της σύνταξης και της εκτέλεσης δοκιμής (π.χ. αποτυχία ή επιτυχία) και ένα αρχείο εντοπισμού εκτέλεσης. Μια κατασκευή λέγεται ότι αποτυγχάνει αν αποτύχει η σύνταξη ή τουλάχιστον μία δοκιμαστική περίπτωση αποτύχει. Έχει αποδειχθεί ότι περίπου μία στις 4 δομές αποτυγχάνει και ότι η πιο συνηθισμένη αιτία για την αποτυχία της κατασκευής είναι η αποτυχία δοκιμής [8].

Η βασική ιδέα του Repairnator είναι να παράγει αυτομάτως διορθώσεις που αποκαθιστούν τις αποτυχίες κατασκευής και στη συνέχεια να τις δείξει σε ανθρώπινους προγραμματιστές, για να δούμε τελικά εάν οι ανθρώπινοι προγραμματιστές θα τις αποδεχτούν ως έγκυρες συνεισφορές στη βάση κώδικα. Εάν συμβεί κάτι τέτοιο, αυτό θα ήταν απόδειξη της ανταγωνιστικότητας του ανθρώπου στην επισκευή του προγράμματος.

Αυτή η ρύθμιση -αυτόματη επιδιόρθωση αποτυχιών κατασκευής που συμβαίνουν στη συνεχή ολοκλήρωση- είναι ιδιαίτερα κατάλληλη και έγκαιρη για τους ακόλουθους λόγους. Πρώτον, οι κατασκευαστικές αποτυχίες ικανοποιούν την βασική πρόβλεψη προβλήματος της επιδιόρθωσης του προγράμματος δοκιμών που βασίζεται στη δοκιμή [4], όπου τα σφάλματα ορίζονται ως αποτυχημένα πειράματα και εκείνα που αποτυγχάνουν στις δοκιμαστικές περιπτώσεις χρησιμοποιούνται για την αυτοματοποιημένη σύνθεση ενός επιθέματος [4]. Δεύτερον, επιτρέπει τη σύγκριση των bots και των ανθρώπων σε μια δίκαιη βάση: όταν εντοπιστεί ένα αποτυχημένο τεστ στο διακομιστή συνεχούς ενοποίησης, ο ανθρώπινος προγραμματιστής και το bot ενημερώνονται για αυτό, ακριβώς τον ίδιο χρόνο. Αυτή η ειδοποίηση αποτυχίας δοκιμής είναι το σημείο εκκίνησης του διαγωνισμού για τον άνθρωπο έναντι του bot.

Η εστίαση του επισκευαστή στις αποτυχίες κατασκευής είναι μοναδική, αλλά ταιριάζει στη μεγάλη εικόνα των έξυπνων bots για το λογισμικό [2]. Για παράδειγμα, το Facebook έχει ένα εργαλείο που ονομάζεται SapFix που επισκευάζει σφάλματα που βρέθηκαν με αυτοματοποιημένες δοκιμές. Επίσης, οι επιτιθέμενοι και οι υπερασπιστές των bot DARPA Cyber ​​Grand Challenge προσπαθούν να είναι ανταγωνιστικοί από τον άνθρωπο σε σχέση με τους ειδικούς ασφαλείας.

Επισκευαστής σε σύντομο χρονικό διάστημα

Το 2017-2018 σχεδιάσαμε, υλοποιήσαμε και λειτουργούσαμε το Repairnator, ένα bot για την αυτοματοποιημένη επισκευή του προγράμματος. Το Repairnator είναι εξειδικευμένο για την αποκατάσταση βλαβών κατασκευής που συμβαίνουν κατά τη συνεχή ολοκλήρωση. Παρακολουθεί συνεχώς χιλιάδες δεσμεύσεων που ωθούνται στην πλατφόρμα φιλοξενίας κώδικα GitHub και αναλύει τις αντίστοιχες κατασκευές τους. Κάθε λεπτό, ξεκινά νέες προσπάθειες επισκευής για να διορθώσει σφάλματα πριν από τον άνθρωπο προγραμματιστή. Έχει σχεδιαστεί για να προχωρήσει όσο το δυνατόν γρηγορότερα, επειδή συμμετέχει σε μια κούρσα: αν το Repairnator βρει ένα έμπλαστρο πριν από τον ανθρώπινο δημιουργό, είναι ανθρώπινο-ανταγωνιστικό.

Ας δούμε τώρα πώς λειτουργεί το bot του Repairnator.

Η κύρια είσοδος του Repairnator είναι συνεχείς ενσωματωμένες κατασκευές, που ενεργοποιούνται από δεσμεύσεις που πραγματοποιούνται από προγραμματιστές (το πάνω μέρος του σχήματος, (a) και (b)) με βάση τα έργα GitHub (a). Οι έξοδοι του Repairnator είναι διπλές: (1) παράγει αυτομάτως διορθώσεις για την αποκατάσταση των αποτυχημένων κατασκευών (g), εάν υπάρχουν. (2) συλλέγει πολύτιμα δεδομένα για μελλοντικές έρευνες επιδιόρθωσης προγραμμάτων (η) και (ια). Μόνιμα, το Repairnator παρακολουθεί όλες τις συνεχείς δραστηριότητες από τα έργα GitHub ©. Τα CI builds δίδονται ως είσοδος σε έναν αγωγό τριών σταδίων: (1) ένα πρώτο στάδιο συλλέγει και αναλύει τα logs κατασκευής CI (e). (2) ένα δεύτερο στάδιο αποσκοπεί στην τοπική αναπαραγωγή των βλαβών κατασκευής που έχουν συμβεί στο CI (f). (3) ένα τρίτο στάδιο εκτελεί διαφορετικά πρωτότυπα επισκευής προγραμμάτων που προέρχονται από την τελευταία ακαδημαϊκή έρευνα. Όταν εντοπιστεί μια ενημερωμένη έκδοση κώδικα, ένα μέλος του έργου Repairnator εκτελεί έναν γρήγορο έλεγχο ευεξίας, προκειμένου να αποφευχθεί η σπατάλη πολύτιμου χρόνου από προγραμματιστές ανοιχτού κώδικα. (i) Αν βρει το μη-εκφυλισμένο έμπλαστρο, το προτείνει στη συνέχεια στους αρχικούς προγραμματιστές του έργου ως αίτημα έλξης στο GitHub (j). Οι προγραμματιστές ακολουθούν στη συνέχεια τη συνηθισμένη διαδικασία ανασκόπησης κώδικα και συγχώνευσης.

Ο επισκευαστής πρέπει να λειτουργεί σε ένα δεδομένο οικοσύστημα λογισμικού. Λόγω της τεχνογνωσίας μας σε Java σε προηγούμενα ερευνητικά έργα, η υλοποίηση πρωτοτύπου του Repairnator επικεντρώνεται στην επισκευή λογισμικού γραμμένου στη γλώσσα προγραμματισμού Java, που κατασκευάστηκε με την εργαλειομηχανή Maven, σε έργα ανοιχτού κώδικα που φιλοξενούνται στο GitHub και χρησιμοποιούν την πλατφόρμα συνεχούς ολοκλήρωσης Travis CI .

Επιτεύγματα αποστολής

Εργάζομε το Repairnator από τον Ιανουάριο του 2017, σε τρεις διαφορετικές φάσεις. Κατά τη διάρκεια ενός μηνός, τον Ιανουάριο του 2017, πραγματοποιήσαμε ένα πειραματικό πείραμα με μια αρχική έκδοση του πρωτοτύπου. Από την 1η Φεβρουαρίου 2017 έως τις 31 Δεκεμβρίου 2017, δρομολογήσαμε το Repairnator με μια σταθερή λίστα με 14.188 έργα, την ονομάζουμε "Expedition # 1". Από την 1η Ιανουαρίου 2018 έως τις 30 Ιουνίου 2018, το Repairnator παρακολούθησε την ροή Travis CI build σε πραγματικό χρόνο, την ονομάζουμε "Expedition # 2"

Ο κύριος στόχος του πιλοτικού πειράματος ήταν η επικύρωση του σχεδιασμού και της αρχικής εφαρμογής. Διαπιστώσαμε ότι το πρωτότυπο μας είναι σε θέση να εκτελέσει περίπου 30 προσπάθειες επισκευής την ημέρα, δεδομένων των υπολογιστικών πόρων μας. Το πιο σημαντικό, αυτό το πειραματικό πείραμα επικύρωσε τις βασικές μας τεχνολογικές υποθέσεις: ένα σημαντικό μέρος των δημοφιλών έργων ανοιχτού κώδικα χρησιμοποιεί το Travis και η πλειοψηφία τους χρησιμοποιεί τη Maven ως τεχνολογία κατασκευής. Αυτό σήμαινε ότι θα είχαμε δίκαιες πιθανότητες να επιτύχουμε τον στόχο μας να συνθέσουμε μια ανθρώπινη-ανταγωνιστική εμπλοκή σε αυτό το πλαίσιο.

Κατά τη διάρκεια της αποστολής # 1, των οποίων τα αποτελέσματα παρουσιάζονται λεπτομερώς στο [7], η Repairnator έχει αναλύσει 11.523 κατασκευές με αποτυχίες δοκιμών. Για 3.551 από αυτούς (30.82%), το Repairnator κατάφερε να αναπαράγει τοπικά την αποτυχία της δοκιμής. Από τις 3.551 προσπάθειες επισκευής, το Repairnator βρήκε 15 μπαλώματα τα οποία θα μπορούσαν να κάνουν τη δίοδο κατασκευής CI. Ωστόσο, η ανάλυσή μας αποκάλυψε ότι κανένα από αυτά τα μπαλώματα δεν ήταν ανταγωνιστικά για τον άνθρωπο επειδή ήρθε πολύ αργά (το Repairnator παρήγαγε ένα έμπλαστρο μετά τον ανθρώπινο δημιουργό) ή ήταν χαμηλής ποιότητας (έκαναν την κατασκευή επιτυχημένη με συμπτώματα).

Η αποστολή # 2 είναι η επιτυχημένη. Έχει δείξει ότι η τεχνολογία επισκευής προγραμμάτων έχει διασχίσει τα σύνορα της ανθρώπινης ανταγωνιστικότητας. Το Repairnator έχει παραγάγει 5 patches που πληρούν τα κριτήρια της ανθρώπινης ανταγωνιστικότητας που ορίστηκαν παραπάνω: 1) τα έμπλαστρα δημιουργήθηκαν πριν από τα ανθρώπινα, 2) ένας ανθρώπινος κατασκευαστής αποδέχτηκε τα patches ως έγκυρες συνεισφορές και τα patches συγχωνεύτηκαν στην κύρια βάση κώδικα.

Ανθρώπινο-ανταγωνιστικές συνεισφορές στο Github, έμπλαστρα συνθετικά από το ρομπότ του Repairnator και αποδεκτά από τον ανθρώπινο προγραμματιστή:

  • 12 Ιανουαρίου 2018, aaime / geowebcache / pull / 1, "Ευχαριστώ για το έμπλαστρο!"
  • 23 Μαρτίου 2018, parkito / BasicDataCodeU [...] / pull / 3 "συγχωνεύθηκε η δέσμευση 140a3e3 στο parkito: αναπτύξτε"
  • 5 Απριλίου 2018, dkarv / jdcallgraph / pull / 2 "Ευχαριστώ!"
  • 3 Μαΐου 2018, eclipse / ditto / pull / 151 "Cool, ευχαριστώ για τη διεξαγωγή της διαδικασίας Eclipse και για την επιδιόρθωση."
  • 25 Ιουνίου 2018, donnelldebnam / CodeU [...] / pull / 151 "Ευχαριστώ !!"

Το πρώτο έμπλαστρο που συγχωνεύθηκε από το πρόγραμμα επισκευής bot μας έγινε αποδεκτό από έναν ανθρώπινο προγραμματιστή στις 12 Ιανουαρίου 2018. Εδώ είναι η ιστορία: στις 12 Ιανουαρίου 2018 στις 12:28 μ.μ., ένα build δημιουργήθηκε στο project aaime / geowebcache11 1 https: // travis -ci.org/GeoWebCache/geowebcache/builds/328076497. Η κατασκευή απέτυχε μετά από 2 λεπτά εκτέλεσης, επειδή δύο περιπτώσεις δοκιμής ήταν λάθος. Τέσσερα λεπτά αργότερα, στις 12 Ιανουαρίου 2018 στις 1:08 μ.μ., ο Repairnator ανίχνευσε την αποτυχημένη κατασκευή κατά τη διάρκεια της τακτικής παρακολούθησής του και άρχισε να τρέχει τα διαθέσιμα συστήματα επισκευής προγραμμάτων που έχουν ρυθμιστεί στο Repairnator. Δέκα λεπτά αργότερα, στις 13:18, βρήκε ένα έμπλαστρο.

Στις 12 Ιανουαρίου 2018, στις 1:35 μ.μ., ένα μέλος της ομάδας Repairnator πήρε το έμπλαστρο που δημιουργήθηκε από το Repairnator και επικύρωσε το άνοιγμα της αντίστοιχης αίτησης pull στο GitHub. Στις 12 Ιανουαρίου 2018, στις 2:10 μ.μ., ο κύριος του έργου αποδέχθηκε την ενημερωμένη έκδοση κώδικα και την συνένωσε με ένα σχόλιο: "Παράξενο, σκέφτηκα ότι το έχω ήδη διορθώσει ... ίσως και σε κάποιο άλλο μέρος. Ευχαριστώ για το έμπλαστρο! ". Αυτό ήταν το πρώτο έμπλαστρο που παρήγαγε το Repairnator και έγινε αποδεκτό ως έγκυρη συμβολή από έναν ανθρώπινο προγραμματιστή, ο οποίος συγχωνεύθηκε οριστικά στη βάση του κώδικα. Με άλλα λόγια, το Repairnator ήταν ανθρώπινο-ανταγωνιστικό για πρώτη φορά.

Μετά από έξι επιπλέον μήνες λειτουργίας, το Repairnator είχε 5 patches που συγχωνεύτηκαν από ανθρώπους που ανέφεραν παραπάνω.

Συνολικά, το έργο Repairnator έχει εκπληρώσει την αποστολή του. Έχει δείξει ότι η επισκευή του προγράμματος μπορεί να θεωρηθεί ανταγωνιστική για τον άνθρωπο: ο επισκευαστής έχει βρει επιθέματα 1) πριν από τους ανθρώπους, 2) που θεωρήθηκαν καλής ποιότητας από τον ίδιο τον άνθρωπο.

Το μέλλον

Εκτός από την απόδειξη ότι η επισκευή του προγράμματος είναι ανθρώπινη ανταγωνιστική, το έργο Repairnator παρείχε πληθώρα πληροφοριών σχετικά με τα σφάλματα και τη συνεχή ενσωμάτωση, καθώς και σχετικά με τις τρέχουσες ελλείψεις στην έρευνα επισκευής προγραμμάτων, που παρουσιάστηκε στο [7].

Ας σταθούμε σε ένα σημείο ειδικότερα, το ζήτημα της πνευματικής ιδιοκτησίας. Στις 3 Μαΐου του 2018, ο Repairnator παρήγαγε μια καλή ενημερωμένη έκδοση κώδικα για την έκλειψη / δίχτυ του έργου GitHub. Λίγο μετά την προσθήκη της ενημερωμένης έκδοσης κώδικα, ένας από τους προγραμματιστές ρώτησε: "Μπορούμε να δεχτούμε μόνο αιτήματα pull που προέρχονται από χρήστες που υπέγραψαν τη συμφωνία άδειας συνδρομητή του Foundation Eclipse Foundation.". Ήμασταν προβληματισμένοι επειδή ένα bot δεν μπορεί να υπογράψει φυσικά ή ηθικά συμφωνία αδείας και πιθανότατα δεν έχει το δικαίωμα να το πράξει. Ποιος κατέχει την πνευματική ιδιοκτησία και την ευθύνη μιας συμβολής bot: ο χειριστής ρομπότ, ο bot υλοποιητής ή ο σχεδιαστής αλγορίθμου επισκευής; Αυτή είναι μια από τις ενδιαφέρουσες ερωτήσεις που αποκάλυψε το έργο Repairnator.

Πιστεύουμε ότι το Repairnator προδιαμορφώνει ένα συγκεκριμένο μέλλον ανάπτυξης λογισμικού, όπου οι bots και οι άνθρωποι θα συνεργαστούν ομαλά και θα συνεργαστούν ακόμη και σε αντικείμενα λογισμικού.

Θέλετε να συμμετάσχετε στην κοινότητα Repairnator; Για να λαμβάνετε τακτικά νέα σχετικά με το Repairnator, τραβήξτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση repairnator.subscribe@4open.science!

- Martin Monperrus, Simon Urli, Thomas Durieux, Μάτις Μαρτίνεζ, Μπενόιτ Μπαούντρι, Λιονέλ Σειντρίερ

Στα μέσα:

  • Η μυστηριώδης ζωή του Luc Esape, εξωφρενικός διορθωτής σφαλμάτων. Το μεγάλο μυστικό του; Δεν είναι άνθρωπος (Thomas Claburn, The Register)

βιβλιογραφικές αναφορές

  • [1] J. R. Koza (2010) Αποτελέσματα ανθρώπινου ανταγωνισμού που παράγονται από τον γενετικό προγραμματισμό. Genetic Programming and Evolvable Machines 11 (3-4), σελ. 251-284. Αναφέρεται από:.
  • [2] C. Lebeuf, Μ. D. Storey και Α. Zagalsky (2018) Λογισμικά bots. IEEE Software 35, σελ. 18-23. Αναφέρεται από: Αυτόματη επισκευή και συνεχής ολοκλήρωση.
  • [3] Μ. Martinez, T. Durieux, R. Sommerard, J. Xuan και M. Monperrus (2016) Αυτόματη επιδιόρθωση πραγματικών σφαλμάτων σε Java: ένα πείραμα μεγάλης κλίμακας για το σύνολο δεδομένων ελαττωμάτων4j. Empirical Software Engineering, σελ. 1-29. Αναφέρεται από: Ανθρώπινη ανταγωνιστικότητα,.
  • [4] M. Monperrus (2017) Αυτόματη επισκευή λογισμικού: μια βιβλιογραφία. ACM Υπολογισμός ερευνών. Αναφέρεται από: Αυτόματη επισκευή και συνεχής ολοκλήρωση,.
  • [5] A. Murgia, D. Janssens, S. Demeyer και B. Vasilescu (2016) Μεταξύ των μηχανών: αλληλεπίδραση ανθρώπου-bot στις κοινωνικές ιστοσελίδες. Στο Proceedings of 2016 CHI Conference Extended Εκδοχές επί Ανθρώπινων Παράγοντα στα Υπολογιστικά Συστήματα, σελ. 1272-1279. Αναφέρεται από: Ανθρώπινη ανταγωνιστικότητα.
  • [6] Ε. Κ. Smith, Ε. Τ. Barr, C. Le Goues και Y. Brun (2015) Είναι η θεραπεία χειρότερη από την ασθένεια; υπερφόρτωση στην αυτοματοποιημένη επισκευή του προγράμματος. Στα Πρακτικά της 10ης Κοινής Συνάντησης του 2015 για τα θεμέλια της τεχνολογίας λογισμικού, σελ. 532-543. Εξωτερικοί σύνδεσμοι: Έγγραφο που αναφέρθηκε από: Ανθρώπινη ανταγωνιστικότητα.
  • [7] S. Urli, Z. Yu, L. Seinturier και M. Monperrus (2018) Πώς να σχεδιάσετε ένα πρόγραμμα επισκευής Bot; Στοιχεία από το έργο Repairnator. Στο ICSE 2018-40ο Διεθνές Συνέδριο για την Τεχνολογία Λογισμικού, Παρακολούθηση Μηχανικών Λογισμικού στην Πρακτική, Εξωτερικοί Σύνδεσμοι: Σύνδεσμος Αναφέρεται από: Επιτεύγματα Αποστολών, Το Μέλλον.
  • [8] C. Vassallo, G. Schermann, F. Zampetti, D. Romano, P. Leitner, A. Zaidman, Μ. Di Penta και S. Panichella (2017) Ιστορικό αποτυχιών κατασκευής CI: μια προοπτική του χρηματοπιστωτικού οργανισμού. Στο Διεθνές Συνέδριο για τη συντήρηση και εξέλιξη του λογισμικού, που αναφέρθηκε από: Αυτόματη επισκευή και συνεχής ολοκλήρωση.