Entropie software - Software entropy

Entropia software este un meme , care cuprinde ideea că software-ul se putreze în cele din urmă pe măsură ce este schimbat, dacă nu se acordă suficientă atenție pentru a menține coerența cu proiectarea produsului și cu principiile de proiectare stabilite. Utilizarea obișnuită este legată doar tangențial de entropie așa cum este definită în termodinamica clasică și fizica statistică .

Un alt aspect poate fi găsit în ceea ce este perceput a fi o degradare a calității software-ului altfel static, care este rezultatul schimbărilor inevitabile ale mediului său, care apar adesea pe măsură ce sistemele de operare și alte componente sunt actualizate sau retrase. Ignorând efectele razelor cosmice și căldură pe medii de stocare, acest lucru poate fi cel mai aproape vom ajunge la termodinamica clasica ideea de entropie .

Istorie

O lucrare despre ingineria software realizată de Ivar Jacobson și colab., În 1992, descrie entropia software după cum urmează:

Doua lege a termodinamicii , în principiu, prevede că un sistem închis e tulburare nu poate fi redus, acesta poate rămâne doar neschimbată sau creșterea. O măsură a acestei tulburări este entropia . Această lege pare plauzibilă și pentru sistemele software ; pe măsură ce un sistem este modificat, tulburarea sau entropia acestuia tinde să crească. Aceasta este cunoscută sub numele de entropie software .
În cadrul dezvoltării de software , există teorii similare; vezi Lehman (1985), care a sugerat o serie de legi, dintre care două erau, practic, după cum urmează:
  1. Un program de calculator utilizat va fi modificat
  2. Când un program este modificat, complexitatea acestuia va crește, cu condiția ca cineva să nu acționeze activ împotriva acestui lucru.

În 1999, Andrew Hunt și David Thomas folosesc repararea ferestrelor sparte ca metaforă pentru evitarea entropiei software în dezvoltarea de software.

Relația cu teoria informației

Codul sursă al software-ului este o informație

Scopul software-ului de scriere este de a codifica cunoștințele de domeniu și de proiectare , în forme sursă care pot fi traduse în format (e) de destinație executabil. Ca atare, în măsura în care sursa este o codificare coerentă, fără zgomot, a seturilor de cunoștințe relevante, entropia sa poate fi considerată scăzută. După dezvoltarea și acceptarea inițială, codul intră în faza de întreținere a ciclului de viață al software - ului , unde poate fi permis să acumuleze defecte (zgomot), reprezentate de divergența de acele seturi de cunoștințe (domeniu și principiile de proiectare a software-ului), și astfel crește entropia software-ul.

Relația cu complexitatea

Deși există corelații cunoscute (a se vedea complexitatea software-ului ), nu există o relație directă între complexitatea software-ului și entropia software-ului . Orice două software, cu niveluri de complexitate echivalente, pot exista la diferite niveluri de entropie sau putrezire. Chiar și un program foarte simplu, poate suferi un nivel ridicat de entropie pe măsură ce trece prin mâinile mai multor dezvoltatori.

Evitare

Procesul de refactorizare a codului poate duce la reduceri treptate ale entropiei software.

Vezi si

Referințe