Guía metodológica para la gestión de proyectos de
software en PyMEs que no son fábricas de software
por medio de Metodologías ágiles
Estructura
CONTEXTUALIZACIÓN
Contextualización
•
•
•
•
•
Calidad
Productividad
Agilidad
Desarrollo ágil de software
¿Por qué implementar el desarrollo ágil?
Metodologías ágiles
•
•
•
•
•
•
•
•
SCRUM
eXtreme Programming (XP)
Dynamic System Development Method (DSDM)
Feature Driven Development (FDD)
Lean Software Development (LSD)
Adaptive Software Development (ASD)
Agile Unified Process (AUP)
Crystal.
METODOLOGÍA SWAPYME
Metodología SWAPyME
•
•
•
•
•
•
•
Definición
Enfoque
Principios
Ciclo
Roles
Prácticas
Herramientas
Metodología SWAPyME
Metodología SWAPyME
• Framework de gestión de proyectos liviano
que tiene como principal objetivo la
distribución de software de alta calidad con
rapidez y continuidad, en torno a las
necesidades del valor de negocio, la
participación activa de los usuarios y la
adaptación continua, contribuyendo con el
aumento de la productividad en la gestión
Definición
• Framework de gestión de proyectos liviano
que tiene como principal objetivo la
distribución de software de alta calidad con
rapidez y continuidad, en torno a las
necesidades del valor de negocio, la
participación activa de los usuarios y la
adaptación continua, contribuyendo con el
aumento de la productividad.
Enfoque
• Es una metodología iterativa:
– Flexibilidad que permite ante los cambios
– Genera más valor para el usuario
– Contribuye con la corrección temprana de
errores
– Es posible tener más control sobre ciertas
características del proyecto disminuyendo
riesgos.
Principios
•
•
•
•
•
•
•
La participación activa del usuario.
Las entregas iterativas e incrementales.
Los requerimientos son tomados como línea base.
Centrarse en actividades de alto valor.
Comunicación y retroalimentación constante.
Gestión del cambio.
Mantener independencia de herramientas y
lenguajes de programación.
• Adopción de agilidad en el equipo de trabajo.
Ciclo
Ciclo
• Iteración preliminar
Tiempo: Dos días a una semana (Si es la primera
iteración en el proyecto puede tardar hasta dos
semanas).
Esta es la primera iteración del proyecto,
donde se determinan las bases que guiarán su
progreso.
Ciclo
• Construcción
Tiempo: Una a dos semanas.
En la iteración de construcción se desarrolla
software de alta calidad que cumpla con las
necesidades planteadas por el usuario. Se
pueden llevar a cabo una o más iteraciones de
construcción antes de realizar la entrega al
cliente, basados en las historias de usuario
asignadas para la iteración.
Ciclo
• Entrega al cliente
Tiempo: Según la disponibilidad del cliente. No
debe ser más de una semana.
En esta iteración se realiza una entrega formal
al cliente de las historias de usuario que hayan
sido construidas y que cuenten con la
verificación pertinente.
Ciclo
• Producción
Tiempo: Según la disponibilidad y necesidades del
cliente.
En esta iteración se debe controlar que el
sistema es útil, cumple con las expectativas
del cliente y es productivo al ser desplegado
en el ambiente que usa el cliente.
Ciclo
• Cierre
Tiempo: Tres a cuatro horas.
Consiste en analizar acerca de todas las
actividades que se lograron realizar después
de la última iteración de producción, donde se
miran las debilidades del equipo y las
habilidades por mejorar, además de las
lecciones aprendidas para los próximos
proyectos.
Roles
• Colección de funciones que cumple uno
o varios grupos de personas, con el fin de
cumplir con actividades que se definen
para éste y entregar los artefactos que
deben ser elaborados.
Roles
• Gerente de proyecto:
– Planificación del proyecto en la totalidad de su
duración
– Asignación de los recursos
– Delegación de responsabilidades
– Organizar las reuniones
– Mantener un control sobre el progreso del
proyecto
– Definir estrategias para mitigar los riesgos que se
puedan presentar.
Roles
• Líder de proyecto
– Supervisión de la implementación proceso y todas
las actividades que permitan el mejoramiento del
mismo.
– Arquitecto del sistema
– Mantiene el control y cambios requeridos de la
arquitectura en cada una de las iteraciones.
Roles
• Grupo de desarrollo:
– Codificación de los componentes del desarrollo de
cada iteración
– Ejecución de pruebas unitarias
– Documentación
– Mantener la actualización del código
Roles
• Grupo de pruebas:
– Crear los escenarios de pruebas funcionales
– Certificar cada release que vaya a ser entregado al
cliente en cada iteración.
Roles
• Usuario (stakeholder):
– Poseen conocimiento del dominio del sistema en
desarrollo
– Aceptarán o rechazarán el sistema de acuerdo a
los requerimientos establecidos en la iteración
– Interactúan con los miembros del equipo de
desarrollo para algún propósito del proyecto.
Prácticas
Prácticas para la gestión del
proyecto
• Planificación
Para el inicio del proyecto, en la primera
iteración que se vaya a realizar, se debe haber
elaborado antes un análisis de factibilidad del
proyecto donde se determine el alcance y
validación tecnológica, operativa y económica
del proyecto.
Prácticas para la gestión del
proyecto
Después de la primera iteración, las
planificaciones dan inicio al ciclo de cada
iteración, llevando a cabo las siguientes tareas:
– Determinar las historias de usuario que van a ser
construidas en la iteración.
– Estimar el tiempo que se tomará para la construcción
de las historias de usuario elegidas.
– Los integrantes del grupo de desarrollo eligen qué
historias de usuario construirán.
Prácticas para la gestión del
proyecto
• Ambiente colaborativo
Se entiende como un espacio virtual donde todas
las partes interesadas en el proyecto, incluso si
están en diferente tiempo o lugar, pueden
negociar, hacer una lluvia de ideas, debatir,
compartir conocimientos y en general trabajar en
conjunto para llevar a cabo algunas tareas, que
permitan realizar seguimiento y mantener el
control de los principales componentes del
proyecto.
Prácticas para la gestión del
proyecto
• Entregas iterativas e incrementales
Consiste en la entrega de funcionalidades
principales del sistema máximo cada dos
semanas al cliente, lo cual permitirá la
retroalimentación inmediata por su parte y
aumentará la productividad del proyecto.
Prácticas para la gestión del
proyecto
• Seguimiento y control
Para entregar un proyecto consistente se debe
llevar una trazabilidad de los principales aspectos,
desde el inicio del proyecto hasta el fin. Dado que
el aspecto principal de esta metodología son los
requerimientos y el enfoque iterativo, se llevará a
cabo la trazabilidad de las historias de usuario por
cada iteración y su relación con otras historias de
usuario.
Prácticas para cada iteración
• Definición de requerimientos
En esta actividad de definición de las
necesidades del sistema que guiará el
desarrollo, se utilizan las historias de usuario
para detallar, en un lenguaje cercano al
cliente, la funcionalidad que debe satisfacer
cada iteración, de forma tal que se logre
trazabilidad con el alcance general del
proyecto.
Prácticas para cada iteración
• Diseño del sistema
El diseño del sistema no será definido
inicialmente, por el contrario, para cada
iteración se tendrá en cuenta la arquitectura
del proyecto y se diseña según el alcance
definido en la iteración, en contraste con
nuevos requerimientos definidos por el
cliente.
Prácticas para cada iteración
• Refactorización
Se refiere a la actividad constante en los
desarrollos ágiles, donde, el objetivo es
mejorar el diseño y la productividad del
proyecto en desarrollo, sin influir en su
funcionalidad.
Prácticas para cada iteración
• Integración continua
Se debe integrar cada cambio introducido al
proyecto. Se parte de la base que cuanto más
tiempo se espere para integrar más costosa e
impredecible será la actividad de integración.
Se debe disponer de herramientas que
permitan su automatización.
Prácticas para cada iteración
• Desarrollo basado en pruebas
Por medio de esta práctica se implementan las
pruebas incluso antes de comenzar a escribir el
código de un módulo. De esta forma, ante cada
modificación en las iteraciones del proyecto el
plan de pruebas es ejecutado completamente.
– Pruebas de aceptación del cliente
– Pruebas unitarias
– Pruebas funcionales
Herramientas
•
•
•
•
•
•
•
•
Estudio de factibilidad técnica
Historias de usuario
Diseño del sistema
Notas de entrega
Grafo de trazabilidad
Lecciones aprendidas
Checklist calidad de software
Pasos para infundir agilidad en el equipo de
trabajo
• Uso de herramientas de software
Descargar

Diapositiva 1