68
Proyecto Final ORT – Software Factory 2006 Alejandro Charbonnier Darío Macchi Fernando Nicolet

SwingImprover - end of career project defense - 2006

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: SwingImprover - end of career project defense - 2006

Proyecto Final

ORT – Software Factory 2006

Alejandro CharbonnierDarío MacchiFernando Nicolet

Page 2: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA• SCM• Gerencia• Métricas• Conclusiones

Page 3: SwingImprover - end of career project defense - 2006

• Líneas GeneralesIdea general, propuesta y dominio

• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA• SCM• Gerencia• Métricas• Conclusiones

Page 4: SwingImprover - end of career project defense - 2006

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

Page 5: SwingImprover - end of career project defense - 2006

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

Page 6: SwingImprover - end of career project defense - 2006

Líneas GeneralesPropuesta

• Debe poder medir ángulos, distancias y distintos indicadores en dos dimensiones

• Crear el background necesario para generar un modelo 3D del swing

Page 7: SwingImprover - end of career project defense - 2006

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

Page 8: SwingImprover - end of career project defense - 2006

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

Page 9: SwingImprover - end of career project defense - 2006

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

Page 10: SwingImprover - end of career project defense - 2006

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

Page 11: SwingImprover - end of career project defense - 2006

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

Page 12: SwingImprover - end of career project defense - 2006

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

Page 13: SwingImprover - end of career project defense - 2006

Producto

Page 14: SwingImprover - end of career project defense - 2006

• Líneas GeneralesProceso de DesarrolloMetodología, adaptación y puesta en práctica

• Requerimientos• Arquitectura• Tecnologías• SQA• SCM• Gerencia• Métricas• Conclusiones

Page 15: SwingImprover - end of career project defense - 2006

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

Page 16: SwingImprover - end of career project defense - 2006

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.

Page 17: SwingImprover - end of career project defense - 2006

Proceso de Desarrollo

- Beneficios de XP

- Uso de Spikes- Mantener un diseño simple- Programación de a pares- Integración contínua.- Uso de TDD

- Desventajas de XP

- Riesgo de fracaso por falta de compromiso de los integrantes

- Aprendizaje de la metodología- Cliente reside en Canadá

Page 18: SwingImprover - end of career project defense - 2006

Proceso de DesarrolloRoles

• Coach: Alejandro• Manager: Darío• Tracker: Fernando• Customer: Chuck Crawford (Nujit)• Programmer: Alejandro/Darío/Fernando• Tester: Alejandro/Darío/Fernando/Chuck

Page 19: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo

RequerimientosCliente, historias. Estrategia y priorización

• Arquitectura• Tecnologías• SQA• SCM• Gerencia• Métricas• Conclusiones

Page 20: SwingImprover - end of career project defense - 2006

RequerimientosRequerimientos 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

Page 21: SwingImprover - end of career project defense - 2006

RequerimientosRequerimientos 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

Page 22: SwingImprover - end of career project defense - 2006

RequerimientosEstrategia 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

Page 23: SwingImprover - end of career project defense - 2006

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

Page 24: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura

Diseño y patrones

• Tecnologías• SQA• SCM• Gerencia• Métricas• Conclusiones

Page 25: SwingImprover - end of career project defense - 2006

Rendering

Draw Objects

Arquitectura

Measures

Engine

VideoPlayers

GUI

Frames

FrameRepository

Repositorio XML

SwinImproverCommon

Page 26: SwingImprover - end of career project defense - 2006

ArquitecturaMeasures

MeasureFactory<<Abstract>>

Measure

RightKneeAngle TeeToLeftFoot

Calc MeasureStep

+ result(): string[]

+ result(): string[] + result(): string[]

Page 27: SwingImprover - end of career project defense - 2006

IVideoPlayback

ArquitecturaVideoPlayers

IVideoPlaybackTextured

TDDVideoPlayback

DXAVPVideoPlayback

VMR9VideoPlayback

<<library>>SwingImproverVideoPlayers

<<library>>SwingImproverDomain

Page 28: SwingImprover - end of career project defense - 2006

Arquitectura – Características de Calidad

Observables en T. de Ejecución

(producto)

• Eficiencia• Funcionalidad• Usabilidad

No Observables en T. de Ejecución

(prototipo)

• Modificabilidad• Reusabilidad• Facilidad de prueba.

Page 29: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías

Reproducción de video y controles

• SQA• SCM• Gerencia• Métricas• Conclusiones

Page 30: SwingImprover - end of career project defense - 2006

TecnologíasReproducción de Video

• DirectX 9.0c• Windows Media Player• DirectShow

- GDI / GDI+- DirectX 9.0c

Page 31: SwingImprover - end of career project defense - 2006

TecnologíasDirectX 9.0c - AudioVideoPlayback

Ventajas

• Facilidad de uso• Integración directa con Direct3D• Manejo automático de distintos

formatos de video• Obtención de los frames• Performance aceptable• Salida Hardware / Software

Desventajas

• Cerrado• Libertad y control limitados• Desconoce FPS• Bugs!!!

Page 32: SwingImprover - end of career project defense - 2006

TecnologíasDirectX 9.0c - AudioVideoPlayback

Funcionamiento

• Abrir video• Modos

- Directo (Hardware)- Textured (Software)

• Control de reproducción

-1

-2

0

1

2

Page 33: SwingImprover - end of career project defense - 2006

TecnologíasWindows MediaPlayer

Ventajas

• Facilidad de uso• Compatibilidad directa con

Windows• Manejo automático de distintos

formatos de video• Performance aceptable

Desventajas

• Cerrado• Libertad y control excesivamente

limitados – No sirve• Salida hardware-dependiente

Page 34: SwingImprover - end of career project defense - 2006

TecnologíasDirectShow

Ventajas

• Gran libertad• Documentación• Altamente performante• Salida Hardware / Software

Desventajas

• Complejidad• Curva de aprendizaje lenta• Ausencia de una API managed

oficial

File Source(Async)

AVI Splitter AVI Decompressor Video Renderer

DefaultDirectSound Device

Page 35: SwingImprover - end of career project defense - 2006

TecnologíasDirectShow – GDI/GDI+

Ventana transparente

• Visualmente inaceptable• Altamente impredecible• Buena performance• Salida hardware-dependiente

SlideShow

• Visualmente aceptable• Excelente Control• Extremadamente poco

performante• Salida por software

Page 36: SwingImprover - end of career project defense - 2006

TecnologíasDirectShow – VMR9

• Integración con Direct3D• Tecnología en crecimiento• Complejidad muy alta• Performance aceptable• Salida por software

VMR9

Page 37: SwingImprover - end of career project defense - 2006

• Toolbars• Trackbar• Paneles• Botones

8 84114

TecnologíasControles Personalizados

Page 38: SwingImprover - end of career project defense - 2006

TecnologíasControles Personalizados

Ventajas

• Visualización mejorada• Globalmente modificables• Funcionamiento deseado• Satisface requerimiento de

usabilidad

Desventajas

• Consumo de recursos• Pérdida de performance

Page 39: SwingImprover - end of career project defense - 2006

TecnologíasControles Personalizados

Tecnología utilizada

- GDI- GDI+

Técnicas

- Backbuffer- Canal alfa- Código unsafe

Page 40: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA

Plan, aseguramiento de la calidad y pruebas

• SCM• Gerencia• Métricas• Conclusiones

Page 41: SwingImprover - end of career project defense - 2006

SQAPlan 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)

Page 42: SwingImprover - end of career project defense - 2006

SQATest Driven Development (TDD)

SwingImprover.Measures

SwingImprover.Test

Calc SpineAngle InsidePath

MedidasCálculos

AngleTest DistanceTest InsidePathTest

Page 43: SwingImprover - end of career project defense - 2006

SQATesting

TDD

Funcionales

Hardware dependiente

Casos de Prueba Según su Tipo

Page 44: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA• SCM

Herramientas, proceso y estrategia de backup

• Gerencia• Métricas• Conclusiones

Page 45: SwingImprover - end of career project defense - 2006

SCMHerramientas

- 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

Page 46: SwingImprover - end of career project defense - 2006

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.

SCMProceso

Page 47: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA• SCM• Gerencia

Proceso, planificación y herramientas

• Métricas• Conclusiones

Page 48: SwingImprover - end of career project defense - 2006

Gerencia

Se apoyó en los siguientes principios

• Compromiso en la responsabilidad• Adaptación Incremental• No agregar overhead al programador (travel light)• Mediciones Honestas

Page 49: SwingImprover - end of career project defense - 2006

GerenciaPlanificación de Iteraciones

Plan deRelease

Planificaciónde Iteración

Historias

Page 50: SwingImprover - end of career project defense - 2006

GerenciaPlanificación de Iteraciones

Plan deRelease

Planificaciónde Iteración

DesarrolloPlan deIteración

Historias

Page 51: SwingImprover - end of career project defense - 2006

GerenciaPlanificación de Iteraciones

Plan deRelease

Planificaciónde Iteración

Desarrollo

Nuevas Historias,Velocidad de Proyecto

Plan deIteración

Tereas Pendientes

Historias Comunicación yAprendizaje

Page 52: SwingImprover - end of career project defense - 2006

GerenciaPlanificación de Iteraciones

Plan deRelease

Planificaciónde Iteración

Desarrollo ÚltimaVersión

Nuevas Historias,Velocidad de Proyecto

Plan deIteración

Tereas Pendientes

Historias Comunicación yAprendizaje

NuevasFuncionalidades

Page 53: SwingImprover - end of career project defense - 2006

GerenciaPlanificación de Iteraciones

Plan deRelease

IteraciónAnterior

Bugs

Planificaciónde Iteración

Desarrollo ÚltimaVersión

Nuevas Historias,Velocidad de Proyecto

Plan deIteración

Tereas Pendientes

Historias

Velocidad de Proyecto

Pruebas de Aceptación Fallidas

Comunicación yAprendizaje

NuevasFuncionalidades

Bugs Corregidos

Dia a Dia

Page 54: SwingImprover - end of career project defense - 2006

GerenciaPlanificació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

Page 55: SwingImprover - end of career project defense - 2006

Gerencia

1 2 3 4 5 6 7 8 9 10 11 12

Iteraciones

His

tori

as

Release 1 Release 2 Release 3

Page 56: SwingImprover - end of career project defense - 2006

Gerencia

1 2 3 4 5 6 7 8 9 10 11 12

Iteraciones

His

tori

as

Release 1 Release 2

Page 57: SwingImprover - end of career project defense - 2006

GerenciaPlanificación

Herramientas utilizadas

• XPPlanner• ToDoList• Excel (evolución de planillas)

Page 58: SwingImprover - end of career project defense - 2006

GerenciaRiesgos

• 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

Page 59: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA• SCM• Gerencia

MétricasDe proceso, producto e interpretaciones

• Conclusiones

Page 60: SwingImprover - end of career project defense - 2006

MétricasAl 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)

Page 61: SwingImprover - end of career project defense - 2006

Métricas - Proyecto

Historias / Puntos

0

2

4

6

8

10

Can

tidad

de

His

toria

s

0

10

20

30

40

50

60

70

Pun

tos

Historias 6 5 9 2 5 5 5 8 4 3 3

Puntos 21 38 26 66 52 62 38 64 26 24 38

1 2 3 4 5 6 7 8 9 10 11

Page 62: SwingImprover - end of career project defense - 2006

Métricas - Proyecto

Velocidad / Hrs. trabajadas respecto a Hrs. estimadas

0:00

48:00

96:00

144:00

192:00

240:00

1 2 3 4 5 6 7 8 9 10 11

Ca

ntid

a d

e H

ora

s

0.00

0.10

0.20

0.30

0.40

0.50

0.60

Pu

nto

s/H

rs.

Hrs. Estimadas Hrs. trabajadas Velocity

Page 63: SwingImprover - end of career project defense - 2006

Métricas - Producto

54

2927

22

1715

5

00

10

20

30

40

50

60

Max Complexity

SwingImprover

SIDomain

SICommon

SIControls

VideoInfo

SIVideoPlayers

SIToobar

SITest

Page 64: SwingImprover - end of career project defense - 2006

• Líneas Generales• Proceso de Desarrollo• Requerimientos• Arquitectura• Tecnologías• SQA• SCM• Gerencia• Métricas

ConclusionesDe proyecto y personales

Page 65: SwingImprover - end of career project defense - 2006

Conclusiones del Proyecto

Metas Alcanzadas

• Satisfacción del Cliente• Cumplimiento de alcance inicial• Adaptación exitosa de XP

Lecciones Aprendidas

• No desviarse del proceso• Necesidad de pruebas mas

exhaustivas• Ser concientes de potenciales

riesgos y generar plan de contingencia (mas allá del uso de spikes)

• Llevar una bitácora de proyecto

Page 66: SwingImprover - end of career project defense - 2006

Conclusiones Personales

Metas Alcanzadas

• Conocimiento de nuevas tecnologías

• Uso de una metodología de desarrollo ágil (XP)

• Compromiso hacia el grupo por parte de sus integrantes

Lecciones Aprendidas

• Ventajas de programación a pares• Capacidad de afrontar desafíos

atípicos exitosamente• Necesidad de delegar actividades

Page 67: SwingImprover - end of career project defense - 2006

Estado Actual del Producto

http://www.nextgenerationsrt.com/

Partner:

Company:

Page 68: SwingImprover - end of career project defense - 2006

F I N