¿Dónde crees que podría ser el hogar de los errores de software? Correcto, en software. Pero ¿dónde exactamente?
¿por Qué sucede que los programas no funcionan correctamente? Es muy simple: son creados y utilizados por personas. Si el usuario comete un error, esto puede conducir a un problema en el funcionamiento del programa: se usa incorrectamente, lo que significa que puede no comportarse como se esperaba.
Error Humano
Un error – es una acción humana que produce un resultado incorrecto.
Sin embargo, el software está diseñado y creado por personas que también pueden (y cometen) errores. Esto significa que hay defectos en el propio software. Se llaman defectos o errores (ambas designaciones son equivalentes). Recuerde: el software es más que solo código.
Defectos o errores de software
Defecto, Error: deficiencia de un componente o sistema que puede provocar el fallo de cierta funcionalidad. Un defecto descubierto durante la ejecución del programa puede causar un fallo de un componente individual o de todo el sistema.
Durante la ejecución del código del programa, pueden aparecer defectos que se incrustaron incluso durante su escritura: el programa puede no hacer lo que debería, o viceversa: hacer lo que no debería y se produce un bloqueo.
Fallo o bloqueo del software
Fallo o bloqueo es una discrepancia entre el resultado real de la operación de un componente o sistema y el resultado esperado.
El fallo del programa puede ser un indicador de la presencia de un defecto en él.
Por lo tanto, el error existe cuando se cumplen tres condiciones simultáneamente:
- se conoce el resultado esperado;
- se conoce el resultado real;
- el resultado real difiere del resultado esperado.
Es importante entender que no todos los errores causan bloqueos, algunos de ellos pueden no manifestarse de ninguna manera y permanecer desapercibidos (o aparecer solo en circunstancias muy específicas).
Las fallas pueden ser causadas no solo por defectos, sino también por condiciones ambientales: por ejemplo, la radiación, los campos electromagnéticos o la contaminación también pueden afectar el funcionamiento del software y el hardware.
En total, hay varias fuentes de defectos y, en consecuencia, fallas:
- errores en la especificación, diseño o implementación del sistema de software;
- errores de uso del sistema;
- condiciones ambientales adversas;
- daño deliberado;
- las posibles consecuencias de errores, condiciones o acciones intencionales anteriores.
Los defectos pueden ocurrir en diferentes niveles, y la calidad del sistema dependerá directamente de si se corrigen y cuándo.Calidad
: el grado en que el conjunto de características inherentes cumple con los requisitos.
La calidad del software es una colección de características del software que reflejan su capacidad para satisfacer necesidades declaradas e implícitas. Requisito es una necesidad o expectativa establecida. Generalmente se asume o se requiere.
En el primer caso, todo se hizo correctamente y recibimos un producto que cumple plenamente con las expectativas del cliente y cumple con los criterios de calidad.
En el segundo caso, ya se cometieron errores durante la codificación, lo que llevó a la aparición de defectos en el producto terminado. Pero en este nivel, los errores son bastante fáciles de detectar y corregir, ya que vemos incumplimiento.
La tercera opción es peor, aquí se cometieron errores en la etapa de diseño del sistema. Esto solo se puede notar realizando una verificación exhaustiva con la especificación. La corrección de estos defectos tampoco es fácil, es necesario rediseñar el diseño del producto.
En el cuarto caso, los defectos se establecieron en la etapa de formación de requisitos; todo el desarrollo posterior e incluso las pruebas fueron por el camino inicialmente equivocado. Durante las pruebas, no encontraremos errores: el programa pasará todas las pruebas, pero puede ser rechazado por el cliente. Aprenderá más sobre esto en nuestras clases y certificación de control de calidad en línea.
Convencionalmente, hay cinco razones para la aparición de defectos en el código del programa.
- Falta de comunicación del equipo. A menudo, los requisitos de negocio simplemente no llegan al equipo de desarrollo. El cliente tiene una comprensión de cómo quiere ver el producto terminado, pero si su idea no se explica adecuadamente a los desarrolladores y probadores, el resultado puede no ser el esperado. Los requisitos deben estar disponibles y ser comprensibles para todos los participantes en el proceso de desarrollo de software.
- Complejidad del software. El software moderno consta de muchos componentes que se combinan en sistemas de software complejos. Aplicaciones multihilo, arquitectura cliente-servidor y distribuida, bases de datos de varios niveles: los programas son cada vez más difíciles de escribir y mantener, y cuanto más difícil se vuelve el trabajo de los programadores. Y cuanto más difícil es el trabajo, más errores puede cometer la persona que lo realiza.
- Cambios en los requisitos. Incluso los cambios menores en los requisitos tardíos en el desarrollo requieren mucho trabajo para realizar cambios en el sistema. El diseño y la arquitectura de la aplicación están cambiando, lo que, a su vez, requiere cambios en el código fuente y los principios de interacción de los módulos de software. Estos cambios continuos son a menudo la fuente de defectos sutiles. Sin embargo, los requisitos que cambian con frecuencia en los negocios modernos son más la regla que la excepción, por lo que las pruebas continuas y el control de riesgos en tales condiciones son responsabilidad directa del departamento de garantía de calidad.
- Código mal documentado. Es difícil mantener y modificar código mal escrito y mal documentado. Muchas compañías tienen reglas especiales para escribir y documentar código por programadores. Aunque en la práctica a menudo sucede que los desarrolladores se ven obligados a escribir programas rápidamente en primer lugar, y esto afecta la calidad del producto.
- Herramientas de desarrollo de software. Los renderizadores, bibliotecas, compiladores, generadores de scripts y otras ayudas de desarrollo también suelen ser programas de mal rendimiento y mal documentados que pueden convertirse en una fuente de defectos en el producto terminado.