Στις μέρες μας παρατηρείται μια αυξανόμενη τάση χρησιμοποίησης παράλληλων τεχνικών
στον προγραμματισμό. Αυτό εξηγείται τόσο από την αύξηση των επεξεργαστών που περι-
λαμβάνονται πλέον σε κάθε προσωπικό υπολογιστή, όσο και από την δημιουργία και ανάπτυξη
υπηρεσιών Cloud. Ωστόσο ο παράλληλος προγραμματισμός εισάγει μια σειρά από σφάλματα
τα οποία δεν υπάρχουν στο σειριακό προγραμματισμό και τα οποία τα συνηθισμένα εργαλεία
αποσφαλμάτωσης δεν μπορούν να εντοπίσουν.
Σε αυτή τη διπλωματική μελετάμε τον Concuerror, ένα εργαλείο ελέγχου προγραμμάτων
γραμμένων σε Erlang το οποίο μπορεί να χρησιμοποιηθεί για τον εντοπισμό λαθών που εισά-
γονται από τον ταυτοχρονισμό. Επίσης εξετάζουμε κατά πόσο ένα τέτοιο εργαλείο μπορεί να
χρησιμοποιηθεί από μεγάλα projects (χιλιάδες γραμμές κώδικα), τα οποία μπορεί να χρησιμο-
ποιούν αρκετές από τις βιβλιοθήκες της υλοποίησης της Erlang και να υλοποιούν περίπλοκα
πρωτόκολλα επικοινωνίας.
Concurrent programming has become increasingly widely used in the last decade. This can
be explained by the increasing number of multiprocessor personal computers and the new
trend of Cloud computing. Nevertheless, concurrent programming introduces a number of
new errors not seen in sequential programming and which traditional testing tools largely
cannot easily detect.
In this thesis we study Concuerror, a testing tool for concurrent Erlang programs, that
aims to facilitate the task of detecting and eliminating concurrency-related errors. We also
examine how Concuerror can be used in practice to test projects with thousands of lines
of code, which may use many system libraries and implement complex communication
protocols.