Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

57
Ingeniería en Sistemas Computacionales Fundamentos de Ingeniería de Software Unidad II: Metodologías de Desarrollo Este material está desarrollado para la asignatura Ingeniería de Software, de la carrera de Ingeniería en Sistemas Computacionales, plan de estudios ISIC-2010-224 INGENIERÍA DE SOFTWARE

Transcript of Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Page 1: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ingeniería en Sistemas Computacionales

Fundamentos de Ingeniería de Software

Unidad II: Metodologías de Desarrollo

Este material está desarrollado para la asignatura Ingeniería de Software, de la carrera de Ingeniería en Sistemas Computacionales, plan de estudios ISIC-2010-224

INGENIERÍA DE SOFTWARE

Page 2: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Competencia: Identifica y aplica la metodología adecuada para el desarrollo de diferentes productos de software.

INGENIERÍA DE SOFTWARE

Page 3: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Bibliografía Recomendada

Pressman, R.S. Ingeniería del Software un Enfoque Práctico. McGraw-Hill. Madrid, España. 2008.

Kendall E. K., Análisis y Diseño de sistemas. 1ª. Edición. Prentice Hall. México. 2005.

INGENIERÍA DE SOFTWARE

Page 4: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

INTRODUCCIÓN

¿Qué significa la metodología de desarrollo?

• Se trata de seguir ciertas pautas predefinidas para lograr terminar un software de calidad; es decir, llevar un comportamiento metódico.

INGENIERÍA DE SOFTWARE

Page 5: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

¿Qué cosas dicen niños?... Yo solo programo, ese es mi único paso.

¡¡Ese sistema esta bien padre!! ¿Qué pasos siguió para hacerlo?

¿Cuántos de los programadores modernos, antes de comenzar a escribir código de un sistema, se dedican a diseñar antes el mismo? ¿A realizar la documentación de los requerimientos? ¿A pensar en los diagramas UML? ¿Cuántos?

INGENIERÍA DE SOFTWARE

Page 6: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

METODOLOGÍAS CLÁSICAS

Hay una serie de metodologías considerados como tradicionales o clásicas. Algunos lo consideran un tanto burocráticas, y con mucha ambiguedad; y no es para más. Estas metodologías "Clásicas" fueron creados por los años 70’s-80’s pensando en los negocios de los 50’s.

No hay de otra que reconocer que la mayor parte de estas metodologías ya no funcionan para proyectos muy innovadores.

Desarrollo en Cascada

Desarrollo Incremental

Desarrollo Evolutivo

Desarrollo en Espiral

Basado en Prototipos

Basado en componentes

INGENIERÍA DE SOFTWARE

Page 7: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Las metodologías surgidas en los años 90 a la actualidad son las que responden a las necesidades modernas. Varios especialistas llaman a estas metodologías «ágiles»… entonces, ¿Cómo saber que metodología usar y quien lo debe elegir?

La mayoría de las veces, el trabajo es en equipo, siendo así, se tiene que hacer un estudio de las metodologías sin dejar fuera a las clásicas (por muy engorroso que sea). De esta forma se deben tener las siguientes consideraciones:

INGENIERÍA DE SOFTWARE

Page 8: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

- Si eres el que tiene el puesto con mayor responsabilidad, decide ya.

- Si no tienes un puesto de alta responsabilidad, y el que sí lo tiene no toma una metodología, el proyecto está destinado al fracaso.

- Cuando se forma parte de un pequeño equipo de trabajo, lo mejor es conversar sobre cuál será la metodología correcta a aplicar, incluso puede llegar el momento en que se tomen ideas de diferentes metodologías.

INGENIERÍA DE SOFTWARE

Page 9: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desarrollo en CascadaEnfoque metodológico que ordena rigurosamente el proceso de desarrollo de software. De manera general la metodología sería la siguiente:

Ingeniería de Requisitos

Análisis

Diseño

Implementación

Pruebas y Mantenimiento

Requerimientos del sistema

Requerimientos del Software

Diseño Preliminar y detallado

Codificación y depuración

Test y pruebas previas a la implantación

INGENIERÍA DE SOFTWARE

Page 10: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ventajas:

o Es un modelo sencillo y disciplinado.o Es fácil aprender a utilizarlo y comprender su

funcionamiento.o Ha sido muy usado y, por tanto, está ampliamente

contrastado.

INGENIERÍA DE SOFTWARE

Page 11: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desventajas:

o Los proyectos raramente siguen el proceso lineal tal como se definía originalmente el ciclo de vida.

o Es difícil que el cliente exponga explícitamente todos los requisitos al principio.

o Puede resultar complicado regresar a etapas anteriores (ya acabadas) para realizar correcciones.

o El producto final obtenido puede que no refleje todos los requisitos del usuario.

INGENIERÍA DE SOFTWARE

Page 12: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desarrollo IncrementalPor supuesto, en esta metodología también se emplea el ciclo de vida del software.

Requerimientos Análisis Diseño Implemen

tación Pruebas

Requerimientos Análisis Diseño Implemen

tación Pruebas

Requerimientos Análisis Diseño Implemen

tación Pruebas

Incremento 1

Incremento 2

Incremento 3

Entrega del Incremento 1

Entrega del Incremento 2

Entrega del Incremento 3

Tiempo en el calendario

INGENIERÍA DE SOFTWARE

Page 13: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ventajas:

o Impacto ventajoso frente al cliente, que es la entrega temprana de partes operativas del Software.

o El usuario de involucra más.o Permite entregar al cliente un producto más rápido

en comparación del modelo de cascada.o Resulta más sencillo acomodar cambios al acotar el

tamaño de los incrementos.

INGENIERÍA DE SOFTWARE

Page 14: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desventajas:

o Los errores en los requisitos se detectan tarde.o Difícil de evaluar el costo total.o No es recomendable para casos de sistemas de

tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.

o Requiere de mucha planeación, tanto administrativa como técnica.

INGENIERÍA DE SOFTWARE

Page 15: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desarrollo EvolutivoEl desarrollo evolutivo busca reemplazar el viejo sistema con uno nuevo que tendría la propiedad de satisfacer los nuevos requerimientos lo más rápido posible. El desarrollo evolutivo asume que los requerimientos están sujetos a cambios continuos y que la estrategia para enfrentar aquello pasa por un reflejo, también continuo de aquellos cambios.

Existen dos tipos de desarrollo evolutivo:o Desarrollo Exploratorio.o Prototipos Desechables.

INGENIERÍA DE SOFTWARE

Page 16: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Especificación Inicial

Desarrollo del Producto

Re-especificación

Versiones del Software

Definición del problema y especificación inicial en base a los requerimientos definidos.

Definición del software en base a un proceso con énfasis en la rapidez de la liberación.

Implantación y uso del software en ambiente de explotación, monitoreo de los nuevos requerimientos

Redefinición del problema en base a los nuevos requerimientos.

Implementación, uso y evaluación

INGENIERÍA DE SOFTWARE

Page 17: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desarrollo en Espiral

Los principios básicos son:

La atención se centra en la evaluación y reducción del riesgo del proyecto dividiendo el proyecto en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo, así como ofrecer la oportunidad de evaluar los riesgos y con un peso de la consideración de la continuación del proyecto durante todo el ciclo de vida.

INGENIERÍA DE SOFTWARE

Page 18: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: 1. Determinar objetivos, alternativas, y desencadenantes de la iteración; 2. Evaluar alternativas; Identificar y resolver los riesgos; 3. Desarrollar y verificar los resultados de la iteración, y 4. Plan de la próxima iteración.

Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia, y termina con la revisión y examinación.

INGENIERÍA DE SOFTWARE

Page 19: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

En términos generales, el modelo en espiral se representa como sigue:

ObjetivosAnálisis de Riesgos

Desarrollar y Probar Planificación

INGENIERÍA DE SOFTWARE

Page 20: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Entendiendo que el desarrollo en espiral es un modelo del ciclo de vida del software, la figura anterior se vería así:

INGENIERÍA DE SOFTWARE

Page 21: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ventajas:

o Reduce riesgos del proyectoo Incorpora objetivos de calidado Integra el desarrollo con el mantenimiento

INGENIERÍA DE SOFTWARE

Page 22: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desventajas:

o Genera mucho tiempo en el desarrollo del sistemao Modelo costosoo Requiere experiencia en la identificación de riesgos

INGENIERÍA DE SOFTWARE

Page 23: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Inconvenientes:

Planificar un proyecto con esta metodología es a menudo imposible, debido a la incertidumbre en el número de iteraciones que serán necesarias. En este contexto la evaluación de riesgos es de la mayor importancia y, para grandes proyectos, dicha evaluación requiere la intervención de profesionales de gran experiencia.

INGENIERÍA DE SOFTWARE

Page 24: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Pertenece a los modelos de desarrollo evolutivo. Pone énfasis en la etapa de especificación de requerimientos a través de la construcción de prototipos que aproximan al usuario a la idea final del sistema.En palabras más sencillas: "Es un conjunto estandarizado de actividades dedicada al desarrollo de versiones incompletas a desarrollar".En la parte derecha de la diapositiva se listan las etapas.

Plan Rápido

Diseño Rápido

Construcción del prototipo

Desarrollo, entrega y retroalimentación

Comunicación

INGENIERÍA DE SOFTWARE

Page 25: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Esquema de la Metodología de Prototipos

Usuario Define su Requerimiento

Construye Prototipo

Sirve

Construcción, Implementación

No

SíAnalista

Desarrollo de PrototiposINGENIERÍA DE SOFTWARE

Page 26: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ventajas:

o Este modelo es útil cuando el cliente conoce los objetivos generales para el software.

o Ofrece un mejor enfoque cuando el responsable del desarrollo del software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debería tomar la interacción humano-máquina.

INGENIERÍA DE SOFTWARE

Page 27: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desventajas:

o El usuario tiende a crearse unas expectativas cuando ve el prototipo de cara al sistema final. A causa de la intención de crear un prototipo de forma rápida, se suelen desatender aspectos importantes, tales como la calidad y el mantenimiento a largo plazo, lo que obliga en la mayor parte de los casos a reconstruirlo una vez que el prototipo ha cumplido su función.

INGENIERÍA DE SOFTWARE

Page 28: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desarrollo Basado en Componenteso La complejidad de los sistemas computacionales actuales nos ha

llevado a buscar la reutilización del software existente.

o En esencia, un componente es una pieza de código pre elaborado que encapsula alguna funcionalidad expuesta a través de interfaces estándar.

o El paradigma de ensamblar componentes y escribir código para hacer que estos componentes funcionen se conoce como Desarrollo de Software Basado en Componentes.

INGENIERÍA DE SOFTWARE

Page 29: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

El uso de este paradigma posee algunas ventajas:Reutilización del software. Simplifica las pruebas. Simplifica el mantenimiento del sistema. Mayor calidad.

De la misma manera, el optar por comprar componentes de terceros en lugar de desarrollarlos, posee algunas ventajas:Ciclos de desarrollo más cortos. Mejor ROI. Funcionalidad mejorada.

INGENIERÍA DE SOFTWARE

Page 30: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

OTRAS METODOLOGÍAS

A partir de los años noventa surgieron nuevas metodologías, algunos las llaman «Metodologías Modernas».

A decir verdad, las ideas que se expondrán resultan ser las más aceptadas y valoradas por los programadores modernos; tal vez sea por la combinación de las ideas tradicionales con las actuales.

INGENIERÍA DE SOFTWARE

Page 31: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ganar-Ganar (Win & Win)Este Modelo sugiere la comunicación con el cliente para fijar los requisitos, en que simplemente se pregunta al cliente qué necesita y él proporciona la información para continuar; pero esto es en un contexto ideal que rara vez ocurre. Normalmente cliente y desarrollador entran en una negociación, se negocia coste frente a funcionalidad, rendimiento, calidad, etc.

«Es así que la obtención de requisitos requiere una negociación, que tiene éxito cuando ambas partes ganan».

INGENIERÍA DE SOFTWARE

Page 32: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Proceso UnificadoEl Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental.

Inicio Elaboración

TransiciónConstrucción

Producción

FUNDAMENTOS DE INGENIERÍA DE SOFTWARE

Page 33: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ingeniería Web

La ingeniería de la Web no es un clon o subconjunto de la ingeniería de software aunque ambas incluyen desarrollo de software y programación, pues a pesar de que la ingeniería de la Web utiliza principios de ingeniería de software, incluye nuevos enfoques, metodologías, herramientas, técnicas, guías y patrones para cubrir los requisitos únicos de las aplicaciones web.

¿Qué es la ingeniería web? Es el proceso utilizado para crear, implantar y mantener aplicaciones y sistemas web de alta calidad.

INGENIERÍA DE SOFTWARE

Page 34: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

De manera general, las etapas con las que cuenta la Ingeniería de Software son las siguientes: Formulación, Planificación, Análisis, Modelización, generación de páginas, el Test, Evaluación del cliente.

Formulación.- Identifica objetivos y establece el alcance de la primera entrega.

INGENIERÍA DE SOFTWARE

Page 35: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Planificación. Genera la estimación del coste general del proyecto, la evaluación de riesgos y el calendario del desarrollo y fechas de entrega.

Análisis. Especifica los requerimientos e identifica el contenido.

INGENIERÍA DE SOFTWARE

Page 36: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Modelización: Se compone de dos secuencias paralelas de tareas. Una consiste en el diseño y producción del contenido que forma parte de la aplicación. La otra, en el diseño de la arquitectura, navegación e interfaz de usuario. Es conveniente resaltar la importancia del diseño de la interfaz. Independientemente del valor del contenido y servicios prestados, una buena interfaz mejora la percepción que el usuario tiene de estos.

INGENIERÍA DE SOFTWARE

Page 37: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Generación de páginas. Se integra contenido, arquitectura, navegación e interfaz para crear estática o dinámicamente el aspecto más visible de las aplicaciones, las páginas.

El Test. Busca errores a todos los niveles: contenido, funcional, navegacional, rendimiento, etc. El hecho de que las aplicaciones residan en la red, y que inter-operen en plataformas muy distintas, hace que el proceso de test sea especialmente difícil.

INGENIERÍA DE SOFTWARE

Page 38: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Evaluación del cliente. El resultado final es sometido a la evaluación del cliente y aceptación por el mismo.

INGENIERÍA DE SOFTWARE

Page 39: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Metodologías ÁgilesPor lo pronto, surgen metodologías a petición de las problemas actuales, tomando algunas de las ideas de las metodologías tradicionales.

INGENIERÍA DE SOFTWARE

Page 40: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Como resultado de esta nueva teoría se crea un Manifiesto Ágil cuyas principales ideas son:o Los individuos y las interacciones entre ellos son más importantes que las

herramientas y los procesos empleados.o Es más importante crear un producto software que funcione que escribir

documentación exhaustiva. o La colaboración con el cliente debe prevalecer sobre la negociación de

contratos.o La capacidad de respuesta ante un cambio es más importante que el

seguimiento estricto de un plan.

INGENIERÍA DE SOFTWARE

Page 41: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Entre los principales métodos ágiles tenemos las siguientes:

o XP (Extreme Programming).o Scrum.o Iconix.o Cristal Methods.o AUP, entre otros.

INGENIERÍA DE SOFTWARE

Page 42: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Extreme Programming (XP).Es la más destacada de los procesos agiles de desarrollo de software formulada por Kent Beck.

Los defensores de XP consideran que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos.

INGENIERÍA DE SOFTWARE

Page 43: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

XP

Desarrollo iterativo

incremental

Programación por parejas

Frecuente interacción

Corrección

Propiedad del código

compartido

Simplicidad en el código

INGENIERÍA DE SOFTWARE

Page 44: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Ventajas:o Apropiado para entornos volátiles.o Planificación más transparente para nuestros clientes,

conocen las fechas de entrega de funcionalidades. Vital para su negocio.

o Permitirá definir en cada iteración cuales son los objetivos de la siguiente

o Permite tener realimentación de los usuarios muy útil.o La presión está a lo largo de todo el proyecto y no en

una entrega final.

INGENIERÍA DE SOFTWARE

Page 45: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Desventajaso Delimitar el alcance del proyecto con

nuestro cliente

o Para mitigar esta desventaja se plantea definir un alcance a alto nivel basado en la experiencia.

INGENIERÍA DE SOFTWARE

Page 46: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Iconix:El proceso ICONIX se define como un proceso de desarrollo de software práctico. Está entre la complejidad de RUP y la simplicidad y pragmatismo de XP, sin eliminar las tareas de análisis y diseño que XP no contempla.Es un proceso simplificado en comparación con otros procesos más tradicionales. ICONIX presenta claramente las actividades de cada fase y exhibe una secuencia de pasos que deben ser seguidos. Además, está adaptado a patrones y ofrece el soporte UML, dirigido por Casos de Uso y es un proceso iterativo e incremental.

INGENIERÍA DE SOFTWARE

Page 47: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Características de Iconix.o Iterativo e incremental: varias interacciones ocurren entre el modelo del

dominio y la identificación de los casos de uso. El modelo estático es incrementalmente refinado por los modelos dinámicos.

o Trazabilidad: cada paso está referenciado por algún requisito. Se define la trazabilidad como la capacidad de seguir una relación entre los diferentes artefactos producidos.

o Dinámica del UML: la metodología ofrece un uso dinámico del UML como los diagramas del caso de uso, diagramas de secuencia y de colaboración.

INGENIERÍA DE SOFTWARE

Page 48: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

REINGENIERÍA¿Qué es?

Considere cualquier producto tecnológico que le haya servido bien. Usted lo utiliza regularmente, pero se está volviendo obsoleto. Se rompe con frecuencia, su reparación toma más tiempo del que usted quisiera, y ya no representa más la nueva tecnología. ¿Qué hacer?

- Si el producto es hardware.- Si el producto es software.

INGENIERÍA DE SOFTWARE

Page 49: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

¿Quién la hace?

En el ámbito de las organizaciones, la reingeniería lo llevan a cabo especialistas en negocios (con frecuencias compañías consultoras). En el ámbito del software la reingeniería la realizan los ingenieros de software.

INGENIERÍA DE SOFTWARE

Page 50: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

¿Por qué es importante?

Se vive en un mundo en cambio constante. Las demandas acerca de las funciones de negocios y la tecnología de la información que las soportan están cambiando a un ritmo que impone una enorme presión competitiva en las organizaciones comerciales.

INGENIERÍA DE SOFTWARE

Page 51: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

¿Cuáles son los pasos?

El proceso de reingeniería de software incluye análisis de inventarios, ingeniería inversa, reestructuración de programas y datos, e ingeniería avanzada. La finalidad de estas actividades es crear versiones de programas existentes que muestren mayor calidad y mejor facilidad de mantenimiento.

La reingeniería es una actividad de reconstrucción, y la reingeniería de los sistemas de información se comprende mejor si se considera una actividad análoga: la reconstrucción de una casa en otro estado.

INGENIERÍA DE SOFTWARE

Page 52: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

Análisis de Inventarios

Reestructuración de documentos

Ingeniería Inversa

Reestructuración de código

Reestructuración de datos

Ingeniería directa

La reingeniería de software consta de

seis actividades.

INGENIERÍA DE SOFTWARE

Page 53: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

1. 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 de las aplicaciones activas.

INGENIERÍA DE SOFTWARE

Page 54: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

2. Reestructuración de documentos.

La documentación débil es la marca de muchos sistemas heredados.

3. Ingeniería Inversa.

Ayudar a los ingenieros de software a comprender la estructura de diseño interno de los programas complejos.Herramientas representativas. Imagix 4D, desarrollado por Imagix (www.imagix.com).JdGui es otra herramienta para estos usos.

INGENIERÍA DE SOFTWARE

Page 55: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

4. Reestructuración de código.

El objetivo de las herramientas de reestructuración es transformar el antiguo software de computadoras carente de estructura en lenguajes de programación y estructuras de diseño modernos.

Mecánica. En general, el código fuente se ingresa y transforma en un mejor programa estructurado.

Herramientas representativas. DMS Software Reengineering Toolkit, desarrollada por Semantic Design. Function Encapsulation Tool, desarrollada en la Wayne State University.

INGENIERÍA DE SOFTWARE

Page 56: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

5. Reestructuración de datos.

Esta actividad a veces se denomina análisis de datos.

Antes de comenzar la reestructuración de datos se debe llevar a cabo una actividad de ingeniería inversa denominada análisis del código fuente.

Una vez completado el análisis de datos comienza el rediseño de datos.

INGENIERÍA DE SOFTWARE

Page 57: Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo

6. Ingeniería directa.

También llamada renovación o reclamación, no solo recupera la información de diseño a partir del software existente, también utiliza esta información para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global.

En la mayoría de los casos el software sometido a reingeniería vuelve a implementar la función del sistema existente y también añade nuevas funciones o mejora el desempeño global.

INGENIERÍA DE SOFTWARE