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
   1   2