Ingeniería de Software aplicada

39
Unidad 4. Tópicos de Ingeniería de software Reingeniería

description

unidad 4

Transcript of Ingeniería de Software aplicada

Page 1: Ingeniería de Software aplicada

Unidad 4.Tópicos de Ingeniería de software

Reingeniería

Page 2: Ingeniería de Software aplicada

Contenido3. Reingeniería

➢Definición

➢Reingeniería de procesos de negocios

➢Evolución

➢Modelo RPN

➢Reingeniería de software

➢Modelo de reingeniería de sw

➢Economía

➢ Impacto

➢Crítica

Page 3: Ingeniería de Software aplicada

Definición

● La reingeniería es repensar de manera fundamental los procesos de negocios y rediseñarlos radicalmente, con el fin de obtener dramáticos logros en el desempeño.

● Es el rediseño de un proceso en un negocio o un cambio drástico de un proceso.

● También significa el abandono de viejos procedimientos y la búsqueda de trabajo que agregue valor hacia el consumidor.

Page 4: Ingeniería de Software aplicada

Los factores clave del concepto son:

● La orientación hacia los procesos● El cambio radical ● La magnitud de los resultados esperados

Page 5: Ingeniería de Software aplicada

Reingeniería de procesos de negocio (RPN)

● Va más allá del ámbito de la TIC´s y de la ingeniería de software

● “La búsqueda e implementación de un cambio radical en el proceso de negocios para lograr resultados de vanguardia”

Page 6: Ingeniería de Software aplicada

Procesos de negocios

● Es “un conjunto de tareas lógicamente relacionadas que se ejecutan para lograr un resultado de negocios específico”

● Para lograrlo se combinan:

– Gente

– Equipo

– Recursos materiales

– Procedimientos de negocios

– Compra de servicios y suministros

– Contratación de un nuevo empleado

– Pago a proveedores

Page 7: Ingeniería de Software aplicada

Cliente del proceso

● Cada proceso de negocio tiene un cliente definido: una persona o grupo que recibe el resultado

Page 8: Ingeniería de Software aplicada

Evolución

Page 9: Ingeniería de Software aplicada

¿Cómo nació?

Muchas empresas se vieron obligadas ante las nuevas características del entorno a buscar formas diferentes a las establecidas para enfrentar los grandes desafíos de un mercado altamente competitivo.

Las formas tradicionales de dividir el trabajo, de estructurar las organizaciones por funciones, de buscar la especialización, entre otras, no eran suficientes para seguir el ritmo requerido para un entorno globalizado, por lo que estudiaron y llevaron a la práctica formas distintas de enfocar el trabajo.

Page 10: Ingeniería de Software aplicada

Modelo de RPN

● Es un proceso:– Iterativo

– Evolutivo

Page 11: Ingeniería de Software aplicada

Definición del negocio

● Se identifican las metas del negocio ● Controladores:

– Reducción de costo

– Reducción de tiempos

– Mejora de la calidad

– Desarrollo y fortalecimiento del personal

Page 12: Ingeniería de Software aplicada

Identificación del proceso

● Se identifican los procesos cruciales para lograr las metas precisadas en la definición del negocio

● Luego se clasifican de acuerdo a:– Su importancia

– Necesidad de cambio

– ...

Page 13: Ingeniería de Software aplicada

Evaluación del proceso

● El proceso se analiza y mide exhaustivamente● Se identifican las tareas del proceso● Se anotan los costos y el tiempo que

consumen las tareas del proceso ● Se aislan los problemas de calidad y

desempeño

Page 14: Ingeniería de Software aplicada

Especificación y diseño del proceso

● Con base en la retroalimentación obtenida durante las 3 primeras actividades, se preparan casos de uso para cada proceso que será rediseñado

● En este contexto, los casos de uso identifican un escenario que entrega cierto resultado a un cliente.

● Con el caso de uso y la especificación del proceso se diseña un nuevo conjunto de tareas para el proceso

Page 15: Ingeniería de Software aplicada

Elaboración de prototipos

● Un proceso de negocio rediseñado debe convertirse en un prototipo antes de que sea integrado por completo en el negocio

● Esta actividad “prueba” el proceso de modo que puedan llevarse a cabo refinamientos

Page 16: Ingeniería de Software aplicada

Refinamiento y particularización

● Con base en la retroalimentación del prototipo, el proceso de negocio se refina y luego se particulariza dentro de un sistema de negocio

Page 17: Ingeniería de Software aplicada

¿Cómo iniciar?

● Lo primero que deben preguntarse los altos directivos antes de iniciar un proceso de reingeniería es si realmente es el enfoque que la empresa requiere. Una empresa puede encontrarse con dos tipos de razones para emprender la reingeniería:

– Los resultados sólo son posibles de lograr por medio de un cambio mayor.

– La empresa tiene las condiciones básicas para llevar a cabo un cambio de este tipo.

Page 18: Ingeniería de Software aplicada

● Si el propósito de una empresa es incrementar moderadamente su productividad o la calidad del producto, puede ser mas efectivo el uso de otros enfoques o técnicas y no la reingeniería.

● La decisión de hacer reingeniería está muy ligada a las características propias del nuevo entorno:

– Fuerte presión competitiva

– Orientación hacia el cliente

– Mayor velocidad de los cambios y el desarrollo extraordinario de la tecnología de la información.

Page 19: Ingeniería de Software aplicada

¿Dónde aplicar la Reingeniería?

En empresas con:

● Costos muy superiores a sus competidores

● Que tienen una gran cantidad de quejas de sus clientes

● Sus productos tienen un índice de fracasos muy alto comparado al de la competencia

● Presentan condiciones favorables para hacer un cambio radical por medio del rediseño.

● Visualizan amenazas importantes en su entorno.

● Empresas líderes, es decir, aquellas que no se enfrentan a dificultades graves no vislumbran amenazas serias a futuro.

Page 20: Ingeniería de Software aplicada

Reingeniería del software

● Escenario común: un sistema ha cubierto las necesidades de negocios de una empresa durante 10 o 15 años. Durante este periodo se ha corregido, adaptado, mejorado. A pesar de todo, ahora la aplicación es inestable; todavía funciona, pero cada vez que se intenta un cambio, ocurren efectos colaterales, inesperados y serios.

● La aplicación todavía tiene que evolucionar, ?qué hacer?

Page 21: Ingeniería de Software aplicada

Mantenimiento del software

● Durante las últimas 3 décadas se caracterizó al mantenimiento como un iceberg

● Se esperaba que lo inmediatamente visible fuese todo lo que había, pero se sabía que bajo la superficie se encontraba una enorme masa de problemas y costos potenciales

Page 22: Ingeniería de Software aplicada

En los 70's, el mantenimiento del icerberg era tan grande como para hundir un portaviones

Actualmente, podría hundir a toda la marina

Page 23: Ingeniería de Software aplicada

Razones del problema del mantenimiento

● Estructuras mal diseñadas● Codificación deficiente● Lógica inadecuada● Escasa documentación● Movilidad del personal

Page 24: Ingeniería de Software aplicada

Actividades del mantenimiento

● Correctivo 20% del tiempo● Adaptativo● Mejora o perfectivo ● Preventivo o reingeniería 80% del tiempo

Page 25: Ingeniería de Software aplicada

Modelo de procesos de reingeniería de software

● La reingeniería requiere tiempo, cuesta cantidades significativas de dinero y absorbe recursos que de otro modo se ocuparían en problemas inmediatos

● No se logra en unos cuantos meses o años

● Es una actividad que absorbe recursos de las TI durante muchos años

● El modelo de procesos incluye una estrategia operativa

● La reingeniería es una actividad de reconstrucción

Page 26: Ingeniería de Software aplicada

Principios de la reingeniería

Antes de iniciar la reconstrucción:● Inspeccionar, haciendo una lista de criterios

de modo que la inspección sea sistemática● Tener la certeza de que la estructura es débil● Entender cómo se construyó inicialmente● Si se comienza a reconstruir se utilizarán

materiales más modernos y de larga duración● Disciplinarse, utilizar prácticas que

redundarán en alta calidad hoy y mañana

Page 27: Ingeniería de Software aplicada

Modelo

● Algunas actividades puedenocurrir en secuencia lineal, pero no es forzoso

● Modelo cíclico: cada actividad puedevolverse a visitar

Page 28: Ingeniería de Software aplicada

Análisis de inventarios● Las organizaciones de software deberían tener un

inventario de todas sus aplicaciones con una descripción detallada de las aplicaciones activas como:

– Tamaño

– Edad

– Importancia para el negocio

● Al ordenar esta información (de acuerdo a la importancia para el negocio, antigüedad, etc.) aparecen candidatos para reingeniería

● El inventario se debe actualizar, lo cual puede modificar las prioridades para la reingeniería

Page 29: Ingeniería de Software aplicada

Reestructuración de documentos

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

– Crear documentación consume muchísimo tiempo

– La documentación debe actualizarse, pero se tienen recursos limitados

– El sistema es crucial para el negocio y debe volver a documentarse por completo

● Una organización de sw debe elegir la opción más apropiada

Page 30: Ingeniería de Software aplicada

Ingeniería inversa

● El término tiene sus orígenes en el mundo del hw.

● 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.

● Es un proceso de recuperación de diseño

Page 31: Ingeniería de Software aplicada

Reestructuración de código● Es el tipo más común de reingeniería

● Se da cuando algunos sistemas heredados tienen una arquitectura de programa relativamente sólida, pero los módulos individuales se codificaron de forma que dificulta comprenderlos, probarlos y mantenerlos.

● 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 se reestructura

– Se revisa y prueba para segurar que no se han introducido anomalías

– Se actualiza la documentación del código interno

Page 32: Ingeniería de Software aplicada

Reestructuración de datos● En muchas aplicaciones la arquitectura de datos

está más relacionada con la viabilidad a largo plazo de un program que el código fuente.

● Es una actividad de reingeniería a gran escala

– Comienza con la reingeniería inversa

– Se analiza la arquitectura de datos con minuciosidad y se definen los modelos de datos necesarios

– Se identifican los objetos de datos y atributos

– Se revisa la calidad de las estructuras de datos existentes

Page 33: Ingeniería de Software aplicada

Ingeniería directa

● También llamada renovación o reclamación

● No sólo recupera la información de diseño a partir del sw existente, también utiliza esta información para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global.

● Las aplicaciones se reconstruyen empleando un “motor de reingeniería automatizado”.

● El programa se introduce en el motor para analizarse, reestructurarse y luego regenerarlo en forma que exhiba aspectos de calidad

Page 34: Ingeniería de Software aplicada

Economía de la reingenieríaSneed propone un modelo de análisis-costo-beneficio para la reingeniería de acuerdo con los siguientes parámetros:

● P1 = Costo de mantenimiento anual actual para una aplicación

● P2 = Costo de operación anual actual para una aplicación

● P3 = Valor de negocios anual actual para una aplicación

● P4 = Costo de mantenimiento anual predicho después de la reingeniería

● P5 = Costo de operación anual predicho después de la reingeniería

● P6 = Valor de negocios anual predicho después de la reingeniería

● P7 = Costo estimado de la reingeniería

● P8 = Fecha estimada de la reingeniería

● P9 = Factor de riesgo de la reingeniería (P

9 = 1.0 es el valor nominal)

● L = vida esperada del sistema

Page 35: Ingeniería de Software aplicada

● El costo asociado con el mantenimiento continuo de una aplicación candidata (si la reingeniería no se realiza) se puede definir como:

Cmant

= [P3 – (P

1 + P

2)] * L

● Los costos asociados con la reingeniería se definen como:

Creing

= [P6 – (P

4 + P

5) * (L – P

8 ) - (P

7* P

9)]

● Con la utilización de los costos presentados, el beneficio global se puede calcular como

Costo beneficio = Creing

- Cmant

Page 36: Ingeniería de Software aplicada

Impacto

● La reingeniería en pocos años ha revolucionado la gestión gerencial.

● Desde 1992 los ejecutivos de grandes empresas consideraron casi de inmediato al rediseño como una alternativa viable y estuvieron dispuestos a provocar importantes cambios en sus compañias.

● Hacia 1995 se estimaba, según un estudio de la consultora estadounidense CSC Index , que aproximadamente entre el 70% y el 75% de las más grandes empresas estadounidenses y europeas estaban en proceso de aplicación de la reingeniería.

Page 37: Ingeniería de Software aplicada

Impacto

● Encuestas a altos ejecutivos en Estados Unidos, realizadas entre 1992 y 1994 por la empresa Gateway , indican que la reingeniería es la iniciativa más adoptada por la empresas para alcanzar sus metas estratégicas. Las razones más frecuentes para llevar a cabo un proceso de reingeniería por los ejecutivos consultados fueron:

– La Competencia

– La Rentabilidad

– La Participación en el mercado● En América Latina esta nueva concepción gerencial ha tenido

un impacto significativo y una gran cantidad de empresas han ejecutado o esta evaluando la posibilidad de aplicar la reingeniería.

Page 38: Ingeniería de Software aplicada

Crítica

● El concepto original de reingeniería ha sido duramente criticado desde diversos ángulos. Gran parte de estas críticas corresponden a procesos de reingeniería que han fracasado.

● Las mayores críticas a la reingeniería se han centrado en la forma errada en que se enfocó originalmente el papel de la cultura organizacional y de los empleados en el proceso.

● Otra crítica generalizada es que la reingeniería se ha centrado en la relación reingeniería - automatización. La automatización a menudo ha sido confundida con la reingeniería, lo que ha provocado que muchas empresas automaticen sus errores. La reingeniería se apoya en la automatización, pero automatizar no es hacer reingeniería.

Page 39: Ingeniería de Software aplicada

Una compañía que no pueda cambiar su modelo de pensar acerca de la informática y otras

tecnologías no se puede rediseñar