PYXIDA Institutional Repository
and Digital Library
 Home
Collections :

Title :Tools and techniques for building reliable application programming interfaces
Alternative Title :Εργαλεία και τεχνικές ανάπτυξης αξιόπιστων διεπαφών προγραμματισμού εφαρμογών
Creator :Kechagia, Maria A.
Κεχαγιά, Μαρία Α.
Contributor :Spinellis, Diomidis (Επιβλέπων καθηγητής)
Λουρίδας, Παναγιώτης (Εξεταστής)
Χατζηγεωργίου, Αλέξανδρος (Εξεταστής)
Πραματάρη, Αικατερίνη (Εξεταστής)
Χατζηαντωνίου, Δαμιανός (Εξεταστής)
Παπασπύρου, Νικόλαος (Εξεταστής)
Γούσιος, Γεώργιος (Εξεταστής)
Athens University of Economics and Business, Department of Management Science and Technology (Degree granting institution)
Type :Text
Extent :156p.
Language :en
Identifier :http://www.pyxida.aueb.gr/index.php?op=view_object&object_id=5900
Abstract :Programs draw significant parts of their functionality through the use of Application Programming Interfaces (APIs). Apart from the way developers incorporate APIs in their software, the stability of these programs depends on the design and implementation of the APIs. Goal of this dissertation is to discover techniques and tools that can help in the improvement of modern client systems and applications' robustness by first guaranteeing APIs' reliability.Initially, we process almost one million crash reports from application failures and establish heuristic rules to draw the border between applications and risky API calls. Our findings show that top crash causes can be attributed to: memory exhaustion, synchronization issues, and missing resources. We are however unable to classify the crash causes for a significant number (almost 10%) of signatures associated with generic exceptions. This result leads us to the development of a technique that can automatically assess an API’s quality regarding the exceptions listed in the API's documentation. Applying our approach on the Android ecosystem, we identify that undocumented exceptions can have a negative impact on the stability of client applications. In addition, a randomized controlled trial we run on 25 Android and Java developers shows that relevant documentation improvements can be effective by making such exceptions checked. This insight motivates us to design and implement a static verification approach for Java that can provide precise API error handling through compile-time checks. Using our method, we check ten open source Java projects and identify bugs related to input-handling errors. Therefore, our techniques manage to guarantee the absence of particular runtime exceptions that risky APIs can throw, supporting productive bug finding.
Τα προγράμματα λογισμικού βασίζουν σημαντικά τμήματα της λειτουργικότητάς τους σε διεπαφές προγραμματισμού εφαρμογών. Πέρα από το πώς οι προγραμματιστές χρησιμοποιούν τις εν λόγω διεπαφές, η ευρωστία των προγραμμάτων εξαρτάται και από την ποιότητα του σχεδιασμού και της υλοποίησης των ίδιων των διεπαφών. Στόχος της παρούσας διατριβής είναι η διερεύνηση και ανάπτυξη εργαλείων που είναι ικανά να συμβάλλουν στη βελτίωση της ευρωστίας των σύγχρονων συστημάτων και εφαρμογών πληροφορικής, μέσα από την ανάπτυξη αξιόπιστων διεπαφών προγραμματισμού εφαρμογών.Αρχικά, επεξεργαζόμαστε τηλεμετρικά δεδομένα από εφαρμογές που έχουν καταρρεύσει, για να οργανώσουμε περίπου ένα εκατομμύριο αναφορές λαθών και να εξάγουμε κανόνες που ορίζουν επισφαλείς κλήσεις που πραγματοποιούνται από τις εφαρμογές προς τις διεπαφές προγραμματισμού. Τα ευρήματά μας δείχνουν πως οι σημαντικότερες αιτίες αποδίδονται στους παρακάτω λόγους: ανεπάρκεια μνήμης, θέματα συγχρονισμού, ελλιπής διάθεση κατάλληλων πόρων. Επίσης, εντοπίζουμε προβλήματα (10%) για τις αιτίες των οποίων δεν μπορούμε με βεβαιότητα να αποφανθούμε, εφόσον σχετίζονται με γενικές ή μη τεκμηριωμένες εξαιρέσεις που εμφανίζονται στις αναφορές λαθών.Με βάση το τελευταίο μας εύρημα, αναπτύσσουμε ένα εργαλείο στατικής ανάλυσης το οποίο με αυτοματοποιημένο τρόπο αξιολογεί την ποιότητα σχετικά με τους τύπους των εξαιρέσεων που είναι δηλωμένοι στα έγγραφα τεκμηρίωσης των διεπαφών προγραμματισμού εφαρμογών. Εφαρμόζοντας την τεχνική μας στο οικοσύστημα του Android, βρίσκουμε πως συγκεκριμένες μη τεκμηριωμένες εξαιρέσεις μπορούν να επηρεάζουν αρνητικά τη σταθερότητα των εφαρμογών που βασίζουν τη λειτουργία τους σε μια πλατφόρμα, όπως το Android. Επιπλέον, τα αποτελέσματα ενός πειράματος που διεξάγουμε με 25 προγραμματιστές, μας οδηγούν στο σχεδιασμό και την ανάπτυξη ενός στατικού επαληθευτή που μπορεί να εγγυηθεί τη συνεπή λειτουργία των προγραμμάτων που αναλύει. Χρησιμοποιώντας το σύστημα τύπων που αναπτύσσουμε, εξετάζουμε έργα ανοιχτού λογισμικού Java και εντοπίζουμε λάθη, αποδεικνύοντας τη λειτουργικότητα του συστήματός μας, για τον εντοπισμό προβλημάτων σχετικών με τον χειρισμό του μηχανισμού εξαιρέσεων σε προγράμματα Java, τα οποία μπορούν να δέχονται μη έγκυρα δεδομένα εισόδου.
Subject :Application programming interfaces
Static analysis
Documentation
Exception handling
Διεπαφές προγραμματισμού εφαρμογών
Στατική ανάλυση
Τεκμηρίωση
Χειρισμός εξαιρέσεων
Date Available :2018-03-07 12:55:14
Date Issued :09-11-2017
Date Submitted :2018-03-07 12:55:14
Access Rights :Free access
Licence :

File: Kechagia_2017.pdf

Type: application/pdf