Guía de Metodologías Ágiles
Guía de Metodologías Ágiles
DE DESARROLLO DE
SOFTWARE
3
4
INDICE
5
CAPITULO V: METODOLOGÍA EXTREME
PROGRAMMING ....................................................... 59
PRINCIPIOS BÁSICOS .................................................... 60
REFERENCIAS ............................................................... 65
6
CAPITULO I: INTRODUCCIÓN
A LA INGENIERÍA DE
SOFTWARE
¿Qué es el software?
7
¿Qué es un modelo de desarrollo de software?
8
¿Qué es la Ingeniería de software?
Etapa 1:
Esfuerzo en el desarrollo de
Hardware
Carencia de métodos de
desarrollo
Software a la medida con
baja distribución
Etapa 2:
9
Masificación de software
en empresas
Software de gran
extensión
Problemas de
mantenimiento
Inicio de las casas de
software
CRISIS DEL
SOFTWARE
Etapa 3:
Hardware a bajo costo.
Popularización de los
computadores personales.
Grandes inversiones en
desarrollo de software.
Etapa 4:
Incremento de la demanda de software.
Se agudiza la crisis del software: mantenimiento.
Etapa 5
Mejora de los procesos en la producción del software
Búsqueda de la calidad del software
10
Características del software
El software es un producto intangible:
Se desarrolla no se fabrica:
◦ No es un producto estático
◦ Debe ser flexible para aceptar modificaciones
Se deteriora
◦ Por la labor de mantenimiento
◦ Aparición de nuevas tecnologías
Se desarrolla a la medida
◦ La mayoría de las veces se desarrolla de
acuerdo a las necesidades particulares de los
clientes
◦ Aunque ya existen algunas empresas de
software que desarrollan aplicaciones
genéricas
Mitos de Gestión:
◦ Siempre lo hemos hecho así y funciona bien:
resistencia al cambio
Mitos del Cliente:
◦ El software lo hará TODO
◦ Hay cosas que no hay que decir, el analista
debe suponerlas
◦ Los detalles se dejan para el final
Mitos de Desarrolladores:
11
◦ Los métodos no sirven
◦ Lo único importante es el código
◦ El proyecto termina con el desarrollo del
software (…y la documentación y el
mantenimiento qué ?)
12
Sistema Abstracto para el
analista....y posiblemente
para el usuario!
Conocedor del
sistema...aún
cuando no lo Usuario
tenga muy claro Analista
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenimiento
13
Fase 3: Diseño = “solucionar”
◦ “La fase de diseño marca una transición desde
la descripción de cómo debe lucir la solución
(especificaciones) hacia cómo será resuelto el
problema” von Mayrhauser.
◦ Solución planteada, comúnmente en la
actualidad, con el Paradigma Orientado a
Objetos
“Diseño: traza o delineación de un edificio o una
figura”. RAE. La IS es un arte.
14
◦ Corregir errores no hallados en la fase de
pruebas.
◦ Mejoras propuestas por el cliente.
◦ Nuevas funciones (cliente o analista).
◦ Revisión del funcionamiento.
15
Los proyectos ágiles se subdividen en proyectos más
pequeños mediante una lista ordenada de características.
Cada proyecto es tratado de manera independiente y
desarrolla un subconjunto de características durante un
periodo de tiempo corto, de entre dos y seis semanas. La
comunicación con el cliente es constante al punto de
requerir un representante de él durante el desarrollo.
16
Principales metodologías de desarrollo en el
mundo
17
Figura 5: Extreme Programming
18
Conclusiones y recomendaciones
19
20
CAPITULO II: METODOLOGÍA
OPEN UP
21
Roles de OpenUP
Rol es un conjunto de actividades que desempeña 1 o mas
personas del equipo de desarrollo.
1 persona puede desempeñar 1 o mas roles dentro del
desarrollo de software.
Dentro del Open UP representa a una persona que tendrá
parte dentro del desarrollo de software.
Analista
22
Figura 9: tareas y entregrables del analista
Arquitecto
Este rol es responsable de definir cual será la arquitectura
de software que se utilizará para la solución técnica del
software y para el futuro mantenimiento del software. Las
principales tareas y entregables de este rol están
presentadas en la figura 10.
Desarrollador
Este rol es responsable para el desarrollo de las partes del
software, incluyendo la cordinación del diseño de la
arquitectura, el prototipo de la interfaz con el usuario y la
implementación e integración de los componentes de las
partes de la solución, la figura 11, presenta las principales
tareas y entregables del desarrollador.
23
Figura 11: tareas y entregrables del desarrollador
Stakeholder
Es representada por el Lider de usuarios de la
organización, no cumple ninguna actividad dentro del
desarrollo de software, solo el de proporcionar la
información requerida para el desarrollo del proyecto. Su
principal tarea es el de proporcionar información de los
proceso de la organización al equipo de desarrollo.
24
Testeador
Este rol es responsable para el cumplimiento de
actividades mediante las pruebas. Sus actividades incluye
la identificación, definición, implementación y
conducción necesarias de las pruebas, estas pruebas
devuelven un analisis de resultados. La figura 13 presenta
las principales tareas y entregables del testeador.
Any Role
El OpenUP deja libre la posibilidad de establecer un rol
adicional en el proceso de desarrollo de software este rol
adicional se agregará dependiendo de exclusividad del un
proyecto de software.
25
Diciplinas
Es una colección de tareas desarrolladas concerniente a la
fase del proyecto.
Es un grupo de actividades que satisfacen el cumplimiento
o logro de los objetivos del proyecto.
Conjunto de actividades que muestran la interrelación
entre: Rol – Rol, Rol - tarea y Tarea – entregable.
Arquitectura
En esta disciplina se desarrolla los documentos necesarios
para establecer la arquitectura de software que se utilizara
para dar solución al proyecto y para establecer la
estructura del software.
Arquitectura
Esta disciplina establece el control de los cambios en los
artefactos y la sincronización de desarrollo del software.
Establece las normativas para el control de versiones del
software
Desarrollo
Esta disciplina establece las actividades para el diseño y
la implementación de la solución.
Se documenta los avances de la documentación para
actualizar la estructura del software.
Administrador de Proyecto
En esta disciplina se determinan y establece la
planificación del proyecto.
Se establecen los objetivos y documentos de control.
Se detalla la lista de identificación de riesgos del proyecto.
26
Requerimientos
Se documenta el resultado del conjunto de actividades
referentes a la identificación del problema a resolver, de
las características del proyecto, y el modelo de caso de uso
del proyecto.
Pruebas
Se documenta los casos de prueba a la solución del
software. Se realiza las pruebas a los distintos módulos del
software. Se establece las Scripts de pruebas a utilizar.
27
Figura 14: fases del OpenUP
Fase de Inicio
28
Fase de Elaboración
Fase de construcción
29
Fase de transición
Conclusión
30
CAPITULO III: METODOLOGÍA
SCRUM
Cowboy Coding
Este paradigma estuvo orientada a un desarrollo caótico,
bajo el pensamiento “¡Hacerlo y Punto!”. Los equipos de
desarrollo se entraban enfrascados en la “ausencia de
reglas”, una comunicación ocasional, flexibilidad
indefinida con el cliente y nada de lecciones aprendidas.
Los pocos resultados positivos que se obtenían eran por 1
o 2 integrantes que se les conocía como “héroes del
equipo”
Waterfall
El waterfall o modelo en cascada, está enfocada en el
desarrollo de software por fases o etapas a través de una
correlación de actividades de tiempo, pasando de una
etapa a otra sin opción a retroceso de fase o etapa. como
se ve a continuación.
1 2 3 4 5
31
¿Pero que complicaciones hay con el modelo en cascada?,
la figura 19, muestra de que si en una de las etapas hemos
realizado una estimación fallido del tiempo, se verán
afectados otras etapas, o la fecha estimada de entrega del
producto.
S
W
32
Análisis Diseño Construcción Pruebas Entrega
Diseño Diseño
Construcc
ión
Figura 21: efecto de errores de uan fase identificados en fases
posteriores
Metodologías ágiles
Las metodologías ágiles están basadas en 4 valores que
alinean los paradigmas del desarrollo de software.
33
La figura 22 indica que el manifiesto ágil valora el
Software Funcionando por sobre documentación
detallada, Colaboración con el cliente Por Sobre la
negociación de contratos y la Respuesta a los cambios Por
sobre el seguimiento de un plan.
34
desarrolladores y usuarios debemos ser capaces de
mantener un ritmo constante de forma indefinida.
9. La atención continua a la excelencia técnica y
al buen diseño mejora la Agilidad.
10. La simplicidad, o el arte de maximizar la cantidad
de trabajo no realizado, es esencial.
11. Las mejores arquitecturas, requisitos y diseños
emergen de equipos auto-organizados.
12. A intervalos regulares el equipo reflexiona sobre
cómo ser más efectivo para a continuación ajustar
y perfeccionar su comportamiento en
consecuencia.
waterfall
Agile
35
Asimismo las metodologías ágiles entregan los siguiente
resultados:
Entregas frecuentes
Priorización de requerimientos
Valor al final de cada sprint
Al detener un proyecto
o El mayor valor fue entregado
Cancelación de proyecto
o Los req. más críticos entregados
Test durante cada iteración
Resolución temprana de bugs críticos
Proyecto cancelado
o Funcionalidad probada
o Lista para ser entregada
Transparencia y visibilidad a través del uso de los:
o TaskBoard
o Daily Standup Meeting
o Burn Down Charts
o Retrospectivas
¿Qué es Scrum?
Scrum más que una metodología es un framework (marco
de trabajo) para la gestión de proyectos complejos. Se
basa principalmente en la premisa de ejecutar un proyecto
en iteraciones de entre dos y cuatro semanas, llamadas
Sprints, y de duración fija (timebox).
36
Filosofía de Scrum
Tratar de predecir fechas, esfuerzo y alcance en el
desarrollo del producto con absoluta precisión es
imposible.
El negocio varía mucho durante la ejecución de este tipo
de proyectos
Comienza con una hoja de ruta, estimaciones de alto nivel
y fechas aproximadas.
Revisar y adaptar continuamente estos planes.
Crear compromisos de corto plazo&alcance fijo (sprint)
Antes de cada iteración se define el alcance y los detalles
basados en resultados de sprint anteriores y
requerimientos cambiantes
Durante la iteración, el equipo se encuentra 100%
concentrado en entregar un producto completamente
funcionando, potencialmente entregable
Las interrupciones son evitadas
Al final de cada iteración, el producto resultante es
evaluado
El equipo evalúa el trabajo realizado durante la iteración
y se implementan mejoras en cada iteración
37
Proceso de ciclo de vida de Scrum
Roles de Scrum
Scrum divide los roles a nivel de 2 enfoques, los
“comprometidos” el Product Owner, Scrum Master y los
miembros del equipo, y los “involucrados” el stakeholder.
El product Owner
o Responsable por la visión del producto
o Conoce los detallers de Epics, Features, user
stories.
o Gerencia el backlog
38
o Determina prioridades basado en el valor de
negocio
o Redefine prioridades entre sprint
o Acepta o rechaza características del producto
luego de cada iteración
o Da Feedback
o Representa al cliente
El Scrum Master
o Responsable por el proceso que sigue el equipo
o Reafirma los valores y principios Scrum
o Asegura las reuniones o ceremonias
o Impide interrupciones externas al equipo
o Remueve impedimentos
o Asegura la fuerte colaboración dentro del equipo
o Promueve la auto-organización
o Asegura que el equipo sea funcional
El equipo
o Compuesto por todos los miembros del equipo
o Responsable por el desarrollo del producto
o Auto-organizado
o Con funciones cruzadas
o Provee estimaciones para cada user story
o Se compromete en cada sprint planning a convertir
una cierta cantidad del Product backlog en
producto potencialmente entregable
39
Artefactos en Scrum
User Stories
o Breve Descripción de funcionalidad, contada
desde la perspectiva del usuario
o Propósito
o Oportunidad para estimar
o No limitado a la UI
o Escrita por el cliente
o Qué debería hacer el sistema
o En términos del negocio
Sin tecnicismos
o Criterios de aceptación
o Pruebas de aceptación
Si se pueden automatizar: mucho
mejor
o Uno o más para comprobar cada historia
o Diferenciación de los requerimientos
tradicionales:
o Nivel de detalle
o Centradas en el usuario
Evitar diseño de la interfaz de
usuario
Evitar diseños específicos de
tecnología
Evitar el diseño de base de datos
Evitar algoritmos
40
El user story es una tarjeta que indica los requerimientos
y los criterios de aceptación del cliente
Reglas de
negocio
41
Release Plan
el release plan, es un artefacto que establece los
requerimientos a entregar en una iteración.
o Establece fecha de releases de alto nivel y
features/stories en cada release.
o Puede estar alineado con hitos externos
o Determina la priorización de los items del Backlog
o El product Owner es responsable de construirlo
Product Backlog
El producto backlog es la representación de la lista de
requerimientos por cumplir para alcanzar los objetivos del
producto de software.
● Lista de items del Backlog que representa todo el
trabajo que se realizará en un futuro predecible.
42
● Los items del Backlog pueden ser:
● EPICS (Requerimientos de alto nivel)
● FEATURES (Requerimientos
Intermedios)
● USER STORIES (Requerimientos de bajo
nivel)
Ceremonias de Scrum
43
● Durante un Sprint, el Quipo y solo el equipo el
100% Responsable por el incremento del
producto.
● El Scrum Master elimina los impedimentos y
preserva al equipo de interrupciones externas.
● El Sprints sucede uno tras otro. Puede haber
pausas entre Sprint
● Puede durar de 2 a 4 semanas
Sprint planning
Al comienzo de cada Sprint se realiza una reunión de
planificación del Sprint donde serán generados los
acuerdos y compromisos entre el equipo de desarrollo y
el Product Owner sobre el alcance del Sprint.
44
que en esta reunión aparezcan PBIs que no habían sido
estimados anteriormente. Frente a esta situación, el equipo
de desarrollo indagará y estimará esos PBIs de inmediato.
45
compromiso de entrega para aquellos que considera
suficientemente claros como para comenzar a trabajar y
que además podrían formar parte del alcance del Sprint
que está comenzado. A esto se lo conoce como
planificación basada en compromisos o Commitment-
based Planning.
46
Esto mismo sucede con las actividades del Sprint, es decir
que no es estrictamente necesario enumerar por completo
todas las actividades que serán realizadas durante la
iteración ya que muchas aparecerán a medida que
avancemos. Recordemos que a esta altura los PBIs ya han
sido estimados y el surgimiento de actividades durante el
Sprint no habilita a incrementar las estimaciones de los
PBIs, salvo excepciones donde la estimación inicial no
había considerado la totalidad del esfuerzo necesario.
Adicionalmente, es recomendable que las actividades
duren idealmente menos de un día. Esto permitirá detectar
bloqueos o retrasos durante las reuniones diarias (ver
siguiente).
47
Daily standup meeting
Uno de los beneficios de Scrum está dado por el
incremento de la comunicación dentro del equipo de
proyecto. Esto facilita la coordinación de acciones entre
los miembros del equipo de desarrollo y el conocimiento
“en vivo” de las dependencias de las actividades que
realizan.
48
Esta reunión es facilitada por el ScrumMaster. Todos y
cada uno de los miembros toman turnos para responder las
siguientes tres preguntas, y de esa manera comunicarse
entre ellos:
49
antes posible, generando las reuniones que sean necesarias
e involucrando a las personas correctas.
Review meeting
Al finalizar cada Sprint se realiza una reunión de revisión
(review/demo) del incremento funcional potencialmente
entregable construido por el equipo de desarrollo (el
“qué”). En esta reunión el equipo expondrá el resultado
del Sprint frente al Product Owner. Cuando decimos
“resultado” hablamos de “producto utilizable” y
“potencialmente entregable” que el Product Owner
utilizará y evaluará durante esta misma reunión,
aceptando o rechazando así las funcionalidades
construidas.
50
Los stakeholders del proyecto también pueden participar
en esta reunión para aportar sus impresiones, que pueden
ser acerca de cambios en la funcionalidad construida o
bien nuevas funcionalidades que surjan de ver el producto
en acción.
51
corresponderá al final del Sprint siguiente. De este modo
ya se tendrán las agendas bloqueadas a tal fin.
● Se realiza una reunión al final de cada Sprint
● El equipo muestra el producto potencialmente
entregable que construyeron recientemente en el
ultimo Sprint.
● El Product Owner acepta o rechaza funcionalidad
● El Producto Owner verifica la realización del
Backlog acordado.
Retrospectiva
En un método empírico como Scrum, la retrospección del
equipo es el corazón de la mejora continua. Mediante el
mecanismo de retrospección, el equipo reflexiona sobre la
forma en la que realizó su trabajo y los acontecimientos
que sucedieron en el Sprint que acaba de concluir para
mejorar sus prácticas. Todo esto sucede durante la reunión
de retrospectiva.
52
mejora. Luego, el equipo de desarrollo decide por
consenso cuáles serán las acciones de mejora a llevar a
cabo el el siguiente Sprint. Estas acciones y sus impactos
se revisarán en la próxima reunión de retrospectiva.
53
54
CAPITULO IV: METODOLOGÍA
KANBAN
Kanban es un conjunto de buenas prácticas que permite
visualizar el flujo de trabajo del proceso de desarrollo de
software.
55
¿Cómo funciona Kanbas?
Existe una serie de principios básicos con el fin de obtener
el máximo rendimiento de su flujo de trabajo.
56
Cuáles son los beneficios Kanban
1. Estímulo del rendimiento. Análisis profundo y
estimaciones que permiten medir su rendimiento.
Detección de cualquier problema existente y ajuste del
flujo de trabajo para ganar en eficiencia. El método
Kanban es muy flexible y le permite perfeccionar sus
procesos para obtener los mejores resultados.
Tablero Kanban
El tablero Kanban impulsado por Kanban Tool le permite
asignar tareas a los miembros del equipo, adjuntar
57
comentarios, descripciones, enlaces y archivos. Por tanto
– las tareas no necesitan más tiempo que pueda perderse
hablando. Por supuesto, mediante el aumento de la
productividad en general, podrá charlar más en los
descansos para el café. No hay más pérdida de tiempo en
la discusión del trabajo, que es más rápido, ¡y explicado
de forma visual! El método Kanban se basa en la idea de
visualizar lo que se está haciendo ahora, lo que se está
terminando y lo que hay que hacer a continuación.
58
CAPITULO V: METODOLOGÍA
EXTREME PROGRAMMING
59
PRINCIPIOS BÁSICOS
Tenemos 12 principios básicos que se agrupan en 4
categorías distintas:
o Retroalimentación.
o Proceso continuo en lugar de por bloques.
o Propiedad intelectual compartida.
o Entendimiento compartido.
RETROALIMENTACIÓN
Principio de pruebas: lo primero que se debe hacer es
establecer un período de pruebas de aceptación del
programa, en el cual se definirán las entradas y salidas del
sistema. Básicamente se define lo que debe hacer el
software desarrollado. Como si fuese una caja negra.
60
funcionalidad y dar prioridad a determinadas cosas.
Gracias a esto, habrá una fuerte interacción con los
programadores, disminuyendo así el tiempo de
comunicación y la cantidad de documentación a
redactar. El cliente estará con el equipo durante todo el
proceso de desarrollo del proyecto.
61
sencillo en producción el cual se actualizará rápidamente,
es decir, cada 2 semanas (3 como máximo) el software
será puesto en producción.
Entendimiento compartido
Diseño simple: el mejor programa será aquel que cumpla
con los requisitos y sea más simple. Es importante
proporcionar un software que cubra las necesidades de un
cliente. Ni más ni menos.
62
horas extras y mantener a los programadores frescos
y descansados. De esta manera, se generará mejor código.
Si es necesario hacer horas extras, quiere decir que el
proyecto está mal planificado.
Opiniones/Conclusiones
Os dejo unas tiras de Dilbert sobre extreme
programming que me han hecho gracia:
63
Esta metodología existe desde el año 2001, es decir, que
tiene relativamente poco tiempo. Aunque lleve tan sólo
unos años ha revolucionado el mundo de la industria de
desarrollo software generando diversas opiniones, tanto
buenas como no tan buenas. Entre los puntos negativos,
podemos encontrar varios:
64
REFERENCIAS
65