Τα προγράμματα λογισμικού βασίζουν σημαντικά τμήματα της λειτουργικότητάς τους σε διεπαφές προγραμματισμού εφαρμογών. Πέρα από το πώς οι προγραμματιστές χρησιμοποιούν τις εν λόγω διεπαφές, η ευρωστία των προγραμμάτων εξαρτάται και από την ποιότητα του σχεδιασμού και της υλοποίησης των ίδιων των διεπαφών. Στόχος της παρούσας διατριβής είναι η διερεύνηση και ανάπτυξη εργαλείων που είναι ικανά να συμβάλλουν στη βελτίωση της ευρωστίας των σύγχρονων συστημάτων και εφαρμογών πληροφορικής, μέσα από την ανάπτυξη αξιόπιστων διεπαφών προγραμματισμού εφαρμογών.Αρχικά, επεξεργαζόμαστε τηλεμετρικά δεδομένα από εφαρμογές που έχουν καταρρεύσει, για να οργανώσουμε περίπου ένα εκατομμύριο αναφορές λαθών και να εξάγουμε κανόνες που ορίζουν επισφαλείς κλήσεις που πραγματοποιούνται από τις εφαρμογές προς τις διεπαφές προγραμματισμού. Τα ευρήματά μας δείχνουν πως οι σημαντικότερες αιτίες αποδίδονται στους παρακάτω λόγους: ανεπάρκεια μνήμης, θέματα συγχρονισμού, ελλιπής διάθεση κατάλληλων πόρων. Επίσης, εντοπίζουμε προβλήματα (10%) για τις αιτίες των οποίων δεν μπορούμε με βεβαιότητα να αποφανθούμε, εφόσον σχετίζονται με γενικές ή μη τεκμηριωμένες εξαιρέσεις που εμφανίζονται στις αναφορές λαθών.Με βάση το τελευταίο μας εύρημα, αναπτύσσουμε ένα εργαλείο στατικής ανάλυσης το οποίο με αυτοματοποιημένο τρόπο αξιολογεί την ποιότητα σχετικά με τους τύπους των εξαιρέσεων που είναι δηλωμένοι στα έγγραφα τεκμηρίωσης των διεπαφών προγραμματισμού εφαρμογών. Εφαρμόζοντας την τεχνική μας στο οικοσύστημα του Android, βρίσκουμε πως συγκεκριμένες μη τεκμηριωμένες εξαιρέσεις μπορούν να επηρεάζουν αρνητικά τη σταθερότητα των εφαρμογών που βασίζουν τη λειτουργία τους σε μια πλατφόρμα, όπως το Android. Επιπλέον, τα αποτελέσματα ενός πειράματος που διεξάγουμε με 25 προγραμματιστές, μας οδηγούν στο σχεδιασμό και την ανάπτυξη ενός στατικού επαληθευτή που μπορεί να εγγυηθεί τη συνεπή λειτουργία των προγραμμάτων που αναλύει. Χρησιμοποιώντας το σύστημα τύπων που αναπτύσσουμε, εξετάζουμε έργα ανοιχτού λογισμικού Java και εντοπίζουμε λάθη, αποδεικνύοντας τη λειτουργικότητα του συστήματός μας, για τον εντοπισμό προβλημάτων σχετικών με τον χειρισμό του μηχανισμού εξαιρέσεων σε προγράμματα Java, τα οποία μπορούν να δέχονται μη έγκυρα δεδομένα εισόδου.