Ahora mi pregunta es, ¿un programa de computadora de repente saldrá mal sin ninguna razón lógica?
Si tiene exactamente el mismo entorno informático, la entrada X de un programa siempre producirá el mismo resultado R. En la práctica, rara vez se ejecuta un solo programa de forma aislada. La aplicación más simple de hoy se ejecuta en un sistema operativo y comparte memoria con otros programas que pueden 'cargarse' en la memoria al mismo tiempo. Estos programas pueden alterar la memoria de una manera que hace que un determinado programa no funcione correctamente. Este es un problema famoso con variables de tipo 'puntero' por ejemplo. Por lo general, tales errores causan comportamientos anormales del sistema y no resultados de cálculo incorrectos.
En su caso, supongo que el problema puede ser (y generalmente no es) lo que he descrito anteriormente. El problema puede ser que:
- el programa usó los tipos de datos incorrectos para calcular el resultado, ese error solo se manifiesta cuando se usan valores especiales.
- el programa encontró un error en el cálculo (debido a una condición lógica) pero no manejó el error y aún así produjo el resultado. (por ejemplo, mezcla de flotante y aritmética de enteros)
- una regla de negocio o una condición lógica no se codificó correctamente, los datos ingresados representan esta condición pero se utilizó el cálculo incorrecto. (por ejemplo, reste el monto del monto de la cuenta antes de verificar primero el monto en la cuenta).
- usando fórmulas que se aplican solo a cierto rango de números pero los datos contienen un rango diferente. (por ejemplo, calcular una tasa de interés basada en un rango de valores)
Debido a lo anterior y a muchas otras razones por las cuales las personas de software gastan tantos recursos en un intento de crear el software correcto, sin embargo, los errores de software aún ocurren, pero los errores son 'lógicos' y tienen una razón, es solo que la razón no es obvia para algunos sin una buena investigación. Por lo tanto, en general, el software probado es predecible y no produce resultados aleatorios. Debido a la complejidad de algunos programas y otros factores, incluso los programas probados pueden salir mal, pero cuando eso sucede, los errores son por una razón lógica.
Si golpeo la máquina del servidor, ¿uno de los números que calcula la computadora se convertirá en otro número y hará un cálculo incorrecto?
La respuesta es no en general, el software no es frágil en ese sentido.
Lo que puede hacer es aislar los casos en que se produce el error, encontrar la similitud entre estos conjuntos de datos que causan el error y encontrar la diferencia entre estos conjuntos y los otros conjuntos que producen el resultado correcto. Es posible que pueda identificar el conjunto específico de valores que causan el problema. Por ejemplo, puede encontrar que cada vez que una variable tiene un valor negativo, el resultado es incorrecto.
Información actualizada sobre errores de daños en la memoria: consulte Daños en la memoria