¿Cómo y por qué el software comienza a funcionar mal con el tiempo?

Si solo mira el software, le faltan varios componentes adicionales:

  1. Como señala Marcus Neal: los datos
  2. El almacenamiento del disco: los errores pueden colarse y corromper la imagen del disco de los datos o, más a menudo, los datos de configuración
  3. la cantidad de datos almacenados: se necesita más memoria y más procesamiento para ejecutarse en la mayor cantidad de datos
  4. El sistema operativo: los nuevos componentes del sistema operativo pueden hacer que el software actúe de manera inconsistente
  5. los datos de entrada (o detalles de los datos de entrada) en sí mismos que pueden cambiar con el tiempo (considere lo que sucede quizás cuando pasa de caracteres ASCII de teclado latino normales a caracteres UTF-8)

Entonces, aunque el programa original no ha cambiado, el comportamiento del programa en el ecosistema puede cambiar con el tiempo y volverse cada vez más problemático.

De manera similar, a lo largo de este tiempo, estos cambios pueden hacer que todo un sistema también sea inestable.

No es magia Todo se reduce al error humano. Los humanos están escribiendo, tomando muchos conjuntos de decisiones a menudo intuitivas que son propensas a errores. Incluso las decisiones de planificación conscientes eventualmente serán propensas a errores, y más aún si el proyecto experimenta un giro en el camino y partes, pero no todo necesita ser reescrito.

Podemos y establecemos estándares para tratar de evitar esto. Cosas como pruebas sólidas, idealmente diseñadas y ejecutadas por alguien que no está desarrollando el fragmento de código en cuestión (para que no solo reescriban su código para que se ajuste a las pruebas). Cosas como la iteración gradual, elegir buenos nombres de variables para disminuir la posibilidad de errores futuros, modularizar cosas, pero no en la medida en que la base de código se vuelva inflexible, etc.

Pero a pesar de todo esto, los errores y la entropía inevitablemente llegarán a los proyectos. Para eso tenemos correcciones de errores y refactorización periódica según sea necesario.

En cuanto a su pregunta de seguimiento de por qué nuestra tecnología se ralentiza y se congela más después de un período de tiempo (por lo que supongo que se refiere más al lado del sistema operativo), podría ser una serie de cosas. Los crecientes conjuntos de registros u otros archivos que no son esenciales para el software, sino que se acumulan y requieren más almacenamiento con el tiempo. Las pérdidas de memoria acaparan cada vez más memoria cuanto más tiempo se está ejecutando, y las posibilidades de instalar algún software que se ejecute en segundo plano esa memoria pierde, ese tipo de cosas. Cuanto más use algo, mayores serán las probabilidades de que algo suceda que pueda crecer. Incluso si nada lo hace, solo tener 100 pequeñas cosas ejecutando sus propios procesos en segundo plano se cortará en la memoria.

Teniendo en mente la siguiente declaración y escribiendo

“Una explicación en términos simples sería muy apreciada”

A medida que el cuerpo humano crece, se vuelve poco saludable debido a una dieta inadecuada, mal ambiente, estrés mental y algunos otros factores.

Debe reabastecerse de combustible y mantenerse para tener un estilo de vida apreciado.

Al igual que los sistemas operativos, las bibliotecas, los frameworks y los hardwares de soporte quedarán obsoletos a medida que pasen los días.

Entonces, el software se vuelve defectuoso con el tiempo, sin actualizaciones.

PD: Como todos los programadores saben bien, es muy imposible escribir software sin errores. Es por eso que se encuentra el término Revisión / Versión .

Además de la excelente respuesta de Marcas, también está el aspecto del usuario. Inicialmente, los usuarios no conocen muy bien un programa determinado, así que:

  • El usuario culpa a su propia falta de familiaridad por algunos de los problemas que encuentra.
  • La misma falta de familiaridad es la razón por la cual el usuario solo usa un subconjunto bastante pequeño de lo que el programa puede hacer y, por lo tanto, no se encuentra con los problemas ubicados en las partes más sofisticadas (y por lo tanto complicadas) del programa.

Se ha dicho (por Edsger W. Dijkstra, nada menos) que “Las pruebas muestran la presencia, no la ausencia de errores”. Es absolutamente imposible probar completamente cualquier programa, por lo que siempre habrá errores que acecharán, algunos de los cuales aparecerán una vez que el usuario conozca mejor el programa.

El software no se “convierte” en buggy. O tiene errores tal como están escritos o no. Es humanamente imposible no tener algunos errores en ningún programa considerable. Como los errores son descubiertos, los datos generados por el programa no son confiables y si el programa se basa en esos datos para crear otros datos, los errores se multiplicarán rápidamente. Como las computadoras hacen cosas a altas velocidades de iluminación, cualquier error se multiplica muy rápidamente. Como dice el refrán, errar es humano para realmente cosas necesita una computadora.

Porque la vida no es estática.

El software refleja situaciones. Lo que es cierto hoy no refleja lo que podría ser cierto en el futuro.

Debes haber experimentado situaciones similares en la vida cotidiana.

Puede ser cierto que de lunes a viernes era un “rango” válido de días de trabajo cuando trabajabas para McDonald’s, pero ahora trabajas para ti mismo trabajas 24/7, ¿verdad?

¡Aprende a vivir en el mundo REAL de situaciones siempre cambiantes e incluye trabajar para ti mismo!

¡Buena suerte!

More Interesting

¿Cuáles son las maravillas tecnológicas y de la cadena de suministro incorporadas en la producción de Tata Nano que lo hicieron tan económico?

Cómo hacer un depurador de aire utilizando lejía como agente de depuración de aire para la captura de CO2, materiales disponibles fuera de casa

¿Qué es el internet del mundo negro? ¿Qué tan grande es esta red?

¿Deberían Samsung y HTC adoptar Android 'puro' ahora que Jelly Bean está en el horizonte?

¿Cuándo reemplazará una nueva tecnología la dependencia mundial del petróleo crudo?

¿Cuáles son algunos de los dispositivos geniales disponibles en la India que la mayoría de las personas desconocen?

¿Cuáles son los dispositivos de Internet de las cosas que debería probar en 2017?

¿Qué está impidiendo que las principales compañías de tecnología como Samsung, Apple, etc. desarrollen una mejor duración de la batería para teléfonos, computadoras portátiles, tabletas, etc.?

¿Debo comprar el portátil HP 15-R032TX? ¿Por qué o por qué no?

¿Por qué India no alienta / invierte en instituciones educativas de comercio tanto como lo hace en ciencia y tecnología?

¿Crees que el progreso en los avances tecnológicos hará más bien que mal? O lo contrario?

¿Es posible hacer un dron platillo?

¿Qué es exactamente el servicio Aadhar Pay? ¿Cuáles son las tecnologías e infraestructura subyacentes utilizadas para esto?

¿En qué trabajan los investigadores cuantitativos de Jump Trading?

¿Pueden los dispositivos que son una fracción del tamaño de un móvil actual transmitir señales para la comunicación desde ese dispositivo a un teléfono móvil?