Curso: Evaluacin y Mejora del Proceso de Software Profesor: MSc. Javier Snchez Espinoza
Set. 2013
CONTENIDO Qu es la agilidad? Mtodos giles Scrum Programacin Extrema XP Conclusiones Bibliografia
Qu es la Agilidad? Una Filosofa gil para la Ingeniera de Software se relaciona con cuatro aspectos claves: la importancia de la organizacin propia de los equipos (controlan el trabajo que realizan) comunicacin y colaboracin entre sus miembros del equipo (profesionales y clientes) un reconocimiento de que el cambio representa una oportunidad especial cuidado de entrega rpida del software que satisfaga al cliente. [1]
Mtodos giles Nace con el descontento de los SWs pesados (CASE) Dcada del 90 se propone los nuevos mtodos giles Los equipos de desarrollo se centran en el SW mismo en vez de su diseo y documentacin. Dependen de un enfoque iterativo para la especificacin, desarrollo y entrega del SW Diseados para apoyar el desarrollo de aplicaciones de negocio donde los requerimientos del sistema normalmente cambian rpidamente durante el proceso de desarrollo. Entregan SW funcional de forma rpida a los clientes, que proponen que se incluyan en iteraciones posteriores del sistema nuevos requerimientos o cambios en los mismos. [2] SCRUM Video http://www.youtube.com/watch?v=swDXPWoZfKQ
SCRUM - Orgenes "The New Product Development Game" (Harvard Business Review 86116:137-146, 1986)
"The Knowledge Creating Company" Ikujiro Nonaka y Hirotaka Takeuchi (Universidad de Oxford, 1995). OOPSLA95 (Object-Oriented Programming Systems, Languages, and Applications 1995). Jeff Sutherland Ken Schwaber.
PLOP Scrum pattern (Pattern Languages of Programs 1998). Mike Beedle, Linda Rising, et al. SCRUM - Caractersticas Equipos auto-organizados El producto progresa en una serie de sprints que duran un mes Los requerimientos se encuentran en el product backlog reunidos en una lista No contiene practicas de ingeniera pre-descriptas Utiliza reglas generales para crear un ambiente gil para la liberacin de los proyectos Usado para proyectos complejos con requerimientos cambiantes Basado en un control de proceso emprico
Control de Proceso Emprico Es tpico adoptar un enfoque de modelado definido (terico) cuando los mecanismos subyacentes por el cual el proceso opera son razonablemente bien entendidos. Cuando el proceso es demasiado complicado para el enfoque definido, el enfoque emprico es la eleccin apropiada. Process Dynamics, Modeling and Control B. A. Ogunnaike y W.H. Ray,
Bases Visibilidad Inspeccin Adaptacin
SCRUM - Estructura
Esqueleto de SCRUM Proceso iterativo e incremental
Corazn de SCRUM Iteraciones
SCRUM Ciclo de Vida Todo el trabajo es realizado en Sprints (30 das) Durante el Sprint (carrera) se realizan reuniones que constituyen la inspeccin emprica y las practicas de adaptacin de Scrum.
Sprint Reunin de planeamiento del Sprint (< 8hs) Primeras 4hs Requerimientos a realizarse en el sprint Segundas 4hs Plan de trabajo del sprint SCRUM Ciclo de Vida Daily sprint (< 15min) Qu has hecho en este proyecto desde el ultimo Daily sprint? Qu planeas hacer en el proyecto entre hoy y la prxima reunin Daily Scrum? Qu impedimentos se te han presentado para lograr lo prometido en el Sprint y proyecto? Sprint Review (< 4hs) Presentacin de lo desarrollado durante el sprint Sprint Retrospective (< 3hs) Revisin y anlisis del proceso de desarrollo
SCRUM Ciclo de Vida SCRUM Roles Product owner (dueo del producto)
Team (equipo)
ScrumMaster SCRUM Artefactos Product backlog
Sprint backlog
Incremento de una funcionalidad del producto potencialmente despachable [3]
eXtreme Programming [4] Qu es XP? Es una metodologa gil Diseada para entornos dinmicos Pensada para equipos pequeos (hasta 10 programadores) Orientada fuertemente hacia la codificacin nfasis en la comunicacin informal, verbal
Historia de XP Creado por Kent Beck para la plantilla del proyecto C3 en Chrysler Kent fue contratado para dirigir el proyecto Durante el proceso naci una nueva metodologa: eXtreme Programming (XP) C3 concluy exitosamente en 1997
Valores que fomenta XP Comunicacin
Simplicidad
Retroalimentacin
Coraje
Roles XP
Programador (Programmer) Responsable de decisiones tcnicas Responsable de construir el sistema Sin distincin entre analistas, diseadores o codificadores En XP, los programadores disean, programan y realizan las pruebas Jefe de Proyecto (Manager) Organiza y gua las reuniones Asegura condiciones adecuadas para el proyecto
Cliente (Customer) Es parte del equipo Determina qu construir y cundo Establece las pruebas funcionales Roles XP
Encargado de Pruebas (Tester) Ayuda al cliente con las pruebas funcionales Se asegura de que las pruebas funcionales se superan Rastreador (Tracker) Metric Man Observa sin molestar Conserva datos histricos Entrenador (Coach) Responsable del proceso Tiende a estar en un segundo plano a medida que el equipo madura
Captura de Requisitos en XP Historias del Usuario (User-Stories) Establecen los requisitos del cliente Trozos de funcionalidad que aportan valor Se les asignan tareas de programacin con un n de horas de desarrollo Las establece el cliente Son la base para las pruebas funcionales Captura de Requisitos en XP Una ficha de User-Story Planificacin en XP Planificacin por entregas (releases) Se priorizan aquellas user-stories que el cliente selecciona porque son ms importantes para el negocio Entregas: Son lo ms pequeas posibles Se dividen en iteraciones (iteracin = 2 o 3 semanas) Estn compuestas por historias A cada programador se le asigna una tarea de la user- story Programacin en XP La programacin de tareas se realiza por parejas
La pareja disea, prueba, implementa e integra el cdigo de la tarea
Cdigo dirigido por las pruebas
Cdigo modular, intentando refactorizar siempre que se pueda
Programacin en XP Una ficha de Tarea Modelo de un Proyecto XP Espacio de trabajo XP Espacio abierto Mesas centrales Cubculos en el espacio exterior Espacio de trabajo del proyecto C3 de DaimlerChrysler Prcticas XP
El juego de la planificacin Entregas pequeas Metfora Diseo simple Pruebas Refactoring
Programacin en parejas Propiedad colectiva Integracin contnua Semana de 40 horas Cliente in situ Estndares de programacin Prcticas XP El Juego de la planificacin Decisiones de negocio (cliente): Alcance Cundo debe estar listo el producto para que sea valioso en produccin? Prioridad Prioriza la incorporacin de las user- stories Composicin de entregas Qu se necesita para que el negocio sea mejor antes de tener el sw? Fechas de entrega Fechas cuando el software funcionando causara una gran diferencia Prcticas XP ... El Juego de la planificacin Decisiones tcnicas (programadores y otros): Estimaciones Cunto tiempo tardar en implementarse una user-story? Consecuencias Tener en cuenta las consecuencias tcnicas de determinadas decisiones de negocio Proceso Organizacin del proceso y el equipo Planificacin detallada Dentro de una entrega, qu user-stories se realizan primero. Intentar trasladar los segmentos de desarrollo ms arriesgados al principio, intentando respetar las prioridades del negocio
Prcticas XP ... El Juego de la planificacin Reunin diaria XP
Reunin diaria Stand-up Meeting Todo el equipo Problemas Soluciones De pie en un crculo Evitar discusiones largas Sin conversaciones separadas Prcticas XP Entregas pequeas Cada entrega es lo ms corta posible: Contenga requisitos ms valiosos del sistema (bsicos) Reducen el riesgo mayor retroalimentacin desde el cliente, y ms frecuente Minimizar el n de user-stories que componen una entrega No realizar user-stories a medias
Prcticas XP Metfora Cada proyecto XP es guiado por una metfora global
Da un contexto al equipo para entender los elementos bsicos y sus relaciones
Proporciona integridad conceptual
Prcticas XP Diseo simple Se disea la cosa ms simple que pueda funcionar Uso de tarjetas CRC Diseo de software correcto, es aquel que: Supera todas las pruebas No tiene lgica duplicada Pone de manifiesto las intenciones importantes de los programadores Tiene el mnimo nmero de clases y mtodos
Prcticas XP Pruebas Las pruebas unitarias se escriben ANTES que el cdigo Pruebas automatizadas Permiten el desarrollo de proyectos de forma rpida y segura Pruebas unitarias programadores Pruebas funcionales cliente Resultado Un programa cada vez ms seguro Prcticas XP Refactoring Refactorizacin = Mejora del cdigo
Intentar eliminar complejidad
Cdigo duplicado Refactorizacin
Se plantea su aplicacin despus de implementar cada user-story [5]
Prcticas XP Programacin en parejas Toda el cdigo se escribe en parejas Se produce cdigo de mayor calidad Extiende el conocimiento
Se realiza el trabajo de una persona en casi la mitad del tiempo y mejor (cuestionable)
[6] Prcticas XP Propiedad colectiva Cualquiera puede modificar el cdigo en cualquier momento Se evitan cuellos de botella en la codificacin
Todos asume las responsabilidades sobre el conjunto del sistema
Todos conocen algo sobre todas las partes y conocen muy bien aqullas en las que trabajan Prcticas XP Integracin contnua El cdigo se integra y se prueba despus de pocas horas
Existe una computadora dedicada para la integracin
Cada pareja integra su cdigo en dicha computadora
Prcticas XP Semana de 40 horas Filosofa: Los programadores que descansan son ms productivos
El exceso de trabajo es un serio problema en un proyecto
La gente est ms fresca y tiene mejores ideas
Prcticas XP Cliente in situ Cliente real = Aquel que usar el sistema cuando est en produccin
El cliente real debe estar con el equipo de trabajo: Responder preguntas Resolver disputas Establecer prioridades Discutir mejoras
Prcticas XP Estndares de programacin Son fundamentales cuando los programadores cambian de pareja o hacen refactoring del cdigo de otros
Se consigue un cdigo con el mismo estilo, homogneo, legible Prcticas XP Interaccin entre Prcticas XP: Kent Beck CONCLUSIONES La dinmica de grupo da buenos resultados Se presenta la tendencia global de mejoras continuas en los desarrollos de SWs Es un mtodo para las personas que se resisten en trabajar por procesos En un futuro se podr hacer comparaciones sobre lo que es mas conveniente A los clientes les gusta el control aadido
libertario, ria. 1. adj. Que defiende la libertad absoluta y, por lo tanto, la supresin de todo gobierno y de toda ley. V. Trasparencia traducida desde A History of Agile Methods presentada por Alan Davis en las JISBD 2003 (Noviembre 2003, El Escorial, Espaa) BIBLIOGRAFIA [1] Ingeniera de Software, un enfoque practico, Roger S. Pressman, 6ta. Edicin, Ed. Mc Graw Grill 2005 [2] Ingeniera de Software, Ian Sommerville, 7ma. Edicin, Ed. Pearson 2005 [3] www.fing.edu.uy/inco/cursos/gestsoft/Presentaciones/Procesos%20 Agiles%20-%20G4/Procesos%20Agiles.ppt [4] http://users.dsic.upv.es/asignaturas/facultad/lsi/doc/MetodologiasAgi lesyExtremeProgramming.ppt [5] www.refactoring.com [6] www.pairprogramming.com