Page 1 - Programación Defensiva
P. 1
Laboratorio de Ciberseguridad
Programación Defensiva: maximizando la calidad del
software
Lic. Federico Montero - federicomont7@gmail.com
Lic. Franco Fernández - francofernandez0211@gmail.com
Lic. Rodrigo Perera – rodrigoperera9@gmail.com
La programación defensiva se basa en el después de ejecutarse correctamente. Se
concepto de conducción defensiva, donde se recomienda desactivar las aserciones en la
asume que nunca se puede estar seguro de lo versión final del programa para optimizar el
que otros conductores van a hacer. La idea es rendimiento, asegurando así que el código se
garantizar que, ante cualquier acción ejecute de manera más eficiente en
peligrosa, no se sufrirá ningún daño, producción sin el costo adicional de validar
asumiendo la responsabilidad de protegerse a aserciones ya verificadas durante el
uno mismo incluso cuando la culpa recaiga en desarrollo.
el otro conductor.
De manera similar, el programador asume Validación de entradas: Es esencial para
que puede haber fallas o inconsistencias en el garantizar la integridad de los datos y evitar
código no detectadas, por lo que sigue errores. Las cláusulas de protección mejoran
normas rigurosas de codificación y desarrollo. la legibilidad del código al separar la lógica
El objetivo es obtener un código fuente fácil principal de las comprobaciones de validez.
de entender, mantenible y confiable,
especialmente en aplicaciones críticas como Manejo de excepciones: Es crucial para
las mencionadas en los estándares de gestionar errores durante la ejecución del
codificación para misiones espaciales de la programa. Es importante utilizar excepciones
NASA. En estos contextos, es esencial que el solo en situaciones excepcionales y no como
código funcione de manera impecable, sin parte del flujo normal del programa.
presentar fallos.
Principios para desarrolladores
Los siguientes principios contribuyen a una
Técnicas de la programación defensiva
Al aplicar técnicas de programación codificación que busca la excelencia.
defensiva, los programadores fortalecen la Identificar y evitar obstáculos comunes, es
calidad del código y mejoran la solidez y fundamental para mantener la calidad y
seguridad de los sistemas. mantenibilidad del código.
Diseño por Contratos: Esta metodología
Aserciones: Son cláusulas lógicas utilizadas
para la especificación y verificación del asegura que el programa funcione como se
código durante el desarrollo. Ayudan a espera al establecer relaciones entre una clase
proveedora y una clase cliente, produciendo
documentar, depurar y probar el código. Las
precondiciones garantizan la corrección del un error cada vez que el programa no cumple
código al especificar las condiciones que con un contrato.
deben cumplirse para que el programa pueda Enfoque Pragmático: Este enfoque implica
realizar su tarea correctamente, mientras que abordar los problemas de inmediato en lugar
las pos condiciones definen los resultados de ignorarlos, lo que puede conducir a
esperados que una función debe cumplir
consecuencias más graves en el futuro. Esto