torneos virtuales 2º cuatrimestre 2009 técnicas de diseño 75.10 -grupo d-

32
Torneos Virtuales Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Upload: agapito-mancha

Post on 28-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Torneos VirtualesTorneos Virtuales2º Cuatrimestre 2009

Técnicas de Diseño 75.10

-Grupo D-

Page 2: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

ContenidoContenido

• Requerimientos del simulador• Información general del proyecto • Descripción de Arquitectura• Patrones utilizados• Posibilidades de extender la aplicación• Desafíos del proyecto• Mejoras para nuevas versiones• Demo / Muestra de código

Page 3: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Requerimientos del Requerimientos del simuladorsimulador

• Jugadores actúan de acuerdo a su posición en cancha.

• Acciones: patear, marcar, avanzar, atajar.

• Diseño flexible para agregar nuevas jugadas y estrategias

• Jugadores en contacto Habilidades + factor de azar definen acciones.

• Detección de faltas y expulsiones

Page 4: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Información general del proyectoInformación general del proyecto

Herramientas y tecnologías:

Datos sobre la base de código:

3950 Líneas de código (incluidos los tests unitarios) 393 commits de SVN Alojado en http://code.google.com/p/tecnicas-grupo2/

Java Log4j JUnit ant Javadoc

Ambientes de desarrollo:

Windows GNU/Linux Ubuntu 9.10

Page 5: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Descripción de Descripción de ArquitecturaArquitectura

Page 6: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista lógica (I)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

- Clases del Modelo de Análisis

Page 7: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista lógica (II)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)- Mediador de Acciones (I)

¿Qué ocurre cuando dos jugadores chocan?

(1) Falta

(2) Conflicto de Pelota

(3) Conflicto de Posición

Page 8: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista lógica (III)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

- Mediador de Acciones (II)

(1) Falta

AR=Agresividad/Resistencia

AR Jugador s/pelota > AR Jugador c/pelota ¡Hay falta!

¿Hay Falta? Castigar a Jugador s/pelota

Page 9: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista lógica (IV)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

- Mediador de Acciones (III)

(2) Conflicto de Pelota

private int calculoMarcacion(HabilidadesJugador hab){int Pm=3; /* ponderacion de habilidad de marcacion */int Pv=2; /* ponderacion de velocidad */int Pa=1; /* ponderacion azar */

int azar= Naturaleza.getInstancia().generarValorEnteroAleatorio(0, 10);

return (hab.getHabilidadMarcando()*Pm +hab.getHabilidadVelocidad()*Pv + azar*Pa)/(Pm+Pv+Pa);

}

private int calculoGambeta(HabilidadesJugador hab){int Pc=3; /* ponderacion de habilidad corriendo */int Pg=2; /* ponderacion de gambeta */int Pa=1; /* ponderacion azar */

int azar= Naturaleza.getInstancia().generarValorEnteroAleatorio(0, 10);

return (hab.getHabilidadCorriendo()*Pc +hab.getHabilidadGambeta()*Pg +azar*Pa)/(Pc+Pg+Pa);}

Page 10: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista lógica (V)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

- Mediador de Acciones (IV)

(3) Conflicto de Posición

private int calculoVelocidadCorriendo(HabilidadesJugador hab) {int Pc=2; /* ponderacion de habilidad corriendo */int Pv=3; /* ponderacion de velocidad */int Pa=1; /* ponderacion azar */

int azar= Naturaleza.getInstancia().generarValorEnteroAleatorio(0, 10);return (hab.getHabilidadMarcando()*Pc +hab.getHabilidadVelocidad()*Pv +

azar*Pa)/(Pc+Pv+Pa);}

Page 11: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista lógica (VI)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

- Secuencia de un tick de juego

Page 12: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista de componentes

Recibe dos parámetros de entrada. Más detalles en Vista de Despliegue.

Único componente:

¡TRIVIAL!

simulador.jar

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

Page 13: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista de procesos

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

¿¿ ??

Page 14: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista de Despliegue (I)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

Page 15: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Vista de Despliegue (II)

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

java –jar simulador.jar configuracion.xml [salida.xml]

Si no se especifica salida, default: simulacion_principal.xml

Page 16: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)

Vista de Casos de Uso

¿¿ ??

Page 17: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Patrones de diseño Patrones de diseño utilizadosutilizados

Builder

Singleton

Strategy

Command

Observer

PseudoMediator

Page 18: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Builder (I)

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

¿Dónde?

¿Por qué?

En la construcción de un Partido

Porque un Partido se construye progresivamente a medida que se van construyendo sus partes: Jugadores, Equipos, Pelota y Cancha

Page 19: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Builder (II)

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

Page 20: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

• Partido Mediador de Acciones Naturaleza EventQueue

Singleton

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

¿Dónde?

¿Por qué?Por la necesidad de tener una única

instancia de cada clase para ser accedida desde diferentes lugares

Page 21: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

Strategy (I)

¿Dónde?

¿Por qué?

En la jerarquía de Estrategias de los equipos

Por la necesidad de una interfaz flexible para añadir nuevas estrategias y evitar numerosas sentencias if que representen el comportamiento de cada equipo

Page 22: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

Strategy (II)

Page 23: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

Command (I)

¿Dónde?

¿Por qué?

En el comportamiento de cada jugador

Necesidad de una jerarquía que permita extender nuevos comandos ypoder deshacer las acciones.

Page 24: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Command (II)

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

Page 25: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Observer (I)

¿Dónde?

¿Por qué?

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

En el bloque de Persistencia. Persistor es Observer y Partido es Observable.

Porque es necesario que se comuniquen los cambios que ocurren en un tick, como ser posiciones, eventos de gol y tarjetas, etc.Partido notifica a Persistor de estos cambios para que sean escritos en la salida XML

Page 26: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Observer (II)

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

Page 27: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

¿Dónde?

¿Por qué?

PseudoMediator

Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)

En lo que respecta al Mediador de Acciones y todos los participantes

Porque el conocimiento entre Partido y Mediador es bidireccional.El conocimiento hacia Jugador, Pelota y Árbitro es unidireccional, aquí es similar a un Facade.

Page 28: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Posibilidades de extensiónPosibilidades de extensión

Creación de nuevos comandos.

• Crear estrategias propias defensivas u ofensivas. ¡No requiere recompilación! ¿Por qué?

<equipo nombre="Sacachispas" estrategia="EstrategiaOfensiva">

• Creación de nuevas jugadas

Page 29: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Desafíos del proyectoDesafíos del proyecto

Trabajar en un grupo de muchos integrantes.

Numerosas soluciones propuestas.

Definir protocolo para la comunicación con la

aplicación del otro grupo, codificada con

otras tecnologías.

Poco tiempo para implementar.

La etapa de testing es compleja.

Page 30: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Demo / Muestra de códigoDemo / Muestra de código

Page 31: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

¿Preguntas?¿Preguntas?

Page 32: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-

Miguel Abate Gabriel Cartuccia

Mauro Cohen

Federico Goldenberg

María Eugenia Liva

Lucas Mancini

Pablo Mazzini

Mario Silisque

¡Muchas Gracias!¡Muchas Gracias!

Grupo D