Desarrollo de Software Ágil: Extreme Programming y Scrum
5/5
()
Información de este libro electrónico
El desarrollo de software es una actividad diferente de toda la industria construida desde los tiempos de la revolución industrial.
Las prácticas comunes en otras áreas de la ingeniería son ineficientes para el desarrollo de Software ya que un proyecto de software necesita un control empírico sobre el proceso.
El software es un producto empírico, por lo que es un error adoptar procesos prescriptivos rígidos en proyectos de software, en cambio las metodologías ágiles reconocen la naturaleza empírica del software y están preparadas para acoger los cambios frecuentes, ofrecen rapidez para realizar los cambios idóneos a partir del feedback de los usuarios y se presentan con metodologías leves, enfocadas al software funcional en vez del formalismo y de la documentación extensa.
José Rubén Laínez Fuentes
José Rubén es Ingeniero de Sistemas y tiene más 15 años de experiencia en la gestión de equipos de programación, abandonando los grandes proyectos de software basados en la ingeniería de software tradicional centrándose en la construcción de software con equipos de desarrollo ágil.
Relacionado con Desarrollo de Software Ágil
Libros electrónicos relacionados
Desarrollo de Software Ágil. Extremme Programming y Scrum Calificación: 4 de 5 estrellas4/5Desarrollo de Software: Requisitos, Estimaciones y Análisis Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesEl Proceso de Desarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesConceptos Básicos De Scrum: Desarrollo De Software Agile Y Manejo De Proyectos Agile Calificación: 5 de 5 estrellas5/5Diseño de Software Calificación: 0 de 5 estrellas0 calificacionesCurso de Ingeniería de Software Calificación: 4 de 5 estrellas4/5El Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5Scrum: Cómo utilizar el esquema llamado Scrum para obtener mayor producción mientras aumenta la calidad Calificación: 4 de 5 estrellas4/5Agile & Scrum Calificación: 0 de 5 estrellas0 calificacionesEl Proceso de Desarrollo de Software: 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesAgile Project Management para Principiantes: Dominar los Conocimientos Básicos con Scrum Calificación: 4 de 5 estrellas4/5Metodologías ágiles para el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesScrum: Lo que necesita saber sobre esta metodología ágil para la gestión de proyectos Calificación: 5 de 5 estrellas5/5UF2406 - El cliclo de vida del desarrollo de aplicaciones Calificación: 0 de 5 estrellas0 calificacionesUna guía para el Cuerpo de conocimiento de Scrum (Guía SBOK) – 3a Edición Calificación: 4 de 5 estrellas4/5UML: Modelado de Software para Profesionales Calificación: 0 de 5 estrellas0 calificacionesUF2218 - Desarrollo de un CMS Calificación: 0 de 5 estrellas0 calificacionesAgile: Una guía para la Gestión de Proyectos Agile con Scrum, Kanban y Lean Calificación: 5 de 5 estrellas5/5Guía práctica de Kubernetes: Proyectos para crear aplicaciones de éxito con Kubernetes Calificación: 0 de 5 estrellas0 calificacionesCalidad en el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesEl Método Agile: Lo que Necesita Saber Sobre Gestión de Proyectos Agile, el Proceso Kanban, Pensamiento Lean, y Scrum Calificación: 5 de 5 estrellas5/5Project Management para mejorar IT Calificación: 0 de 5 estrellas0 calificacionesLegacy Code Calificación: 0 de 5 estrellas0 calificacionesDiseño de algoritmos y su programación en C Calificación: 0 de 5 estrellas0 calificacionesDe qué hablo cuando hablo de programar (volumen 2) Calificación: 0 de 5 estrellas0 calificacionesProject management: Un enfoque de liderazgo y ejecución de proyectos en la empresa Calificación: 1 de 5 estrellas1/5Dirección y gestión de proyectos de tecnologías de la información: Liderazgo del cambio para transformar las Empresas de la Sociedad Digita Calificación: 0 de 5 estrellas0 calificacionesEl arte de probar: Guía sobre software testing para principiantes. Calificación: 0 de 5 estrellas0 calificaciones
Desarrollo e ingeniería de software para usted
Scrum para No Informáticos Calificación: 5 de 5 estrellas5/5El Libro Negro del Programador Calificación: 4 de 5 estrellas4/5Design Thinking para principiantes: La innovación como factor para el éxito empresarial Calificación: 4 de 5 estrellas4/5Lean Startup: Cómo trabajar de manera más inteligente y no más duro mientras se innova más rápido y se satisface a los clientes Calificación: 4 de 5 estrellas4/5Autocad 2017 Curso Práctico: APLICACIONES GRÁFICAS Y MULTIMEDIA Calificación: 3 de 5 estrellas3/5Curso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5Scrum: Cómo utilizar el esquema llamado Scrum para obtener mayor producción mientras aumenta la calidad Calificación: 4 de 5 estrellas4/5The Coder Habits: Los 39 Hábitos Del Programador Profesional Calificación: 5 de 5 estrellas5/5Ingeniería y Arquitectura del Software Calificación: 3 de 5 estrellas3/5Agile: Una guía para la Gestión de Proyectos Agile con Scrum, Kanban y Lean Calificación: 5 de 5 estrellas5/5Software ERP - Análisis y Consultoría de Software Empresarial Calificación: 0 de 5 estrellas0 calificacionesDesarrollo Web en Java Calificación: 3 de 5 estrellas3/5Gestión de Proyectos (GRADO SUPERIOR) Calificación: 0 de 5 estrellas0 calificacionesRevit MEP 2018 Curso Práctico: Diseño asistido por ordenador (CAD) Calificación: 3 de 5 estrellas3/5Programación shell. Aprende a programar con más de 200 ejercicios resueltos: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 5 de 5 estrellas5/5Unix Programacion Avanzada, 3ª edicion.: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5Desarrollo Global de Software Calificación: 0 de 5 estrellas0 calificacionesDiseño mecánico con Solidworks 2015: Gráficos y modelado en 3D Calificación: 5 de 5 estrellas5/5Agile Project Management para Principiantes: Dominar los Conocimientos Básicos con Scrum Calificación: 4 de 5 estrellas4/5Google SketchUp Pro 8 paso a paso en español Calificación: 0 de 5 estrellas0 calificacionesAprende a Modelar Aplicaciones con UML Calificación: 1 de 5 estrellas1/5Dirección y gestión de proyectos de tecnologías de la información: Liderazgo del cambio para transformar las Empresas de la Sociedad Digita Calificación: 0 de 5 estrellas0 calificacionesAprende a Desarrollar con Spring Framework Calificación: 3 de 5 estrellas3/5Curso de Introducción a la Administración de Bases de Datos Calificación: 3 de 5 estrellas3/5El Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5Metodologías ágiles para el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesProgramación de Servicios y Procesos (GRADO SUPERIOR): PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 3 de 5 estrellas3/5LabVIEW: Entorno gráfico de programación Calificación: 4 de 5 estrellas4/5Calidad de Sistemas de Información. 3ª edición ampliada y actualizada Calificación: 5 de 5 estrellas5/5
Comentarios para Desarrollo de Software Ágil
1 clasificación0 comentarios
Vista previa del libro
Desarrollo de Software Ágil - José Rubén Laínez Fuentes
ISBN: 978-1502952226
TABLA DE CONTENIDOS
Introducción...................................................6
Acostúmbrese a los cambios.....................................8
El Ciclo de Desarrollo ÁGIL..........................12
¿Cuáles son los ciclos ágiles?................................14
¿Qué es el ciclo ágil de un día?.............................16
El Anti-Patrón
: Casos de Uso - UML - Codificación -Pruebas
........................................................................................................20
Test-Driven Development (TDD)...........................23
La implementación de la historia de usuario...24
Diseño Incremental...................................................34
Integración Continua...............................................36
Otras prácticas importantes...................................38
Conclusión...................................................................39
Los Casos de Uso..........................................41
Contar los Puntos del Caso de uso (UCP)..........41
Calculando los puntos no ajustado a los casos de uso (UUCP).42 Calculando el Factor de Complejidad del Entorno (ECF) 46
Estimando el esfuerzo..............................................48
Determinando la productividad............................49
Extensiones..................................................................50
La Planificación ÁGIL..............................................53
La Visión del Proyecto..............................................53
Las Historias de Usuario.........................................55
El juego de la Planificación....................................60
La Planificación de Releases..................................61
La Planificación de Iteraciones.............................64
Estimaciones...............................................................67
Conclusiones...............................................................70
La Gestión de Proyecto ÁGIL...............................71
La influencia del Manifiesto Ágil de 2001.........71
El control empírico del proceso............................74
Los requisitos detallados.........................................79
Caso de Estudio..........................................................80
Alcance, plazo y coste...............................................82
Estimaciones y métricas ágiles.............................87
Las iteraciones............................................................89
Auto-organizable........................................................94
Diagramas de Gantt en los proyectos de software 102
No confundir tradicionalismo con desconocimiento 109
Conclusión.................................................................110
Aplicación de Extreme Programming (XP).112
Metodologías Ágiles...............................................113
Extreme Programming (XP).................................116
Valores de Extreme Programming..............................117
Prácticas de Extreme Programming...........................119
Principios de Extreme Programming..........................123
Cuando utilizar Extreme Programming......................124
Ejemplo de Aplicación de Extreme Programming 126
Empresa TECNOCOMPRO..........................................126
Conclusiones.............................................................134
Scrum............................................................................137
El Scrum Master......................................................140
Dificultades del Scrum..........................................141
Referencias Bibliográficas.................................144
Acerca del Autor......................................................146
INTRODUCCIÓN
El desarrollo de software es una actividad diferente de toda la industria construida desde los tiempos de la revolución industrial.
Las prácticas comunes en otras áreas de la ingeniería son ineficientes para el desarrollo de Software ya que un proyecto de software necesita un control empírico sobre el proceso.
El proceso prescriptivo
Las ingenierías más clásicas sieguen los procesos prescriptivos en la fabricación de los productos, como por ejemplo: construcción de edificaciones o las líneas de montaje.
Un proceso prescriptivo posee una estructura de control bien definida con puntos de observación:
Cada paso recorrido, menor incertidumbre
Proceso previsible
Adecuado para las situaciones en que la incertidumbre es baja: las variables de entrada son conocidas y el producto final se puede estimar con gran precisión de acierto.
Característica común: alto coste de reconstrucción o reparación de las fallas del producto final.
El proceso empírico
El empirismo es la teoría que afirma que el conocimiento surge principalmente de la experimentación sensorial. Un proceso empírico está caracterizado por el aprendizaje adquirido a partir de la experimentación y de las adaptaciones realizadas para mejorar el proceso, es decir: Haciendo y Aprendiendo.
Adecuado en las situaciones en que la incertidumbre es alta: donde los cambios son frecuentes y el producto final es difícil de ser estimado.
La incertidumbre en los proyectos de software deriva de diversos factores:
Los requisitos recolectados pueden estar equivocados o incompletos.
La arquitectura escogida puede ser ineficiente o insuficiente.
Las pruebas se realizan sobre requisitos inciertos o confusos.
El soporte técnico de las pruebas puede ser insuficiente o inadecuado.
El código fuente puede contener bugs.
Las plantillas y las especificaciones no son confiables al 100%.
La incertidumbre solamente se reduce cuando el usuario usa la aplicación de manera efectiva (feedback).
En el desarrollo de software siempre hay que tener en cuenta la gestión de la incertidumbre.
El Software, así como ideas, madura con el tiempo, es difícil elaborar la idea completa en el inicio del proyecto para solucionar el problema. El coste de ajuste de un software no sigue el patrón de un proceso prescriptivo, es decir: Re-trabajo ≠ afinamiento.
Los ajustes se realizan en base al feedback de los usuarios.
ACOSTÚMBRESE A LOS CAMBIOS
El software es un producto empírico, por lo que es un error adoptar procesos prescriptivos rígidos en proyectos de software, en cambio las metodologías ágiles reconocen la naturaleza empírica del software y están preparadas para acoger los cambios frecuentes, ofrecen rapidez para realizar los cambios idóneos a partir del feedback de los usuarios y se presentan con metodologías leves, enfocadas al software funcional en vez del formalismo y de la documentación extensa.
El manifiesto ágil es un conjunto de valores elaborado en 2001 por 17 grandes pensadores del mundo del desarrollo de software, es decir:
Personas e interacciones entre ellas más que procesos y herramientas.
Software funcional más que documentación extensa.
Colaboración con el cliente más que negociación de contratos.
Responder a los cambios más que seguir un plan.
Las metodologías más conocidas son:
Extreme Programming (XP): Concebida para proyectos de pequeño y medio tamaño, prevé participación activa y frecuente con el cliente. Describe detalladamente las prácticas de desarrollo que se van a utilizar como por ejemplo: lenguaje de programación, refactorización, pruebas unitarias, etc.
Scrum: Comparte muchas características con XP, como la participación activa del cliente, pero tiene su principal foco en las actividades de gestión del proyecto.
Las principales características de las metodologías ágiles son:
Objetivo: satisfacer al cliente entregando, rápidamente y a menudo, sistemas que tengan valor.
Proyectos Iterativos e incrementales.
Los requisitos no se especifican en detalles en el inicio del proyecto. La solución evolucionará a partir del feedback del cliente/usuario.
Reconocer si las estimaciones a largo plazo son groseras e imprecisas. Estas evolucionan a lo largo del proyecto.
El esfuerzo de planificación se concentra en el futuro más próximo, es decir, en el corto plazo.
El equipo de desarrollo se auto-organiza y participa en la planificación del proyecto.
Poca formalidad, es decir, los roles en la jerarquía se simplifica.
El cliente participa activamente del proceso.
Trabajan con líderes en vez de con jefes.
Estas características nos traen unos beneficios que principalmente son los dos siguientes:
Para el cliente, que al guiar los desarrolladores obtienen un producto que atiende sus necesidades. También sirve para percibir con
antelación si el proyecto es inviable, evitando el gasto innecesario de recursos.
Para los desarrolladores, los cuales participan de forma activa en la planificación del proyecto, generando plazos realistas y factibles, evitando la sobrecarga de trabajo innecesario que surge cuando se intentan realizar metas que se consideran imposibles.
EL CICLO DE DESARROLLO ÁGIL
El Extreme Programming es una metodología ágil defendida por Kent Beck, Ron Jeffries, Ward Cunningham entre otros y se compone de un conjunto de valores y prácticas importantes que forman un método para el desarrollo de software. Incluso siendo un conjunto de prácticas que están en camino desde mediados de los 90s, muchos equipos y empresas buscan entender el desarrollo del software desde la perspectiva de la gestión y no de las prácticas de ingeniería.
El Extreme Programming (XP) se ve con cierta polémica en el mercado, sin embargo, desde el comienzo de la metodología Scrum en el año 2007 ha sido ampliamente difundido y adoptado por numerosos equipos de desarrollo. El objetivo es demostrar que, dado que las prácticas ágiles de gestión de proyectos (como el Scrum) debe ir acompañada de prácticas ágiles de ingeniería de software, tales como XP. El beneficio de la adopción del método ágil dentro de día a día de los equipos de desarrollo, la participación en todo el trabajo de desarrollo de software, ha sido eclipsado por las prácticas de gestión, pero una cosa no excluye a la otra.
Aunque el Manifiesto Ágil se publicó en 2001, las metodologías ágiles ya estaban en pleno desarrollo en los años 90 con, por ejemplo, Ken Schwaber, uno de los autores del Manifiesto, que afirma que mientras desarrollaron las prácticas de gestión de proyectos de Scrum con Jeff Sutherland, Kent Beck y Ron Jeffries trabajaron para
mejorar las prácticas de ingeniería con XP. Un rápido análisis a ambos métodos nos muestra que ambas metodologías tienen mucho en común, pero una no es exclusiva de la otra. El Scrum no es todo lo que se necesitan para ser más productivos y reducir los gastos innecesarios, sino que las prácticas de ingeniería ágiles pueden ser mucho más importantes que las prácticas de gestión, ya que el software no puede existir sin la parte técnica. El código siempre debe existir en un proyecto de software. A nosotros no sólo nos van a pagar para hacer planes, con lo que Scrum junto con XP puede ser un framework de