# Degradació del programari

La putrefacció del programari (podrició de bits, podridura del codi, erosió del programari, decadència del programari o entropia del programari) és el deteriorament de la qualitat o el rendiment del programari al llarg del temps que fa que esdevingui defectuós, inutilitzable o necessiti actualització.
Com que el programari no pot deteriorar-se físicament, el terme és hipèrbole. El procés es deu a canvis en el codi font o a l'entorn en què opera el programari.
The Jargon File, un compendi de tradicions dels pirates informàtics, defineix "bit rot" com una explicació jocosa de la degradació d'un programa de programari al llarg del temps encara que "res no hagi canviat"; la idea darrere d'això és gairebé com si els bits que formen el programa estiguessin subjectes a desintegració radioactiva.

## Causes

Diversos factors són els responsables de la putrefacció del programari, inclosos els canvis a l'entorn en el qual opera el programari, la degradació de la compatibilitat entre les parts del mateix programari i l'aparició d'errors en el codi no utilitzat o poc utilitzat.

### Canvi d'entorn

Quan es produeixen canvis a l'entorn del programa, en particular canvis que el dissenyador del programa no va preveure, és possible que el programari ja no funcioni com es pretenia originalment. Per exemple, molts dels primers dissenyadors de jocs d'ordinador van utilitzar la velocitat del rellotge de la CPU com a temporitzador en els seus jocs. Tanmateix, els rellotges de la CPU més nous eren més ràpids, de manera que la velocitat de joc va augmentar en conseqüència, fent que els jocs fossin menys utilitzables amb el temps.

### Onceabilitat

Hi ha canvis en l'entorn no relacionats amb el dissenyador del programa, sinó amb els seus usuaris. Inicialment, un usuari podria posar en funcionament el sistema i fer-lo funcionar perfectament durant un cert temps. Però, quan el sistema deixa de funcionar correctament, o els usuaris volen accedir als controls de configuració, no poden repetir aquest pas inicial a causa del context diferent i la informació no disponible (contrasenya perduda, instruccions que falten o simplement un interfície d'usuari difícil de gestionar). L'arquitecte de la informació Jonas Söderström ha batejat aquest concepte Onceability, i el defineix com "la qualitat d'un sistema tècnic que impedeix a un usuari restaurar el sistema, un cop ha fallat".

### Codi no utilitzat

Les porcions de codi que s'utilitzen amb poca freqüència, com ara filtres de documents o interfícies dissenyades per ser utilitzades per altres programes, poden contenir errors que passen desapercebuts. Amb canvis en els requisits de l'usuari i altres factors externs, aquest codi es pot executar més tard, exposant així els errors i fent que el programari sembli menys funcional.

### Codi poc actualitzat

El manteniment normal del programari i dels sistemes també pot provocar la putrefacció del programari. En particular, quan un programa conté diverses parts que funcionen a distància una de l'altra, no tenir en compte com els canvis a una part que afecten les altres poden introduir errors.
En alguns casos, això pot prendre la forma de les biblioteques que utilitza el programari que es modifiquen d'una manera que afecti negativament el programari. Si la versió antiga d'una biblioteca que funcionava anteriorment amb el programari ja no es pot utilitzar a causa de conflictes amb un altre programari o defectes de seguretat que es van trobar a la versió antiga, és possible que ja no hi hagi una versió viable d'una biblioteca necessària per al programa. usar.

### Connectivitat en línia

El programari comercial modern sovint es connecta a un servidor en línia per verificar la llicència i accedir a la informació. Si el servei en línia que alimenta el programari està tancat, és possible que deixi de funcionar.
Des de finals de la dècada de 2010, la majoria de llocs web utilitzen connexions HTTPS segures. Tanmateix, això requereix claus de xifratge anomenades certificats arrel que tinguin dates de caducitat. Un cop caduquen els certificats, el dispositiu perd connectivitat amb la majoria de llocs web tret que les claus s'actualitzin contínuament.
Un altre problema és que el març de 2021 els antics estàndards de xifratge TLS 1.0 i TLS 1.1 van quedar obsolets. Això vol dir que els sistemes operatius, navegadors i altres programaris en línia que no admeten almenys TLS 1.2 no es poden connectar a la majoria de llocs web, fins i tot per descarregar pegats o actualitzar el navegador, si aquests estan disponibles. Això ocasionalment s'anomena "apocalipsi TLS".
Els productes que no es poden connectar a la majoria de llocs web inclouen PowerMacs, caixes Unix antigues i versions de Microsoft Windows anteriors a Server 2008/Windows 7. El navegador Internet Explorer 8 de Server 2008/Windows 7 admet TLS 1.2, però està desactivat per defecte.

## Refactorització

La refactorització és un mitjà per abordar el problema de la podridura del programari. Es descriu com el procés de reescriure el codi existent per millorar la seva estructura sense afectar el seu comportament extern. Això inclou eliminar el codi mort i reescriure seccions que s'han modificat àmpliament i que ja no funcionen de manera eficient. Cal tenir cura de no canviar el comportament extern del programari, ja que això podria introduir incompatibilitats i, per tant, contribuir a la putrefacció del programari. Alguns principis de disseny a tenir en compte quan es tracta de refactoritzar és mantenir l'estructura jeràrquica del codi i implementar l'abstracció per simplificar i generalitzar les estructures de codi.

## Referències

* ↑ Raymond, Eric. «Bit rot» (en anglès). The Jargon File. [Consulta: 3 març 2013].
* ↑ Salemi, Joe. PC Magazine (en anglès). Ziff Davis, Inc., 1992-01-28, p. 286.
* ↑ Jonas Söderström. «Onceability: The consequence of technology rot» (en anglès). Arxivat de l'original el 2023-03-20. [Consulta: 6 juny 2024].
* ↑ Amadeo, Ron. «The (updated) history of Android» (en anglès americà). Ars Technica, 31-10-2016. [Consulta: 31 octubre 2021].
* ↑ «Adobe CS2 is Now Available for Free, Sort Of» (en anglès). Mobile Magazine, 14-01-2013. Arxivat de l'original el 2013-01-18. [Consulta: 20 gener 2013].
* ↑ Paul Wagenseil. «Apocalypse deferred: These Android devices will no longer go offline next fall» (en anglès). Tom's Guide, 24-12-2020. [Consulta: 16 març 2023].
* ↑ «Windows 7 adds support for TLSv1.1 and TLSv1.2 - IEInternals - Site Home - MSDN Blogs» (en anglès). Arxivat de l'original el 2013-12-26.
* ↑ Fowler, Martin. «What Is Refactoring» (en anglès), 11-10-2007. [Consulta: 22 novembre 2007].