Software-Entropie - Software entropy

Software-Entropie ist ein Meme , das die Idee umfasst, dass Software bei ihrer Änderung schließlich verrottet , wenn nicht ausreichend darauf geachtet wird, die Kohärenz mit dem Produktdesign und den etablierten Designprinzipien aufrechtzuerhalten. Der gängige Sprachgebrauch bezieht sich nur tangential auf die Entropie, wie sie in der klassischen Thermodynamik und statistischen Physik definiert ist .

Ein weiterer Aspekt kann in der wahrgenommenen Verschlechterung der Qualität ansonsten statischer Software gefunden werden, die das Ergebnis der unvermeidlichen Änderungen ihrer Umgebung ist, die häufig auftreten, wenn Betriebssysteme und andere Komponenten aktualisiert oder außer Betrieb genommen werden. Wenn wir die Auswirkungen von kosmischer Strahlung und Wärme auf Speichermedien ignorieren, kommen wir der klassischen thermodynamischen Idee der Entropie möglicherweise am nächsten .

Geschichte

Eine Arbeit über Software Engineering von Ivar Jacobson et al. aus dem Jahr 1992 beschreibt Software-Entropie wie folgt:

Der zweite Hauptsatz der Thermodynamik im Prinzip besagt , dass ein geschlossenes System ‚s Störung nicht reduziert werden kann, kann es bleiben nur unverändert oder erhöhen. Ein Maß für diese Störung ist die Entropie . Dieses Gesetz erscheint auch für Softwaresysteme plausibel ; Wenn ein System modifiziert wird, nimmt seine Unordnung oder Entropie zu. Dies wird als Software-Entropie bezeichnet .
Innerhalb der Softwareentwicklung gibt es ähnliche Theorien; siehe Lehman (1985), der eine Reihe von Gesetzen vorschlug, von denen zwei im Wesentlichen wie folgt lauteten:
  1. Ein verwendetes Computerprogramm wird modifiziert
  2. Wenn ein Programm modifiziert wird, nimmt seine Komplexität zu, sofern man nicht aktiv dagegen arbeitet.

1999 verwenden Andrew Hunt und David Thomas das Reparieren zerbrochener Fenster als Metapher für die Vermeidung von Software-Entropie in der Softwareentwicklung.

Bezug zur Informationstheorie

Software-Quellcode ist Information

Der Zweck des Schreibens von Software besteht darin, Domänen- und Designwissen in Quellform(en) zu codieren , die in ausführbare Zielformate übersetzt werden können. Sofern die Quelle eine kohärente, rauschfreie Kodierung der relevanten Wissensmengen ist, kann ihre Entropie als solche als gering angesehen werden. Nach der anfänglichen Entwicklung und Abnahme tritt der Code in die Wartungsphase des Softwarelebenszyklus ein , in der es erlaubt sein kann, Fehler (Rauschen) anzusammeln, die durch Abweichungen von diesen Wissensbeständen (Domänen- und Softwaredesignprinzipien) dargestellt werden, und dadurch die Entropie von . zu erhöhen die Software.

Bezug zur Komplexität

Obwohl Korrelationen bekannt sind (siehe Softwarekomplexität ), besteht kein direkter Zusammenhang zwischen Softwarekomplexität und Softwareentropie . Zwei beliebige Softwareteile mit äquivalenten Komplexitätsstufen können auf unterschiedlichen Entropie- oder Verrottungsstufen existieren. Selbst ein sehr einfaches Programm kann hohe Entropiewerte erleiden, wenn es durch die Hände mehrerer Entwickler geht.

Vermeidung

Der Prozess des Code-Refactoring kann zu einer schrittweisen Reduzierung der Software-Entropie führen.

Siehe auch

Verweise