.
Η εντροπία λογισμικού είναι η ιδέα ότι το λογισμικό τελικά σαπίζει καθώς αλλάζει, εάν δεν ληφθεί επαρκής προσοχή για τη διατήρηση της συνοχής με τον σχεδιασμό του προϊόντος και τις καθιερωμένες αρχές σχεδιασμού. Η κοινή χρήση σχετίζεται μόνο εφαπτομενικά με την εντροπία όπως ορίζεται στην κλασική θερμοδυναμική και τη στατιστική φυσική.
Μια άλλη πτυχή μπορεί να βρεθεί σε αυτό που θεωρείται ότι είναι μια υποβάθμιση της ποιότητας του κατά τα άλλα στατικού λογισμικού που είναι αποτέλεσμα των αναπόφευκτων αλλαγών στο περιβάλλον του, που συχνά συμβαίνουν καθώς αναβαθμίζονται ή αποσύρονται λειτουργικά συστήματα και άλλα στοιχεία.
Ιστορία
Μια εργασία για τη μηχανική λογισμικού από τους Ivar Jacobson et al, το 1992[1] περιγράφει την εντροπία λογισμικού ως εξής:
Ο δεύτερος νόμος της θερμοδυναμικής, καταρχήν, δηλώνει ότι η διαταραχή ενός κλειστού συστήματος δεν μπορεί να μειωθεί, μπορεί μόνο να παραμείνει αμετάβλητη ή να αυξηθεί. Ένα μέτρο αυτής της διαταραχής είναι η εντροπία. Αυτός ο νόμος φαίνεται επίσης εύλογος για συστήματα λογισμικού. Καθώς ένα σύστημα τροποποιείται, η αταξία ή η εντροπία του τείνει να αυξάνεται. Αυτό είναι γνωστό ως εντροπία λογισμικού.
Στην ανάπτυξη λογισμικού, υπάρχουν παρόμοιες θεωρίες. βλ.
Ένα πρόγραμμα υπολογιστή που χρησιμοποιείται θα τροποποιηθεί
Όταν ένα πρόγραμμα τροποποιείται, η πολυπλοκότητά του θα αυξηθεί, υπό την προϋπόθεση ότι κάποιος δεν εργάζεται ενεργά ενάντια σε αυτό.
Το 1999, ο Andrew Hunt και ο David Thomas χρησιμοποιούν τη διόρθωση σπασμένων παραθύρων ως μεταφορά για την αποφυγή της εντροπίας λογισμικού στην ανάπτυξη λογισμικού.[3]
Σχέση με τη θεωρία της πληροφορίας
Ο πηγαίος κώδικας λογισμικού είναι πληροφορίες
Ο σκοπός της συγγραφής λογισμικού είναι η κωδικοποίηση γνώσεων τομέα και σχεδιασμού, σε μορφή(εις) πηγής που μπορούν να μεταφραστούν σε εκτελέσιμη μορφή(εις) προορισμού. Ως εκ τούτου, στον βαθμό που η πηγή είναι μια συνεκτική, χωρίς θόρυβο κωδικοποίηση των σχετικών συνόλων γνώσης, η εντροπία της μπορεί να θεωρηθεί χαμηλή. Μετά την αρχική ανάπτυξη και αποδοχή, ο κώδικας εισέρχεται στη φάση συντήρησης του κύκλου ζωής του λογισμικού, όπου μπορεί να του επιτραπεί η συσσώρευση ελαττωμάτων (θόρυβος), που αντιπροσωπεύονται από απόκλιση από αυτά τα σύνολα γνώσεων (αρχές σχεδίασης τομέα και λογισμικού) και ως εκ τούτου να αυξηθεί η εντροπία του το λογισμικό.
Σχέση με την πολυπλοκότητα
Ενώ υπάρχουν γνωστές συσχετίσεις (βλ. πολυπλοκότητα λογισμικού), δεν υπάρχει άμεση σχέση μεταξύ της πολυπλοκότητας του λογισμικού και της εντροπίας του λογισμικού. Οποιαδήποτε δύο κομμάτια λογισμικού, με ισοδύναμα επίπεδα πολυπλοκότητας, μπορούν να υπάρχουν σε διαφορετικά επίπεδα εντροπίας ή σήψης. Ακόμη και ένα πολύ απλό πρόγραμμα, μπορεί να υποστεί υψηλά επίπεδα εντροπίας καθώς περνά από τα χέρια πολλών προγραμματιστών.
Αποφυγή
Η διαδικασία αναδιαμόρφωσης κώδικα μπορεί να οδηγήσει σε σταδιακή μείωση της εντροπίας του λογισμικού.
Jacobson, Ivar; Christerson, Magnus; Jonsson, Patrik; Övergaard, Gunnar (1992), Object-Oriented Software Engineering: A Use Case Driven Approach, ACM Press. Addison–Wesley, pp. 69–70, ISBN 0-201-54435-0
Lehman, M. M.; Belady, L.A. (1985), Program evolution: processes of software change, Academic Press, ISBN 9780124424401
Hunt, Andrew; Thomas, David (1999), The Pragmatic Programmer, Addison Wesley, ISBN 0-201-61622-X – Item 4 (of 22 tips) is Don't Live with Broken Windows.
Wojnowicz, Michael; Chisholm, Glenn; Wolff, Matt; Zhao, Xuan (2016). "Wavelet decomposition of software entropy reveals symptoms of malicious code". Journal of Innovation in Digital Ecosystems. 3 (2): 130–140. doi:10.1016/j.jides.2016.10.009.
Hellenica World - Scientific Library
Από τη ελληνική Βικιπαίδεια http://el.wikipedia.org . Όλα τα κείμενα είναι διαθέσιμα υπό την GNU Free Documentation License