¿Cómo se mide la corrección del software?

Existen muchas medidas para el “buen software”, pero la “corrección” es, con mucho, la más importante de todas las medidas.

La corrección tiende a significar “libre de errores”, pero más específicamente, significa “libre de errores”. Esa es una tarea monumental para la mayoría del software, por lo que la corrección tiende a ser una medida que nunca alcanza el 100%.

Como se puede encontrar en muchos lugares, hay muchos tipos de errores. Algunos son catastróficos y eliminan todo el programa porque un programador decidió analizar el “texto aleatorio” como un entero, sin considerar cómo manejar la situación donde no es posible. Algunos son tan simples como una palabra mal escrita en la interfaz de usuario o un cálculo que produce un resultado incorrecto.

En última instancia, para mejorar la corrección, hay dos cosas que necesita: la ayuda del compilador y las pruebas.

Muchas veces, podemos usar la escritura para decirle al compilador que limite lo que los futuros programadores pueden hacer con los datos, teniendo en cuenta que el futuro programador puede ser usted dentro de 5 minutos. Dígale al compilador que su cadena de correo electrónico es VerifiedEmailString, no solo una cadena, y solo use la versión verificada. Eso evitará que las cadenas no verificadas entren en su código de correo electrónico.

En lugares donde no puede hacer esto: prueba de unidad, prueba de función, prueba de integración y prueba de usuario en bits.


Todo esto demostrará y mejorará la corrección de su código, pero solo en la medida en que lo haga. Los humanos todavía están escribiendo el software, y los humanos aún olvidarán casos especiales. Esa experiencia es lo que diferencia a los buenos ingenieros de software de los script kiddies.


Por lo tanto, la medida de la corrección del software generalmente se encuentra en la cobertura del código.

El software es correcto si siempre produce el resultado correcto, cuando recibe entradas válidas. La corrección es una variable continua. Una determinada pieza de software puede ser más o menos correcta. Es posible que no reconozca una entrada válida en particular. Puede bloquearse, bloquearse o producir un resultado incorrecto para una entrada válida.

La unidad de medida de la corrección es la densidad de defectos, el número de defectos por línea de código. En un software dado, la densidad del defecto debería acercarse a cero con el tiempo. Es posible estimar la densidad de defectos de errores no descubiertos en un software mediante el seguimiento de la cantidad de errores a lo largo del tiempo.

La corrección es la primera unidad de “bondad” que los desarrolladores aprenden. Es lo que les saca buenas calificaciones en sus proyectos de tarea de CS. La corrección no es la única medida de la calidad del software. La corrección solo mide el comportamiento del programa en el “camino feliz” de la ejecución normal. Un programa puede ser muy correcto, pero puede ser “frágil” porque se bloquea o se cuelga cuando ocurre un evento inesperado en la computadora, la red o el sistema operativo que admite el programa. Existen medidas de “robustez”, como MTBF (tiempo medio entre fallas) y MTTR (tiempo medio de reparación). Un programa robusto pero menos correcto puede ser aún más agradable para sus usuarios que un programa correcto pero quebradizo.