fbpx
Wikipedia

Pudrición del software

La pudrición del software, también conocida como la Pudrición del código o erosión de software o decaimiento de software o entropía del software describe la percibida "podredumbre" que es un deterioro lento del desempeño del software con el tiempo o su decreciente capacidad de respuesta que conducirá eventualmente a convertirse en defectuoso, inusable, o de otra manera llamado "obsoleto" (legacy) y en necesidad de actualizar (mantenimiento). No se trata de un fenómeno físico: el software realmente no se pudre, sino más bien adolece de una falta de responsabilidad y actualización con respecto al entorno cambiante en el que reside.

El software puede deteriorarse en "rendimiento" con el tiempo y se convierte en lo que comúnmente se llama "obsoleto" a medida que corre y acumula errores; Esto generalmente no es considerado putrefacción de software, aunque puede tener algunas de las mismas consecuencias. Usualmente, tal estado degradado puede ser remediado reinicializando completamente su estado (como por una reinstalación completa de todos los componentes relevantes de software, posiblemente incluyendo el software de sistema operativo); Esto también puede remediar algunas clases de pudrición de software, mientras que otras putrefacción de software son irreversibles, a medida que el entorno operativo del software o componentes del software en sí mismo se vuelven incompatibles y por lo tanto haciéndose obsoleto.

Causas

Hay varios factores responsables de la putrefacción del software. Estos incluyen cambios en el entorno en que opera el software, degradación de la compatibilidad entre partes del software en sí mismo, y la aparición de errores en el código no usado o raramente usado.

Cambio del entorno

Cuando se producen cambios en el entorno del programa, particularmente cambios que no anticipó el diseñador del programa, el software no puede operar como previó originalmente. Por ejemplo, muchos de los primeros diseñadores de juegos de computadora hicieron suposiciones sobre la velocidad de procesamiento del CPU para los que los juegos fueron diseñados. Una consecuencia de esto fue que cuando la frecuencia del reloj del CPU fue utilizada como un contador de tiempo en el juego, la velocidad del juego aumentaría con la del CPU, haciendo el software menos usable con el tiempo.

Una sola vez

Hay cambios en el ambiente no relacionadas con el diseñador del programa, sino con sus usuarios. Un usuario puede configurar el sistema de trabajo una vez y tenerlo funcionando perfectamente durante un tiempo. Pero cuando el sistema deja de funcionar correctamente, o los usuarios quieren acceder a los controles de configuración, no son capaces de repetir ese paso inicial debido al diferente contexto y la información no disponible (pérdida de contraseña, instrucciones faltantes, o simplemente una interfaz de usuario difícil de administrar que en un principio fue configurada por ensayo y error). El arquitecto de información Jonas Söderström ha nombrado este concepto como Onceability (una sola vez),[1]​ y lo define como "la cualidad en un sistema técnico que impide a un usuario restaurar el sistema, una vez que ha fallado".

Código sin usar

Porciones de código que normalmente no son ejecutadas, como filtros de documentos o interfaces diseñados para ser usados por otros programas, pueden contener errores que pasan desapercibidos. Con cambios en los requerimientos de los usuarios y otros factores externos, este código puede ejecutarse posteriormente, entonces exponiendo los errores y haciendo el software aparecer menos funcional.

Código raramente actualizado

El mantenimiento normal de software y sistemas también puede causar putrefacción de software. En particular, cuando un programa contiene múltiples partes que funcionan relacionadas una a la otra, fallando en considerar cómo los cambios en una parte afectan a las demás puede introducir errores.

En algunos casos, esto puede tomar la forma de bibliotecas que el software utiliza, siendo cambiadas de una manera que afecta negativamente al software. Si la versión antigua de una biblioteca que fue utilizada anteriormente con el software no puede usarse más debido a conflictos con otro software (como en el caso de archivos DLL — ver el infierno de las DLL), o fallos de seguridad que fueron encontrados en la versión anterior, puede no haber una versión viable de esa biblioteca necesaria para el programa.

Clasificación

Putrefacción de software generalmente se clasifica como putrefacción inactiva o putrefacción activa.

Putrefacción inactiva

El software que no está actualmente siendo usado, poco a poco se torna inservible a medida que el resto de la aplicación cambia. Cambios en los requerimientos de los usuarios y del entorno del software también contribuyen al deterioro.

Putrefacción activa

El software que está siendo modificando continuamente puede perder su integridad con el tiempo si no son aplicados los apropiados procesos de mitigación en forma consistente. Sin embargo, mucho software requiere continuos cambios para satisfacer las nuevas exigencias y corregir errores, y la reingeniería de software cada vez que se realiza un cambio es raramente práctica. Esto crea lo que es esencialmente un proceso de evolución para el programa, causando que se aparten del diseño original de ingeniería. Como una consecuencia de esto y un entorno cambiante, asunciones hechas por los diseñadores originales pueden ser invalidadas, introduciendo errores.

Los desarrolladores a menudo son alentados a entender completamente un problema antes de programar una solución,[cita requerida] y a mantener precisa y completa la documentación del software. En la práctica, sin embargo, añadiendo nuevas características puede ser priorizado sobre la actualización de la documentación. Sin documentación, sin embargo, es posible que se pierdan los conocimientos específicos relativos a las partes del programa. Hasta cierto punto, esto puede ser mitigado por las siguientes mejores prácticas actuales en cuanto a la documentación interna y nombres de variables.

La putrefacción de software activa disminuye una vez que una aplicación está casi al final de su vida comercial y el desarrollo futuro cesa. Con frecuencia los usuarios aprenden a solucionar (work around) cualquier resto de errores de software, y el comportamiento del software se vuelve consistente cuando nada está cambiando.

Ejemplo

Muchos programas seminales de los primeros días de la investigación de la AI han sufrido pudrición de software irreparable. Por ejemplo, el programa SHRDLU original (un temprano programa de comprensión del lenguaje natural) no puede ser ejecutado en cualquier computador moderno de hoy o simulador de computadora, ya que se desarrolló durante los días cuando LISP y PLANNER todavía estaban en fase de desarrollo y por lo tanto usaba macros no estándar y bibliotecas de software que ya no existen.

Supongamos que un administrador crea un foro utilizando algún software de foro en línea. Entonces él o ella lo modifica fuertemente, añadiendo nuevas características y opciones. Este proceso requiere modificaciones extensas al código existente y la desviación de la funcionalidad original de ese software.

A partir de aquí, hay varias maneras de putrefacción del software que puede afectar el sistema:

  • El administrador puede hacer accidentalmente cambios que tengan conflictos mutuamente o con el software original, causando que el foro se comporte de una manera no esperada o se venga abajo. Esto lo deja en muy mala posición: puesto que se ha desviado tanto del código original, serán difíciles de obtener el soporte técnico y la asistencia para resucitar el foro.
  • Puede descubrirse un agujero de seguridad en el código fuente original del foro, que requiere una actualización de seguridad. Sin embargo, debido a que el administrador ha modificado el código tan extensivamente, el parche puede no ser directamente aplicable a su código, requiriendo que el administrador efectivamente reescriba la actualización.
  • El administrador que hizo las modificaciones podría abandonar su posición, dejando al nuevo administrador con un foro complicado y muy modificado que carece de documentación completa. Sin comprender plenamente las modificaciones, es difícil para el nuevo administrador hacer cambios sin la introducción de conflictos y errores. (Además, la documentación del sistema original podría no estar disponible, podría haber sido abandonada, o, con el paso del tiempo, se ha perdido).

Refactorización

La refactorización es un medio de resolver el problema de la pudrición de software. Se describe como el proceso de reescritura de código existente para mejorar su estructura sin afectar su comportamiento externo.[2]​ Esto incluye la eliminación de código muerto y la reescritura de secciones que han sido modificadas extensivamente y no trabajan eficientemente. Debe tenerse cuidado de no cambiar el comportamiento externo del software, ya que esto podría introducir incompatibilidades y por lo tanto contribuye en sí mismo a la pudrición de software.

Referencias

  1. Jonas Söderström. «Onceability: The consequence of technology rot». 
  2. Fowler, Martin (11 de octubre de 2007). «What Is Refactoring». Consultado el 22 de noviembre de 2007. 

Véase también

  •   Datos: Q2996135

pudrición, software, pudrición, software, también, conocida, como, pudrición, código, erosión, software, decaimiento, software, entropía, software, describe, percibida, podredumbre, deterioro, lento, desempeño, software, tiempo, decreciente, capacidad, respues. La pudricion del software tambien conocida como la Pudricion del codigo o erosion de software o decaimiento de software o entropia del software describe la percibida podredumbre que es un deterioro lento del desempeno del software con el tiempo o su decreciente capacidad de respuesta que conducira eventualmente a convertirse en defectuoso inusable o de otra manera llamado obsoleto legacy y en necesidad de actualizar mantenimiento No se trata de un fenomeno fisico el software realmente no se pudre sino mas bien adolece de una falta de responsabilidad y actualizacion con respecto al entorno cambiante en el que reside El software puede deteriorarse en rendimiento con el tiempo y se convierte en lo que comunmente se llama obsoleto a medida que corre y acumula errores Esto generalmente no es considerado putrefaccion de software aunque puede tener algunas de las mismas consecuencias Usualmente tal estado degradado puede ser remediado reinicializando completamente su estado como por una reinstalacion completa de todos los componentes relevantes de software posiblemente incluyendo el software de sistema operativo Esto tambien puede remediar algunas clases de pudricion de software mientras que otras putrefaccion de software son irreversibles a medida que el entorno operativo del software o componentes del software en si mismo se vuelven incompatibles y por lo tanto haciendose obsoleto Indice 1 Causas 1 1 Cambio del entorno 1 2 Una sola vez 1 3 Codigo sin usar 1 4 Codigo raramente actualizado 2 Clasificacion 2 1 Putrefaccion inactiva 2 2 Putrefaccion activa 3 Ejemplo 4 Refactorizacion 5 Referencias 6 Vease tambienCausas EditarHay varios factores responsables de la putrefaccion del software Estos incluyen cambios en el entorno en que opera el software degradacion de la compatibilidad entre partes del software en si mismo y la aparicion de errores en el codigo no usado o raramente usado Cambio del entorno Editar Cuando se producen cambios en el entorno del programa particularmente cambios que no anticipo el disenador del programa el software no puede operar como previo originalmente Por ejemplo muchos de los primeros disenadores de juegos de computadora hicieron suposiciones sobre la velocidad de procesamiento del CPU para los que los juegos fueron disenados Una consecuencia de esto fue que cuando la frecuencia del reloj del CPU fue utilizada como un contador de tiempo en el juego la velocidad del juego aumentaria con la del CPU haciendo el software menos usable con el tiempo Una sola vez Editar Hay cambios en el ambiente no relacionadas con el disenador del programa sino con sus usuarios Un usuario puede configurar el sistema de trabajo una vez y tenerlo funcionando perfectamente durante un tiempo Pero cuando el sistema deja de funcionar correctamente o los usuarios quieren acceder a los controles de configuracion no son capaces de repetir ese paso inicial debido al diferente contexto y la informacion no disponible perdida de contrasena instrucciones faltantes o simplemente una interfaz de usuario dificil de administrar que en un principio fue configurada por ensayo y error El arquitecto de informacion Jonas Soderstrom ha nombrado este concepto como Onceability una sola vez 1 y lo define como la cualidad en un sistema tecnico que impide a un usuario restaurar el sistema una vez que ha fallado Codigo sin usar Editar Porciones de codigo que normalmente no son ejecutadas como filtros de documentos o interfaces disenados para ser usados por otros programas pueden contener errores que pasan desapercibidos Con cambios en los requerimientos de los usuarios y otros factores externos este codigo puede ejecutarse posteriormente entonces exponiendo los errores y haciendo el software aparecer menos funcional Codigo raramente actualizado Editar El mantenimiento normal de software y sistemas tambien puede causar putrefaccion de software En particular cuando un programa contiene multiples partes que funcionan relacionadas una a la otra fallando en considerar como los cambios en una parte afectan a las demas puede introducir errores En algunos casos esto puede tomar la forma de bibliotecas que el software utiliza siendo cambiadas de una manera que afecta negativamente al software Si la version antigua de una biblioteca que fue utilizada anteriormente con el software no puede usarse mas debido a conflictos con otro software como en el caso de archivos DLL ver el infierno de las DLL o fallos de seguridad que fueron encontrados en la version anterior puede no haber una version viable de esa biblioteca necesaria para el programa Clasificacion EditarPutrefaccion de software generalmente se clasifica como putrefaccion inactiva o putrefaccion activa Putrefaccion inactiva Editar El software que no esta actualmente siendo usado poco a poco se torna inservible a medida que el resto de la aplicacion cambia Cambios en los requerimientos de los usuarios y del entorno del software tambien contribuyen al deterioro Putrefaccion activa Editar El software que esta siendo modificando continuamente puede perder su integridad con el tiempo si no son aplicados los apropiados procesos de mitigacion en forma consistente Sin embargo mucho software requiere continuos cambios para satisfacer las nuevas exigencias y corregir errores y la reingenieria de software cada vez que se realiza un cambio es raramente practica Esto crea lo que es esencialmente un proceso de evolucion para el programa causando que se aparten del diseno original de ingenieria Como una consecuencia de esto y un entorno cambiante asunciones hechas por los disenadores originales pueden ser invalidadas introduciendo errores Los desarrolladores a menudo son alentados a entender completamente un problema antes de programar una solucion cita requerida y a mantener precisa y completa la documentacion del software En la practica sin embargo anadiendo nuevas caracteristicas puede ser priorizado sobre la actualizacion de la documentacion Sin documentacion sin embargo es posible que se pierdan los conocimientos especificos relativos a las partes del programa Hasta cierto punto esto puede ser mitigado por las siguientes mejores practicas actuales en cuanto a la documentacion interna y nombres de variables La putrefaccion de software activa disminuye una vez que una aplicacion esta casi al final de su vida comercial y el desarrollo futuro cesa Con frecuencia los usuarios aprenden a solucionar work around cualquier resto de errores de software y el comportamiento del software se vuelve consistente cuando nada esta cambiando Ejemplo EditarMuchos programas seminales de los primeros dias de la investigacion de la AI han sufrido pudricion de software irreparable Por ejemplo el programa SHRDLU original un temprano programa de comprension del lenguaje natural no puede ser ejecutado en cualquier computador moderno de hoy o simulador de computadora ya que se desarrollo durante los dias cuando LISP y PLANNER todavia estaban en fase de desarrollo y por lo tanto usaba macros no estandar y bibliotecas de software que ya no existen Supongamos que un administrador crea un foro utilizando algun software de foro en linea Entonces el o ella lo modifica fuertemente anadiendo nuevas caracteristicas y opciones Este proceso requiere modificaciones extensas al codigo existente y la desviacion de la funcionalidad original de ese software A partir de aqui hay varias maneras de putrefaccion del software que puede afectar el sistema El administrador puede hacer accidentalmente cambios que tengan conflictos mutuamente o con el software original causando que el foro se comporte de una manera no esperada o se venga abajo Esto lo deja en muy mala posicion puesto que se ha desviado tanto del codigo original seran dificiles de obtener el soporte tecnico y la asistencia para resucitar el foro Puede descubrirse un agujero de seguridad en el codigo fuente original del foro que requiere una actualizacion de seguridad Sin embargo debido a que el administrador ha modificado el codigo tan extensivamente el parche puede no ser directamente aplicable a su codigo requiriendo que el administrador efectivamente reescriba la actualizacion El administrador que hizo las modificaciones podria abandonar su posicion dejando al nuevo administrador con un foro complicado y muy modificado que carece de documentacion completa Sin comprender plenamente las modificaciones es dificil para el nuevo administrador hacer cambios sin la introduccion de conflictos y errores Ademas la documentacion del sistema original podria no estar disponible podria haber sido abandonada o con el paso del tiempo se ha perdido Refactorizacion EditarArticulo principal Refactorizacion de codigo La refactorizacion es un medio de resolver el problema de la pudricion de software Se describe como el proceso de reescritura de codigo existente para mejorar su estructura sin afectar su comportamiento externo 2 Esto incluye la eliminacion de codigo muerto y la reescritura de secciones que han sido modificadas extensivamente y no trabajan eficientemente Debe tenerse cuidado de no cambiar el comportamiento externo del software ya que esto podria introducir incompatibilidades y por lo tanto contribuye en si mismo a la pudricion de software Referencias Editar Jonas Soderstrom Onceability The consequence of technology rot Fowler Martin 11 de octubre de 2007 What Is Refactoring Consultado el 22 de noviembre de 2007 Vease tambien EditarCrisis del software Entropia del software Hediondez del codigo Fragilidad del codigo Principio de Peter del software Datos Q2996135 Obtenido de https es wikipedia org w index php title Pudricion del software amp oldid 119045608, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos