Vous êtes sur la page 1sur 77

Desarrollo de Software

gil
Oscar Benito Pacheco

FCM-Computacin Cientfica

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 $

Casas de Perros
Proyectos Escolares
SIN ARQUITECTURA
Poco $

Edificios
Grandes Corporativos
ARQUITECTURAS COMPLEJAS
Mucho $$$$

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-decorbata.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


prescindible, modelos desechables.

Ms Artefactos. El modelado es esencial,


mantenimiento de modelos

Pocos Roles, ms genricos y flexibles

Ms Roles, ms especficos

No existe un contrato tradicional, debe ser


bastante flexible

Existe un contrato prefijado

Cliente es parte del equipo de desarrollo


(adems in-situ)

El cliente interacta con el equipo de


desarrollo mediante reuniones

Orientada a proyectos pequeos. Corta


duracin (o entregas frecuentes), equipos
pequeos (< 10 integrantes) y trabajando en
el mismo sitio

Aplicables a proyectos de cualquier tamao,


pero suelen ser especialmente
efectivas/usadas en proyectos grandes y con
equipos posiblemente dispersos

La arquitectura se va definiendo y mejorando


a lo largo del proyecto

Se promueve que la arquitectura se defina


tempranamente en el proyecto

nfasis en los aspectos humanos: el individuo


y el trabajo en equipo

nfasis en la definicin del proceso: roles,


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

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

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

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.

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