SlideShare une entreprise Scribd logo
1  sur  107
Télécharger pour lire hors ligne
Métodos de Desarrollo de
Software
(o bien, como desarrollar software sin morir en el intento...)

Universidad de los Andes
Demián Gutierrez
Julio 2011
¿método?
Métodos / Metodologías
Método: Es un conjunto de herramientas,
técnicas y procesos que brindan soporte y
facilitan el logro u obtención de una meta

¿Cómo
Construir
un Reactor
Nuclear?
Métodos / Metodologías
Método: que hacer, a lo largo de todo el ciclo de
vida del software, para construir un producto
bueno, de calidad, dentro del presupuesto y a
tiempo

¿Cómo
Construir
un Reactor
Nuclear
software?

software
¿ciclo de vida?
¿ciclo de desarrollo?
Ciclo de Vida / Ciclo de Desarrollo

Describe la vida de un producto de software desde
su definición, pasando por su diseño,
implementación, verificación, validación, entrega, y
hasta su operación y mantenimiento
¿por qué es
necesario un método
para desarrollar
software?
Ciclo de Vida / Ciclo de Desarrollo

por lo complejo que resulta desarrollar software
Costo del Cambio

Ciclo de Vida / Ciclo de Desarrollo

Requerimientos / Análisis / Diseño / Implementación / Pruebas / Producción
(aunque los métodos ágiles pueden cambiar esta visión)
Fuente: Adaptado de Kent Beck / Extreme Programming Explained, Embrace the Change

por el costo del cambio, la naturaleza del software
y otras razones
¿qué aporta
un método?
Métodos / Metodologías
Productos,
Subproductos,
Insumos,
Entregable
(definición)

Actividades
Roles,
Actores

(definición)

Procesos
Tareas
(Genérico)
(definición)

Guías,
Herramientas

Buenas
Prácticas

y otros elementos adicionales...
Fuente: Eclipse Process Framework Composer / April 2007 / Peter Haumer / IBM Rational Software
Métodos / Metodologías
(Herramientas)
Casos de Uso, Plantillas de Documentos, UML:
Diagramas de Clases, de Casos de Uso, de
Actividades, de Secuencia, etcétera.
Grafos de navegación, lenguajes de programación,
bibliotecas, armazones de aplicación (frameworks),
entornos integrados de desarrollo (IDEs), armazones
de pruebas, etcétera.
Software de gestión, herramientas de gestión,
etcétera
y muchas otras...
Métodos / Metodologías
(Buenas Prácticas)
¿Su empresa usa control de código fuente? ¿Control de versiones?
¿Se hacen “compilaciones” (builds) e integraciones diarias?
¿Se tiene algún tipo de base de datos de defectos (bugs)?
¿Arreglan los defectos existentes antes de escribir código nuevo?
¿Se mantiene un calendario de proyecto actualizado?
¿Trabajan en base a especificaciones de algún tipo?
¿Los programadores tienen condiciones adecuadas y tranquilas de
trabajo?
¿Se utilizan las mejores herramientas que el dinero puede comprar?
¿Se tienen probadores? ¿Se tienen probadores dedicados sólo a las
pruebas?
¿Los nuevos candidatos a programadores escriben código durante
su entrevista de trabajo?
¿Se realizan pruebas de usabilidad?

entre otras, y no necesariamente en este orden...
Fuente: Joel on Software / http://www.joelonsoftware.com/articles/fog0000000043.html
¿proceso?
¿modelo de proceso?
Métodos / Metodologías
¿Qué es el Proceso?
Un proceso define quien está haciendo qué, cuándo
y cómo lograr cierta meta.
The three “Amigos”
Un proceso es "una serie de pasos que involucra
actividades, restricciones y recursos que producen
una salida de algún tipo"
Pfleeger

...
Métodos / Metodologías
¿Qué es el Proceso?

Los "procesos de desarrollo de software"
poseen reglas preestablecidas, y deben
ser aplicados en la creación del software de
mediano y gran porte, ya que en caso
contrario lo más seguro es que el proyecto o
no logre concluir o termine sin cumplir los
objetivos previstos, y con variedad de fallos
inaceptables (fracasan, en pocas palabras).
Tomado de:http://es.wikipedia.org/wiki/Software

...en realidad, esta definición se refiere
a un “modelo de proceso”...
Métodos / Metodologías
(Diferencia entre Proceso y Modelo de Proceso)
Un modelo de proceso de software es una
representación abstracta de un proceso de
software.
Sommerville
Modelo de Proceso (lo que debería ocurrir)

P2

P1

...

...
Proceso Real (lo que ocurre)

Pn
Algunas Características de los Procesos
(Modelos de...)
Claridad: ¿Es fácil de
comprender?

Visibilidad: ¿Puedo Ver lo
que Ocurre en el Proceso?

Fiabilidad: Probabilidad
de Buen Funcionamiento

Robustez: ¿Es Difícil de
Perturbar?

Facilidad de Soporte

Facilidad de
Mantenimiento

Aceptación: ¿Se vende?
¿Los “Usuarios” lo
Consideran Viable?

Rapidez: ¿Permite
Entregar Rápido el
Producto?

Conveniencia: ¿Es el
método conveniente para
lo que vamos a hacer?

Adaptabilidad: ¿Lo puedo
cambiar según las
necesidades?
Procesos Livianos vs Pesados

Procesos Livianos
(O de “peso liviano”)
Procesos Pesados
(O de “peso pesado”)
entregables,
subproductos,
hitos, etc
Métodos / Metodologías
(Hitos)
Estudio de
Viabilidad

Informe
de
Viabilidad

La definición y
verificación de
Hitos es una
forma de darle
“visibilidad” al
proceso

Perfilar
Requisitos

Definición
de
Requisitos

Desarrollo de
Prototipos

Especificación
de Requisitos

Especificación
de
Requisitos

Prototipos

Informe
de
Evaluación
de Prototipos

Fuente: Adaptado de EPS Informática UAM (T3: 18/19)
Métodos / Metodologías
(Hitos)
Producto intermedio “enseñable”
Se consigue un hito cuando se ha revisado la calidad
de uno o más productos y se han aceptado
Tras cada hito se debería generar un informe de
progreso del proyecto
Definir Qué, Quién, Cuándo y Cómo se va a evaluar
Coincidiendo con el final de una fase (al menos)
Definir los productos correspondientes a cada hito
Fuente EPS Informática UAM (T3: 18/19)
roles
actores
Métodos / Metodologías
(Roles)

Los roles sirven para definir
quién hace que (y
probablemente cuando), son una
forma de asignar y definir
responsabilidades a personas,
sin tener que nombrar a las
personas en particular
Métodos / Metodologías
(Roles)
Un cerdo y un pollo van caminando por la carretera. El pollo le dice al
cerdo:*
-Oye, ¿por qué no abrimos un restaurante?
El cerdo se vuelve y le responde:
-Buena idea, ¿cómo quieres que lo llamemos?
El pollo se lo piensa y propone:
-¿Por qué no lo llamamos “Huevos con jamón”.
Rol: Las acciones o actividades asignadas o requeridas de una persona o
grupo (“La función del maestro”, “El gobierno debe de...”)
Rol: Un personaje o parte escenificada por un actor; El comportamiento
esperado de un individuo en la sociedad. La función o posición de algo.
-No cuentes conmigo -responde el cerdo-. En ese caso, tú sólo estarías
IMPLICADO, mientras que yo estaría realmente COMPROMETIDO.
* Fuente: Tomado de SCRUM
Métodos / Metodologías
(Roles)

importante
No confundir los roles en los procesos de
desarrollo con los actores o roles del
sistema o con los interesados o
“stakeholders”
¡Son dos cosas totalmente distintas!
Ej: Describir al “desarrollador” como actor
del sistema en el documento de casos de
uso probablemente será un error en la
mayoría de los casos
¿modelos básicos
de procesos?
...modelos de procesos muy generales (algunas veces llamados paradigmas de
proceso) ... Esto es, vemos el marco de trabajo del proceso, pero no los detalles de
actividades especìficas. Estos modelos generales no son descripciones definitivas
de los procesos del software. Más bien, son abstracciones de los procesos que se
pueden usar para explicar diferentes enfoques del desarrollo de software...
Ian Sommerville
lo que
algunas veces
pasa
(y no debería)
Ciclo de Vida / Ciclo de Desarrollo
(Lo que usualmente pasa, y no debe pasar)

Análisis

Diseño

Pruebas

Codificación
proceso en
cascada
¿Proceso en Cascada?
Definición de
Requerimientos

Diseño de Sistema
y de Software
Cliente...

¿se parece al
proceso de
solución de
problemas en
ingeniería?

Implementación
y Pruebas de
Unidades

Se hacen compromisos
en las etapas iniciales
El resultado de cada etapa son
documentos firmados y aprobados
por las partes involucradas
Altos costos, especialmente si se
requieren cambios

Integración y
Prueba del
Sistema

¿Que voy a hacer?

¿Cómo lo voy
a hacer?

¿Cómo se ve
completo?
¿Lo hice bien?

Operación y
Mantenimiento
Modelo en V
Operación y
Mantenimiento

Valida Requerimientos

Definición de
Requerimientos

Diseño de
Sistema y de
Software

Pruebas de
Aceptación

Verifica Diseño

Verifica Diseño

Pruebas de
Sistema

Pruebas de
unidades e
integración

Diseño de
Programa

Codificación

Es una variación del
modelo de cascada que
hace explícito el proceso de
Verificación (V) en las fases
de análisis y diseño
¿Proceso en Cascada?

Definición de
Requerimientos

Diseño de Sistema
y de Software

Implementación
y Pruebas de
Unidades

Operación y
Mantenimiento

¿Por qué falla
el proceso en
cascada?

Integración y
Prueba del
Sistema

Lo que sucede
en realidad...
¿Proceso en Cascada?
Es el modelo más simple, conocido
El producto / resultado sólo se ve al final (para el cliente). Si
existe algún error (diferencia) ésto tiene un resultado
catastrófico
Suele ser difícil para el cliente establecer TODOS los
requisitos de manera explicita (y al principio del proceso).
Naturaleza del software: Cambio
Suele ser difícil para el cliente establecer TODA las
arquitectura del software de manera explicita al principio del
proceso.
Se producen estados de bloqueo, en los que algunos
miembros del equipo deben esperar a otros para terminar
tareas dependientes
proceso / modelo
en espiral
Modelo de Riesgos o de Espiral

En general se puede asociar cada giro a una fase del proceso de
desarrollo. Ej. 1er giro: objetivos, alternativas restricciones; 2do
giro: especificación de requisitos; 3er giro: diseño; 4to giro:
implementación, etcétera.
Fuente; http://es.wikipedia.org/wiki/Espiral_de_Boehm
Modelo de Riesgos o de Espiral

Fuente; http://en.wikipedia.org/wiki/Spiral_model
Modelo de Riesgos o de Espiral

Incluye de forma explícita en cada giro la especificación de
objetivos, definición de alternativas y restricciones y
evaluación de riesgos (verdaderamente importante)
En cada giro se construye un nuevo modelo del sistema.
Hasta los momentos, se considera el mejor modelo para el
desarrollo de sistemas grandes (El más fiable)
No es aconsejable para sistemas pequeños debido a su alta
complejidad
procesos
iterativos
incrementales
Modelos Incrementales
(Modelo Incremental)

¿qué es un incremento?
(incrementar algo)
¿qué es una iteración?
(iterar)
Modelos Incrementales
(Modelo Incremental)
Incrementos

...
Incremento 1

Incremento 2

Las fases se dividen en
incrementos, en cada incremento
se desarrolla una parte de la
funcionalidad y se validan los
productos resultantes

Incremento 3

Cliente

Incremento N

En general, una vez los
productos de una fase se
consideran listos, estos no se
modifican más a lo largo de las
siguientes fases
Modelos Incrementales
(Modelo Incremental)
CU

Incremento 1
CU

CU

CU

CU

actor

Incremento 2
Incremento 3
Incremento 4

CU
actor

CU

CU

CU
actor

CU
CU
CU
actor

En general, cada incremento
añade funcionalidad nueva al
sistema, de manera que el
usuario puede ir utilizando
(validando) la funcionalidad antes
de terminar el sistema completo
Modelos Incrementales
(Modelo Incremental)
El sistema se desarrolla como una secuencia de pasos e
iteraciones una vez establecida la arquitectura global
Los usuarios pueden experimentar con los productos
resultantes de cada iteración, y usualmente el equipo de
desarrollo puede continuar con el trabajo mientras que los
usuarios experimentan con el sistema
En general, la idea es combinar lo mejor de las estrategias
orientadas a prototipos con una buena gestión
En general, luego de que se valida y se termina un
componente, este no se cambia (o se procura no cambiarlo) a
menos que se encuentren errores (Bugs)
Modelos Incrementales
(Modelo Iterativo)
Iteraciones

...
Iteración 1

Iteración 2

Iteración 3

Iteración N

Cada iteración refina lo realizado en la iteración anterior. De
esta forma se produce una dinámica en la que se van mejorando
los productos (entregables) obtenidos en la iteración anterior.
Eventualmente se realizarán todas las iteraciones planificadas, o
se llegará al nivel de refinamiento deseado
Modelos Incrementales
(Modelo Incremental)

¿un proceso puede ser
iterativo e incremental?
...
generalmente si
Modelos Incrementales
(Modelo Iterativo)

Cada fase
se repite
cierta
cantidad de
veces
Modelo Iterativo-Incremental
Ojo con los términos y las confusiones en relación a la
concepción de los modelos iterativos, incremetales y evolutivos

También se puede iterar sobre todo el proceso de desarrollo,
aunque esto está mas asociado a los procesos evolutivos que a
los procesos iterativos
Modelos Incrementales
(Modelo Incremental / UP)

Iteraciones para
cada una de las
fases

La visión de UP (Unified
Process)
White Watch,
¿Iterativo o Incremental?
Modelos Incrementales
(Modelo Incremental)

Excelente artículo de Alistair
Cockburn sobre desarrollo
incremental y desarrollo iterativo:
http://alistair.cockburn.us/Incremental+versus+iterative+development

Básicamente aclara bastante la confusión
existente entre los dos términos
Modelos Incrementales
(Modelo Incremental)
Incremental development defined
‘’By “incremental development”, I specifically mean a’’
staging and scheduling strategy ‘’in which the various parts of the
system are developed at different times or rates, and integrated as
they are completed.’’
‘’It neither implies, requires nor precludes iterative development
or waterfall development – both of those are rework strategies. The
alternative to incremental development is to develop the entire
system with a “big bang” integration.’‘
—
‘’Incremental’’ development helps you improve your process. Each
time around the process, you get to change and improve your work
habits.
Alistair Cockburn:
http://alistair.cockburn.us/Incremental+versus+iterative+development
Modelos Incrementales
(Modelo Incremental)
Iterative development defined
‘’By “iterative development”, I specifically wish to mean a’’
rework scheduling strategy ‘’in which time is set aside to revise and
improve parts of the system.’’
‘’It does not presuppose incremental development, but works
very well with it. As shown in the figures, the difference is that an
increment may actually ship, whereas an iteration is examined for
modification.’‘
—
‘’Iterative’’ development helps you improve your product. Each time
around the process you get to change and improve the product itself
(and maybe some of your work habits)
Alistair Cockburn:
http://alistair.cockburn.us/Incremental+versus+iterative+development
procesos evolutivos
y
basados en
prototipos
Modelos Evolutivos
La definición y especificación de requerimientos y el desarrollo
de software es un proceso evolutivo que demanda la
experimentación previa con algún componente (o la totalidad)
del Sistema Programado (Ej. Interfaz U-S, función o subsistema)
antes de desarrollar la totalidad del sistema.

¿qué es evolucionar?
Modelos Evolutivos
Logran su objetivo por medio
del desarrollo de una serie de
prototipos que van
evolucionando a medida que
se tiene realimentación del
cliente

Versión
Inicial

Desarrollo

Versiones
Intermedias

Validación

Bosquejo
Inicial

Especificación
Diseño

Versión
Final

Pretende vencer las
limitaciones del modelo en
cascada debidas a la
deficiente realimentación
entre sus fases
Fuente; Sommerville / Ingeniería del Software
Modelos Evolutivos

¿qué es un prototipo?
Modelos Basados en Prototipos

Prototipos Evolutivos
Poner un sistema a disposición de los usuarios
finales. El proceso comienza con una serie de
requisitos, se desarrollan una serie de prototipos, se
exponen al usuario y se van refinando paso a paso

Prototipos Experimentales
Prototipos Desechables / Exploratorios
Se desarrollan prototipos (que luego se desecharan)
para aclarar aspectos particulares de los
requerimientos del usuario. Este conocimiento se
utilizará para especificar/diseñar/desarrollar la
aplicación
Modelos Basados en Prototipos
Esta estrategia suele ser útil
y práctica para sistemas
pequeños (<100K LC) y
medianos (<500K LC)

Requisitos
(Versión Inicial)
aunque esto es
muy, muy relativo
también

Prototipos
Evolutivo

Un prototipo se puede
ver como una
especificación de lo que
se desea desarrollar...

Prototipos
Experimental

Sistema

Desarrollo

Prototipos
Ejecutables
+
Especificación
Definitiva
Modelos Basados en Prototipos
(No desechable)

Necesidades
/ Validación

Construir
Prototipo del
Sistema

Especificación
Abstracta

NO

Entregar
el Sistema

SI

¿Sistema es
Adecuado?

Usar
Prototipo del
Sistema
Integración del Proceso en Cascada y el
Desarrollo Basado en Prototipos
Análisis de
Requerimientos

Los Prototipos
también se
pueden utilizar
para minimizar o
cuantificar
riesgos...

Diseño de
Sistema
Diseño de
Programa

Codificación

Pruebas

Desarrollo de
Prototipos

Operación y
Mantenimiento

Integración del modelo de prototipos con el modelo de cascada
(Adaptado de Pfleeger, 1998)
Modelos Basados en Prototipos
Útiles en sistemas (O aspectos de un sistema) en los que no
es posible inicialmente (o es difícil) desarrollar una
especificación. Ej: Sistemas de Inteligencia artificial, Interfaces
de Usuario, etcétera
Usualmente se basan en técnicas que permiten obtener
versiones rápidas del sistema, que se pueden poner en
operación tan rápido como sea posible: Rapid Application
Development (RAD)
Los requisitos no funcionales no se prueban / determinan
adecuadamente en el prototipo (Ej. seguridad, rendimiento, u
otros
Práctica generalmente para sistemas pequeños / medianos
(<100K o <500K líneas de código)
Modelos Basados en Prototipos
El Proceso, la evolución, el avance, es difícil de medir. No
siempre es fácil responder a la pregunta: ¿Cuanto falta para
terminar el sistema? (El proceso no siempre es visible)
Los cambios continuos pueden provocar la destrucción de la
estructura del sistema
Es posible que no se puedan realizar verificaciones formales,
debido a que es posible que no exista una especificación
formal y/o documentación bien definida
Es difícil establecer contratos, una implementación no tiene
carácter de contrato
¡Excelentes para mitigar riesgos y hacer una negociación
justa con el cliente!
...por cierto...
Modelo de Riesgos o de Espiral

¿Será el proceso en espiral incremental,
iterativo, evolutivo, etc?
procesos
basados en la
reutilización de
componentes
Desarrollo Basado en Reutilización
(Componentes)
“Almacén/Catálogo de
Componentes Reutilizables

Bosquejar los
Requerimientos
del
Sistema

Buscar
Componentes
Reutilizables
(COTS)
(Ej. Aplicaciones
Listas o Casi
Listas)

Modificar
Requerimientos
Acorde a los
Componentes
Encontrados

Diseño
Arquitectónico

Buscar
Componentes
Reutilizables
(COTS)
(Ej. Librerías,
Frameworks u
otros)

Diseñar el
Sistema
Utilizando los
Componentes
Reutilizados

+

Modificar
Componentes
Encontrados

+

Modificar
Componentes
Encontrados

COTS: Commercial Off the Shelf
Fuente; Sommerville / Ingeniería del Software (Excepto lo rojo)
Desarrollo Basado en Reutilización
(Componentes)

El costo del sistema se puede reducir notablemente debido a
la reutilización
El sistema se construye “uniendo” componentes existentes
Se está limitado a los componentes existentes, es necesario
negociar los requerimientos en base a estos, o modificar los
componentes (lo que no siempre es fácil) para lograr
satisfacerlos (o ambas cosas)
Se necesita todo un “armazón” o un “lenguaje” para poder unir
los componentes
importancia de
involucrar al
usuario / cliente
en el proceso de
desarrollo
¿Proceso en Cascada?

Diferencia entre las
expectativas del usuario y los
resultados producidos

el precio que se paga si no se involucra al
usuario en el proceso de desarrollo
Modelos Basados en Prototipos
(Y en general, modelos iterativos)

Diferencia entre las expectativas del usuario y los resultados
producidos
(muchos métodos ágiles logran esto también involucrando al
cliente lo más que sea posible)
modelos ágiles
(XP)
http://www.agile-software-development.com/2007/05/beauty-of-not-doing-agile-development.html
Modelos ágiles
(XP)
XP (eXtreme Programing): Es una estratégia de
desarrollo de software creada hace aproximadamente
unos diez años que ha causado un gran revuelo entre el
colectivo de programadores del mundo
Kent Beck, su autor, es un programador que ha
trabajado en múltiples empresas. Actualmente trabaja en
la conocida empresa automovilística DaimlerChrysler
Con sus teorías ha conseguido el respaldo de gran parte
de la industria del software y el rechazo de otra parte
http://www.extremeprogramming.org
Modelos ágiles
(XP)

Historia (cuento)
de usuario

Generación de Factura
Versión inicial de la
arquitectura

El usuario introduce la información del cliente. Si el 
cliente ya está registrado con sólo introducir la cédula se 
Prototipo, prueba
deben cargar sus datos. Luego se ingresan los elementos a 
o experimento
rápido pensado facturar y las cantidades de cada elemento.
para reducir el Finalmente el sistema registra la factura y es capaz de 
riesgo
imprimirla en la impresora local asociada al terminal del 
usuario
Modelos ágiles
(XP / Características)
1) El desarrollo del plan: Determinar rápidamente el alcance
de la siguiente iteración / entrega en base a las prioridades
del negocio (cliente) y los estimados técnicos. Estar
dispuestos a cambiar el plan a medida que es necesario.
2) Liberar mucho, en incrementos pequeños: Poner el
sistema en producción los más rápido posible (el mínimo
necesario) y desarrollar las siguientes versiones con el ciclo
lo mas corto posible.
3) Diseño simple: Mantener el diseño lo más simple posible
(KISS: Keep it Simple Stup$%#id), concentrarse en el
presente y no en el futuro
(YAGNI: You ain't going to need it)
Modelos ágiles
(XP / Características)
4) Pruebas unitarias continuas: Sirven para evitar que los
programadores se equivoquen, para evitar las “parcelas” de
código y para validar constantemente la aplicación. Los
clientes también pueden escribir pruebas para validar /
demostrar ciertas características del sistema.
5) Programación en parejas: Todo el código a ponerse en
producción es escrito en parejas. ¿Sabe usted por que?
6) Propiedad colectiva: Nadie es dueño de ninguna clase, de
ningún artefacto, de ninguna parte del código.
7) Integración continua: Las características del sistema se
desarrollan y se integran a diario. Luego se corren las
pruebas y se verifica que la aplicación corra correctamente.
Modelos ágiles
(XP / Características)

8) 40 horas a la semana: Nadie. ¡NADIE! Trabaja horas extra.
¿Sabe usted porque?
9) El cliente involucrado en el ambiente de desarrollo: El
cliente (o un representante) es un miembro más del equipo
de desarrollo.
10)Estándares de codificación: Se definen estándares
adecuados de codificación y se respetan. Sobre todo
aquellos que enfatizan la “auto-documentación” y adecuada
documentación del código.
Modelos ágiles
(XP / Características)
Modelos ágiles
(XP / Valores)
Simplicidad: Es la base de la programación extrema. La idea es
simplificar el diseño lo más posible para agilizar el desarrollo y
facilitar el mantenimiento.
Comunicación: Se realiza de diferentes formas:
1) Para los programadores el código comunica mejor. La simplicidad del
código hace que este sea legible. Es mejor tener “código
autodocumentado” que código con grandes cantidades de
documentación, ya que la documentación corre el riesgo de quedar
desfasada con el código a medida que este es modificado.
2) Las pruebas unitarias comunican, ya que describen el diseño de las
clases y métodos al mostrar ejemplos concretos de como usar su
funcionalidad.
3) Los programadores se comunican constantemente gracias a la
programación en parejas.
4) La comunicación con el cliente es fluida ya que el cliente es parte del
equipo.
Modelos ágiles
(XP / Valores)
Retroalimentación (feedback): El cliente está integrado en el
proyecto de modo que su opinión sobre el estado del proyecto se
conoce en tiempo real. Como las iteraciones son muy cortas (2-4
semanas) se minimiza el tener que rehacer partes que no cumplen
con los requisitos y ayuda a los programadores a centrarse en lo
que es más importante
Respeto: Todo el mundo recibe y siente el respeto que merece
como miembro valioso del equipo de desarrollo. Todos en el equipo
aportan valor, aun si es simple entusiasmo. Los desarrolladores
respetan la experiencia de sus clientes y viceversa. La gerencia
respeta el derecho del equipo de aceptar la responsabilidad y
recibir la autoridad sobre su propio trabajo
Coraje o Valentía: Para los gerentes, muchas de las prácticas de
XP pueden parecer poco intuitivas o inclusive erradas
(programación en parejas, simplicidad, no pensar en la flexibilidad a
futuro, entre otras). Es necesario mucho “coraje” para aceptarlas y
vencer este prejuicio
Modelos Incrementales
(Modelo Incremental)

advertencia
La Programación Extrema (XP) y otros
métodos no significan desarrollar “sin
método”
Los métodos ágiles requieren en el
fondo mucha disciplina para poder
ejecutarlos y mantener el orden de
forma satisfactoria
modelos ágiles
(scrum)
http://www.agile-software-development.com/2007/05/beauty-of-not-doing-agile-development.html
Modelos Incrementales
(Modelo Incremental)

advertencia
las siguientes transparencias han sido
tomadas (¿mutiladas?) de la clase de
scrum que vimos al comienzo del
semestre, lo que viene es un simple
resumen
Modelos Ágiles
(SCRUM / Proceso)
requisitos
“features” de la
aplicación

reunión
diaria
resultado
(producto)
(entregas frecuentes)

tareas de
< 16 horas

requisitos para el
sprint (iteración)

sprints
(iteraciones)
(cortos)
Historias de Usuarios
(SCRUM / Requisitos)
Los requisitos del producto se capturan teniendo en
cuenta la visión del cliente y del usuario
Para ello se utilizan historias de usuario, que son unas
sencillas tarjetas en las que se recoge de forma
esquemática, sencilla y en un lenguaje claro una
interacción entre el usuario y el sistema
Generación de Factura
El usuario introduce la información del cliente. Si el 
cliente ya está registrado con sólo introducir la cédula se 
deben cargar sus datos. Luego se ingresan los elementos a 
facturar y las cantidades de cada elemento.
Finalmente el sistema registra la factura y es capaz de 
imprimirla en la impresora local asociada al terminal del 
usuario
Historias de Usuarios
(SCRUM / Requisitos)
Generación de Factura
El usuario introduce la información del cliente. Si el 
cliente ya está registrado con sólo introducir la cédula se 
deben cargar sus datos. Luego se ingresan los elementos a 
facturar y las cantidades de cada elemento.
Finalmente el sistema registra la factura y es capaz de 
imprimirla en la impresora local asociada al terminal del 
usuario

Las historias de usuario sirven de “recordatorio” de un
grupo de características que es necesario implementar
en el sistema.
Antes de implementar una característica se produce una
discusión con el usuario y se refina y extiende la
información de la historia de usuario
Modelos Ágiles
(SCRUM / Requisitos)

Los requisitos del product backlog se priorizan y se
asignan a los distintos sprints planificados, es decir,
al sprint backlog de cada sprint
SCRUM
(Roles)

ese cuento ha sido
inmortalizado de
muchas formas
SCRUM
(Roles)

cerdos
(realmente
comprometidos)

pollos
(involucrados)
Modelos Ágiles
(Gestión y Seguimiento / Reunión Diaria)
Reunión Diaria:
Es una figura fundamental en SCRUM.
Tiene que reunirse TODO el equipo y debe hacerse
según ciertas reglas
Modelos Ágiles
(Gestión y Seguimiento / Scrum Burn Down)

EJE Y
Trabajo restante,
horas, puntos de
función u otra
unidad de medida
EJE X
Día o fecha del sprint

Esto es responsabilidad
del Scrum Master
Modelos Ágiles
(Gestión y Seguimiento / Task Boards)

http://www.mountaingoatsoftware.com/scrum/task-boards
bien... pero...

¿qué método o proceso de desarrollo
de software debo utilizar?
¿Qué Método o Proceso de desarrollo de
software debo utilizar?

Recuerde que no todos los proyectos y tipos de aplicaciones a
desarrollar son iguales. Use el método que más se adapte a
sus necesidades o al proyecto a enfrentar: No existen
métodos perfectos o soluciones universales...
Evite caer en el “fanatismo” de métodos: XP fans vs RUP fans
vs Scrum fans etc... (de hecho, evite caer en cualquier tipo de
fanatismo)
Si ya ha usado un método anteriormente en proyectos
similares a los que debe desarrollar y ha tenido resultados
adecuados entonces vuelva a utilizar ese método...
¿Qué Método o Proceso de desarrollo de
software debo utilizar?
En proyectos pequeños / medianos los métodos ágiles
pueden ser adecuados
En grandes aplicaciones empresariales el proceso unificado
puede generar los resultados adecuados
En proyectos con mucho personal los métodos ágiles pueden
no ser el enfoque adecuado
Recuerde que en el fondo el método NO es lo importante, el
método no es el fin. El método es sólo una herramienta para
lograr el verdadero objetivo: terminar el proyecto a tiempo,
dentro del presupuesto y con las características requeridas.
¡Mantenga siempre la mira y la concentración en el
producto, que es el verdadero objetivo!
¿cómo se describe
un método
o proceso?
hay muchas formas, pero...
Métodos / Metodologías
(Descripción de Procesos)

Proceso
Técnico 1

Proceso
Técnico 2

...

Proceso
Técnico N

Procesos
fundamentales
del desarrollo
de software

Proceso de gestión o de soporte 1

Proceso de gestión o de soporte 2

...

Procesos de
apoyo al
desarrollo de
software

Proceso de gestión o de soporte M

Fuente: GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES
EMPRESARIALES / Noviembre 2008
Métodos / Metodologías
(Descripción de Procesos)
Grupo de
Procesos

Proceso A

...

...

Subproceso
A.1

Proceso B

...

...

Subproceso
A.n

Proceso C

...

Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES
EMPRESARIALES / Noviembre 2008
Métodos / Metodologías
(Descripción de Procesos)
<<regla>>

<<actor>>

<<objetivo>>

Reglas del
Negocio

Coordinador
del Proceso

Objetivo del
Proceso

<<regula>>

<<controla>>

<<persigue>>

<<recurso>>

Insumo o
Material
Requerido

<<producto>>

Salida

...

...

Proceso X

Información
Producida

<<producto>>

Entrada
<<ejecuta>>
<<recurso>>

Grupo o
Actor

<<apoya>>

Información
Requerida

<<apoya>>
<<repositorio>>

Datos

Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES
EMPRESARIALES / Noviembre 2008
Métodos / Metodologías
(Descripción de Procesos)
<<proceso>>
Planificación de Alcance

<<documento>>
Documento de
Inicio del
Proyecto

Planificar la
Gestión del
Alcance del
Proyecto

Definir el
Alcance del
Proyecto

Crear la
Estructura
de
Desglose
de Trabajo

<<documento>>
Plan Integral del
Proyecto
Actualizado

Actualizar el
Plan del
Proyecto

<<documento>>
Enunciado del
Alcance del
Proyecto
<<documento>>
Plan de Gestión
de Alcance

<<documento>>
Estructura de
Desglose de
Trabajo

Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES
EMPRESARIALES / Noviembre 2008
Métodos / Metodologías
(Descripción de Procesos)

Los modelos de
Productos describen
todos los productos
que se utilizan o se
producen en el método

Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES
EMPRESARIALES / Noviembre 2008
Métodos / Metodologías
(Descripción de Procesos)

El modelo de actores especifica
los actores / roles que participan
en el proceso de desarrollo y sus
respectivas responsabilidades
Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES
EMPRESARIALES / Noviembre 2008
¿algunos métodos
de desarrollo?
Algunos Métodos de Desarrollo

Extreme Programming (XP)
http://www.extremeprogramming.org/

Scrum
http://www.scrumalliance.org/
Algunos Métodos de Desarrollo

RUP (IBM Rational Unified Process)
http://www-01.ibm.com/software/awdtools/rup/

OpenUP (Open Unified Process)
(Muy Buena Referencia)
http://epf.eclipse.org/wikis/openup/

AgileUP (Agile Unified Process)
http://www.ambysoft.com/unifiedprocess/agileUP.html

otros...
Algunos Métodos de Desarrollo

Gray Watch
White Watch
(desarrollados aquí en la ULA)
Reflexión Final

reflexión final
Pase lo que pase, siempre procure
que el método de desarrollo que use
trabaje a su favor. Si el método que
está usando trabaja en su contra
¡entonces cambie el método!
Recuerde, el método no es importante,
lo importante es el cliente, el producto
y las personas involucradas en su
desarrollo
Gracias

¡Gracias!

Contenu connexe

Tendances

Modelos en la ingeniería de software
Modelos en la ingeniería de softwareModelos en la ingeniería de software
Modelos en la ingeniería de softwareMarco Aurelio
 
Ciclos De Vida
Ciclos De VidaCiclos De Vida
Ciclos De Vidajose haar
 
SCRUM: cómo agilizar proyectos de desarrollo de software
SCRUM: cómo agilizar proyectos de desarrollo de softwareSCRUM: cómo agilizar proyectos de desarrollo de software
SCRUM: cómo agilizar proyectos de desarrollo de softwareFidel Sheidmo Medina Guevara
 
4. Desarrollo ágil de software
4. Desarrollo ágil de software4. Desarrollo ágil de software
4. Desarrollo ágil de softwareCoesi Consultoria
 
Ciclo de vida del software
Ciclo de vida del softwareCiclo de vida del software
Ciclo de vida del softwarearealisherrera
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Marco Guerrero
 
metodologia de prototipos
metodologia de prototiposmetodologia de prototipos
metodologia de prototiposKeiner Valerio
 
Investigacion de modelos
Investigacion de modelosInvestigacion de modelos
Investigacion de modelosemilii17061991
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILOscar Limachi
 
Modelo De Desarrollo Evolutivo
Modelo De Desarrollo EvolutivoModelo De Desarrollo Evolutivo
Modelo De Desarrollo Evolutivocamilosena89
 
Modelos de Desarrollo
Modelos de DesarrolloModelos de Desarrollo
Modelos de DesarrolloALLSOFT
 
Metodología Cascada
Metodología CascadaMetodología Cascada
Metodología CascadaJesus Zuñiga
 

Tendances (18)

Paradigmas
ParadigmasParadigmas
Paradigmas
 
Modelos en la ingeniería de software
Modelos en la ingeniería de softwareModelos en la ingeniería de software
Modelos en la ingeniería de software
 
Ciclos De Vida
Ciclos De VidaCiclos De Vida
Ciclos De Vida
 
2 modelos de la ingenieria de software
2  modelos de la ingenieria de software2  modelos de la ingenieria de software
2 modelos de la ingenieria de software
 
SCRUM: cómo agilizar proyectos de desarrollo de software
SCRUM: cómo agilizar proyectos de desarrollo de softwareSCRUM: cómo agilizar proyectos de desarrollo de software
SCRUM: cómo agilizar proyectos de desarrollo de software
 
4. Desarrollo ágil de software
4. Desarrollo ágil de software4. Desarrollo ágil de software
4. Desarrollo ágil de software
 
Ciclo de vida del software
Ciclo de vida del softwareCiclo de vida del software
Ciclo de vida del software
 
Inf162 diapositiva...
Inf162 diapositiva...Inf162 diapositiva...
Inf162 diapositiva...
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3
 
metodologia de prototipos
metodologia de prototiposmetodologia de prototipos
metodologia de prototipos
 
Capacitacitación Tester - QA 2
Capacitacitación Tester - QA 2Capacitacitación Tester - QA 2
Capacitacitación Tester - QA 2
 
Capacitacitación Tester - QA 5
Capacitacitación Tester - QA 5Capacitacitación Tester - QA 5
Capacitacitación Tester - QA 5
 
Investigacion de modelos
Investigacion de modelosInvestigacion de modelos
Investigacion de modelos
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITIL
 
Modelo De Desarrollo Evolutivo
Modelo De Desarrollo EvolutivoModelo De Desarrollo Evolutivo
Modelo De Desarrollo Evolutivo
 
Unidad 2. Metodologías de Desarrollo
Unidad 2. Metodologías de DesarrolloUnidad 2. Metodologías de Desarrollo
Unidad 2. Metodologías de Desarrollo
 
Modelos de Desarrollo
Modelos de DesarrolloModelos de Desarrollo
Modelos de Desarrollo
 
Metodología Cascada
Metodología CascadaMetodología Cascada
Metodología Cascada
 

En vedette

CLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARE
CLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARECLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARE
CLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWAREBiingeSof
 
Curso Básico de Pl Sql Oracle
Curso Básico de Pl Sql OracleCurso Básico de Pl Sql Oracle
Curso Básico de Pl Sql Oracleluisguil
 
Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19Stalin Eduardo Tusa Vitar
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiCuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiJimmy Davila
 
Auditoria, seguridad y control de sistemas.ppt
Auditoria, seguridad y control de sistemas.pptAuditoria, seguridad y control de sistemas.ppt
Auditoria, seguridad y control de sistemas.pptFredy EC
 
6 Sistemas Basados en Reglas - Arquitectura Detallada
6 Sistemas Basados en Reglas - Arquitectura Detallada6 Sistemas Basados en Reglas - Arquitectura Detallada
6 Sistemas Basados en Reglas - Arquitectura DetalladaESCOM
 
Metodología open up ágil y tradicional
Metodología open up ágil y tradicionalMetodología open up ágil y tradicional
Metodología open up ágil y tradicionalCarmelo Hernandez
 
Clasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareClasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareElvisAR
 
Cuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_softwareCuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_softwareShaman King
 
Metodologias De Desarrollo De Software
Metodologias De Desarrollo De SoftwareMetodologias De Desarrollo De Software
Metodologias De Desarrollo De Softwareguesta1695670
 
7 pasos para desarrollar un software
7 pasos para desarrollar un software7 pasos para desarrollar un software
7 pasos para desarrollar un softwareGenesis_Pirela
 
Metodologias de desarrollo
Metodologias de desarrolloMetodologias de desarrollo
Metodologias de desarrolloHermes Romero
 
Como montar un servidor web en tu casa
Como montar un servidor web en tu casaComo montar un servidor web en tu casa
Como montar un servidor web en tu casaveronicaAW
 
Requerimientos de Usabilidad
Requerimientos de  UsabilidadRequerimientos de  Usabilidad
Requerimientos de Usabilidadgcaicedo
 

En vedette (18)

CLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARE
CLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARECLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARE
CLASIFICACIÓN DE LAS METODOLOGÍAS DE DESARROLLO DE SOFTWARE
 
Ingenieria de Software (Openup)
Ingenieria de Software (Openup)Ingenieria de Software (Openup)
Ingenieria de Software (Openup)
 
Curso Básico de Pl Sql Oracle
Curso Básico de Pl Sql OracleCurso Básico de Pl Sql Oracle
Curso Básico de Pl Sql Oracle
 
Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19
 
Metodologias
MetodologiasMetodologias
Metodologias
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiCuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
Auditoria, seguridad y control de sistemas.ppt
Auditoria, seguridad y control de sistemas.pptAuditoria, seguridad y control de sistemas.ppt
Auditoria, seguridad y control de sistemas.ppt
 
Scrum, Kanban & XP
Scrum, Kanban & XP Scrum, Kanban & XP
Scrum, Kanban & XP
 
6 Sistemas Basados en Reglas - Arquitectura Detallada
6 Sistemas Basados en Reglas - Arquitectura Detallada6 Sistemas Basados en Reglas - Arquitectura Detallada
6 Sistemas Basados en Reglas - Arquitectura Detallada
 
Metodología open up ágil y tradicional
Metodología open up ágil y tradicionalMetodología open up ágil y tradicional
Metodología open up ágil y tradicional
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de software
 
Clasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareClasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de software
 
Cuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_softwareCuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_software
 
Metodologias De Desarrollo De Software
Metodologias De Desarrollo De SoftwareMetodologias De Desarrollo De Software
Metodologias De Desarrollo De Software
 
7 pasos para desarrollar un software
7 pasos para desarrollar un software7 pasos para desarrollar un software
7 pasos para desarrollar un software
 
Metodologias de desarrollo
Metodologias de desarrolloMetodologias de desarrollo
Metodologias de desarrollo
 
Como montar un servidor web en tu casa
Como montar un servidor web en tu casaComo montar un servidor web en tu casa
Como montar un servidor web en tu casa
 
Requerimientos de Usabilidad
Requerimientos de  UsabilidadRequerimientos de  Usabilidad
Requerimientos de Usabilidad
 

Similaire à Is clase 13_metodos_y_procesos

2.- Introducción y Tipos de sistemas de información (2).ppt
2.- Introducción y Tipos de sistemas de información (2).ppt2.- Introducción y Tipos de sistemas de información (2).ppt
2.- Introducción y Tipos de sistemas de información (2).pptMatasEnriqueFarasPea
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREAlejandro Leon
 
Procesos de calidad software
Procesos de calidad softwareProcesos de calidad software
Procesos de calidad softwareAlejandro Leon
 
PROCESOS DE CALIDAD SOFTWARE
PROCESOS DE CALIDAD  SOFTWAREPROCESOS DE CALIDAD  SOFTWARE
PROCESOS DE CALIDAD SOFTWAREAlejandro Leon
 
Modelos de Ing de soft
Modelos de Ing de softModelos de Ing de soft
Modelos de Ing de softJazmin Cr
 
Trabajo de sistemas de software
Trabajo de sistemas de softwareTrabajo de sistemas de software
Trabajo de sistemas de softwareJhonJairoPerez
 
Proceso ( software )
Proceso ( software )Proceso ( software )
Proceso ( software )em3marquez
 
Ciclo de vida
Ciclo de vidaCiclo de vida
Ciclo de vidaFSILSCA
 
Curso ingeniería de software parte i
Curso ingeniería de software parte iCurso ingeniería de software parte i
Curso ingeniería de software parte iparafernalico
 
Arquitectura de Software y DevOps
Arquitectura de Software y DevOpsArquitectura de Software y DevOps
Arquitectura de Software y DevOpsJorge Eduardo Gaona
 
MODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWAREMODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWAREJesus Yepez
 
Si la gestión y desarrollo de requisitos es tan importante... ¿Por qué no la...
Si la gestión y desarrollo de requisitos es tan importante...  ¿Por qué no la...Si la gestión y desarrollo de requisitos es tan importante...  ¿Por qué no la...
Si la gestión y desarrollo de requisitos es tan importante... ¿Por qué no la...Pepe
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Unidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de softwareUnidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de softwareAndhy H Palma
 

Similaire à Is clase 13_metodos_y_procesos (20)

métodos y procesos
métodos y procesosmétodos y procesos
métodos y procesos
 
2.- Introducción y Tipos de sistemas de información (2).ppt
2.- Introducción y Tipos de sistemas de información (2).ppt2.- Introducción y Tipos de sistemas de información (2).ppt
2.- Introducción y Tipos de sistemas de información (2).ppt
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWARE
 
Procesos de calidad software
Procesos de calidad softwareProcesos de calidad software
Procesos de calidad software
 
PROCESOS DE CALIDAD SOFTWARE
PROCESOS DE CALIDAD  SOFTWAREPROCESOS DE CALIDAD  SOFTWARE
PROCESOS DE CALIDAD SOFTWARE
 
Modelos de Ing de soft
Modelos de Ing de softModelos de Ing de soft
Modelos de Ing de soft
 
Trabajo de sistemas de software
Trabajo de sistemas de softwareTrabajo de sistemas de software
Trabajo de sistemas de software
 
Modelos del software
Modelos del softwareModelos del software
Modelos del software
 
Proceso ( software )
Proceso ( software )Proceso ( software )
Proceso ( software )
 
Trabajo de desarrollo desoftware
Trabajo de desarrollo desoftwareTrabajo de desarrollo desoftware
Trabajo de desarrollo desoftware
 
Ciclo de vida
Ciclo de vidaCiclo de vida
Ciclo de vida
 
Curso ingeniería de software parte i
Curso ingeniería de software parte iCurso ingeniería de software parte i
Curso ingeniería de software parte i
 
Rup
RupRup
Rup
 
prueva
pruevaprueva
prueva
 
Arquitectura de Software y DevOps
Arquitectura de Software y DevOpsArquitectura de Software y DevOps
Arquitectura de Software y DevOps
 
MODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWAREMODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWARE
 
RUP
RUPRUP
RUP
 
Si la gestión y desarrollo de requisitos es tan importante... ¿Por qué no la...
Si la gestión y desarrollo de requisitos es tan importante...  ¿Por qué no la...Si la gestión y desarrollo de requisitos es tan importante...  ¿Por qué no la...
Si la gestión y desarrollo de requisitos es tan importante... ¿Por qué no la...
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Unidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de softwareUnidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de software
 

Is clase 13_metodos_y_procesos

  • 1. Métodos de Desarrollo de Software (o bien, como desarrollar software sin morir en el intento...) Universidad de los Andes Demián Gutierrez Julio 2011
  • 3. Métodos / Metodologías Método: Es un conjunto de herramientas, técnicas y procesos que brindan soporte y facilitan el logro u obtención de una meta ¿Cómo Construir un Reactor Nuclear?
  • 4. Métodos / Metodologías Método: que hacer, a lo largo de todo el ciclo de vida del software, para construir un producto bueno, de calidad, dentro del presupuesto y a tiempo ¿Cómo Construir un Reactor Nuclear software? software
  • 5. ¿ciclo de vida? ¿ciclo de desarrollo?
  • 6. Ciclo de Vida / Ciclo de Desarrollo Describe la vida de un producto de software desde su definición, pasando por su diseño, implementación, verificación, validación, entrega, y hasta su operación y mantenimiento
  • 7. ¿por qué es necesario un método para desarrollar software?
  • 8. Ciclo de Vida / Ciclo de Desarrollo por lo complejo que resulta desarrollar software
  • 9. Costo del Cambio Ciclo de Vida / Ciclo de Desarrollo Requerimientos / Análisis / Diseño / Implementación / Pruebas / Producción (aunque los métodos ágiles pueden cambiar esta visión) Fuente: Adaptado de Kent Beck / Extreme Programming Explained, Embrace the Change por el costo del cambio, la naturaleza del software y otras razones
  • 12. Métodos / Metodologías (Herramientas) Casos de Uso, Plantillas de Documentos, UML: Diagramas de Clases, de Casos de Uso, de Actividades, de Secuencia, etcétera. Grafos de navegación, lenguajes de programación, bibliotecas, armazones de aplicación (frameworks), entornos integrados de desarrollo (IDEs), armazones de pruebas, etcétera. Software de gestión, herramientas de gestión, etcétera y muchas otras...
  • 13. Métodos / Metodologías (Buenas Prácticas) ¿Su empresa usa control de código fuente? ¿Control de versiones? ¿Se hacen “compilaciones” (builds) e integraciones diarias? ¿Se tiene algún tipo de base de datos de defectos (bugs)? ¿Arreglan los defectos existentes antes de escribir código nuevo? ¿Se mantiene un calendario de proyecto actualizado? ¿Trabajan en base a especificaciones de algún tipo? ¿Los programadores tienen condiciones adecuadas y tranquilas de trabajo? ¿Se utilizan las mejores herramientas que el dinero puede comprar? ¿Se tienen probadores? ¿Se tienen probadores dedicados sólo a las pruebas? ¿Los nuevos candidatos a programadores escriben código durante su entrevista de trabajo? ¿Se realizan pruebas de usabilidad? entre otras, y no necesariamente en este orden... Fuente: Joel on Software / http://www.joelonsoftware.com/articles/fog0000000043.html
  • 15. Métodos / Metodologías ¿Qué es el Proceso? Un proceso define quien está haciendo qué, cuándo y cómo lograr cierta meta. The three “Amigos” Un proceso es "una serie de pasos que involucra actividades, restricciones y recursos que producen una salida de algún tipo" Pfleeger ...
  • 16. Métodos / Metodologías ¿Qué es el Proceso? Los "procesos de desarrollo de software" poseen reglas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo más seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras). Tomado de:http://es.wikipedia.org/wiki/Software ...en realidad, esta definición se refiere a un “modelo de proceso”...
  • 17. Métodos / Metodologías (Diferencia entre Proceso y Modelo de Proceso) Un modelo de proceso de software es una representación abstracta de un proceso de software. Sommerville Modelo de Proceso (lo que debería ocurrir) P2 P1 ... ... Proceso Real (lo que ocurre) Pn
  • 18. Algunas Características de los Procesos (Modelos de...) Claridad: ¿Es fácil de comprender? Visibilidad: ¿Puedo Ver lo que Ocurre en el Proceso? Fiabilidad: Probabilidad de Buen Funcionamiento Robustez: ¿Es Difícil de Perturbar? Facilidad de Soporte Facilidad de Mantenimiento Aceptación: ¿Se vende? ¿Los “Usuarios” lo Consideran Viable? Rapidez: ¿Permite Entregar Rápido el Producto? Conveniencia: ¿Es el método conveniente para lo que vamos a hacer? Adaptabilidad: ¿Lo puedo cambiar según las necesidades?
  • 19. Procesos Livianos vs Pesados Procesos Livianos (O de “peso liviano”) Procesos Pesados (O de “peso pesado”)
  • 21. Métodos / Metodologías (Hitos) Estudio de Viabilidad Informe de Viabilidad La definición y verificación de Hitos es una forma de darle “visibilidad” al proceso Perfilar Requisitos Definición de Requisitos Desarrollo de Prototipos Especificación de Requisitos Especificación de Requisitos Prototipos Informe de Evaluación de Prototipos Fuente: Adaptado de EPS Informática UAM (T3: 18/19)
  • 22. Métodos / Metodologías (Hitos) Producto intermedio “enseñable” Se consigue un hito cuando se ha revisado la calidad de uno o más productos y se han aceptado Tras cada hito se debería generar un informe de progreso del proyecto Definir Qué, Quién, Cuándo y Cómo se va a evaluar Coincidiendo con el final de una fase (al menos) Definir los productos correspondientes a cada hito Fuente EPS Informática UAM (T3: 18/19)
  • 24. Métodos / Metodologías (Roles) Los roles sirven para definir quién hace que (y probablemente cuando), son una forma de asignar y definir responsabilidades a personas, sin tener que nombrar a las personas en particular
  • 25. Métodos / Metodologías (Roles) Un cerdo y un pollo van caminando por la carretera. El pollo le dice al cerdo:* -Oye, ¿por qué no abrimos un restaurante? El cerdo se vuelve y le responde: -Buena idea, ¿cómo quieres que lo llamemos? El pollo se lo piensa y propone: -¿Por qué no lo llamamos “Huevos con jamón”. Rol: Las acciones o actividades asignadas o requeridas de una persona o grupo (“La función del maestro”, “El gobierno debe de...”) Rol: Un personaje o parte escenificada por un actor; El comportamiento esperado de un individuo en la sociedad. La función o posición de algo. -No cuentes conmigo -responde el cerdo-. En ese caso, tú sólo estarías IMPLICADO, mientras que yo estaría realmente COMPROMETIDO. * Fuente: Tomado de SCRUM
  • 26. Métodos / Metodologías (Roles) importante No confundir los roles en los procesos de desarrollo con los actores o roles del sistema o con los interesados o “stakeholders” ¡Son dos cosas totalmente distintas! Ej: Describir al “desarrollador” como actor del sistema en el documento de casos de uso probablemente será un error en la mayoría de los casos
  • 27. ¿modelos básicos de procesos? ...modelos de procesos muy generales (algunas veces llamados paradigmas de proceso) ... Esto es, vemos el marco de trabajo del proceso, pero no los detalles de actividades especìficas. Estos modelos generales no son descripciones definitivas de los procesos del software. Más bien, son abstracciones de los procesos que se pueden usar para explicar diferentes enfoques del desarrollo de software... Ian Sommerville
  • 29. Ciclo de Vida / Ciclo de Desarrollo (Lo que usualmente pasa, y no debe pasar) Análisis Diseño Pruebas Codificación
  • 31. ¿Proceso en Cascada? Definición de Requerimientos Diseño de Sistema y de Software Cliente... ¿se parece al proceso de solución de problemas en ingeniería? Implementación y Pruebas de Unidades Se hacen compromisos en las etapas iniciales El resultado de cada etapa son documentos firmados y aprobados por las partes involucradas Altos costos, especialmente si se requieren cambios Integración y Prueba del Sistema ¿Que voy a hacer? ¿Cómo lo voy a hacer? ¿Cómo se ve completo? ¿Lo hice bien? Operación y Mantenimiento
  • 32. Modelo en V Operación y Mantenimiento Valida Requerimientos Definición de Requerimientos Diseño de Sistema y de Software Pruebas de Aceptación Verifica Diseño Verifica Diseño Pruebas de Sistema Pruebas de unidades e integración Diseño de Programa Codificación Es una variación del modelo de cascada que hace explícito el proceso de Verificación (V) en las fases de análisis y diseño
  • 33. ¿Proceso en Cascada? Definición de Requerimientos Diseño de Sistema y de Software Implementación y Pruebas de Unidades Operación y Mantenimiento ¿Por qué falla el proceso en cascada? Integración y Prueba del Sistema Lo que sucede en realidad...
  • 34. ¿Proceso en Cascada? Es el modelo más simple, conocido El producto / resultado sólo se ve al final (para el cliente). Si existe algún error (diferencia) ésto tiene un resultado catastrófico Suele ser difícil para el cliente establecer TODOS los requisitos de manera explicita (y al principio del proceso). Naturaleza del software: Cambio Suele ser difícil para el cliente establecer TODA las arquitectura del software de manera explicita al principio del proceso. Se producen estados de bloqueo, en los que algunos miembros del equipo deben esperar a otros para terminar tareas dependientes
  • 36. Modelo de Riesgos o de Espiral En general se puede asociar cada giro a una fase del proceso de desarrollo. Ej. 1er giro: objetivos, alternativas restricciones; 2do giro: especificación de requisitos; 3er giro: diseño; 4to giro: implementación, etcétera. Fuente; http://es.wikipedia.org/wiki/Espiral_de_Boehm
  • 37. Modelo de Riesgos o de Espiral Fuente; http://en.wikipedia.org/wiki/Spiral_model
  • 38. Modelo de Riesgos o de Espiral Incluye de forma explícita en cada giro la especificación de objetivos, definición de alternativas y restricciones y evaluación de riesgos (verdaderamente importante) En cada giro se construye un nuevo modelo del sistema. Hasta los momentos, se considera el mejor modelo para el desarrollo de sistemas grandes (El más fiable) No es aconsejable para sistemas pequeños debido a su alta complejidad
  • 40. Modelos Incrementales (Modelo Incremental) ¿qué es un incremento? (incrementar algo) ¿qué es una iteración? (iterar)
  • 41. Modelos Incrementales (Modelo Incremental) Incrementos ... Incremento 1 Incremento 2 Las fases se dividen en incrementos, en cada incremento se desarrolla una parte de la funcionalidad y se validan los productos resultantes Incremento 3 Cliente Incremento N En general, una vez los productos de una fase se consideran listos, estos no se modifican más a lo largo de las siguientes fases
  • 42. Modelos Incrementales (Modelo Incremental) CU Incremento 1 CU CU CU CU actor Incremento 2 Incremento 3 Incremento 4 CU actor CU CU CU actor CU CU CU actor En general, cada incremento añade funcionalidad nueva al sistema, de manera que el usuario puede ir utilizando (validando) la funcionalidad antes de terminar el sistema completo
  • 43. Modelos Incrementales (Modelo Incremental) El sistema se desarrolla como una secuencia de pasos e iteraciones una vez establecida la arquitectura global Los usuarios pueden experimentar con los productos resultantes de cada iteración, y usualmente el equipo de desarrollo puede continuar con el trabajo mientras que los usuarios experimentan con el sistema En general, la idea es combinar lo mejor de las estrategias orientadas a prototipos con una buena gestión En general, luego de que se valida y se termina un componente, este no se cambia (o se procura no cambiarlo) a menos que se encuentren errores (Bugs)
  • 44. Modelos Incrementales (Modelo Iterativo) Iteraciones ... Iteración 1 Iteración 2 Iteración 3 Iteración N Cada iteración refina lo realizado en la iteración anterior. De esta forma se produce una dinámica en la que se van mejorando los productos (entregables) obtenidos en la iteración anterior. Eventualmente se realizarán todas las iteraciones planificadas, o se llegará al nivel de refinamiento deseado
  • 45. Modelos Incrementales (Modelo Incremental) ¿un proceso puede ser iterativo e incremental? ... generalmente si
  • 46. Modelos Incrementales (Modelo Iterativo) Cada fase se repite cierta cantidad de veces
  • 47. Modelo Iterativo-Incremental Ojo con los términos y las confusiones en relación a la concepción de los modelos iterativos, incremetales y evolutivos También se puede iterar sobre todo el proceso de desarrollo, aunque esto está mas asociado a los procesos evolutivos que a los procesos iterativos
  • 48. Modelos Incrementales (Modelo Incremental / UP) Iteraciones para cada una de las fases La visión de UP (Unified Process)
  • 50. Modelos Incrementales (Modelo Incremental) Excelente artículo de Alistair Cockburn sobre desarrollo incremental y desarrollo iterativo: http://alistair.cockburn.us/Incremental+versus+iterative+development Básicamente aclara bastante la confusión existente entre los dos términos
  • 51. Modelos Incrementales (Modelo Incremental) Incremental development defined ‘’By “incremental development”, I specifically mean a’’ staging and scheduling strategy ‘’in which the various parts of the system are developed at different times or rates, and integrated as they are completed.’’ ‘’It neither implies, requires nor precludes iterative development or waterfall development – both of those are rework strategies. The alternative to incremental development is to develop the entire system with a “big bang” integration.’‘ — ‘’Incremental’’ development helps you improve your process. Each time around the process, you get to change and improve your work habits. Alistair Cockburn: http://alistair.cockburn.us/Incremental+versus+iterative+development
  • 52. Modelos Incrementales (Modelo Incremental) Iterative development defined ‘’By “iterative development”, I specifically wish to mean a’’ rework scheduling strategy ‘’in which time is set aside to revise and improve parts of the system.’’ ‘’It does not presuppose incremental development, but works very well with it. As shown in the figures, the difference is that an increment may actually ship, whereas an iteration is examined for modification.’‘ — ‘’Iterative’’ development helps you improve your product. Each time around the process you get to change and improve the product itself (and maybe some of your work habits) Alistair Cockburn: http://alistair.cockburn.us/Incremental+versus+iterative+development
  • 54. Modelos Evolutivos La definición y especificación de requerimientos y el desarrollo de software es un proceso evolutivo que demanda la experimentación previa con algún componente (o la totalidad) del Sistema Programado (Ej. Interfaz U-S, función o subsistema) antes de desarrollar la totalidad del sistema. ¿qué es evolucionar?
  • 55. Modelos Evolutivos Logran su objetivo por medio del desarrollo de una serie de prototipos que van evolucionando a medida que se tiene realimentación del cliente Versión Inicial Desarrollo Versiones Intermedias Validación Bosquejo Inicial Especificación Diseño Versión Final Pretende vencer las limitaciones del modelo en cascada debidas a la deficiente realimentación entre sus fases Fuente; Sommerville / Ingeniería del Software
  • 57. Modelos Basados en Prototipos Prototipos Evolutivos Poner un sistema a disposición de los usuarios finales. El proceso comienza con una serie de requisitos, se desarrollan una serie de prototipos, se exponen al usuario y se van refinando paso a paso Prototipos Experimentales Prototipos Desechables / Exploratorios Se desarrollan prototipos (que luego se desecharan) para aclarar aspectos particulares de los requerimientos del usuario. Este conocimiento se utilizará para especificar/diseñar/desarrollar la aplicación
  • 58. Modelos Basados en Prototipos Esta estrategia suele ser útil y práctica para sistemas pequeños (<100K LC) y medianos (<500K LC) Requisitos (Versión Inicial) aunque esto es muy, muy relativo también Prototipos Evolutivo Un prototipo se puede ver como una especificación de lo que se desea desarrollar... Prototipos Experimental Sistema Desarrollo Prototipos Ejecutables + Especificación Definitiva
  • 59. Modelos Basados en Prototipos (No desechable) Necesidades / Validación Construir Prototipo del Sistema Especificación Abstracta NO Entregar el Sistema SI ¿Sistema es Adecuado? Usar Prototipo del Sistema
  • 60. Integración del Proceso en Cascada y el Desarrollo Basado en Prototipos Análisis de Requerimientos Los Prototipos también se pueden utilizar para minimizar o cuantificar riesgos... Diseño de Sistema Diseño de Programa Codificación Pruebas Desarrollo de Prototipos Operación y Mantenimiento Integración del modelo de prototipos con el modelo de cascada (Adaptado de Pfleeger, 1998)
  • 61. Modelos Basados en Prototipos Útiles en sistemas (O aspectos de un sistema) en los que no es posible inicialmente (o es difícil) desarrollar una especificación. Ej: Sistemas de Inteligencia artificial, Interfaces de Usuario, etcétera Usualmente se basan en técnicas que permiten obtener versiones rápidas del sistema, que se pueden poner en operación tan rápido como sea posible: Rapid Application Development (RAD) Los requisitos no funcionales no se prueban / determinan adecuadamente en el prototipo (Ej. seguridad, rendimiento, u otros Práctica generalmente para sistemas pequeños / medianos (<100K o <500K líneas de código)
  • 62. Modelos Basados en Prototipos El Proceso, la evolución, el avance, es difícil de medir. No siempre es fácil responder a la pregunta: ¿Cuanto falta para terminar el sistema? (El proceso no siempre es visible) Los cambios continuos pueden provocar la destrucción de la estructura del sistema Es posible que no se puedan realizar verificaciones formales, debido a que es posible que no exista una especificación formal y/o documentación bien definida Es difícil establecer contratos, una implementación no tiene carácter de contrato ¡Excelentes para mitigar riesgos y hacer una negociación justa con el cliente!
  • 64. Modelo de Riesgos o de Espiral ¿Será el proceso en espiral incremental, iterativo, evolutivo, etc?
  • 66. Desarrollo Basado en Reutilización (Componentes) “Almacén/Catálogo de Componentes Reutilizables Bosquejar los Requerimientos del Sistema Buscar Componentes Reutilizables (COTS) (Ej. Aplicaciones Listas o Casi Listas) Modificar Requerimientos Acorde a los Componentes Encontrados Diseño Arquitectónico Buscar Componentes Reutilizables (COTS) (Ej. Librerías, Frameworks u otros) Diseñar el Sistema Utilizando los Componentes Reutilizados + Modificar Componentes Encontrados + Modificar Componentes Encontrados COTS: Commercial Off the Shelf Fuente; Sommerville / Ingeniería del Software (Excepto lo rojo)
  • 67. Desarrollo Basado en Reutilización (Componentes) El costo del sistema se puede reducir notablemente debido a la reutilización El sistema se construye “uniendo” componentes existentes Se está limitado a los componentes existentes, es necesario negociar los requerimientos en base a estos, o modificar los componentes (lo que no siempre es fácil) para lograr satisfacerlos (o ambas cosas) Se necesita todo un “armazón” o un “lenguaje” para poder unir los componentes
  • 68. importancia de involucrar al usuario / cliente en el proceso de desarrollo
  • 69. ¿Proceso en Cascada? Diferencia entre las expectativas del usuario y los resultados producidos el precio que se paga si no se involucra al usuario en el proceso de desarrollo
  • 70. Modelos Basados en Prototipos (Y en general, modelos iterativos) Diferencia entre las expectativas del usuario y los resultados producidos (muchos métodos ágiles logran esto también involucrando al cliente lo más que sea posible)
  • 72. Modelos ágiles (XP) XP (eXtreme Programing): Es una estratégia de desarrollo de software creada hace aproximadamente unos diez años que ha causado un gran revuelo entre el colectivo de programadores del mundo Kent Beck, su autor, es un programador que ha trabajado en múltiples empresas. Actualmente trabaja en la conocida empresa automovilística DaimlerChrysler Con sus teorías ha conseguido el respaldo de gran parte de la industria del software y el rechazo de otra parte http://www.extremeprogramming.org
  • 73. Modelos ágiles (XP) Historia (cuento) de usuario Generación de Factura Versión inicial de la arquitectura El usuario introduce la información del cliente. Si el  cliente ya está registrado con sólo introducir la cédula se  Prototipo, prueba deben cargar sus datos. Luego se ingresan los elementos a  o experimento rápido pensado facturar y las cantidades de cada elemento. para reducir el Finalmente el sistema registra la factura y es capaz de  riesgo imprimirla en la impresora local asociada al terminal del  usuario
  • 74. Modelos ágiles (XP / Características) 1) El desarrollo del plan: Determinar rápidamente el alcance de la siguiente iteración / entrega en base a las prioridades del negocio (cliente) y los estimados técnicos. Estar dispuestos a cambiar el plan a medida que es necesario. 2) Liberar mucho, en incrementos pequeños: Poner el sistema en producción los más rápido posible (el mínimo necesario) y desarrollar las siguientes versiones con el ciclo lo mas corto posible. 3) Diseño simple: Mantener el diseño lo más simple posible (KISS: Keep it Simple Stup$%#id), concentrarse en el presente y no en el futuro (YAGNI: You ain't going to need it)
  • 75. Modelos ágiles (XP / Características) 4) Pruebas unitarias continuas: Sirven para evitar que los programadores se equivoquen, para evitar las “parcelas” de código y para validar constantemente la aplicación. Los clientes también pueden escribir pruebas para validar / demostrar ciertas características del sistema. 5) Programación en parejas: Todo el código a ponerse en producción es escrito en parejas. ¿Sabe usted por que? 6) Propiedad colectiva: Nadie es dueño de ninguna clase, de ningún artefacto, de ninguna parte del código. 7) Integración continua: Las características del sistema se desarrollan y se integran a diario. Luego se corren las pruebas y se verifica que la aplicación corra correctamente.
  • 76. Modelos ágiles (XP / Características) 8) 40 horas a la semana: Nadie. ¡NADIE! Trabaja horas extra. ¿Sabe usted porque? 9) El cliente involucrado en el ambiente de desarrollo: El cliente (o un representante) es un miembro más del equipo de desarrollo. 10)Estándares de codificación: Se definen estándares adecuados de codificación y se respetan. Sobre todo aquellos que enfatizan la “auto-documentación” y adecuada documentación del código.
  • 77. Modelos ágiles (XP / Características)
  • 78. Modelos ágiles (XP / Valores) Simplicidad: Es la base de la programación extrema. La idea es simplificar el diseño lo más posible para agilizar el desarrollo y facilitar el mantenimiento. Comunicación: Se realiza de diferentes formas: 1) Para los programadores el código comunica mejor. La simplicidad del código hace que este sea legible. Es mejor tener “código autodocumentado” que código con grandes cantidades de documentación, ya que la documentación corre el riesgo de quedar desfasada con el código a medida que este es modificado. 2) Las pruebas unitarias comunican, ya que describen el diseño de las clases y métodos al mostrar ejemplos concretos de como usar su funcionalidad. 3) Los programadores se comunican constantemente gracias a la programación en parejas. 4) La comunicación con el cliente es fluida ya que el cliente es parte del equipo.
  • 79. Modelos ágiles (XP / Valores) Retroalimentación (feedback): El cliente está integrado en el proyecto de modo que su opinión sobre el estado del proyecto se conoce en tiempo real. Como las iteraciones son muy cortas (2-4 semanas) se minimiza el tener que rehacer partes que no cumplen con los requisitos y ayuda a los programadores a centrarse en lo que es más importante Respeto: Todo el mundo recibe y siente el respeto que merece como miembro valioso del equipo de desarrollo. Todos en el equipo aportan valor, aun si es simple entusiasmo. Los desarrolladores respetan la experiencia de sus clientes y viceversa. La gerencia respeta el derecho del equipo de aceptar la responsabilidad y recibir la autoridad sobre su propio trabajo Coraje o Valentía: Para los gerentes, muchas de las prácticas de XP pueden parecer poco intuitivas o inclusive erradas (programación en parejas, simplicidad, no pensar en la flexibilidad a futuro, entre otras). Es necesario mucho “coraje” para aceptarlas y vencer este prejuicio
  • 80. Modelos Incrementales (Modelo Incremental) advertencia La Programación Extrema (XP) y otros métodos no significan desarrollar “sin método” Los métodos ágiles requieren en el fondo mucha disciplina para poder ejecutarlos y mantener el orden de forma satisfactoria
  • 82. Modelos Incrementales (Modelo Incremental) advertencia las siguientes transparencias han sido tomadas (¿mutiladas?) de la clase de scrum que vimos al comienzo del semestre, lo que viene es un simple resumen
  • 83. Modelos Ágiles (SCRUM / Proceso) requisitos “features” de la aplicación reunión diaria resultado (producto) (entregas frecuentes) tareas de < 16 horas requisitos para el sprint (iteración) sprints (iteraciones) (cortos)
  • 84. Historias de Usuarios (SCRUM / Requisitos) Los requisitos del producto se capturan teniendo en cuenta la visión del cliente y del usuario Para ello se utilizan historias de usuario, que son unas sencillas tarjetas en las que se recoge de forma esquemática, sencilla y en un lenguaje claro una interacción entre el usuario y el sistema Generación de Factura El usuario introduce la información del cliente. Si el  cliente ya está registrado con sólo introducir la cédula se  deben cargar sus datos. Luego se ingresan los elementos a  facturar y las cantidades de cada elemento. Finalmente el sistema registra la factura y es capaz de  imprimirla en la impresora local asociada al terminal del  usuario
  • 85. Historias de Usuarios (SCRUM / Requisitos) Generación de Factura El usuario introduce la información del cliente. Si el  cliente ya está registrado con sólo introducir la cédula se  deben cargar sus datos. Luego se ingresan los elementos a  facturar y las cantidades de cada elemento. Finalmente el sistema registra la factura y es capaz de  imprimirla en la impresora local asociada al terminal del  usuario Las historias de usuario sirven de “recordatorio” de un grupo de características que es necesario implementar en el sistema. Antes de implementar una característica se produce una discusión con el usuario y se refina y extiende la información de la historia de usuario
  • 86. Modelos Ágiles (SCRUM / Requisitos) Los requisitos del product backlog se priorizan y se asignan a los distintos sprints planificados, es decir, al sprint backlog de cada sprint
  • 87. SCRUM (Roles) ese cuento ha sido inmortalizado de muchas formas
  • 89. Modelos Ágiles (Gestión y Seguimiento / Reunión Diaria) Reunión Diaria: Es una figura fundamental en SCRUM. Tiene que reunirse TODO el equipo y debe hacerse según ciertas reglas
  • 90. Modelos Ágiles (Gestión y Seguimiento / Scrum Burn Down) EJE Y Trabajo restante, horas, puntos de función u otra unidad de medida EJE X Día o fecha del sprint Esto es responsabilidad del Scrum Master
  • 91. Modelos Ágiles (Gestión y Seguimiento / Task Boards) http://www.mountaingoatsoftware.com/scrum/task-boards
  • 92. bien... pero... ¿qué método o proceso de desarrollo de software debo utilizar?
  • 93. ¿Qué Método o Proceso de desarrollo de software debo utilizar? Recuerde que no todos los proyectos y tipos de aplicaciones a desarrollar son iguales. Use el método que más se adapte a sus necesidades o al proyecto a enfrentar: No existen métodos perfectos o soluciones universales... Evite caer en el “fanatismo” de métodos: XP fans vs RUP fans vs Scrum fans etc... (de hecho, evite caer en cualquier tipo de fanatismo) Si ya ha usado un método anteriormente en proyectos similares a los que debe desarrollar y ha tenido resultados adecuados entonces vuelva a utilizar ese método...
  • 94. ¿Qué Método o Proceso de desarrollo de software debo utilizar? En proyectos pequeños / medianos los métodos ágiles pueden ser adecuados En grandes aplicaciones empresariales el proceso unificado puede generar los resultados adecuados En proyectos con mucho personal los métodos ágiles pueden no ser el enfoque adecuado Recuerde que en el fondo el método NO es lo importante, el método no es el fin. El método es sólo una herramienta para lograr el verdadero objetivo: terminar el proyecto a tiempo, dentro del presupuesto y con las características requeridas. ¡Mantenga siempre la mira y la concentración en el producto, que es el verdadero objetivo!
  • 95. ¿cómo se describe un método o proceso? hay muchas formas, pero...
  • 96. Métodos / Metodologías (Descripción de Procesos) Proceso Técnico 1 Proceso Técnico 2 ... Proceso Técnico N Procesos fundamentales del desarrollo de software Proceso de gestión o de soporte 1 Proceso de gestión o de soporte 2 ... Procesos de apoyo al desarrollo de software Proceso de gestión o de soporte M Fuente: GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES EMPRESARIALES / Noviembre 2008
  • 97. Métodos / Metodologías (Descripción de Procesos) Grupo de Procesos Proceso A ... ... Subproceso A.1 Proceso B ... ... Subproceso A.n Proceso C ... Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES EMPRESARIALES / Noviembre 2008
  • 98. Métodos / Metodologías (Descripción de Procesos) <<regla>> <<actor>> <<objetivo>> Reglas del Negocio Coordinador del Proceso Objetivo del Proceso <<regula>> <<controla>> <<persigue>> <<recurso>> Insumo o Material Requerido <<producto>> Salida ... ... Proceso X Información Producida <<producto>> Entrada <<ejecuta>> <<recurso>> Grupo o Actor <<apoya>> Información Requerida <<apoya>> <<repositorio>> Datos Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES EMPRESARIALES / Noviembre 2008
  • 99. Métodos / Metodologías (Descripción de Procesos) <<proceso>> Planificación de Alcance <<documento>> Documento de Inicio del Proyecto Planificar la Gestión del Alcance del Proyecto Definir el Alcance del Proyecto Crear la Estructura de Desglose de Trabajo <<documento>> Plan Integral del Proyecto Actualizado Actualizar el Plan del Proyecto <<documento>> Enunciado del Alcance del Proyecto <<documento>> Plan de Gestión de Alcance <<documento>> Estructura de Desglose de Trabajo Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES EMPRESARIALES / Noviembre 2008
  • 100. Métodos / Metodologías (Descripción de Procesos) Los modelos de Productos describen todos los productos que se utilizan o se producen en el método Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES EMPRESARIALES / Noviembre 2008
  • 101. Métodos / Metodologías (Descripción de Procesos) El modelo de actores especifica los actores / roles que participan en el proceso de desarrollo y sus respectivas responsabilidades Fuente: Adaptado de GRAY WATCH MÉTODO DE DESARROLLO DE SOFTWARE PARA APLICACIONES EMPRESARIALES / Noviembre 2008
  • 103. Algunos Métodos de Desarrollo Extreme Programming (XP) http://www.extremeprogramming.org/ Scrum http://www.scrumalliance.org/
  • 104. Algunos Métodos de Desarrollo RUP (IBM Rational Unified Process) http://www-01.ibm.com/software/awdtools/rup/ OpenUP (Open Unified Process) (Muy Buena Referencia) http://epf.eclipse.org/wikis/openup/ AgileUP (Agile Unified Process) http://www.ambysoft.com/unifiedprocess/agileUP.html otros...
  • 105. Algunos Métodos de Desarrollo Gray Watch White Watch (desarrollados aquí en la ULA)
  • 106. Reflexión Final reflexión final Pase lo que pase, siempre procure que el método de desarrollo que use trabaje a su favor. Si el método que está usando trabaja en su contra ¡entonces cambie el método! Recuerde, el método no es importante, lo importante es el cliente, el producto y las personas involucradas en su desarrollo