SwingImprover - end of career project defense - 2006

Post on 18-Jun-2015

137 views 2 download

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.

Transcript of SwingImprover - end of career project defense - 2006

Proyecto Final

ORT – Software Factory 2006

Alejandro CharbonnierDarío MacchiFernando Nicolet

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

• Líneas GeneralesIdea general, propuesta y dominio

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

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

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

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

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

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

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

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

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

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

Producto

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

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

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

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.

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á

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

• Líneas Generales• Proceso de Desarrollo

RequerimientosCliente, historias. Estrategia y priorización

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

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

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

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

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

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

Diseño y patrones

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

Rendering

Draw Objects

Arquitectura

Measures

Engine

VideoPlayers

GUI

Frames

FrameRepository

Repositorio XML

SwinImproverCommon

ArquitecturaMeasures

MeasureFactory<<Abstract>>

Measure

RightKneeAngle TeeToLeftFoot

Calc MeasureStep

+ result(): string[]

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

IVideoPlayback

ArquitecturaVideoPlayers

IVideoPlaybackTextured

TDDVideoPlayback

DXAVPVideoPlayback

VMR9VideoPlayback

<<library>>SwingImproverVideoPlayers

<<library>>SwingImproverDomain

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.

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

Reproducción de video y controles

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

TecnologíasReproducción de Video

• DirectX 9.0c• Windows Media Player• DirectShow

- GDI / GDI+- DirectX 9.0c

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!!!

TecnologíasDirectX 9.0c - AudioVideoPlayback

Funcionamiento

• Abrir video• Modos

- Directo (Hardware)- Textured (Software)

• Control de reproducción

-1

-2

0

1

2

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

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

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

TecnologíasDirectShow – VMR9

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

VMR9

• Toolbars• Trackbar• Paneles• Botones

8 84114

TecnologíasControles Personalizados

TecnologíasControles Personalizados

Ventajas

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

usabilidad

Desventajas

• Consumo de recursos• Pérdida de performance

TecnologíasControles Personalizados

Tecnología utilizada

- GDI- GDI+

Técnicas

- Backbuffer- Canal alfa- Código unsafe

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

Plan, aseguramiento de la calidad y pruebas

• SCM• Gerencia• Métricas• Conclusiones

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)

SQATest Driven Development (TDD)

SwingImprover.Measures

SwingImprover.Test

Calc SpineAngle InsidePath

MedidasCálculos

AngleTest DistanceTest InsidePathTest

SQATesting

TDD

Funcionales

Hardware dependiente

Casos de Prueba Según su Tipo

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

Herramientas, proceso y estrategia de backup

• Gerencia• Métricas• Conclusiones

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

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

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

Proceso, planificación y herramientas

• Métricas• Conclusiones

Gerencia

Se apoyó en los siguientes principios

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

GerenciaPlanificación de Iteraciones

Plan deRelease

Planificaciónde Iteración

Historias

GerenciaPlanificación de Iteraciones

Plan deRelease

Planificaciónde Iteración

DesarrolloPlan deIteración

Historias

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

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

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

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

Gerencia

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

Iteraciones

His

tori

as

Release 1 Release 2 Release 3

Gerencia

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

Iteraciones

His

tori

as

Release 1 Release 2

GerenciaPlanificación

Herramientas utilizadas

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

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

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

MétricasDe proceso, producto e interpretaciones

• Conclusiones

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)

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

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

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

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

ConclusionesDe proyecto y personales

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

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

Estado Actual del Producto

http://www.nextgenerationsrt.com/

Partner:

Company:

F I N