lunes, 26 de septiembre de 2016

Reingeniería de Software




REINGENIERRIA DE SOFTWARE


 La Re-ingeniería del software se puede definir como: “modificación de un producto software, o de ciertos componentes, usando para el análisis del sistema, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, re-utilización, comprensión o evaluación.” a

Esta consiste en 6 pasos:







Análisis de inventarios: Las organizaciones de software deberían tener un inventario de todas sus aplicaciones. El inventario tal vez no sea más que un modelo en una hoja de cálculo que contenga información que proporcione una descripción detallada.

Re-estructuración de documentos: La documentación débil es la marca de muchos sistemas heredados.

1. Crear documentación consume mucho tiempo. Si el sistema funciona, vivirá con lo que se tenga. En algunos casos éste es el enfoque correcto. No es posible recrear documentación para cientos de programas de computadora.

2.- La documentación debe actualizarse, pero se tienen recursos limitados. Se utilizará un enfoque de "documentar cuando se toque". Se documentan completamente aquellas porciones del sistema que en la actualidad presentan cambios.

3.- El sistema es crucial para el negocio y debe volverse a documentarse por completo. Incluso en este caso un enfoque inteligente es recortar la documentación a un mínimo esencial.

Ingenieria Inversa. El termino ingeniería inversa tiene sus orígenes en el mundo del hardware. Una compañia desensambla un producto de hardware de un competidor con la finalidad de comprender sus "secretos" de diseño y fabricación. La ingenieria inversa del software es el proceso de analizar un programa con la finalidad de crear una representación del programa en un mayor grado de abstracción que el código fuente.


Re-estructuración de código. El tipo más común de reingeniería es la reestructuración de código. Llevar a cabo esta actividad requiere analizar el código fuente empleando una herramienta de reestructuración, Se indican las violaciones de las estructuras de programación estructurada y entonces el código se reestructura. El código resultante se revisa y prueba para garantizar que no se han introducido anormalidades.


Re-estructuración de datos. Un programa con arquitectura de datos débil será dificil de adaptar y mejorar. La re-estructuración de datos comienza con una actividad de ingeniería inversa. La arquitectura de datos actual se analiza con minusciosidad y se definen los modelos de datos necesarios.


Ingeniería Directa. El programa antiguo sería insertado en el motor, analizando, reestructurado, y luego regenerado en una forma que exhibiese los mejores aspectos de la calidad del software. A corto plazo es improbable que tal "motor" aparezca, pero las empresas han introducido herramientas que mejoran un limitado subconjunto de dichas capacidades que aborden dominios de aplicación específico.
















lunes, 19 de septiembre de 2016

Ejemplos de Evolución de Software


PREVENTIVO:

Cuando instalas un antivirus es para prevenir que tu equipo se infecte.



ADAPTATIVO:

Cuando un juego de consola de generación anterior, es lanzado con nuevos gráficos para consola de nueva generación.


CORRECTIVO:

Cuando salió la primera version de iOS, la pantalla no se apagaba cuando realizabas una llamada, lo que ocasionaba que se oprimieran teclas al hablar por telefono, en la siguiente versión se arreglo este problema, haciendo que la pantalla se apagara cuando estuviera cerca de oreja.


PERFECTIVO:

En la verisión de Android Nougat se lanzo el sistema Daydream, para mejorar el rendimiento de la bateria.

Reingeniería de Software

La reingeniería debe ser entendida como un proceso mediante el cual se mejora un software existente haciendo uso de técnicas de ingeniería inversa y
reestructuración de código.  

Resultado de imagen para reingenieria de software