Successfully reported this slideshow.

Modelos de desarrollo rápido de software

11,080 views

Published on

Modelos de desarrollo rápido de software

  1. 1. Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
  2. 2. Contenidos de la Unidad 1 Introducción al Diseño e) Modelos de desarrollo rápido del software Sommervillle. Introducción Cap. 17 <ul><ul><ul><ul><li>Métodos ágiles. </li></ul></ul></ul></ul>Sommervillle. Sección 17.1. Kendall&Kendall. Capítulo 6.Sección PROGRAMACIÓN EXTREMA Larman, 2ª.Ed., Cap. 37.3 <ul><ul><ul><ul><li>2. Desarrollo rápido de aplicaciones. </li></ul></ul></ul></ul>Sommervillle. Sección 17.3 Pressman. Sección 2.6 Kendall&Kendall. Capítulo 6. Sección DESARROLLO RÁPIDO DE APLICACIONES. <ul><ul><ul><ul><li>3. Prototipado del software. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Clases de prototipos. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Desarrollo de un prototipo </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Ventajas y Desventajas de prototipos. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Papel del usuario en la elaboración de prototipos. </li></ul></ul></ul></ul></ul><ul><li>  </li></ul><ul><li>   </li></ul>Sommervillle. Sección 17.4. Pressman. Sección 2.5 Kendall&Kendall. Capítulo 6          
  3. 3. <ul><li>Los negocios operan en un entorno global que cambia rápidamente. </li></ul><ul><li>Tienen que responder a nuevas oportunidades y mercados, condiciones económicas cambiantes y la aparición de productos y servicios competidores. </li></ul><ul><li>El software es parte de casi todas las operaciones </li></ul><ul><li>de negocio. </li></ul><ul><li>Es fundamental que el software nuevo se desarrolle rápidamente para aprovechar nuevas oportunidades y responder a la presión competitiva. </li></ul>Modelos de Desarrollo Rápido de Software (Sommerville, 17 Introd.)
  4. 4. <ul><li>Por lo tanto, el desarrollo y entrega rápidos son los requerimientos más críticos de los sistemas </li></ul><ul><li>Muchas compañías prefieren perder calidad del software a favor de una entrega rápida. </li></ul><ul><li>Como las empresas operan en un entorno cambiante, es casi imposible obtener un conjunto completo de requerimientos del software estables. </li></ul><ul><li>Los requerimientos cambian inevitablemente, porque a los clientes les es imposible predecir cómo afectará un sistema a la manera de trabajar, cómo interactuará con otros sistemas y qué operaciones se deben automatizar. </li></ul>Modelos de Desarrollo Rápido de Software
  5. 5. <ul><li>Muchos requerimientos sólo quedan claros cuando se haya entregado el sistema y los usuarios hayan adquirido experiencia. </li></ul><ul><li>El Desarrollo del Software basado en una completa Especificación de los Requerimientos y posterior Diseño , Construcción y Pruebas del Sistema no se ajustan al Desarrollo Rápido de Aplicaciones . </li></ul><ul><li>Cuando los Requerimientos cambian o cuando se descubren problemas con ellos, el Diseño o Implementación del Sistema se tiene que volver a realizar o probar. </li></ul>Modelos de Desarrollo Rápido de Software
  6. 6. <ul><li>Por eso el proceso en cascada se dilata en el tiempo y el software definitivo se entrega al cliente mucho tiempo después del inicialmente especificado. </li></ul><ul><li>En un entorno de negocios que se mueve con rapidez, esto puede causar verdaderos problemas. </li></ul><ul><li>Para cuando esté disponible el software, la razón original de su adquisición puede haber cambiado tanto que el software sea ahora inútil. </li></ul><ul><li>Por eso, para los sistemas de negocio, los procesos de desarrollo y entrega rápidos de software son esenciales. </li></ul>Modelos de Desarrollo Rápido de Software
  7. 7. <ul><li>Los procesos de desarrollo rápido de software están diseñados para producir software útil de forma rápida. </li></ul><ul><li>Son procesos iterativos que entrelazan la Especificación , el Diseño , el Desarrollo y las Pruebas . </li></ul><ul><li>El software no se desarrolla y utiliza en su totalidad, sino en una serie de incrementos, donde cada incremento agrega nuevas funcionalidades al sistema. </li></ul>Modelos de Desarrollo Rápido de Software
  8. 8. <ul><li>Hay muchos enfoques para el Desarrollo Rápido de S oftware , que comparten estas características: </li></ul><ul><li>1. Los Procesos de Especificación ( Análisis ), Diseño e Implementación son concurrentes . </li></ul><ul><li>No existe una especificación detallada del sistema. </li></ul><ul><li>La documentación del diseño se minimiza o es generada automáticamente por el entorno de programación utilizado para implementar el sistema. </li></ul><ul><li>El documento de Requerimientos del usuario define sólo las características más importantes del sistema. </li></ul>Modelos de Desarrollo Rápido de Software
  9. 9. <ul><li>2. El sistema se desarrolla en una serie de incrementos. </li></ul><ul><li>Los usuarios participan en la especificación y evaluación de cada incremento. </li></ul><ul><li>Pueden proponer cambios en el software y nuevos requerimientos a implementar en un incremento posterior. </li></ul>Desarrollo Rápido de Software Características
  10. 10. <ul><li>3. Las interfaces de usuario del sistema se desarrollan interactivamente. </li></ul><ul><li>El diseño de la interfaz se crea rápidamente dibujando iconos, para una interfaz basada en web o una plataforma específica como Microsoft Windows. </li></ul>Desarrollo Rápido de Software Características
  11. 11. <ul><li>El desarrollo incremental implicaba producir y entregar el software en incrementos más que en un paquete único . </li></ul><ul><li>Cada iteración del proceso produce un nuevo incremento del software. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  12. 12. <ul><li>Las dos ventajas del Enfoque Incremental para desarrollar software eran: </li></ul><ul><li>Entrega acelerada de los servicios del cliente. En los incrementos iniciales del sistema se pueden entregar las funcionalidades más prioritarias para que los clientes puedan aprovechar el sistema desde el principio de su desarrollo. </li></ul><ul><li>Los clientes pueden ver sus requerimientos en la práctica y especificar cambios a incorporar en entregas posteriores del sistema. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  13. 13. <ul><li>2. Compromiso del cliente con el sistema. </li></ul><ul><li>Los usuarios del sistema deben implicarse en el proceso de desarrollo incremental, ya que deben brindar su retroalimentación sobre los incrementos que le va entregando al equipo de desarrollo. </li></ul><ul><li>Su participación asegura que el sistema cumpla sus requerimientos. </li></ul><ul><li>Los usuarios se comprometen con el sistema y consiguen que funcione. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  14. 14. <ul><li>Las etapas iniciales del Modelo Incremental se centran en el diseño arquitectónico. </li></ul><ul><li>Si no se considera la arquitectura al principio, es probable que la estructura general del sistema sea inestable y degrade a medid que se entreguen nuevos incrementos. </li></ul><ul><li>El desarrollo incremental del software es un buen enfoque para el desarrollo de los sistemas de negocio, comercio electrónico y personales porque refleja el modo en que todos tendemos a resolver problemas. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  15. 15. <ul><li>Rara vez encontramos una solución completa a un problema por adelantado. Siempre nos movemos hacia lasolución en una serie de pasos, dando marcha atrás cuando advertimos habernos equivocado. </li></ul><ul><li>En la figura siguiente ilustramos un modelo de desarrollo incremental. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  16. 16. Desarrollo Rápido de Software Modelo Incremental
  17. 17. <ul><li>Inconvenientes con este enfoque : </li></ul><ul><li>Sobre todo en las grandes compañías con procedimientos bastante rígidos y en organizaciones donde el desarrollo del software se subcontrata con un contratista exterior. </li></ul><ul><li>Los principales problemas con el desarrollo iterativo y la entrega incremental son: </li></ul>Desarrollo Rápido de Software Modelo Incremental
  18. 18. <ul><li>1. Problemas de administración. </li></ul><ul><li>La administración del software en sistemas grandes se diseña para tratar con entregas periódicas documentadas del Software, para evaluar el progreso. </li></ul><ul><li>Los sistemas desarrollados incrementalmente cambian tan rápido que no es rentable producir una gran cantidad de documentación del sistema. </li></ul><ul><li>El desarrollo incremental puede requerir tecnologías novedosas, para lograr una entrega más rápida del software. </li></ul><ul><li>Es difícil emplear al personal existente para el desarrollo incremental, porque carecen de las habilidades requeridas. </li></ul>Desarrollo Rápido de Software Modelo Incremental: Problemas
  19. 19. <ul><li>2. Problemas contractuales. </li></ul><ul><li>Un contrato normal entre un cliente y un desarrollador de software se basa en la Especificación del Sistema. </li></ul><ul><li>Cuando no existe tal Especificación ( Análisis ), es difícil acordar un contrato de Desarrollo del Sistema . </li></ul><ul><li>A los clientes no les gustan los contratos que paguen a los desarrolladores por el tiempo invertido en el proyecto (horas técnicas), ya que motivan que el sistema se desarrolle lentamente y se sobrepase el presupuesto. </li></ul><ul><li>Los desarrolladores no aceptarán un contrato con precio fijo, ya que no pueden controlar los cambios requeridos por los usuarios. </li></ul>Desarrollo Rápido de Software Modelo Incremental: Problemas
  20. 20. <ul><li>3. Problemas de validación. </li></ul><ul><li>En los procesos basados en el Análisis ( Cascada ), la Verificación y la Validación deben demostrar que el Sistema cumple su Especificación (pautas del Análisis ). </li></ul><ul><li>Un equipo independiente de V & V puede empezar a trabajar no bien esté disponible el Análisis y puede preparar pruebas, en paralelo con la Implementación del Sistema . </li></ul><ul><li>El Desarrollo Iterativo minimiza la Documentación y entrelaza la Especificación ( Análisis ) y el Desarrollo . </li></ul><ul><li>Por lo tanto, la Validación de estos sistemas es difícil. </li></ul>Desarrollo Rápido de Software Modelo Incremental: Problemas
  21. 21. <ul><li>4. Problemas de mantenimiento. </li></ul><ul><li>Los cambios continuos tienden a corromper la estructura del cualquier sistema. </li></ul><ul><li>Esto significa que cualquiera puede tener dificultades para entender el software. </li></ul><ul><li>Por lo tanto, puede ser difícil encontrar personas que tengan los conocimientos para mantener el sistema. </li></ul>Desarrollo Rápido de Software Modelo Incremental: Problemas
  22. 22. <ul><li>Hay algunos sistemas donde el desarrollo y la entrega rápidos no son el mejor enfoque. Por ejemplo: </li></ul><ul><li>Sistemas grandes en cuyo desarrollo trabajan equipos en diferentes lugares; </li></ul><ul><li>Sistemas « embebidos » donde el software depende del desarrollo del hardware </li></ul><ul><li>Sistemas « críticos », donde se deben analizar todos los requerimientos, para verificar las interacciones que puedan comprometer la seguridad o protección del sistema. </li></ul><ul><li>Estos sistemas sufren los mismos problemas de requerimientos inciertos y cambiantes. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  23. 23. <ul><li>Por lo tanto, para abordar estos problemas y conseguir algunos de los beneficios del desarrollo incremental, se puede utilizar un Proceso Híbrido en donde: </li></ul><ul><li>Se desarrolle de forma iterativa un Prototipo del Sistema </li></ul><ul><li>Se utilice el Prototipo como Plataforma para experimentar con los Requerimientos y el Diseño del Sistema . </li></ul><ul><li>Con la experiencia adquirida con el Prototipo , se puede tener una mayor seguridad de que los Requerimientos cumplen las necesidades reales de los usuarios del sistema. </li></ul>Desarrollo Rápido de Software Modelo Incremental
  24. 24. <ul><li>Con el término « prototipado» aludimos a un proceso iterativo con el que desarrollamos un sistema experimental no destinado al uso , por parte de los clientes. </li></ul><ul><li>Un prototipo del sistema ayuda a los desarrolladores de software y a los clientes a comprender qué se debe implementar . </li></ul><ul><li>Sin embargo, algunas veces se usa la expresión prototipado evolutivo como sinónimo del desarrollo de software incremental. </li></ul><ul><li>En ese caso, el prototipo no se descarta sino que se desarrolla para cumplir los requerimientos del usuario. </li></ul>Desarrollo Rápido de Software Prototipos
  25. 25. <ul><li>Esta figura muestra que el desarrollo evolutivo y el prototipado incremental tienen objetivos diferentes: </li></ul>Desarrollo Rápido de Software Prototipos Vs. Desarrollo Incremental
  26. 26. <ul><li>1. Objetivo del Desarrollo Incremental => entregar al usuario final un sistema funcional. </li></ul><ul><li>Normalmente comienza con los requerimientos que mejor se comprendan y con mayor prioridad. </li></ul><ul><li>Los requerimientos inciertos y de prioridad más baja se implementan cuando sean requeridos por los usuarios. </li></ul>Desarrollo Rápido de Software Prototipos Vs. Desarrollo Incremental
  27. 27. <ul><li>2. Objetivo del Prototipado Desechable => validar u obtener los requerimientos del sistema. </li></ul><ul><li>Se comiena con aquellos requerimientos que no se comprendan bien, ya que se requiere saber más sobre ellos. </li></ul><ul><li>Los requerimientos sencillos no se prototipan. </li></ul>Desarrollo Rápido de Software Prototipos Vs. Desarrollo Incremental
  28. 28. <ul><li>Otra diferencia importante entre ambos enfoques está en la Gestión de la Calidad de los Sistemas . </li></ul><ul><li>Los Prototipos Desechables tienen un periodo de vida muy corto. </li></ul><ul><li>Se los debe poder cambiar rápidamente durante el Desarrollo . </li></ul><ul><li>No requieren Mantenimiento a largo plazo. </li></ul><ul><li>En los Prototipos se puede permitir un rendimiento pobre y una baja fiabilidad; siempre y cuando ayude a entender los requerimientos . </li></ul>Desarrollo Rápido de Software Prototipos Vs. Desarrollo Incremental
  29. 29. <ul><li>Enfoque Incremental : las versiones iniciales que evolucionan hacia el sistema final se deben desarrollar con los mismos estándares de calidad que cualquier otro software . </li></ul><ul><li>Deben tener una estructura robusta para que se les pueda dar mantenimiento durante muchos años . </li></ul><ul><li>Deben ser fiables y eficientes , acordes con los estándares organizacionales apropiados. </li></ul>Desarrollo Rápido de Software Prototipos Vs. Desarrollo Incremental

×