Συλλογές
Τίτλος Αυτοματοποιημένη αναδόμηση JavaScript κώδικα για εισαγωγή ασύγχρονων συναρτήσεων
Δημιουργός Μάγκος, Ραφαήλ-Γεώργιος
Συντελεστής Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής
Γκρίτζαλης, Δημήτριος
Διαμαντίδης, Νικόλαος
Ζαφείρης, Βασίλειος
Τύπος Text
Φυσική περιγραφή 73σ.
Γλώσσα el
Αναγνωριστικό http://www.pyxida.aueb.gr/index.php?op=view_object&object_id=7203
Περίληψη In ECMAScript version 6 that was introduced in 2015, a new programming model called Promiseswas introduced with the intention of simplifying the asynchronous programming model. Promises indeedsolved the major problem of callbacks, also known as callback hell or pyramid of doom. Althoughthis is a win for Promises, not all the problems of asynchronous code that puzzled software engineerswere solved.ECMAScript version 8 was introduced in 2017 and is an attempt to simplify the complex semanticsof Promise API. Asynchronous functions, that were introduced in version 8, do not provide extrafunctionality to the underlying code, acting as “syntactic sugar”. Even though asynchronousfunctions are just a “syntactic sugar”, they have plenty of advantages over the Promises API.Adopting the newly introduced asynchronous functions in software projects that are built fromscratch, is not a major issue. The thing that is more challenging is moving to the new standard ofasynchronous functions, having a code base that uses Promises. The challenge behind that, ismaintaining the behaviour of the resulting code exactly the same as the code under refactoring.The purpose of this study is to propose a methodology that consumes code written using the PromiseAPI and produces asynchronous code based on the new standard, in a way that is transparent to theuser of the refactoring tool that is created as a result of this study.
Στην έκδοση 6 του προτύπου ECMAScript (ES6) το 2015, εισήχθη η έννοια τωνPromises με σκοπό να απλουστεύσει το προγραμματιστικό μοντέλο για ασύγχρονεςκλήσεις. Τα Promises, αν και συγκριτικά με τις επανακλήσεις είναι ένα πιοαναγνώσιμο μοντέλο προγραμματισμού, εν τέλει δεν κατάφεραν να λύσουν όλα ταπροβλήματα που αντιμετωπίζουν οι προγραμματιστές με τον ασύγχρονο κώδικα.Τη συντακτική πολυπλοκότητα που εισήγαγαν τα Promises, ήρθε να απλουστεύσειη όγδοη έκδοση του προτύπου ECMAScript (ES8). Δύο χρόνια μετά την παρουσίασητων Promises, στο νέο πρότυπο παρουσιάστηκαν οι ασύγχρονες συναρτήσεις(async functions).Η υιοθέτηση των ασύγχρονων συναρτήσεων στο σύνολο του πηγαίου κώδικα ενόςέργου λογισμικού που χτίζεται εξ' αρχής με βάση τα νεότερα πρότυπα τηςJavascript δεν αποτελεί πρόκληση. Αυτό που όμως αποτελεί πρόκληση είναι ημετάβαση ενός ήδη υπάρχοντος έργου λογισμικού στο νεότερο πρότυπο τηςJavascript. Η ουσιαστική πρόκληση στη μετάβαση αυτή είναι ότι η αναδόμησητου υπάρχοντος κώδικα θα πρέπει να γίνει με διαφανή τρόπο, δηλαδή δεν πρέπεινα υπάρξει αλλαγή στη συμπεριφορά του κώδικα.Στην παρούσα εργασία, θα προταθεί μεθοδολογία η οποία έχοντας ως είσοδοκώδικα που χρησιμοποιεί Promises, παράγει ισοδύναμο κώδικα στον οποίο έχειγίνει αντικατάσταση των Promises με το νέο συντακτικό των ασύγχρονωνσυναρτήσεων. Η προαναφερθείσα μεθοδολογία, αποτέλεσε τη βάση για τηδημιουργία ενός εργαλείου που μετασχηματίζει αυτόματα κώδικα πουχρησιμοποιεί Promises σε κώδικα που χρησιμοποιεί ασύγχρονες συναρτήσεις. Ημεθοδολογία και κατά συνέπεια το εργαλείο, αξιολογήθηκαν ως προς τηνορθότητά τους σε πραγματικά έργα λογισμικού και εξήχθησαν συμπεράσματα ωςπρος την εμβέλεια αλλά και τις προϋποθέσεις εφαρμογής της μεθοδολογίας.
Λέξη κλειδί Αναδόμηση
Ασύγχρονος προγραμματισμός
JavaScript
Promise
async
await
Refactor
Διαθέσιμο από 2019-07-31 19:22:41
Ημερομηνία έκδοσης 07/31/2019
Ημερομηνία κατάθεσης 2019-07-31 19:22:41
Δικαιώματα χρήσης Free access
Άδεια χρήσης https://creativecommons.org/licenses/by/4.0/