Ingeniería inversa aplicada a software numérico: modelos climáticos - Tinetti, Fernando Gustavo (2009)
Los objetivos perseguidos fueron: recuperar el diseño del software que implementa al modelo; redocumentar las subrutinas incluidas en los niveles superiores del árbol de invocaciones y especificar los aspectos metodológicos que puedan ser utilizados para efectuar ingeniería inversa de otros modelos de simulación basados en el lenguaje Fortran. Se emplearon las técnicas de ingeniería inversa que se aplican para el análisis de software científico. Los principales resultados obtenidos fueron: a) Un conjunto de reglas para depuración de código quitando comentarios innecesarios y código anulado; b) La definición y aplicación de métricas para evaluar el volumen y la eficiencia de la depuración efectuada; c) La redocumentación del sistema mediante la generación de árboles de invocaciones partiendo de distintas subrutinas del sistema; d) La recopilación de información sobre el intercambio de datos entre subrutinas (uso de bloques common y pasaje de parámetros). El modelo de referencia es en realidad el acoplamiento de un modelo atmosférico y un modelo oceánico. Estructuralmente el modelo acoplado es el encargado de invocar a rutinas de ambos modelos: atmosférico y oceánico, todo programado en Fortran 77. Se trata de un software heredado (legacy code) del que se contó con muy poca documentación sobre su diseño. Esta situación es bastante usual en el campo de los modelos numéricos, habitualmente implementados en programas de varios miles de líneas de código. Esto por supuesto dificulta las tareas de mantenimiento y cambios de funcionalidades, por lo que es muy conveniente la aplicación de ingeniería inversa para recuperar información del diseño del software.