1 / 45

Ingeniería de Software UMG

Ingeniería de Software UMG. Modelos de Desarrollo de Software. Ing David Gonzalez. Clase 2. Presentación. Objetivo de la Presentación: Mostrar diferentes formas de organizar el desarrollo de software según el avance de la ingeniería de software.

garima
Download Presentation

Ingeniería de Software UMG

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Presentación Objetivo de la Presentación: Mostrar diferentes formas de organizar el desarrollo de software según el avance de la ingeniería de software. Analizar los “ciclos de vida” más representativos. Estructura de la Presentación: Capas de la Ingeniería del Software Definición de los principales Modelos de Desarrollo. Evolución de estos modelos. Conclusiones.

  3. Capas de la Ingenieria del Software Independientemente de la complejidad del sistema y de su area de aplicacion la ingenieria del software puede considerarse una tecnologia multicapa donde la primer capa enfatiza que los cimientos de la ingenieria del software esta orientados hacia la calidad. Un proceso de software es el conjunto de actividades, metodos, practicas y tecnologias aplicables a todos los proyectos de software. Un proceso basico(tambien conocido como ciclo de vida clasico) esta conformado por analisis,diseno, codificacion, pruebas y mantenimiento.

  4. Capas de la Ingenieria del Software • Los métodosde la ingeniería de software indican cómo construir técnicamente el software. Los métodos abarcan una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Estos métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas. • Las herramientasde la ingeniería del software proporcionan un soporte automático o semi-automático para el proceso y los métodos, a estas herramientas se les llama herramientas CASE (Computer-Aided Software Engineering).

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

  6. Capas de la Ingenieria del Software

  7. Definición y Objetivos Proceso de producción de software: Actividades que se realizan para la construcción, liberación y evolución de un producto de software, comenzando con el estudio de una idea y finalizando con 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…

  8. Definición y Objetivos (cont...) La meta de un modelo estructurado de proceso es determinar el orden de las etapas que componen el desarrollo y la evolución de un software, estableciendo los criterios de transición para progresar de una etapa a la siguiente. Los modelos están hechos para contestar las siguientes preguntas en un proyecto de software: -¿Qué debemos hacer a continuación? -¿Cuánto tiempo debemos continuar haciéndolo?(B.Bohem 1988)

  9. Definición y Objetivos (cont...) Beneficios de los modelos: Proveen de guíasa los ingenieros de software, a cerca del orden en el cual deben ser llevadas a cabo las variadas actividades técnicas. Dan un marco o estructura para gerenciar, desarrollar y mantener un desarrollo, lo cual nos permite: estimar recursos, definir hitos intermedios y monitorear los progresos. Anticipan y controlan el proceso para alcanzar las cualidades deseadas del software. Sistematizan el proceso con el uso de estándares, metodologías y herramientas. Permiten la producción de productos confiables, predecibles y eficientes.

  10. Proceso de Desarrollo de Software Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas . Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de confiabilidad de un programa por pequeño que sea. Existe una inmensa combinación de factores que impiden una verificación exhaustiva de las todas posibles situaciones de ejecución que se puedan presentar (entradas, valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el cual se ejecuta, etc.).

  11. Proceso de Desarrollo de Software Un producto software es intangible y por lo general muy abstracto, esto dificulta la definición del producto y sus requisitos. Esto hace que los requisitos sean difíciles de consolidar tempranamente. Así, los cambios en los requisitos son inevitables, no sólo después de entregado en producto sino también durante el proceso de desarrollo . El proceso de desarrollo de software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software.

  12. Proceso de Desarrollo de Software A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos : Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación. Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente. Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.

  13. Proceso de Desarrollo de Software A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos : Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación. Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente. Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.

  14. Proceso de Desarrollo de Software Además de estas actividades fundamentales, Pressman [1] menciona un conjunto de “actividades protectoras”, que se aplican a lo largo de todo el proceso del software. Ellas se señalan a continuación: Seguimiento y control de proyecto de software. Revisiones técnicas formales. Garantía de calidad del software. Gestión de configuración del software. Preparación y producción de documentos. Gestión de reutilización. Mediciones. Gestión de riesgos

  15. Proceso de Desarrollo de Software caracteriza un proceso de desarrollo de software como se muestra en la Figura, Los elementos involucrados se describen a continuación: Un marco común del proceso, definiendo un pequeño número de actividades del marco de trabajo que son aplicables a todos los proyectos de software, con independencia del tamaño o complejidad. Un conjunto de tareas, cada uno es una colección de tareas de ingeniería del software, hitos de proyectos, entregas y productos de trabajo del software, y puntos de garantía de calidad, que permiten que las actividades del marco de trabajo se adapten a las características del proyecto de software y los requisitos del equipo del proyecto. Las actividades de protección, tales como garantía de calidad del software, gestión de configuración del software y medición, abarcan el modelo del proceso. Las actividades de protección son independientes de cualquier actividad del marco de trabajo y aparecen durante todo el proceso.

  16. Proceso de Desarrollo de Software

  17. Proceso de Desarrollo de Software

  18. Evolución de Modelos Modelos o Estrategias de Desarrollo: Code & Fix Model (~1960) Waterfall Model (~1970) Incremental Model (~1985) Transformation Model (~1975) Spiral Model (~1988) Component Model (~1992) RUP (~1997) WebE (~1998) Extreme Programming (~1998)

  19. Modelos de Desarrollo de Soft. No basta con seleccionar un modelo genérico de desarrollo de software y tratar de adaptarse a él. Se requiere una definición más precisa de cómo llevar a cabo las distintas tareas. Modelos de Desarrollo Genéricos – Aquí caen todos los modelos de desarrollo de software tradicionales: cascada, espiral, prototipos, etc. – Presentan una estrategia muy general para efectuar el proceso de desarrollo. – En la realidad casi nunca es posible efectuar el desarrollo adhiriendo completamente a uno de estos modelos.

  20. Modelos de Desarrollo de Soft. Modelos de Desarrollo Genéricos – Permiten un entendimiento de tipo generaldel proceso pero no es fácil llevarlos a un nivel de detalle más fino, lo cual es necesario para guiar el trabajo de los profesionales. – No representan en forma precisa lo que realmente se hace. Modelos de Desarrollo Específicos – Aparecen las actividades mayores involucradas en el proceso. – Brindan una especificación precisa del orden entre ellas. – Establecen relaciones entre las diversas tareas, los artefactos producidos en ellas, las personas que las realizan y las herramientas utilizadas. – Usan formalismos gráficos (por ejemplo Redes de Petri).

  21. Code & Fix Model Usado en los comienzos de la computación, cuando ésta era una actividad personal y artesanal. Consta de 2 etapas: codificar y eliminar errores en el código. Fuente de dificultades y deficiencias. Luego de una secuencia de cambios, el código era tan enredado, que eliminar errores era una tarea pesada y muy difícil de realizar. Cuando el desarrollo de sistemas dejó de ser una actividad personal y artesanal, el modelo no podía manejar la complejidad de los sistemas . No acepta la rotación de personal en un proyecto. Es una práctica habitual en el desarrollo Web.

  22. Code & Fix Model Code & Fix = Desarrollo guiado por el código (o por el programador)… …. No se planifica ni se diseña formalmente. ¿Qué significaría en nuestro proyecto aplicar code and fix? En término de previsibilidad del proceso y del producto. Capacidad de sincronización del esfuerzo. Productividad. Calidad de producto.

  23. Prototipo

  24. Waterfall 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.

  25. 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) Exigepoco compromisodelusuario/cliente.

  26. Estrategia-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).

  27. Incremental Model (cont...) • Características: • • Conjunto de cascadasdesarrolladas 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.

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

  29. Estrategia - Spiral Model Objetivo:Proveer una estructura para el diseño de procesos de producción de software, guiado por los niveles de riesgodel proyecto a desarrollar.

  30. Spiral Model (cont...) El modelo en espiral puede ser visto como un “metamodelo” pues cualquier modelo de proceso puede ser enmarcado en él. Definiciones: Riesgo:Circunstancias potencialmente adversas que pueden perjudicar el proceso de desarrollo o la calidad del producto. Manejo del Riesgo: “Disciplina cuyos objetivos son identificar, manejar y eliminar los elementos de riesgo del software, antes que se conviertan en problemas” B.W. Boehm.

  31. Spiral Model (cont...) El modelo en espiral se basa en la identificación y eliminación de problemas de alto riesgo a través de un proceso de diseño cuidadoso. El modelo en espiral tiene como característica principal que es cíclicoy no lineal. El radio del espiral marca el costo acumulado en el proceso, mientras que la dimensión angular representa el progreso dentro del ciclo. Cuando no existe riesgo, el modelo en espiral puede reducirse a un modelo en cascada.

  32. Spiral Model (cont...) Elementos de Técnicas de manejo Riesgo Riesgo 1- Carencias del personal. - Staff calificado, equipos, entrenamiento, etc. 2- Cronogramas y presupuestos - Estimación de cronogramas no realistas. y costos detallados, reuso de experiencia previas. 3- Desarrollo de funciones - Análisis organizado, equivocadas. prototipación, etc. 4- Desarrollo de interfaces - Prototipos, escenarios, equivocadas. caracterización de usuario. 5- “Gold plating”... - Análisis costo-beneficio. 6- Continuos cambios de - Ocultamiento de información, requisitos. desarrollo incremental.

  33. Spiral Model (cont...) Elementos de Técnicas de manejo Riesgo Riesgo 7- Carencias en componentes - Análisis de compatibilidad, externos (soft, hard, etc). benchmarks, inspecciones. 8- Carencias en tareas - Control de referencias, desarrolladas en forma contratos cuidadosos, externa. selección de subcontratados. 9- Carencias de performance - Simulación, prototipos, en tiempo real. benchmarks. 10- Forzar la computación. - Análisis técnico, prototipos y honestidad.

  34. Estrategia - Component Model

  35. Component 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.

  36. RUP (Rational Unified Process)

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

  38. WebE (Web Engineering)

  39. 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 paradesarrollar 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.

  40. Extreme 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.

  41. Extreme Programming Involucra: Poca documentación. Mucha interacción con el cliente/usuario. Prácticas específicas, como por ejemplo: pair-programming, pair- designing, etc.

  42. Pregunta… ¿Cuál es el mejor modelo de desarrollo?

  43. Preguntas…. Si el problema está poco claro, qué uso? Si el problema está muy claro y acotado, qué uso? Si el problema es grande, qué uso? Si el problema es chico, qué uso? Si mi empresa ya tiene un modelo de desarrollo, qué uso? Si el sistema tiene muchas interfaces de usuario, qué uso? Si mi gente tiene poca capacidad para adaptarse a nuevos métodos de desarrollo, qué uso?

  44. Conclusiones El desarrollo de software debe ser guiado por un modelo, como forma de disciplinar, organizar y gerenciar las actividades. El modelo debe ser definido para la organizacióny adaptado a cada proyecto en particular. Las actividades que deben cumplirse en el proceso de desarrollo son básicamente las que establece el modelo en cascada. El modelo debe ser lo suficientemente flexible como para incorporar el principio de ANTICIPACION AL CAMBIO.

  45. Conclusiones (cont...) Un modelo incremental, con entregas parciales al usuario (modelo evolutivo, incremental o espiral) se ajusta a la mayoría de los proyectos. Para los productos que así lo ameriten, realizaranálisis de riesgo(modelo espiral).

More Related