Putrezirea software-ului - Software rot

Putrezirea software-ului , cunoscută și sub denumirea de putregai de biți , putrezirea codului , eroziunea software-ului , descompunerea software-ului sau entropia software-ului este fie o deteriorare lentă a calității software-ului în timp, fie o scădere a capacității de reacție, care va duce în cele din urmă la defectarea software-ului, inutilizabil sau care are nevoie de upgrade . Acesta nu este un fenomen fizic: software-ul nu se descompune, ci suferă din cauza lipsei de reacție și actualizare în ceea ce privește mediul în schimbare în care se află.

Fișierul jargon , un compendiu de lore hacker, definește „bit putregai“ , ca o explicație umoristic pentru degradarea unui software de program de-a lungul timpului , chiar dacă „nimic nu sa schimbat“; ideea din spatele acestui lucru este aproape ca și cum biții care alcătuiesc programul ar fi supuși decăderii radioactive.

Cauze

Mai mulți factori sunt responsabili pentru putrezirea software-ului, inclusiv modificările aduse mediului în care funcționează software-ul, degradarea compatibilității între părțile software-ului în sine și apariția unor erori în codul neutilizat sau rar utilizat.

Schimbarea mediului

Atunci când apar modificări în mediul programului, în special modificări pe care proiectantul programului nu le-a anticipat, este posibil ca software-ul să nu mai funcționeze conform intenției inițiale. De exemplu, mulți designeri de jocuri pe computer timpurii au folosit viteza ceasului CPU ca temporizator în jocurile lor. Cu toate acestea, ceasurile CPU mai noi au fost mai rapide, astfel încât viteza de joc a crescut în consecință, făcând jocurile mai puțin utilizabile în timp.

Oncabilitate

Există schimbări în mediu care nu sunt legate de proiectantul programului, ci de utilizatorii acestuia. Inițial, un utilizator putea să aducă sistemul în stare de funcționare și să îl facă să funcționeze impecabil pentru o anumită perioadă de timp. Dar, atunci când sistemul nu mai funcționează corect sau utilizatorii doresc să acceseze comenzile de configurare, nu pot repeta acel pas inițial din cauza contextului diferit și a informațiilor indisponibile (parola pierdută, instrucțiuni lipsă sau pur și simplu un utilizator greu de gestionat interfață care a fost configurată mai întâi prin încercare și eroare). Arhitectul informațional Jonas Söderström a numit acest concept Onceabilitate și îl definește ca „calitatea într-un sistem tehnic care împiedică un utilizator să restabilească sistemul, după ce a eșuat”.

Cod neutilizat

Porțiuni de cod utilizate rar, cum ar fi filtrele de documente sau interfețele concepute pentru a fi utilizate de alte programe, pot conține erori care trec neobservate. Odată cu modificările cerințelor utilizatorilor și alți factori externi, acest cod poate fi executat ulterior, expunând astfel erorile și făcând software-ul să pară mai puțin funcțional.

Cod rar actualizat

Întreținerea normală a software-ului și a sistemelor poate provoca, de asemenea, putrezirea software-ului. În special, atunci când un program conține mai multe părți care funcționează la distanța dintre ele, omisiunea de a lua în considerare modul în care modificările aduse unei părți îi afectează pe celelalte poate introduce erori.

În unele cazuri, aceasta poate lua forma unor biblioteci pe care le folosește software-ul, fiind modificate într-un mod care afectează negativ software-ul. Dacă versiunea veche a unei biblioteci care a funcționat anterior cu software-ul nu mai poate fi utilizată din cauza conflictelor cu alte programe software sau defecte de securitate care au fost găsite în versiunea veche, este posibil să nu mai existe o versiune viabilă a unei biblioteci necesare pentru program. a folosi.

Clasificare

Putregaiul software este de obicei clasificat ca fiind putregai latent sau putregai activ .

Putregai inactiv

Software-ul care nu este utilizat în prezent devine treptat inutilizabil pe măsură ce restul aplicației se schimbă. Schimbările în cerințele utilizatorilor și mediul software contribuie, de asemenea, la deteriorarea.

Putregai activ

Software-ul care este în mod continuu modificat își poate pierde integritatea în timp dacă nu sunt aplicate în mod consecvent procese adecvate de atenuare. Cu toate acestea, o mulțime de software necesită modificări continue pentru a îndeplini noile cerințe și a corecta erorile, iar reproiectarea software-ului de fiecare dată când se face o modificare este rareori practic. Acest lucru creează ceea ce este în esență un proces de evoluție pentru program, determinându-l să se îndepărteze de designul original conceput. Ca o consecință a acestui lucru și a unui mediu în schimbare, presupunerile făcute de proiectanții originali pot fi invalidate, introducând erori.

În practică, adăugarea de noi funcții poate fi prioritară față de actualizarea documentației ; fără documentare, totuși, este posibil să se piardă cunoștințe specifice referitoare la părți ale programului. Într-o anumită măsură, acest lucru poate fi atenuat urmând cele mai bune practici actuale pentru convențiile de codificare .

Puterea activă a software-ului încetinește odată ce o aplicație este aproape de sfârșitul vieții sale comerciale și încetează dezvoltarea ulterioară. Utilizatorii învață adesea să rezolve orice erori software rămase , iar comportamentul software-ului devine consecvent, deoarece nimic nu se schimbă.

Exemple

Exemplu de program AI

Multe programe seminale din primele zile ale cercetării AI au suferit de putrezirea ireparabilă a software-ului. De exemplu, programul original SHRDLU (un program de înțelegere a limbajului natural timpuriu) nu poate fi rulat pe niciun computer modern sau simulator de computer, deoarece a fost dezvoltat în zilele în care LISP și PLANNER erau încă în faza de dezvoltare și, prin urmare, utilizează non-standard macrocomenzi și biblioteci software care nu mai există.

Exemplu de forum online

Să presupunem că un administrator creează un forum folosind software-ul de forum open source , apoi îl modifică puternic adăugând noi funcții și opțiuni. Acest proces necesită modificări ample ale codului existent și abateri de la funcționalitatea originală a acelui software.

De aici, există mai multe moduri în care putregaiul software poate afecta sistemul:

  • Administratorul poate face accidental modificări care intră în conflict unul cu celălalt sau cu software-ul original, determinând forumul să se comporte în mod neașteptat sau să se descompună cu totul. Acest lucru îi lasă într-o poziție foarte proastă: deoarece s-au abătut atât de mult de la codul original, suportul tehnic și asistența în revigorarea forumului vor fi dificil de obținut.
  • O gaură de securitate poate fi descoperită în codul sursă original al forumului, necesitând un patch de securitate. Cu toate acestea, deoarece administratorul a modificat atât de mult codul, este posibil ca patch-ul să nu se aplice direct codului lor, cerându-i administratorului să rescrie în mod eficient actualizarea.
  • Administratorul care a făcut modificările și-a putut elibera funcția, lăsând noului administrator un forum complicat și puternic modificat, care nu are documentație completă. Fără a înțelege pe deplin modificările, este dificil pentru noul administrator să facă modificări fără a introduce conflicte și erori. Mai mult, este posibil ca documentația sistemului original să nu mai fie disponibilă sau, mai rău, să inducă în eroare din cauza diferențelor subtile în cerințele funcționale.

Refactorizare

Refactorizarea este un mijloc de abordare a problemei putrezirii software-ului. Este descris ca procesul de rescriere a codului existent pentru a-și îmbunătăți structura fără a afecta comportamentul său extern. Aceasta include eliminarea codului mort și rescrierea secțiunilor care au fost modificate extensiv și care nu mai funcționează eficient. Trebuie avut grijă să nu se schimbe comportamentul extern al software-ului, deoarece acest lucru ar putea introduce incompatibilități și, prin urmare, el însuși poate contribui la putrezirea software-ului.

Vezi si

Referințe