Reutilización
El reuso es una de las técnicas de resolución de problemas que más utilizamos los humanos. De hecho es lo primero que verifica nuestro cerebro.
El reuso en software nos ayuda a mejorar la producción y calidad del software al no reiventar la rueda.
Reuso
El reuso nos permite afrontar los grandes proyectos de software sin mayores complicaciones. Desafortunadamente no todo se puede reutilizar.
La reutilizacion es la propiedad de utilizar conocimiento, procesos, metodologías o componentes de software ya existente para adaptarlo a una nueva necesidad, incrementando significativamente la calidad y productividad del desarrollo.
Reutilización
La reutilización puede ser composicional y generativa.
Es composicional cuando se orienta al reuso del producto. Puede ser de caja blanca (si nos interesa modificar el comportamiento), caja negra (cuando no se puede modificar el comportamiento) y adaptativo cuando es una mezcla de ambos.
Reutilización
La reutilización por generación se da cuando se utilizan esfuerzos previos del desarrollo de software.
Para que un objeto pueda ser reusable se necesita de un alto nivel de abstracción. Entre mayor es su nivel de abstracción, mayor es su nivel de reuso.
Reuso
Tipos de reuso:
Código reciclado: utilizar parte del código definido en otros proyectos.
Componentes de código: consiste en utilizar módulos, clases, APIs, etc.
Reuso
Frameworks: Solución integrada para la resolución de problemas en un contexto particular. Se pueden utilizar patrones de diseño. Un ejemplo de Framework es .NET
Las etapas del proceso de reuso son:
Adquisición del requerimiento.
Reuso
Búsqueda y Recuperación
Recuperación por Palabras Claves
Recuperación Basada en la Estructura
Recuperación Enumerada
Identificación
Adecuación
Reingeniería del Software
Sucede que si una aplicación necesita ser modificada constantemente y no tiene una metodología de seguimiento del desarrollo del proyecto, la modificación del software se vuelve sumamente complicada.
El mantenimiento de software en algunos casos puede llegar a ser del 60% del total de costos del proyecto.
Reingeniería del Software
Aún cuando un software se haya desarrollado con la mejor metodología de software tendrá que ser modificado en un futuro por algún motivo, debido a que lo único constante es el cambio.
Los tipos de mantenimiento de Software son: correctivo, adaptativo, mejoras o mantenimiento de perfeccionamiento, mantenimiento preventivo o reingeniería.
Reingeniería del Software
El 80% del tiempo del desarrollo del software se ocupa en la adaptación del software a su ambiente externo.
La reingeniería de software es costosa y consumidora de tiempo.
La reingeniería es una actividad de reconstrucción, preferible de realizar antes de que se derrumbe la obra.
Reingeniería de Software
Antes de derribar una casa, quizás se necesita corroborar que está mal.
La reingeniería es un proceso que altera los elementos internos de toda obra, no es una sola remodelación de la fallada.
Generalmente se siguen los siguientes pasos para aplicar reingeniería:
Reingeniería de Software
Análisis de Inventario
Reestructuración de Documentos
INGENIERÍA INVERSA
Reestructuración de Códigos
Reestructuración de Datos
Ingeniería directa
Ingeniería Inversa
Se aplica para obtener un modelo detallado de análisis, ingeniería de requerimientos, diseño y en algunos casos implementación teniendo una solución es una actividad consumidora de tiempo.
Tanto la Ingeniería Inversa como la Reingeniería en la mayoría de las licencias de Software se encuentran penadas por la ley.
Actividad
Realizar el proceso de Ingeniería inversa de los siguientes modelos de avión.
Se debe obtener como resultado un prototipo idéntico al dado así como su manual de diseño.