Upload
dario-macchi
View
138
Download
2
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
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