Desarrollo Rápido de Software. Objetivos



Documentos relacionados
Procesos de Software

Procesos del software

El Ciclo de Vida del Software

Ingeniería de Software. Ingeniería de Requisitos Clase 4

Ingeniería de Requerimientos. requiere de un Sistema de Software.

9/9/2009. Introducción. Introducción. Introducción. Métodos Secuenciales. Métodos Secuenciales. Pruebas y La Vida del Ciclo de Desarrollo del Software

Desarrollo ágil basado en pruebas de aceptación

Pruebas de Software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

Fuente: Ian Sommerville. Ingeniería del Software, Séptima Edición

PROTOTIPOS: UN JUGUETE MUY VALIOSO

Tema II Ciclo de Vida del Software

Introducción a la Ingeniería de Software. Tema 2: Modelos de Proceso

DOCUMENTACIÓN REQUERIMIENTOS

Modelos de Procesos: Prescriptivo

Proceso de Testing Funcional Independiente

Ingeniería en Desarrollo de Software 3 er semestre. Programa de la asignatura: Introducción a la ingeniería de software

Aseguramiento de Calidad en el Desarrollo de Software Libre

UNIVERSIDAD TECNOLÓGICA DE PEREIRA FUNDAMENTOS DE LA METODOLOGIA RUP RATIONAL UNIFIED PROCESS JUAN PABLO GOMEZ GALLEGO ING JORGE GALVES

Ingeniería de Software: Y eso qué es?

Análisis e Ingeniería de Requisitos

ANEXO TECNICO. Fábrica de Software

La ingeniería del software es una disciplina de ingeniería que comprende todos los aspectos de la producción de software.

Proceso Unificado de Desarrollo de Software. 13 de sep de 2006

Modelos de desarrollo de sistemas

Clasificación de las Herramientas CASE

Ingeniería del Software 2

METODOLOGIA UNACAR BASADO EN SCRUM

MODULO III. Análisis y Diseño de Sistemas de Información INF-162 III. RUP. 3.1 Introducción. Facilitador: Miguel Cotaña 26 de Abril

CAPÍTULO I Investigación Preliminar

Ingeniería del Software Herramientas CASE Que es CASE? Ingeniería de sistemas asistida por computadoras (Computer-aised system engineering, o CASE)

INGENIERIA DE SOFTWARE

Modelos de Procesos de desarrollo de Software I NGENIERIA D E S O F T WA R E P R I MAVERA

Rational Unified Process

Implementacion y prueba de unidades. Figura 2.1. El ciclo de vida del software. 1

Interfaz Humano Computadora DRA. LETICIA FLORES PULIDO PRIMAVERA 2012

MODELOS COMUNES PARA DESARROLLO DE SOFTWARE MODELO LINEAL SECUENCIAL

ANÁLISIS DE SISTEMAS. Prof. Eliz Mora

VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS

06/10/2009. Qué es el Ciclo de Vida del SW? La norma Modelos de desarrollo

Ingeniería de Software: Metodologías

I JORNADAS DE COMPUTACIÓN Y SISTEMAS Universidad Dr. José Gregorio Hernández Maracaibo

FATTO CONSULTORIA Y SISTEMAS

BUENAS PRACTICAS EN DESARROLLO DE SOFTWARE APUNTES DE UNA EXPERIENCIA

PROCESOS PARA LA INGENIERÍA DE SOFTWARE. Facultad de Estadística e Informática

PROGRAMACIÓN EXTREMA (XP) EXTREME PROGRAMMING (XP)

Conceptos Básicos de Ingeniería del Software

Capítulo 3. Metodología

Requerimientos de Software

octubre de 2007 Arquitectura de Software

Cuestionario global de Interacción Humano-Computadora

CICLO DE VIDA DEL SOFTWARE

FATTO Consultoría y Sistemas - Manejo de contratos de fábrica de software con SCRUM vía puntos de función

El Proceso. Capítulo 2 Roger Pressman, 5 a Edición. El Proceso de Desarrollo de Software

Array Development. Array Development Plan de Pruebas de Aceptación Versión 1.0

Especificación de requisitos de software

INGENIERIA DE SOFTWARE ING. FRANCISCO RODRIGUEZ

Unidad III. Análisis y diseño de IHC Modelos de ciclo de vida en el diseño de IHC.

El Proceso de Ingeniería Web. Rogelio Ferreira Escutia

Ingeniería de Software: Metodologías

Ingeniería de Sistemas. Objetivos. Que es un Sistema? Tópicos. Ingeniería de Software y Sistemas. Problemas con la Ingeniería de Sistemas

Figure 12-1: Phase D: Technology Architecture

DESARROLLO DE APLICACIONES WEB EN EL ENTORNO SERVIDOR 90h

Uso de Metodología ICONIX

Transcripción:

Desarrollo Rápido de Software Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1 Objetivos Explicar como un proceso iterativo e evolutivo de desarrollo conduce a una entrega más rápida de un software más útil. Discutir la esencia de los métodos de desarrollo ágil. Explicar los principios y las prácticas de la programación extrema. Explicar los roles del prototipado en el proceso de software. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 2

Tópicos Cubiertos Métodos ágiles Programación extrema Desarrollo rápido de aplicaciones Prototipado del software Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 3 Desarrollo Rápido de Software Debido a los cambios rápidos en los entornos de negocios, los mismos tienen que responder a las nuevas oportunidades y competencias. Esto requiere de software y desarrollo rápido, en donde la entrega no siempre es el requerimiento más critico para sistemas de software. Los negocios pueden desear aceptar software de baja calidad si una rápida entrega de la funcionalidad esencial es posible. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 4

Requerimientos Debido al entorno cambiante, es casi imposible llegar a un conjunto estable y consistente de requerimientos del sistema. Por lo tanto, un modelo de desarrollo cascada es impráctico y un enfoque al desarrollo basado en iteración de especificación y entrega es la única manera de entregar un software rápido. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 5 Características de los procesos RAD Los procesos de especificación, diseño e implementación son concurrentes. No hay especificación detallada y la documentación del diseño es minimizada. El sistema es desarrollado en una serie de incrementos. Los usuarios finales evalúan cada incremento y hacen propuestas para incrementos posteriores. Las interfaces de usuario de sistemas son usualmente desarrolladas usando un sistema de desarrollo interactivo. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 6

Un Proceso de Desarrollo Iterativo Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 7 Ventajas del Desarrollo Evolutivo Entrega acelerada de servicios de clientes. Cada evolución entrega la prioridad de funcionalidad más alta para el cliente. Compromiso del usuario con el sistema. Los usuarios tienen que estar involucrados en el desarrollo, lo que significa que el sistema es más propenso a realizar sus requerimientos y los usuarios están más comprometidos con el sistema. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 8

Problemas con el desarrollo incremental Problemas de gestión Puede que el progreso sea difícil de trazar y los problemas difíciles de encontrar porque no hay documentación para demostrar lo que se ha hecho. Problemas contractuales El contrato normal puede incluir una especificación; sin una especificación, diferentes formas de contrato deben ser usadas. Problemas de validación Sin una especificación, con qué el sistema será testeado? Problemas de mantenimiento Continuos cambios tienden a corromper la estructura del software haciéndolo más caro cambiar y evolucionar para satisfacer los nuevos requerimientos. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 9 Prototipado Para algunos grandes sistemas, el desarrollo y la entrega iterativa e evolutiva puede que sea impráctica; esto es especialmente verdad cuando múltiples equipos están trabajando en diferentes lugares. Prototipado, cuando un sistema experimental es desarrollado como base para formular los requerimientos que pueden ser usados. Este sistema es botado cuando las especificaciones de sistemas han sido acordadas. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 10

Prototipado y Desarrollo Evolutivo Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 11 Objetivos Conflictivos El objetivo del desarrollo evolutivo es el de entregar un sistema funcionando a los usuarios finales. El desarrollo comienza con lo requerimientos mejores entendidos. El objetivo del prototipado desechable es el de validar o derivar los requerimientos de sistema. El proceso del prototipado comienza con aquellos requerimientos que han sido poco comprendidos. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 12

Métodos Ágiles El descontento con los métodos pesado en diseño condujo a la creación de métodos ágiles. Estos métodos: Enfocarse en el código más que en el diseño; Están basados en un enfoque iterativo al desarrollo de software; Están intencionados a entregar software funcional rápidamente y evolucionarlo rápidamente hasta alcanzar los requerimientos. Metodologías ágiles probablemente son mejor adecuadas a los sistemas de empresas pequeñas o medianas o a los productos para PC. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 13 Principios de los Métodos Ágiles Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 14

Problemas con los métodos ágiles Es difícil mantener el interés en los clientes que están involucrados en el proceso. Los miembros del equipo pueden no ser adecuados para la participación intensiva que caracterizan los métodos ágiles. Priorizar los cambios puede ser difícil si hay múltiples stakeholders. Mantener la simplicidad puede requerir trabajo extra Los contratos pueden ser un problema así como cualquier otro enfoque al desarrollo iterativo. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 15 Programación Extrema Tal vez sea el método ágil más conocido y más utilizado. Programación extrema (XP) toma un enfoque extremo al desarrollo iterativo. Nuevas versiones pueden ser construidas varias veces al día; Evoluciones son entregadas a los clientes cada 2 semanas; Todas las pruebas deben ser realizadas para cada construcción y la construcción es solo aceptada si pasa todas las pruebas. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 16

El Ciclo de Entrega de la XP Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 17 Prácticas de Programación Extrema 1 Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 18

Prácticas de Programación Extrema 2 Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 19 Principios de Ágiles y XP Desarrollo evolutivo es apoyado por entregas pequeñas y frecuentes de sistemas. La participación del cliente significa un compromiso de tiempo completo con el equipo. La gente no procesa a través de la programación en parejas, propiedad colectiva y en un proceso que evita largas horas de trabajo. Cambios apoyados a través de las entregas regulares del sistema. Mantener la simplicidad a través de la refactorización constante del código. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 20

Escenarios de Requerimientos En XP, los requerimientos de usuario son expresados como escenarios o historias del usuario. Estos son escritos en tarjetas y el equipo de desarrollo las desglosa en tareas de implementación. Estas tareas son la base para estimar el horario y los costos. El cliente escoge la historia para la inclusión de la siguiente entrega basado en sus prioridades y en el horario estimado. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 21 Tarjeta de Historia para Descarga de Documentos Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 22

XP y Cambio El deseo convencional en ingeniería del software es el de diseñar para el cambio. Vale la pena gastar tiempo y esfuerzo anticipando cambios para así reducir costos posteriormente en su ciclo de vida. XP, sin embargo, mantiene que esto no vale la pena ya que los cambios no pueden ser confiablemente anticipados. En vez de ello, propone una mejora constante del código (refactorización) para hacer los cambios más fáciles cuando tengan que ser implementados. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 23 Pruebas en XP Desarrollo de la primera prueba. Pruebas de desarrollo evolutivas desde escenarios. Participación del usuario en el desarrollo y validación de pruebas. Pruebas de dureza automatizadas son usadas para correr todos los componentes de las pruebas cada vez que una nueva entrega haya sido construida. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 24

Tarjetas de Tareas para la Descarga de Documentos Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 25 Descripción del Caso de Prueba Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 26

Desarrollo de la Primera Prueba Escribir las pruebas antes de codificarlas clarifica los requerimientos a ser implementados. Las pruebas son escritas como programas más que como información, por ello pueden ser ejecutadas automáticamente. La prueba incluye una verificación que la prueba ha sido ejecutada correctamente. Todas las anteriores y nuevas pruebas son automáticamente puestas en marcha, cuando una nueva funcionalidad ha sido añadida. Además verificar que la nueva funcionalidad no induce a errores. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 27 Programación en Parejas En XP, los programadores trabajan en parejas, sentándose juntos para desarrollar código. Esto ayuda a desarrollar una propiedad del código común y propaga el conocimiento a través del equipo. Esto sirve como un proceso de revisión informal ya que cada línea de código es observada por más de una persona. Esto alienta la refactorización ya que todo el equipo puede beneficiarse de esto. Mediciones indican que la productividad del desarrollo con programación en parejas es similar a la de 2 personas trabajando independientemente. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 28

Desarrollo Rápido de Aplicaciones Los métodos ágiles han recibido mucha atención pero otros enfoques de desarrollo rápido de aplicaciones has sido usadas por mucho tiempo. Estos son diseñados a desarrollar aplicaciones de negocios de información intensiva y dependen en la programación y presentación de información de la base de datos. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 29 Herramientas del Entorno RAD Lenguaje de programación de base de datos Generados de interfaces Enlaces a aplicaciones de oficina Generador de informes Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 30

Un Entorno RAD Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 31 Generación de Interfaces Muchas aplicaciones están basadas alrededor de complejas formas y el desarrollo de estas formas manualmente es una actividad de consumo de tiempo. Los entornos RAD incluyen soporte para la generación de pantalla incluyendo: Definición de formas interactivas usando técnicas arrastrar y soltar ; Enlace de formas donde la secuencia de formas a ser presentada está especificada; Verificación de formas donde los rangos permitidos en los campos de forma están definidos. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 32

Programación Visual Lenguajes encriptados como el Visual Basic soportan programación visual donde el prototipo es desarrollado mediantes la creación de un interfaz de usuario desde objetos estándar y la asociación de componentes con estos objetivos. Una gran librería de componentes existe para soportar este tipo de desarrollos. Esto puede ser ajustado para encajar a los requerimientos específicos de aplicación. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 33 Programación Visual con Reutilización Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 34

Problemas con el Desarrollo Visual Dificultad de coordinar el desarrollo basado en equipo. No hay arquitectura explícita de sistema. Dependencias complejas entre las partes del programa pueden causar problemas de mantenibilidad. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 35 Reutilización de COTS Un enfoque efectivo al desarrollo rápido es el de configurar y enlazar los existentes sistemas ya disponibles. Por ejemplo, un sistema de manejo de requerimientos puede ser construido usando: Una base de datos para guardar requerimientos; Un procesador de texto para capturar los requerimientos y los formatos de informe; Una hoja de cálculo para el manejo de la trazabilidad. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 36

Documentos Compuestos Para algunas aplicaciones, un prototipo puede ser creado por el desarrollo de un documento compuesto. Este es un documentos con elementos activos ( tales como una hoja de cálculo ) que permite cómputos del usuario. Cada elemento activo tiene una aplicación asociada la cual es invocada cuando ese elemento es seleccionado. El documento en si es el integrador para las diferentes aplicaciones. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 37 Vinculación de Aplicaciones Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 38

Prototipado de Software Un prototipo es una versión inicial de un sistema usado para demostrar conceptos y probar las opciones de diseño. Un prototipo puede ser usado en: El proceso de ingeniería de requerimientos a ayudar con obtener los requerimientos y la validación; En procesos de diseño para explorar opciones y desarrollar un diseño de interfaz de usuario; En el proceso de pruebas para hacer funcionar pruebas back to back. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 39 Beneficios del Prototipado Mejorar la usabilidad del sistema. Una mayor aproximación a las necesidades reales del usuario. Calidad de diseño mejorado. Mantenibilidad mejorada. Esfuerzo de desarrollo reducido. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 40

Pruebas Back to Back Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 41 El Proceso de Prototipado Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 42

Prototipos Desechables Prototipos deben ser descartados después del desarrollo ya que ellos no son una buena base para la producción de un sistema: Puede que sea imposible de modificar el sistema para satisfacer los requerimientos no funcionales; Los prototipos normalmente no están documentados; La estructura del prototipo es usualmente degradada debido al cambio rápido; El prototipo probablemente no alcanzará los estándares de calidad organizacionales normales. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 43 Puntos Claves Un enfoque iterativo al desarrollo del software conduce una entrega más rápida del software. Los métodos ágiles son métodos de desarrollo iterativo que ayuda a reducir el formalismo del desarrollo y así producir software más rápidamente. Programación extrema incluye practicas tales como pruebas sistemáticas, mejora continua y participación del cliente. Un enfoque de pruebas en XP es una fuerza particular donde pruebas ejecutables son desarrolladas antes que el código fuera escrito. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 44

Puntos Claves Los entornos de desarrollo rápido de aplicaciones incluyen lenguajes de programación de base de datos, herramientas de generación de formas y vínculos a aplicaciones de oficina. Un prototipo desechable es utilizado para explorar los requerimientos y las opciones de diseño. Cuando se implementa un prototipo desechable, comienza con los requerimientos menos entendidos; en desarrollo evolutivo, comienza con los requerimientos mejor entendidos. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 45