Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

45
Ingeniería de Software Ingeniería de Software UMG UMG Modelos de Desarrollo de Software Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2

Transcript of Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Page 1: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Ingeniería de SoftwareIngeniería de SoftwareUMGUMG

Modelos de Desarrollo de SoftwareModelos de Desarrollo de Software

Ing David Gonzalez.

Clase 2

Page 2: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

PresentaciónPresentación

Objetivo de la Presentación:Objetivo de la Presentación:

– Mostrar diferentes Mostrar diferentes formas de organizar el formas de organizar el desarrollo de softwaredesarrollo de software según el avance de la según el avance de la ingeniería de software.ingeniería de software.

– Analizar los “ciclos de vida” más representativos.Analizar los “ciclos de vida” más representativos.

Estructura de la Presentación:Estructura de la Presentación:

– Capas de la Ingeniería del SoftwareCapas de la Ingeniería del Software

– Definición de los principales Modelos de Definición de los principales Modelos de Desarrollo.Desarrollo.

– Evolución de estos modelos.Evolución de estos modelos.

– Conclusiones.Conclusiones.

Page 3: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Capas de la Ingenieria del SoftwareCapas de la Ingenieria del Software

Independientemente de la complejidad del sistema y Independientemente de la complejidad del sistema y de su area de aplicacion la ingenieria del software de su area de aplicacion la ingenieria del software puede considerarse una tecnologia multicapa puede considerarse una tecnologia multicapa donde la primer capa enfatiza que los cimientos donde la primer capa enfatiza que los cimientos de la ingenieria del software esta orientados de la ingenieria del software esta orientados hacia hacia la calidadla calidad. .

Un Un proceso de softwareproceso de software es el conjunto de es el conjunto de actividades, metodos, practicas y tecnologiasactividades, metodos, practicas y tecnologias aplicables a todos los proyectos de software. Un aplicables a todos los proyectos de software. Un proceso basico(tambien conocido como proceso basico(tambien conocido como ciclo de ciclo de vida clasicovida clasico) esta conformado por ) esta conformado por analisis,diseno, analisis,diseno, codificacion, pruebas y mantenimiento.codificacion, pruebas y mantenimiento.

Page 4: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Capas de la Ingenieria del SoftwareCapas de la Ingenieria del SoftwareLos Los métodosmétodos de la ingeniería de software indican de la ingeniería de software indican

cómo construir técnicamente el software. Los cómo construir técnicamente el software. Los métodos abarcan una gran gama de tareas que métodos abarcan una gran gama de tareas que incluyen incluyen análisis de requisitos, diseño, análisis de requisitos, diseño, construcción de programas, pruebas y construcción de programas, pruebas y mantenimientomantenimiento.. Estos métodos dependen de un Estos métodos dependen de un conjunto de principios básicos que gobiernan cada conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas.modelado y otras técnicas descriptivas.

Las Las herramientasherramientas de la ingeniería del software de la ingeniería del software proporcionan un soporte automático o semi-proporcionan un soporte automático o semi-automático para el proceso y los métodos, a estas automático para el proceso y los métodos, a estas herramientas se les llama herramientas CASE herramientas se les llama herramientas CASE (C(Computer-Aided Software Engineeringomputer-Aided Software Engineering).).

Page 5: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Capas de la Ingenieria del SoftwareCapas de la Ingenieria del Software

Dado lo anterior, el objetivo de la ingeniería Dado lo anterior, el objetivo de la ingeniería de software es lograr productos de software de software es lograr productos de software de calidad (tanto en su forma final como de calidad (tanto en su forma final como durante su elaboración), mediante un durante su elaboración), mediante un proceso apoyado por métodos y proceso apoyado por métodos y herramientas. herramientas.

Page 6: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Capas de la Ingenieria del SoftwareCapas de la Ingenieria del Software

Page 7: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Definición y ObjetivosDefinición y ObjetivosProceso de producción de software:Proceso de producción de software:

– ActividadesActividades que se realizan para la construcción, que se realizan para la construcción, liberación y evolución de un producto de software, liberación y evolución de un producto de software, comenzando con el estudio de una idea y finalizando con comenzando con el estudio de una idea y finalizando con el retiro final del sistema.el retiro final del sistema.

Ciclo de Vida:– El ciclo de vida describe los

estados por los que pasa un producto de software, desde su concepción hasta su muerte.

– Los modelos estructurados de software muestran más claramente los ciclos de vida del software…

Page 8: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Definición y Objetivos (cont...)Definición y Objetivos (cont...)La meta de un La meta de un modelo modelo estructurado de procesoestructurado de proceso es es determinar el determinar el orden de las etapasorden de las etapas que componen el desarrollo y la que componen el desarrollo y la evolución de un software, evolución de un software, estableciendo los estableciendo los criterios de criterios de transicióntransición para progresar de una para progresar de una etapa a la siguiente. etapa a la siguiente.

Los modelos están hechos para Los modelos están hechos para contestar las siguientes preguntas contestar las siguientes preguntas en un proyecto de software:en un proyecto de software:

-¿Qué debemos hacer a -¿Qué debemos hacer a continuación?continuación?

-¿Cuánto tiempo debemos continuar -¿Cuánto tiempo debemos continuar haciéndolo?haciéndolo? (B.Bohem 1988)(B.Bohem 1988)

Page 9: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Definición y Objetivos (cont...)Definición y Objetivos (cont...)Beneficios de los modelos:Beneficios de los modelos:

– Proveen de guíasProveen de guías a los ingenieros de a los ingenieros de software, a cerca del orden en el cual deben software, a cerca del orden en el cual deben ser llevadas a cabo las variadas actividades ser llevadas a cabo las variadas actividades técnicas.técnicas.

– Dan un marcoDan un marco o estructura para gerenciar, o estructura para gerenciar, desarrollar y mantener un desarrollo, lo cual desarrollar y mantener un desarrollo, lo cual nos permite: estimar recursos, definir hitos nos permite: estimar recursos, definir hitos intermedios y monitorear los progresos.intermedios y monitorear los progresos.

– Anticipan y controlan el procesoAnticipan y controlan el proceso para para alcanzar las cualidades deseadas del alcanzar las cualidades deseadas del software.software.

– Sistematizan el procesoSistematizan el proceso con el uso de con el uso de estándares, metodologías y herramientas.estándares, metodologías y herramientas.

– Permiten la producción de productos Permiten la producción de productos confiables, predecibles y eficientes.confiables, predecibles y eficientes.

Page 10: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de SoftwareUn proceso de desarrollo de software tiene como Un proceso de desarrollo de software tiene como

propósito la producción eficaz y eficiente de un propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas afectado por la creatividad y juicio de las personas involucradasinvolucradas . .

Un producto software en sí es complejo, es Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de prácticamente inviable conseguir un 100% de confiabilidad de un programa por pequeño que sea. confiabilidad de un programa por pequeño que sea. Existe una inmensa combinación de factores que Existe una inmensa combinación de factores que impiden una verificación exhaustiva de las todas impiden una verificación exhaustiva de las todas posibles situaciones de ejecución que se puedan posibles situaciones de ejecución que se puedan presentar (entradas, valores de variables, datos presentar (entradas, valores de variables, datos almacenados, software del sistema, otras almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el aplicaciones que intervienen, el hardware sobre el cual se ejecuta, etc.). cual se ejecuta, etc.).

Page 11: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de SoftwareUn producto software es intangible y por lo general Un producto software es intangible y por lo general

muy abstracto, esto dificulta la definición del muy abstracto, esto dificulta la definición del producto y sus requisitos. Esto hace que los producto y sus requisitos. Esto hace que los requisitos sean difíciles de consolidar requisitos sean difíciles de consolidar tempranamente. Así, los cambios en los requisitos tempranamente. Así, los cambios en los requisitos son inevitables, no sólo después de entregado en son inevitables, no sólo después de entregado en producto sino también durante el proceso de producto sino también durante el proceso de desarrollodesarrollo . .

El proceso de desarrollo de software no es único. No El proceso de desarrollo de software no es único. No existe un proceso de software universal que sea existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de automatizar todo un proceso de desarrollo de software.software.

Page 12: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de SoftwareA pesar de la variedad de propuestas de proceso de A pesar de la variedad de propuestas de proceso de

software, existe un conjunto de actividades software, existe un conjunto de actividades fundamentales que se encuentran presentes en fundamentales que se encuentran presentes en todos ellos :todos ellos :

Especificación de softwareEspecificación de software: Se debe definir la : Se debe definir la funcionalidad y restricciones operacionales que funcionalidad y restricciones operacionales que debe cumplir el software.debe cumplir el software.

Diseño e ImplementaciónDiseño e Implementación: Se diseña y : Se diseña y construye el software de acuerdo a la construye el software de acuerdo a la especificación.especificación.

ValidaciónValidación: El software debe validarse, para : El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.asegurar que cumpla con lo que quiere el cliente.

EvoluciónEvolución: El software debe evolucionar, para : El software debe evolucionar, para adaptarse a las necesidades del cliente.adaptarse a las necesidades del cliente.

Page 13: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de SoftwareA pesar de la variedad de propuestas de proceso de A pesar de la variedad de propuestas de proceso de

software, existe un conjunto de actividades software, existe un conjunto de actividades fundamentales que se encuentran presentes en fundamentales que se encuentran presentes en todos ellos :todos ellos :

Especificación de softwareEspecificación de software: Se debe definir la : Se debe definir la funcionalidad y restricciones operacionales que funcionalidad y restricciones operacionales que debe cumplir el software.debe cumplir el software.

Diseño e ImplementaciónDiseño e Implementación: Se diseña y : Se diseña y construye el software de acuerdo a la construye el software de acuerdo a la especificación.especificación.

ValidaciónValidación: El software debe validarse, para : El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.asegurar que cumpla con lo que quiere el cliente.

EvoluciónEvolución: El software debe evolucionar, para : El software debe evolucionar, para adaptarse a las necesidades del cliente.adaptarse a las necesidades del cliente.

Page 14: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de Software Además de estas actividades fundamentales, Además de estas actividades fundamentales,

Pressman [1] menciona un conjunto de Pressman [1] menciona un conjunto de “actividades protectoras”, que se aplican a lo “actividades protectoras”, que se aplican a lo largo de todo el proceso del software. Ellas se largo de todo el proceso del software. Ellas se señalan a continuación:señalan a continuación:

Seguimiento y control de proyecto de software.Seguimiento y control de proyecto de software. Revisiones técnicas formales.Revisiones técnicas formales. Garantía de calidad del software.Garantía de calidad del software. Gestión de configuración del software.Gestión de configuración del software. Preparación y producción de documentos.Preparación y producción de documentos. Gestión de reutilización. Gestión de reutilización. Mediciones.Mediciones. Gestión de riesgosGestión de riesgos

Page 15: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de Software caracteriza un proceso de desarrollo de software como se caracteriza un proceso de desarrollo de software como se

muestra en la Figura, Los elementos involucrados se muestra en la Figura, Los elementos involucrados se describen a continuación:describen a continuación:

Un marco común del procesoUn marco común del proceso, definiendo un pequeño , definiendo un pequeño número de actividades del marco de trabajo que son número de actividades del marco de trabajo que son aplicables a todos los proyectos de software, con aplicables a todos los proyectos de software, con independencia del tamaño o complejidad.independencia del tamaño o complejidad.

Un conjunto de tareasUn conjunto de tareas, cada uno es una colección de , cada uno es una colección de tareas de ingeniería del software, hitos de proyectos, tareas de ingeniería del software, hitos de proyectos, entregas y productos de trabajo del software, y puntos de entregas y productos de trabajo del software, y puntos de garantía de calidad, que permiten que las actividades del garantía de calidad, que permiten que las actividades del marco de trabajo se adapten a las características del marco de trabajo se adapten a las características del proyecto de software y los requisitos del equipo del proyecto de software y los requisitos del equipo del proyecto.proyecto.

Las actividades de protecciónLas actividades de protección, tales como garantía de , tales como garantía de calidad del software, gestión de configuración del software calidad del software, gestión de configuración del software y medición, abarcan el modelo del proceso. Las actividades y medición, abarcan el modelo del proceso. Las actividades de protección son independientes de cualquier actividad del de protección son independientes de cualquier actividad del marco de trabajo y aparecen durante todo el proceso.marco de trabajo y aparecen durante todo el proceso.

Page 16: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de Software

Page 17: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Proceso de Desarrollo de SoftwareProceso de Desarrollo de Software

Page 18: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Evolución de ModelosEvolución de ModelosModelos o Estrategias de Desarrollo:Modelos o Estrategias de Desarrollo:

Code & Fix Model (~1960)Code & Fix Model (~1960)

Waterfall Model (~1970)Waterfall Model (~1970)

Incremental Model (~1985)Incremental Model (~1985)

Transformation Model (~1975)Transformation Model (~1975)

Spiral Model (~1988)Spiral Model (~1988)

Component Model (~1992)Component Model (~1992)

RUP (~1997) RUP (~1997)

WebE (~1998)WebE (~1998)

Extreme Programming (~1998)Extreme Programming (~1998)

Page 19: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Modelos de Desarrollo de Soft.Modelos de Desarrollo de Soft.

No basta con seleccionar un modelo genérico de No basta con seleccionar un modelo genérico de desarrollo de software y tratar de adaptarse a él.desarrollo de software y tratar de adaptarse a él. Se Se requiere una definición más precisa de cómo llevar a requiere una definición más precisa de cómo llevar a cabo las distintas tareas.cabo las distintas tareas.

Modelos de Desarrollo GenéricosModelos de Desarrollo Genéricos

– – Aquí caen todos los modelos de desarrollo de Aquí caen todos los modelos de desarrollo de software tradicionales: cascada, espiral, software tradicionales: cascada, espiral, prototipos, etc.prototipos, etc.

– – Presentan una estrategia muy general para Presentan una estrategia muy general para efectuar el proceso de desarrollo.efectuar el proceso de desarrollo.

– – En la realidad casi nunca es posible efectuar el En la realidad casi nunca es posible efectuar el desarrollo adhiriendo completamente a uno de desarrollo adhiriendo completamente a uno de estos modelos.estos modelos.

Page 20: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Modelos de Desarrollo de Soft.Modelos de Desarrollo de Soft.

Modelos de Desarrollo GenéricosModelos de Desarrollo Genéricos– – Permiten un entendimiento de tipo generalPermiten un entendimiento de tipo general del proceso pero del proceso pero

no es fácil llevarlos a un nivel de detalle más fino, lo cual es no es fácil llevarlos a un nivel de detalle más fino, lo cual es necesario para guiar el trabajo de los profesionales.necesario para guiar el trabajo de los profesionales.

– – No representan en forma precisa lo que realmente se hace.No representan en forma precisa lo que realmente se hace.

Modelos de Desarrollo EspecíficosModelos de Desarrollo Específicos– – Aparecen las Aparecen las actividades mayoresactividades mayores involucradas en el involucradas en el

proceso.proceso.

– – Brindan una Brindan una especificación precisa del ordenespecificación precisa del orden entre ellas. entre ellas.

– – Establecen Establecen relaciones entrerelaciones entre las diversas las diversas tareastareas, los , los artefactos artefactos producidos en ellas, las producidos en ellas, las personaspersonas que las que las realizan y las realizan y las herramientasherramientas utilizadas. utilizadas.

– – Usan formalismos gráficos (por ejemplo Redes de Petri).Usan formalismos gráficos (por ejemplo Redes de Petri).

Page 21: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Code & Fix ModelCode & Fix Model– Usado en los comienzos de la computación, Usado en los comienzos de la computación,

cuando ésta era una actividad personal y cuando ésta era una actividad personal y artesanal.artesanal.

– Consta de 2 etapas: Consta de 2 etapas: codificar y eliminar errorescodificar y eliminar errores en en el código.el código.

– Fuente de dificultades y deficiencias.Fuente de dificultades y deficiencias.

Luego de una secuencia de cambios, el código era tan Luego de una secuencia de cambios, el código era tan enredado, que eliminar errores era una tarea pesada y enredado, que eliminar errores era una tarea pesada y muy difícil de realizar.muy difícil de realizar.

Cuando el desarrollo de sistemas dejó de ser una Cuando el desarrollo de sistemas dejó de ser una actividad personal y artesanal, el modelo no podía actividad personal y artesanal, el modelo no podía manejar la complejidad de los sistemas .manejar la complejidad de los sistemas .

No acepta la rotación de personal en un proyecto.No acepta la rotación de personal en un proyecto.

– Es una práctica habitual en el desarrollo Web.Es una práctica habitual en el desarrollo Web.

Page 22: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Code & Fix ModelCode & Fix ModelCode & Fix = Desarrollo guiado por el código Code & Fix = Desarrollo guiado por el código

(o por el programador)…(o por el programador)…

……. No se planifica ni se diseña formalmente.. No se planifica ni se diseña formalmente.

¿Qué significaría en nuestro proyecto aplicar ¿Qué significaría en nuestro proyecto aplicar code and fix?code and fix?– En término de previsibilidad del proceso y del En término de previsibilidad del proceso y del

producto.producto.

– Capacidad de sincronización del esfuerzo.Capacidad de sincronización del esfuerzo.

– Productividad.Productividad.

– Calidad de producto.Calidad de producto.

Page 23: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

PrototipoPrototipo

Page 24: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

24

Waterfall Model: CascadaWaterfall Model: Cascada

El modelo de cascada aunque algo desprestigiado continúa siendo usado para visualizar las etapas de desarrollo (¿cómo debería avanzarse?) y funciona bien si no hay grandes sorpresas.

Page 25: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

25

Waterfall Model (cont...)Waterfall Model (cont...)• En el modelo de cascada puro no hay realimentación

entre las distintas etapas.

• También se usa el modelo con feedback hacia atrás.

• Dependiendo de la versión, posee entre 5 y 10 actividades fundamentales.

• Útil para identificar las actividades fundamentales (que aparecen en cualquier proceso) y definir los documentos de entrega (deliverables).

Los problemas más importantes de este modelo son:

(a) No maneja los riesgos,

(b) Obtiene un producto demasiado tarde,

(c) Exige poco compromiso del usuario/cliente.

Page 26: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

26

Estrategia-Incremental ModelEstrategia-Incremental Model

La idea es combinar los elementos del tradicional modelo de cascada con la filosofía de prototipos (usada principalmente en la etapa de definición de requisitos).

Page 27: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

27

Incremental Model (cont...)Incremental Model (cont...)Características:

• Conjunto de cascadas desarrolladas en forma escalonada.

• Cada cascada genera un incremento del software.

– Ejemplo: Word Processor

• Primer incremento: edición y formateo básicos.

• Segundo incremento: párrafos y documento.

• Tercer incremento: spelling y gramática.

• Cuarto incremento: layout avanzado, etc.

Page 28: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

28

Incremental Model (cont...)Incremental Model (cont...)

Características:

• Cada incremento representa una versión reducida del producto final.

• Que puede ser validado de inmediato por el usuario.

• Es una buena preparación para la vida evolutiva del producto.

• Permite incorporar cambios (respecto a lo que se pretende obtener), una vez que el proyecto está en marcha.

• No es trivial obtener una buena segmentación del producto.

Page 29: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

29

Estrategia - Spiral ModelEstrategia - Spiral Model

Objetivo: Proveer una estructura para el diseño de procesos de producción de software, guiado por los niveles de riesgo del proyecto a desarrollar.

Page 30: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

30

Spiral Model (cont...)Spiral Model (cont...)

El modelo en espiral puede ser visto como un El modelo en espiral puede ser visto como un ““metamodelo”metamodelo” pues cualquier modelo de proceso puede pues cualquier modelo de proceso puede ser enmarcado en él.ser enmarcado en él.

Definiciones:Definiciones:

– Riesgo:Riesgo: Circunstancias potencialmente adversas Circunstancias potencialmente adversas que pueden perjudicar el proceso de desarrollo o que pueden perjudicar el proceso de desarrollo o la calidad del producto.la calidad del producto.

– Manejo del Riesgo:Manejo del Riesgo: “Disciplina cuyos objetivos “Disciplina cuyos objetivos son identificar, manejar y eliminar los elementos son identificar, manejar y eliminar los elementos de riesgo del software, antes que se conviertan de riesgo del software, antes que se conviertan en problemas” B.W. Boehm.en problemas” B.W. Boehm.

Page 31: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

31

Spiral Model (cont...)Spiral Model (cont...) El modelo en espiral se basa en la El modelo en espiral se basa en la identificación identificación y y

eliminación de problemas de alto riesgoeliminación de problemas de alto riesgo a través de a través de un proceso de diseño cuidadoso.un proceso de diseño cuidadoso.

El modelo en espiral tiene como característica El modelo en espiral tiene como característica principal que es principal que es cíclicocíclico y y no linealno lineal..

El radio del espiral marca el El radio del espiral marca el costo acumuladocosto acumulado en el en el proceso, mientras que la dimensión angular proceso, mientras que la dimensión angular representa el representa el progreso dentro del ciclo.progreso dentro del ciclo.

Cuando no existe riesgo, el modelo en espiral Cuando no existe riesgo, el modelo en espiral puede reducirse a un modelo en cascada.puede reducirse a un modelo en cascada.

Page 32: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Spiral Model (cont...)Spiral Model (cont...)

Elementos deElementos de Técnicas de manejo Técnicas de manejo RiesgoRiesgo Riesgo Riesgo

1- Carencias del personal. 1- Carencias del personal. - Staff calificado, equipos, - Staff calificado, equipos, entrenamiento, etc.entrenamiento, etc.

2- Cronogramas y presupuestos - Estimación de cronogramas2- Cronogramas y presupuestos - Estimación de cronogramas no realistas. no realistas. y costos detallados, reuso y costos detallados, reuso

de de experiencia previas. experiencia previas.3- Desarrollo de funciones3- Desarrollo de funciones - Análisis organizado, equivocadas. - Análisis organizado, equivocadas.

prototipación, etc. prototipación, etc.4- Desarrollo de interfaces4- Desarrollo de interfaces - Prototipos, escenarios, - Prototipos, escenarios, equivocadas.equivocadas. caracterización de usuario. caracterización de usuario.5- “Gold plating”... 5- “Gold plating”... - Análisis costo-beneficio. - Análisis costo-beneficio.6- Continuos cambios de6- Continuos cambios de - Ocultamiento de información, - Ocultamiento de información,

requisitos.requisitos. desarrollo incremental. desarrollo incremental.

Page 33: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Spiral Model (cont...)Spiral Model (cont...)

Elementos deElementos de Técnicas de manejo Técnicas de manejo RiesgoRiesgo Riesgo Riesgo

7- Carencias en componentes - Análisis de compatibilidad, 7- Carencias en componentes - Análisis de compatibilidad, externos (soft, hard, etc). benchmarks, inspecciones.externos (soft, hard, etc). benchmarks, inspecciones.

8- Carencias en tareas8- Carencias en tareas - Control de referencias, - Control de referencias, desarrolladas en forma contratos cuidadosos, desarrolladas en forma contratos cuidadosos, externa.externa. selección de selección de subcontratados.subcontratados.

9- Carencias de performance9- Carencias de performance - Simulación, prototipos, - Simulación, prototipos,en tiempo real.en tiempo real. benchmarks. benchmarks.

10- Forzar la computación.10- Forzar la computación. - Análisis técnico, prototipos y - Análisis técnico, prototipos y honestidad. honestidad.

Page 34: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

34

Estrategia - Component ModelEstrategia - Component Model

Page 35: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

35

Component ModelComponent Model• El desarrollo basado en componentes contempla la

construcción de sistemas, a través del ensamble de módulos predefinidos (componentes).

• Estos módulos son genéricos (sirven para más de un sistema), configurables, y pueden ser desarrollados por cualquiera.

• Para que esto sea factible, los módulos deben adherir a una especificación de componentes de software como: JavaBeans, ActiveX, EJB, COM, DCOM, etc.

• El desarrollo basado en componentes tiene un sin número de ventajas, en lo relacionado con el tiempo y costo de desarrollo, y también en lo que respecta a la calidad del producto final.

Page 36: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

36

RUP (Rational Unified Process)RUP (Rational Unified Process)

Page 37: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

37

RUP (Rational Unified Process)RUP (Rational Unified Process)

• Es un modelo moderno, que incorpora las recomendaciones (buenas prácticas) de la ingeniería de software.

• Tiene mucho respaldo, pero es un tanto complejo (se requiere entrenamiento para usarlo).

• Está muy atado a UML (Unified Modeling Language).

• Hasta el momento, sólo ha demostrado ser uno más.

• A diferencia del resto, RUP considera la arquitectura como una pieza clave del desarrollo.

• No es demasiado pesado para apoyar el desarrollo de proyectos Web.

Page 38: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

38

WebE (Web Engineering)WebE (Web Engineering)

Page 39: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

39

WebE (Web Engineering)WebE (Web Engineering)

Es un modelo moderno, aplicable a proyectos Web.

Definido por R. Pressman en 1998.

Es el primer modelo diseñado específicamente para desarrollar proyectos Web.

Aunque hay otros como RMM, y OOHDM que proponen alternativas a WebE, pero que vienen del lado de los sistemas hipermediales.

WebE aún no ha sido probado lo suficiente, y por ahora es sólo una buena propuesta.

Page 40: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

40

Extreme ProgrammingExtreme Programming

Es una práctica ágil (no burocrática)

Es una filosofía de desarrollo, no una metodología.

Involucra ir descubriendo la solución, en la medida que se va avanzando en el desarrollo.

Page 41: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

41

Extreme ProgrammingExtreme Programming

Involucra:Involucra:

- Poca documentación.Poca documentación.

- Mucha interacción con Mucha interacción con el cliente/usuario.el cliente/usuario.

- Prácticas específicas, Prácticas específicas, como por ejemplo: pair-como por ejemplo: pair-programming, pair- programming, pair- designing, etc.designing, etc.

Page 42: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

42

Pregunta…Pregunta…

¿Cuál es el mejor modelo de ¿Cuál es el mejor modelo de desarrollo?desarrollo?

Page 43: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Preguntas….Preguntas…. Si el problema está poco claro, qué uso?Si el problema está poco claro, qué uso?

Si el problema está muy claro y acotado, qué uso?Si el problema está muy claro y acotado, qué uso?

Si el problema es grande, qué uso?Si el problema es grande, qué uso?

Si el problema es chico, qué uso?Si el problema es chico, qué uso?

Si mi empresa ya tiene un modelo de desarrollo, qué Si mi empresa ya tiene un modelo de desarrollo, qué uso?uso?

Si el sistema tiene muchas interfaces de usuario, Si el sistema tiene muchas interfaces de usuario, qué uso?qué uso?

Si mi gente tiene poca capacidad para adaptarse a Si mi gente tiene poca capacidad para adaptarse a nuevos métodos de desarrollo, qué uso?nuevos métodos de desarrollo, qué uso?

Page 44: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

ConclusionesConclusiones El El desarrollodesarrollo de software de software debe ser guiado por un debe ser guiado por un

modelo,modelo, como forma de disciplinar, organizar y como forma de disciplinar, organizar y gerenciar las actividades.gerenciar las actividades.

El modelo debe ser El modelo debe ser definido para la organizacióndefinido para la organización y y adaptado a cada proyecto en particular.adaptado a cada proyecto en particular.

Las Las actividadesactividades que deben cumplirse en el proceso que deben cumplirse en el proceso de desarrollo de desarrollo sonson básicamente básicamente las que establece el las que establece el modelo en cascada.modelo en cascada.

El modelo debe ser lo suficientemente flexible como El modelo debe ser lo suficientemente flexible como para incorporar el principio de para incorporar el principio de ANTICIPACION AL ANTICIPACION AL CAMBIO.CAMBIO.

Page 45: Ingeniería de Software UMG Modelos de Desarrollo de Software Ing David Gonzalez. Clase 2.

Conclusiones (cont...)Conclusiones (cont...) Un Un modelo incremental,modelo incremental, con entregas parciales al con entregas parciales al

usuario (modelo evolutivo, incremental o espiral) usuario (modelo evolutivo, incremental o espiral) se se ajusta a la mayoría de los proyectos.ajusta a la mayoría de los proyectos.

Para los productos que así lo ameriten, Para los productos que así lo ameriten, realizarrealizar análisis de riesgoanálisis de riesgo (modelo espiral).(modelo espiral).