This was the slides that we used at the defense of our end of career project. This was about the development of a software prototype (called SwingImprover) that allows the analysis of a golf player swing movement (using personal videos). The software has to let the user study their moves during the various stages of the swing, allowing the comparison with theoretical measures and with movements of professional players.
SwingImprover - end of career project defense - 2006
1. Proyecto Final
ORT – Software Factory 2006
Alejandro Charbonnier
Darío Macchi
Fernando Nicolet
2. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
• Métricas
• Conclusiones
3. • Líneas Generales
Idea general, propuesta y dominio
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
• Métricas
• Conclusiones
4. Líneas Generales
Idea Original
• Chuck Crawford, Presidente de Nujit.
Nos presenta la idea del proyecto basándose en su
experiencia como instructor de Golf, y
conocimiento del mercado como empresario
• Detalle no menor: el cliente reside en Canadá. Esto dificulta
comunicación debido a distancia y lenguaje
5. Líneas Generales
Propuesta
• Realizar un software capaz de ayudar a jugadores de golf a
mejorar su swing
• También será utilizado por instructores de golf para mostrar
los avances de sus alumnos
• Realizar comparaciones de swings de principiantes contra
videos de profesionales
• Utilizar modelos teóricos para comparar las medidas tomadas
para calificar el swing a los efectos de medir nivel de mejora
• Asistir al usuario a identificar elementos a medir
6. Líneas Generales
Propuesta
• Debe poder medir ángulos, distancias y distintos indicadores en dos dimensiones
• Crear el background necesario para generar un modelo 3D del swing
7. Líneas Generales
¿Qué es un Swing?
Es la base de la técnica del Golf. Consiste en rotar el
cuerpo de forma de acelerar el “clubhead” a gran
velocidad para efectuar el golpe a la bola.
- Cinco etapas:
- Setup
- Back Swing
- Top of the swing
- Down Swing
- Follow through
8. Líneas Generales
¿Qué es un Swing?
Es la base de la técnica del Golf. Consiste en rotar el
cuerpo de forma de acelerar el “clubhead” a gran
velocidad para efectuar el golpe a la bola.
- Cinco etapas:
- Setup
- Back Swing
- Top of the swing
- Down Swing
- Follow through
9. Líneas Generales
¿Qué es un Swing?
Es la base de la técnica del Golf. Consiste en rotar el
cuerpo de forma de acelerar el “clubhead” a gran
velocidad para efectuar el golpe a la bola.
- Cinco etapas:
- Setup
- Back Swing
- Top of the swing
- Down Swing
- Follow through
10. Líneas Generales
¿Qué es un Swing?
Es la base de la técnica del Golf. Consiste en rotar el
cuerpo de forma de acelerar el “clubhead” a gran
velocidad para efectuar el golpe a la bola.
- Cinco etapas:
- Setup
- Back Swing
- Top of the swing
- Down Swing
- Follow through
11. Líneas Generales
¿Qué es un Swing?
Es la base de la técnica del Golf. Consiste en rotar el
cuerpo de forma de acelerar el “clubhead” a gran
velocidad para efectuar el golpe a la bola.
- Cinco etapas:
- Setup
- Back Swing
- Top of the swing
- Down Swing
- Follow through
12. Líneas Generales
¿Qué se Puede Medir en un Swing?
Modelo teórico basado en investigaciones
científicas del swing (Dr. Ralph Mann)
- Posición inicial de la bola
- Inclinación de la columna
- Distancia del hombro al club
- Movimiento de brazos y hombros como
unidad
- “Inside path”
- Etc
14. • Líneas Generales
Proceso de Desarrollo
Metodología, adaptación y puesta en
práctica
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
• Métricas
• Conclusiones
15. Proceso de Desarrollo
-¿Por qué una Metodología Ágil?
- Alto riesgo tecnológico
- Colaboración del cliente
- Prototipo (alta probabilidad de cambio)
- Conformidad del cliente
- Gestión de la calidad
- Grupo pequeño
- Disposición de un lugar común de trabajo
16. Proceso de Desarrollo
- Adaptación de XP - 12 Practicas
- Estudio de los beneficios de cada practica de XP
- Adaptación y utilización de las mismas.
17. Proceso de Desarrollo
- Beneficios de XP - Desventajas de XP
- Uso de Spikes - Riesgo de fracaso por falta de
- Mantener un diseño simple compromiso de los integrantes
- Programación de a pares - Aprendizaje de la metodología
- Integración contínua. - Cliente reside en Canadá
- Uso de TDD
18. Proceso de Desarrollo
Roles
• Coach: Alejandro
• Manager: Darío
• Tracker: Fernando
• Customer: Chuck Crawford (Nujit)
• Programmer: Alejandro/Darío/Fernando
• Tester: Alejandro/Darío/Fernando/Chuck
19. • Líneas Generales
• Proceso de Desarrollo
Requerimientos
Cliente, historias. Estrategia y priorización
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
• Métricas
• Conclusiones
20. Requerimientos
Requerimientos Funcionales
• Reproducción de video
• Posiciones de distintas partes del cuerpo
• Medición de distancias y ángulos
• Dos videos en simultaneo para efectuar comparaciones
• Modalidad de trabajo libre con ángulos, puntos y líneas
• Asistencia al usuario en el marcado de elementos a medir
• Permitir ingreso de coordenadas desde una fuente externa a
la aplicación
21. Requerimientos
Requerimientos no Funcionales
• Requerimientos mínimos de sistema:
Pentium III 800Mhz, 256MB, 32MB VGA
• Lenguaje de desarrollo: C# Framework .NET 1.1
• Plataforma: Windows (XP, 2000 y 98)
• Idioma de la GUI: Inglés
• Interfaz de usuario amigable
22. Requerimientos
Estrategia de Relevamiento
• Reuniones virtuales (MSN)
- Construcción de historias en conjunto (equipo y cliente)
- Priorización de las mismas según: Riesgo e Importancia
• Investigación: productos similares, sitios web, bibliografía
• Asesoramiento con expertos: tecnología, deporte
• Visitas del cliente (3 instancias durante el proyecto)
• Uso de prototipos: comunicación y mitigar riesgo
• Estudio de factibilidad: presentado a SF
23. Requerimientos
Estudio del Modelado 3D
- Contacto con Universidad en Singapur (criterion function)
- Modelo con restricciones biomecánicas
- Standard ISO/IEC FCD 19774:200x (H-Anim)
- Uso de humanoides para entornos virtuales vía web
24. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
Diseño y patrones
• Tecnologías
• SQA
• SCM
• Gerencia
• Métricas
• Conclusiones
28. Arquitectura – Características de Calidad
Observables en T. de Ejecución No Observables en T. de Ejecución
(producto) (prototipo)
• Eficiencia • Modificabilidad
• Funcionalidad • Reusabilidad
• Usabilidad • Facilidad de prueba.
29. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
Reproducción de video y controles
• SQA
• SCM
• Gerencia
• Métricas
• Conclusiones
31. Tecnologías
DirectX 9.0c - AudioVideoPlayback
Ventajas Desventajas
• Facilidad de uso • Cerrado
• Integración directa con Direct3D • Libertad y control limitados
• Manejo automático de distintos • Desconoce FPS
formatos de video • Bugs!!!
• Obtención de los frames
• Performance aceptable
• Salida Hardware / Software
32. Tecnologías
DirectX 9.0c - AudioVideoPlayback
Funcionamiento
2
• Abrir video
• Modos 1
- Directo (Hardware)
- Textured (Software)
• Control de reproducción 0
-1
-2
33. Tecnologías
Windows MediaPlayer
Ventajas Desventajas
• Facilidad de uso • Cerrado
• Compatibilidad directa con • Libertad y control excesivamente
Windows limitados – No sirve
• Manejo automático de distintos • Salida hardware-dependiente
formatos de video
• Performance aceptable
34. Tecnologías
DirectShow
Ventajas Desventajas
• Gran libertad • Complejidad
• Documentación • Curva de aprendizaje lenta
• Altamente performante • Ausencia de una API managed
• Salida Hardware / Software oficial
File Source
AVI Splitter AVI Decompressor Video Renderer
(Async)
Default
DirectSound Device
36. Tecnologías
DirectShow – VMR9
VMR9
• Integración con Direct3D
• Tecnología en crecimiento
• Complejidad muy alta
• Performance aceptable
• Salida por software
40. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
Plan, aseguramiento de la calidad y
pruebas
• SCM
• Gerencia
• Métricas
• Conclusiones
41. SQA
Plan de Calidad
• Programación de a pares, código compartido
• Estándar de codificación
• Integración continua
• Diseño Incremental
• Refactoreo
• Test Driven Development (TDD)
42. SQA
Test Driven Development (TDD)
Cálculos Medidas
Calc SpineAngle InsidePath
SwingImprover.
Measures
AngleTest DistanceTest InsidePathTest
SwingImprover.Test
44. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
Herramientas, proceso y estrategia de
backup
• Gerencia
• Métricas
• Conclusiones
45. SCM
Herramientas
- Versionado de código y documentación
- CVS NT como servidor de CVS
- Tortoise CVS como cliente de CVS
- Versionado de documentos informales
- Fitneese – Wiki
46. SCM
Proceso
1. Realizar un update antes de realizar un commit de un
cambio.
2. En caso de ser necesario, solucionar los posibles
conflictos de versiones.
3. Realizar un Add content para agregar posibles elementos
nuevos.
4. Hacer un commit del proyecto.
47. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
Proceso, planificación y herramientas
• Métricas
• Conclusiones
48. Gerencia
Se apoyó en los siguientes principios
• Compromiso en la responsabilidad
• Adaptación Incremental
• No agregar overhead al programador (travel light)
• Mediciones Honestas
51. Gerencia
Planificación de Iteraciones
Nuevas Historias,
Plan de Velocidad de Proyecto
Release Historias Comunicación y
Tereas Pendientes Aprendizaje
Planificación Desarrollo
de Iteración Plan de
Iteración
52. Gerencia
Planificación de Iteraciones
Nuevas Historias,
Plan de Velocidad de Proyecto
Release Historias Comunicación y
Tereas Pendientes Aprendizaje
Nuevas
Funcionalidades
Planificación Desarrollo Última
de Iteración Plan de Versión
Iteración
53. Gerencia
Planificación de Iteraciones
Nuevas Historias,
Plan de Velocidad de Proyecto
Release Historias Comunicación y
Tereas Pendientes Aprendizaje
Nuevas
Velocidad Funcionalidades
de Proyecto Planificación Desarrollo Última
Iteración de Iteración Plan de Versión
Iteración Bugs Corregidos
Anterior
Pruebas de Dia a Dia
Aceptación Fallidas
Bugs
54. Gerencia
Planificación
Plan de proyecto
- Versión 1
• R1: Octubre (final de it. 3)
• R2: Mitad de diciembre (final de it. 8)
• R3: Mitad de febrero (final de it. 12)
- Versión 2
• R1: Mitad de diciembre (final de it. 8)
• R2: Mitad de febrero (final de it. 12)
• Velocidad = Puntos/Hrs. trabajadas
58. Gerencia
Riesgos
• Riesgos tecnológicos
- Spikes
• Otros riesgos
- Compromiso con XP
- Confianza con el cliente - Error
• Falta de un plan de riesgos y planes de contingencia
- Soluciones espontáneas
59. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
Métricas
De proceso, producto e interpretaciones
• Conclusiones
60. Métricas
Al final del Proyecto
• Releases: 2
• Iteraciones: 11
• Historias: 63
• Puntos de complejidad: 455
• Hrs. Trabajadas: 1428
• Velocidad: 0.41 puntos/hora
• Hrs./persona/día: 4:00 (4 días a la semana)
64. • Líneas Generales
• Proceso de Desarrollo
• Requerimientos
• Arquitectura
• Tecnologías
• SQA
• SCM
• Gerencia
• Métricas
Conclusiones
De proyecto y personales
65. Conclusiones del Proyecto
Metas Alcanzadas Lecciones Aprendidas
• Satisfacción del Cliente • No desviarse del proceso
• Cumplimiento de alcance inicial • Necesidad de pruebas mas
• Adaptación exitosa de XP exhaustivas
• Ser concientes de potenciales
riesgos y generar plan de
contingencia (mas allá del uso de
spikes)
• Llevar una bitácora de proyecto
66. Conclusiones Personales
Metas Alcanzadas Lecciones Aprendidas
• Conocimiento de nuevas • Ventajas de programación a pares
tecnologías • Capacidad de afrontar desafíos
• Uso de una metodología de atípicos exitosamente
desarrollo ágil (XP) • Necesidad de delegar actividades
• Compromiso hacia el grupo por
parte de sus integrantes
67. Estado Actual del Producto
http://www.nextgenerationsrt.com/
Partner:
Company:
Transmitir la idea del producto a través de sus casos de uso.
- equipo no está familiarizado con la tecnología a utilizar - utilizar el prototipo para seguir relevando requerimientos - pocos integrantes del equipo desempeñen mejor sus roles correspondientes
Esto me parece que podría ir en las conclusiones del proyecto
2. Quién decidió como priorizar las historias? - En una primera instancia las priorizaron el equipo con el cliente según lo siguiente: - Incertidumbre y riesgo en la tecnología - Orden lógico - EL CLIENTE
Para DirectShow usamos DirectShowLib, componente de terceros.
La perdida de performance es en cuanto al redibujado. No afecta la performance del video.
La integración de lo hecho con TDD frente al resto fue perfecta.
Recordar que con los cambios de oficina y con los cambios de máquinas que se dieron durante el proyecto no se perdió información
Accepted responsibility: La tarea del manager es la de indicar que es lo que se debe hacer pero no es el responsable que esta tarea sea cumplida. Por este motivo se asumió que cada integrante del equipo deberá saber cuales son sus responsabilidades. · Incremental Change Como se vio anteriormente, no se puede comenzar a utilizar las practicas de XP todas de una sola vez, sino que el proceso fue implementado en etapas determinando que es lo mejor para el equipo. Esta tarea será realizada sobre todo por el coach. · Travel Light El manager no debe agregar un overhead innecesario al trabajo de los programadores. En caso de necesitar algo de estos, dicha tarea debe ser organizada de forma que le quite el menor tiempo posible al programador. · Honest measurement Al momento de tomar métricas, estas debe ser realizadas con precisión y realismo.
Plazo de dos semanas por iteración Cada iteración comienza con una breve reunión en la cual se priorizan las tareas Las historias eran puntuadas por los integrantes del equipo por separado; luego se mediaba y utilizando la vel. de la iteración anterior se calcula un estimado de lo que llevaría realizar la tarea.
Plazo de dos semanas por iteración Cada iteración comienza con una breve reunión en la cual se priorizan las tareas Las historias eran puntuadas por los integrantes del equipo por separado; luego se mediaba y utilizando la vel. de la iteración anterior se calcula un estimado de lo que llevaría realizar la tarea.
Debido a la falta de experiencia en la metodología de XP, el equipo estuvo unos meses en una etapa de conocimiento XP, investigación de tecnologías y desarrollo de prototipos. Por este motivo es que para algunos cálculos (ejemplo velocidad) se tomo como iteración 1 la correspondiente a la primera quincena de agosto. Si bien antes se venía trabajando en períodos de dos semanas, de igual duraciones que las iteraciones, las mismas solo serán tomadas en cuenta para las métricas de tiempo y no de esfuerzo . Hrs. comprometidas como base para estimar 1428 = 4*3*4*4*7 aprox.
Para entender la complejidad de cada iteración sería bueno ver que cantidad de historias fueron implementadas en cada una de ellas y a su vez compararlo con la cantidad de puntos correspondientes a dichas historias.
Metodología atípica: éxito Proyecto atípico: éxito Tenemos la cabeza abierta.