¿Cuáles son los niveles de corrección en el diseño del programa?

A diferencia de la otra respuesta, no creo que se trate de basura abstracta. Básicamente, solo hay tres “niveles” de corrección de los que puede hablar: comprobado correcto, comprobado incorrecto y no comprobado. “Probado” significa que se muestra correcto a través del orgullo lógico (generalmente a través de la inducción en CS), todo lo demás es solo trabajo duro y esperanza.

Ahora, por qué esto es importante. No puede probar manualmente cada combinación de entrada a su programa, por lo que nunca puede estar 100% seguro de la corrección sin una prueba. Las pruebas automatizadas pueden ayudar con esto (incluidos los programas de verificación de corrección aún inmaduros), pero el punto es estar al tanto del peligro y codificar a la defensiva cuando sea necesario, y usar todo el poder de su lenguaje y herramientas (enchufe para escribir estática y programación especialmente funcional idiomas aquí).

Por otro lado, puede ser extremadamente difícil (y lento) probar todo su código, y rara vez se hace para la mayoría de las aplicaciones prácticas. Creo que si más “programadores” desarrollaran habilidades de métodos formales más fuertes, podríamos hacerlo mucho mejor de lo que lo hacemos actualmente.

Seré honesto aquí: ¡ni siquiera sé qué significa tu pregunta! Es muy abstracto y creo que si te alejas tanto de la codificación y entras en toda esta basura abstracta, probablemente no deberías codificar. Si está buscando codificar y crear un programa usted mismo, entonces mi consejo es renunciar a todo este BS y concentrarse en las cosas que importan cuando se trata de codificación.