From Wikipedia, the free encyclopedia
Στην πληροφορική, στατική ανάλυση, στατική ανάλυση κώδικα ή στατική ανάλυση προγράμματος (Αγγλ.: static analysis, static code analysis, static program analysis), είναι η ανάλυση ενός προγράμματος που γίνεται χωρίς να εκτελεστεί το πρόγραμμα (η ανάλυση προγράμματος που γίνεται με εκτέλεσή του λέγεται δυναμική ανάλυση). Στις περισσότερες περιπτώσεις η ανάλυση γίνεται σε κάποιο επίπεδο πηγαίου κώδικα και πολλές φορές σε αντικειμενικό κώδικα. Ο όρος συνήθως αναφέρεται στην ανάλυση που γίνεται με κάποιο αυτόματο εργαλείο, ενώ η ανάλυση προγράμματος από άνθρωπο λέγεται κατανόηση προγράμματος.
Το λήμμα παραθέτει τις πηγές του αόριστα, χωρίς παραπομπές. |
Η ανάλυση που μπορεί να γίνει από αυτόματα εργαλεία ποικίλλει από αυτά που εξετάζουν τη συμπεριφορά μόνο συγκεκριμένων εκφράσεων ή δηλώσεων στο πρόγραμμα, έως αυτά που συμπεριλαμβάνουν ολόκληρο τον πηγαίο κώδικα ενός προγράμματος στην ανάλυση. Οι χρήσεις των πληροφοριών που πηγάζουν από την ανάλυση συμπεριλαμβάνουν από τον εντοπισμό πιθανών λαθών στο πρόγραμμα (π.χ. το εργαλείο lint), έως τυπικές μεθόδους που αποδεικνύουν μαθηματικά ιδιότητες για κάποιο δεδομένο πρόγραμμα (π.χ. ότι η συμπεριφορά του όντως ακολουθεί την τεχνική του περιγραφή).
Η μέτρηση μιας οποιασδήποτε ιδιότητας του προγράμματος, όπως και ο αντίστροφος σχεδιασμός (reverse engineering) θεωρούνται επίσης είδη στατικής ανάλυσης.
Μια αυξανόμενη εμπορική χρήση της στατικής ανάλυσης είναι η επαλήθευση ιδιοτήτων του λογισμικού που χρησιμοποιείται σε υπολογιστικά συστήματα όπου η ασφάλεια είναι κρίσιμη, για την αυτόματη ανακάλυψη πιθανών τρωτών σημείων στον κώδικα.
Ο όρος τυπικές μέθοδοι χρησιμοποιείται στην ανάλυση λογισμικού και υλικού, και η οποία λειτουργεί αμιγώς με τη χρήση αυστηρών μαθηματικών μεθόδων. Οι μαθηματικές τεχνικές που χρησιμοποιούνται περιλαμβάνουν δηλωτική, λειτουργική ή αξιωματική σημασιολογία, και αφηρημένη διερμηνεία.
Αν υποθέσουμε ότι ο χώρος καταστάσεων των προγραμμάτων δεν είναι πεπερασμένος και μικρός, τότε αποδεικνύεται πως η εύρεση όλων των δυνατών λαθών χρόνου εκτέλεσης ή γενικότερα οποιουδήποτε είδους παραβίαση των προδιαγραφών στο τελικό αποτέλεσμα ενός προγράμματος, είναι αδύνατη: δεν υπάρχει καμία αυτόματη μηχανική μέθοδος που να μπορεί πάντα να βρίσκει με ακρίβεια αν ένα πρόγραμμα έχει λάθη εκτέλεσης ή όχι. Το αποτέλεσμα αυτό προκύπτει από τις εργασίες των Αλόνζο Τσερτς, Κουρτ Γκέντελ και Άλαν Τούρινγκ στη δεκαετία του 1930 (βλ. πρόβλημα τερματισμού και θεώρημα Ράις). Όπως συμβαίνει με τα περισσότερα άλυτα προβλήματα απόφασης, μπορεί κανείς να προσπαθήσει να δώσει χρήσιμες προσεγγιστικές λύσεις.
Κάποιες από τις τεχνικές υλοποίησης της τυπικής στατικής ανάλυσης είναι:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.