Vous êtes sur la page 1sur 78

Desarrollo de Software gil

M.C. Juan Carlos Olivares Rojas

Zitcuaro, Michoacn, Octubre 2009


Agenda
Introduccin (planteamiento del
problema)

Metodologas giles (solucin)

Ejemplos de Metodologas (XP, Scrum y Lean)

Conclusiones
Software Hoy en Da
Mito: los
programadores de
ahora ya no
programan como los
de antes.

Herramientas ms
fciles y productivas
El software es cada
da ms complejo
Caracterizacin del Software
El software es un producto intangible el cual se
logra a travs de un proceso creativo ya que
programar es un arte, el cual no puede ser
sistematizado del todo.

Por qu es importante el Desarrollo de


Proyectos de forma Metodolgica?

El software es cada vez ms complejo y


costoso que se compara con construir un
edificio.
Motivacin

Casas
Proyecto de PyMES
ARQUITECTURAS SIMPLES
Rentable $

Edificios
Grandes Corporativos
ARQUITECTURAS COMPLEJAS
Casas de Perros Mucho $$$$
Proyectos Escolares
SIN ARQUITECTURA
Poco $

Tipos de Desarrollo de Software


Motivacin
Las metodologas de desarrollo de software
son un conjunto de mejores prcticas que si
no se llevan a la prctica no sirven de nada.

El factor humano es el recurso ms importante


de cualquier proyecto de software.

Cmo se desarrolla un proyecto de Software?


Primera etapa
Segunda Etapa
Tercera Etapa
Cuarta Etapa
Motivacin
En qu consiste el proceso de desarrollo de
software?

Si pensamos que el software de desarrollo de


software es slo programar (que evidentemente
es la parte ms representativa) estamos muy
equivocados.

El desarrollo de software consiste en mltiples


actividades.
Proceso de Desarrollo de Sw
Proceso de Desarrollo de Sw
Por qu este modelo de cascada no funciona
para el desarrollo del software?

Por que los requerimientos de software son


sumamente cambiantes al ser un producto
abstracto.

El objetivo de la Ingeniera del Software es


lograr la calidad del software.

La calidad tiene muchas perspectivas.


Proceso de Desarrollo de Sw
Pressman clasifica las actividades del
desarrollo de software en las siguientes:

Comunicacin
Inicio del Proyecto
Recopilacin de Requerimientos

Planeacin
Estimacin
Itinerario
Seguimiento
Proceso de Desarrollo de Sw
Modelado
Anlisis
Diseo
Construccin
Cdigo
Prueba

Despliegue:
Entrega
Soporte
Retroalimentacin
Proceso de Desarrollo de Sw
La etapa de comunicacin es sumamente
importante:
Metodologas de Software
Las metodologas de software ayudan a lograr
la calidad del software. Puedo lograr la
calidad del software sin usar metodologas?

Ejemplo: necesito hacer un nudo de corbato y


no tenga idea de cmo hacerlo

Cmo podra resolver el problema?


Metodologas de Software
La solucin ms fcil es realizar outsorcing
(que lo hagan otros).

Sino se puede, se deber realizar en base a


tres formas bsicas de solucin de problemas:

Conocimiento
Experiencia
Sentido Comn
Metodologas de Software
La forma ms fcil es a travs de una
metodologa para realizar nudos de corbatas
como la planteada en http://www.nudo-de-
corbata.com/

Lo primero que se tiene que saber es si debe


ser un tipo especial de corbata o no. Los tipos
pueden ir desde nudo de corbata simple, doble,
windsor, medio windsor, nudo pequeo.
Tipos de Nudos

Simple Doble
Tipos de Nudos

Windsor Medio Windsor


Uso de Metodologas
Las metodologas nos orientan hacia mejores
resultados.
Problema
Las metodologas son un conjunto de mejores
prcticas que si no se llevan a la prctica o se
hacen a medias es muy difcil que se tenga
calidad.

Aun siguiendo las recomendaciones, una


metodologa no garantiza que un producto
tenga calidad.
Agenda
Introduccin (planteamiento del problema)

Metodologas giles (solucin)

Ejemplos de Metodologas (XP, Scrum y Lean)

Conclusiones
Metodologas giles
Siguen desarrollando las mismas actividades
del proceso de desarrollo de software, slo
difieren en la forma de hacerlo.

Las Metodologas giles se fundamentan en 4


principios bsicos (manifiesto gil):

Al individuo y las interacciones en el equipo de


desarrollo ms que a las actividades y las
herramientas.
Metodologas giles
Desarrollar software que funciona ms que
conseguir una buena documentacin
Minimalismo respecto del modelado y la
documentacin del sistema.

La colaboracin con el cliente ms que la


negociacin de un contrato.

Responder a los cambios ms que seguir


estrictamente una planificacin.
Beneficios
Es ms adecuada para los cambios reduciendo
los errores (costos) y logrando la satisfaccin
de los clientes
Tradicional
Costo
del
cambio

Suposicin MAs

tiempo
Mtodo Tradicional vs gil
Metodologa gil Metodologa Tradicional
Pocos Artefactos. El modelado es Ms Artefactos. El modelado es esencial,
prescindible, modelos desechables. mantenimiento de modelos

Pocos Roles, ms genricos y flexibles Ms Roles, ms especficos

No existe un contrato tradicional, debe ser Existe un contrato prefijado


bastante flexible

Cliente es parte del equipo de desarrollo El cliente interacta con el equipo de


(adems in-situ) desarrollo mediante reuniones

Orientada a proyectos pequeos. Corta Aplicables a proyectos de cualquier tamao,


duracin (o entregas frecuentes), equipos pero suelen ser especialmente
pequeos (< 10 integrantes) y trabajando en efectivas/usadas en proyectos grandes y con
el mismo sitio equipos posiblemente dispersos

La arquitectura se va definiendo y mejorando Se promueve que la arquitectura se defina


a lo largo del proyecto tempranamente en el proyecto

nfasis en los aspectos humanos: el individuo nfasis en la definicin del proceso: roles,
y el trabajo en equipo actividades y artefactos

Se esperan cambios durante el proyecto Se espera que no ocurran cambios de gran


impacto durante el proyecto
Metodologas giles
Crystal Methodologies, Alistarir Cockburn,
www.crystalmethodologies.org

SCRUM, Ken Schwaber & Jeff Sutherland,


www.controlchaos.com

DSDM (Dynamic Systems Development


Method),
www.dsdm.org

Lean Programming, Mary Poppendieck,


www.poppendieck.com
Metodologas giles
FDD (Feature-Driven Development), Peter
Coad & Jeff De Luca, www.nebulon.com/fdd,
www.coad.com/peter/#fdd

Extreme Programming, Kent Beck


www.extremeprogramming.org,
www.xprogramming.com

Adaptative Software Development, Jim


Highsmith www.adaptivesd.com
Agenda
Introduccin (planteamiento del problema)

Metodologas giles (solucin)

Ejemplos de Metodologas (XP,


Scrum y Lean)

Conclusiones
Metodologas giles
Las dos principales metodologas giles son
scrum y XP (eXtreme Programming).

Cualquiera que fuera el mtodo gil debe de


cumplir con el manifiesto gil.

Scrum es certificable mientras que XP no lo es,


pero muchos equipos de desarrollo la manejan
ampliamente.
XP

M.C. Juan Carlos Olivares Rojas

Zitcuaro, Michoacn, Octubre 2009


XP
Es una metodologa idnea para equipos de
desarrollo pequeos menores a 10 personas.

Se caracteriza por ser una metodologa ligera


(excluye todo lo que no sirve dejando la
esencia o sabor de las cosas).

Se centra en la implementacin (codificacin)


por lo que es ideal para entornos dinmicos.
XP
La comunicacin se da de manera muy
informal, generalmente verbal.

Las metodologas giles se preocupan por


inculcar valores y XP no es la excepcin, sus
principales valores son: comunicacin,
simplicidad, retroalimentacin y coraje.
XP
Los actores que participan en el desarrollo de
software son:

Programador: responsable de decisiones tcnicas y


de construir el sistema. No hay distincin entre
analistas, diseadores o codificadores. Es decir, en
XP los programadores modelan, codifican y prueban.

Clientes: son parte del sistema, determinar que


construir y cuando, realizan test para determinar
cuando algo est completo.
XP
Entrenador (Coach): es el lder del equipo.
Tiende a estar en un segundo plano a medida
que el equipo madura

Rastreador (Tracker): tambin llamado Metric


Man, se encarga de observar sin molestar,
debe conservar datos histricos.

Probador (Tester): Ayuda al cliente con las


pruebas funcionales.
XP
El proceso de desarrollo en XP se puede
resumir como:

Mientras(sistema_es_til) {
Captar requisitos
User Stories
Methaphor
Planificar
Release planning
Iteration planning
XP
Desarrollar
Programming
Presentar la entrega
Releasing
}

Puntos clave: el juego de planificacin,


entregas cortas, diseos simples,
refactorizacin. LA GRAN FOTO
XP

La gran foto
XP
XP es una metodologa muy utilizada pero
como todo tiene tambin sus puntos dbiles.
Entre ellos que pocos son los que utilizan la
metodologa completa.

A continuacin se muestran y se explican las


prcticas que componen a la Programacin
Extrema.

XP no es slo tirar lneas de cdigo fuente


XP
XP
Las metodologas giles se caracterizan por
fomentar valores como:

Comunicacin
Simplicidad
Retroalimentacin
Coraje

Para muchas empresas es ms importante las


actitudes que las aptitudes.
Artefactos en XP
Historias del Usuario

Tareas de Ingeniera

Pruebas de Aceptacin
Pruebas Unitarias y de Integracin

Plan de la Entrega
Cdigo
Historia de Usuario
Historia de Usuario

Nmero: 1 Nombre: Enviar artculo

Usuario: Autor

Modificacin de Historia Nmero: Iteracin Asignada: 2

Prioridad en Negocio: Alta


Puntos Estimados:
(Alta / Media / Baja)

Riesgo en Desarrollo:
Puntos Reales:
(Alto / Medio / Bajo)

Descripcin:
Se introducen los datos del artculo (ttulo, fichero adjunto, resumen, tpicos) y de los autores
(nombre, e-mail, afiliacin). Uno de los autores debe indicarse como autor de contacto. El sistema
confirma la correcta recepcin del artculo enviando un e-mail al autor de contacto con un userid y
password para que el autor pueda posteriormente acceder al artculo.

Observaciones:
Spikes
Clima de Trabajo
Espacio abierto
Mesas centrales
Cubculos en el espacio exterior
Clima de Trabajo
Reunin diaria: Stand-up Meeting
Todo el equipo
Problemas
Soluciones

De pie en un crculo
Evitar discusiones largas
Sin conversaciones separadas
Scrum

M.C. Juan Carlos Olivares Rojas

Zitcuaro, Michoacn, Octubre 2009


Scrum
Es otra metodologa gil que entre sus
principales caractersticas estn:

Desarrollo de software por medio de iteraciones


(Sprints).

Indicado para proyectos con un rpido cambio


de requerimientos.

Gran protagonismo de reuniones a lo largo del


proyecto.
Scrum
Los actores que intervienen en esta
metodologa son:

Propietarios del producto

Usuarios del poducto

Scrum master

Equipo de scrum.
Scrum
Scrum
Los sprints son la base del desarrollo en scrum,
consisten en una serie de actividades
previamente definidas en un lapso de 30 das.

El product backlog es la lista de las tareas a


realizar durante todo el proyecto. No es una
lista fija. Se prioriza las tareas segn los
requisitos de los usuarios o del propietario de la
aplicacin.
Scrum

Ejemplo de Product Backlog


Scrum
Sprint planning meeting: reunin que se realiza
antes de cada Sprint.

Se hace conjuntamente con el Propietario del


producto el Scrum Master y el equipo Scrum.

Enfocar la reunin hacia los requisitos ms


prioritarios.
Scrum
Revisin del sprint: se realiza al final de cada
Sprint.

Se deben reunir el propietario de la aplicacin


los usuarios as como el Scrum Master y su
equipo , adems tambin es recomendable que
acudan ingenieros de otros proyectos para dar
su punto de vista.
Scrum
Product owner:

Definir la funcionalidad del producto

Decidir las fechas de liberacin y el contenido


(release)

Aceptar o rechazar el producto

Responsable del ROI


Scrum
Quines son products owner?

Analista
Tester
Usuario final
Cliente
Product Manager
Scrum
Un rol de suma importancia en esta
metodologa es el escuchar.

Muchos problemas de desarrollo se pueden


solucionar fcilmente si se escucha a los
clientes, usuarios finales y equipos de
desarrollo.
Lean

M.C. Juan Carlos Olivares Rojas

Zitcuaro, Michoacn, Octubre 2009


Lean
En una era donde ser esbelto es lo in ,
podemos poner a dieta nuestros procesos
de desarrollo de software?

No existe una definicin formal de


metodologas esbeltas simplemente se usan
los principios del pensamiento gil. Cada
autor vara los principios manejados. A
continuacin se muestran algunos
principios bsicos.
Principios
Eliminar el desperdicio

Construir con calidad

Crear conocimiento

Postergar compromiso
Entregas rpidas
Repetar a las personas
Optimizar el todo
Eliminar el desperdicio
Tiempo entre pedido y entrega

Qu es desperdicio?
Lo que no agrega valor
Retraso en la entrega

Qu es valor?
Ejemplos
Stock: Requerimientos, Diseo, Bugs,
Funcionalidad no usada

Mito: Especificacin temprana reduce el desperdicio


Construir con calidad
Inspeccin para prevenir o para detectar defectos

Listas de bug: desperdicio

Pruebas automatizadas antes que el cdigo


De aceptacin
Unitarias

Mito: trabajo del tester es encontrar defectos


Hacerlo bien la primera vez
Cuidado
El cdigo cambia
Mucho cdigo es desperdicio
Menos cdigo, menos oportunidad de defectos

Solucin
KISS
Refactoring
Crear conocimiento
No es posible
Conocer las necesidades al inicio
Disear sin implementar

Desarrollo de producto como aprendizaje y mejora


Del producto / negocio
Del proceso
Difundir el conocimiento!

Mito: las predicciones crean predictibilidad


Postergar compromiso
Tomar decisiones irreversibles

Buscar soluciones reversibles

Mito: Planificacin es compromiso


Entregas rpidas
Alta calidad

Bajo costo

Menos cambios

Habilita a pruebas de concepto y mayor


conocimiento del cliente

Mito: Apuro causa desperdicio


Respetar a las personas
Lderes emprendedores

Expertos tcnicos

Control basado en objetivos

Mito: existe la mejor manera de hacerlo


Optimizar el todo
Ejemplos:
El cliente quiere algo para ayer
Testing est sobrecargado

Las cadenas de valor que cruzan entre


empresas pueden ser costosas

Mito: optimizar por descomposicin


Agenda
Introduccin (planteamiento del problema)

Metodologas giles (solucin)

Ejemplos de Metodologas (XP, Scrum y Lean)

Conclusiones
Conclusiones
Las metodologas giles no son nada nuevo
bajo el sol.

Se tienen que tropicalizar las metodologas


para su buen funcionamiento.

Existe una fuerte discusin en la academia


sobre si enfocarse a las metodologas giles o
no (al final de cuentas se debe entender el
proceso).
Conclusiones
El proceso de desarrollo de software es un
proceso sociotecnolgico.

Para poder aprender la metodologa se


necesita vivirla (se necesitan horas de vuelo).

Las metodologas giles son muy buenas


cuando se domina el proceso en general.
Conclusiones
Si el usuario final y/o clientes no colaboran es
sumamente difcil aplicar la metodologa.

Se debe aplicar mtodos giles si se tienen


procesos bien definidos pero no funcionan de
manera adecuada frente a los campos o bien,
el equipo de desarrollo no est a gusto.
Conclusiones
Se siguen realizando el mismo proceso de
desarrollo de software slo cambia la forma.

No importa que metodologa se utilice solo hay


que llevarlo a la prctica como toda una
verdadera disciplina.

La agilidad no cuesta. Lo nico constante es el


cambio.
Preguntas
Mail: jcolivar@itmorelia.edu.mx
MSN: juancarlosolivares@hotmail.com
Web: http://antares.itmorelia.edu.mx/~jcolivar/
Referencias
Roger S. Pressman, Ingeniera de software un
enfoque prctico.Ed. McGraw Hill.

Piattini M.G. y F.O, Calidad en el desarrollo y


mantenimiento del software. Ed. RAMA.

Hernndez Ballesteros, J. F. Y Minguet Melan


J. La calidad del software y su medida, Ed.
CERASA.
Referencias
Gabardini, J. (2009) Scrum - Product Owner y
Planificacin. Facultad de Ingeniera UBA,
Argentina

Cohn, Mike (2009)


www.mountaingoatsoftware.com

Vous aimerez peut-être aussi