Reingeniería y
métodos formales
© Universidad de Palermo | Prohibida la reproducción total o parcial de imágenes y textos.
Reingeniería
de software
© Universidad de Palermo | Prohibida la reproducción total o parcial de imágenes y textos.
Reingeniería de software
Evolución de los sistemas de software
Una vez desarrollado un sistema de software, inevitablemente suele sufrir modificaciones
para adaptarse a cambios en el entorno que le permita seguir siendo de utilidad para la
organización.
La evolución del software es un punto relevante para una organización, ya que muchas
veces su operatoria depende de esos sistemas, que requieren una inversión. Esto significa
que las organizaciones necesitan seguir invirtiendo para mantenerlos o evolucionarlos.
Uno de los problemas que se presentan es que si es sistema es de utilidad se le pedirá
que se adapte a ese entorno cambiante, pero esa adaptación implica que su estructura se
va degradando en forma paulatina.
© 3
Reingeniería de software
Mantenimiento
El mantenimiento refiere a cambiar algo en el sistema en forma posterior a haber sido
entregado al cliente. Los cambios pueden ser muy variados, e ir desde simples, como
corregir un error en un línea de código, hasta más complejos, como corregir errores
cometidos en el diseño o la incorporación de nuevos requerimientos.
Los costos de mantenimiento son altos porque es mucho más costoso incorporar una
nueva funcionalidad en este etapa con el sistema funcionando, que llevarlo a cabo durante
el desarrollo. Además, introducir cambios o nuevas funcionalidades a un sistema
inevitablemente introduce defectos en él.
© 4
Reingeniería de software
Reingeniería
La reingeniería debe entenderse como un proceso mediante el cual se busca la mejora de un
software existente.
Las sucesivas modificaciones hacen estragos en los programas que, originalmente, puede
que hayan sido pensados en optimizar los recursos utilizados. Para mejorar esa estructura y
la comprensión del sistema puede emplearse reingeniería.
Según Sommerville: “La reingeniería de software puede implicar redocumentar el sistema,
organizar y reestructurar el sistema, traducir el sistema a un lenguaje de programación más
moderno, y modificar y actualizar la estructura y valores de los datos del sistema”.
Generalmente, esto se realiza sin cambiar su funcionalidad ni arquitectura.
© 5
Reingeniería de software
¿Por qué hacer reingeniería?
La reingeniería presenta algunas ventajas ante la posibilidad de cambiar a un nuevo sistema
desarrollado en forma completa:
• Disminuir el riesgo que significa desarrollar un sistema desde cero, sobre todo en
sistemas críticos donde la empresa depende de ellos para mantenerse operativa.
Un retraso en la disponibilidad del nuevo sistemas puede causar daños severos.
• Menor costo: aunque la reingeniería tiene un costo, siempre será menor que el
requerido para desarrollar un sistema completamente nuevo.
© 6
Métodos formales
© Universidad de Palermo | Prohibida la reproducción total o parcial de imágenes y textos.
Métodos formales
Métodos formales
“Los métodos formales utilizados para desarrollar sistemas de
cómputo son técnicas con bases matemáticas para describir las
propiedades del sistema. Tales métodos formales proporcionan
marcos conceptuales dentro de los cuales las personas pueden
especificar, desarrollar y verificar los sistemas más que ad hoc”.
The Encyclopedia of Software Engineering
© 8
Métodos formales
Métodos formales
En algunas ingenierías, como la electrónica o la civil, el desarrollo emplea técnicas matemáticas. Sin embargo, la
ingeniería de software se ha revelado pese a que varios autores lo marcaron como el único camino para mejorar la
calidad, desde los 80.
Existen algunas razones para no haber incorporado las especificaciones formales en todos los desarrollos de software:
• En estos años, se han incorporado otras herramientas y técnicas que han logrado avances en la búsqueda de la
calidad, como nuevas metodologías de desarrollo, la incorporación de lenguajes orientados a objetos, la
administración de configuraciones, etc.
• En el mercado actual, un aspecto crítico es la interfaz con el usuario y los desarrollos rápidos, y las especificaciones
formales no son aptas para ninguna de las dos cosas.
• Los métodos formales no son escalables. Si bien son exitosos para aplicaciones críticas, se mantienen bajo control si
las mismas son pequeñas,. En cambio, si su tamaño aumenta, se descontrola su realización.
•
© 9
Métodos formales
Métodos formales
Hay dos aproximaciones pensadas para realizar la redacción de las especificaciones
para sistemas de software industriales:
• Algebraica: se basa en que el sistema se describirá empleando operaciones y sus
relaciones.
• Basada en modelos: se basa en la construcción de un modelo del sistema que
emplea construcciones matemáticas, como los conjuntos y las sucesiones, y las
operaciones del sistema se deben establecer indicando cómo se lleva a cabo la
modificación del estado del sistema.
© 10
Métodos formales
Métodos formales
Existen algunos lenguajes que pueden emplearse para llevar a cabo especificaciones
formales, de acuerdo a la aproximación que se aplique y al tipo de sistemas que se
requiera:
Aproximación algebraica:
. Sistema secuencial: Larch, OBJ.
. Sistema concurrente: Lotos, Brinksma.
Aproximación basándose en modelos:
. Sistema secuencial: Z, VDM, B.
. Sistema concurrente: CSP, redes de Petri.
© 11
Métodos formales
Métodos formales
Veamos cuáles son los puntos clave a tener en cuenta:
• Los métodos de especificación formal sirven de complemento para las especificaciones
informales por ser precisas y no ambiguas. Eliminan dudas y evitan problemas de
interpretación.
• Fuerza a llevar a cabo un análisis de los requerimientos del sistema en una etapa inicial,
donde es menos costoso corregir un error en los requerimientos.
• Los métodos de especificación formal son una excelente herramienta para sistemas
críticos donde se prioriza la seguridad y la confiabilidad.
© 12
Métodos formales
Métodos formales
¿Qué técnica usar?
• Las especificaciones formales basadas en técnicas algebraicas son útiles para especificar
las interfaces, definida como un conjunto de clases de objetos o tipos abstractos de datos,
porque se oculta el estado del sistema y se especifica en base a las relaciones entre las
operaciones de la interfaz.
• Las especificaciones formales basadas en modelos emplean construcciones matemáticas,
como los conjuntos y las funciones, por lo que pueden mostrar el estado del sistema y
sirven para simplificar la especificación del comportamiento. Estas especificaciones se
basan en definir las precondiciones y postcondiciones sobre el estado del sistema.
© 13
© Universidad de Palermo
Prohibida la reproducción total o parcial de imágenes y textos.