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.