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

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Documento de Diseño Arquitectónico y Detallado
Red Social: “Un millón de Amigos”.
Técnicas de Diseño Red Social.
Plan de Implantación Sistemas de Información III
Red Social: “Un millón de Amigos”.
Fundamentos de Diseño de Software INFT.1
DISEÑO ORIENTADO AL OBJETO
Construcción de Páginas WEB
Análisis y Diseño de Sistemas II “Exposición Diagramas UML”
Arquitectura Orientada a Servicios (SOA)
Arquitectura CLARO-TECNOTREE
Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
TOGAF.
La manera más simple para describir un patrón es que ofrece una solución probada a un problema común.
Grupo Milanesa Integrantes: Agüero, Lucas Romero, Fernando Schild, Marcelo.
Presentación a la directora del proyecto Friend-Buster (Caza-Amigos) – PIS 2010.
Etapas y actividades en el desarrollo OO basado en UML
Presentación Final Equipo 4
Presentación del estado del arte
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Ingeniería del Software
DESCRIPCION DEL PROBLEMA
DIAGRAMAS DE ESTADOS ¿Qué es un Diagrama de Estados?
Profesor: Miguel Angel Vidal
Trabajo Práctico Taller de Desarrollo de Proyectos 2 Septiembre 2009.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
VHDL.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
Patrones de Comportamiento: Patrón de Diseño Observer
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
 Tema del proyecto  Integrantes y roles del equipo  Objetivos del proyecto  Alcance.
Ingeniería de Software
Patrones Creacionales
InfoPath Ventajas y Uso.
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
DISEÑO DE SOFTWARE 1ª. Parte
J2EE Java Enterprise edition eilin chang Matthew pabon Gabriel vega.
Patrones de diseño DECORATOR Mario Rodríguez Martín
Patrones de Diseño: Command
Juan Manuel Perdigón Mario Felipe Monsalve
UML 2.0 Integrantes: Diana Carolina Valencia M. Jhon Fernando Lopez T. Carlos Alberto Castillo.
Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño Grupo D-
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Importancia en la efectividad del:
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Tema 6: Programación L. Enrique Sucar Marco López ITESM Cuernavaca
Facultad de Ingeniería
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
 Es un programa escrito en Java y que forma parte de los componentes de una página de Internet. Los Applets han sido usados para proporcionar funcionalidad.
UML 2.0 Diagramas de Comportamiento
Diseño de Sistemas.
Ingeniería de Requisitos
Departamento de Ingeniería del Software e Inteligencia Artificial Universidad Complutense de Madrid Simulación del patrón … (1)
Roles de Open UP.
Patrones de diseño equipo n.1
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
Prof. Joel Moreno Molina
Proceso de Diseño de Interfaces
Torneos Virtuales Técnicas de Diseño – 2 cuatrimestre 2009 Grupo D.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Patrones de Diseño Agustín J. González ElO329.
UNIVERSIDAD TECNOLÓGICA DE NEZAHUALCOYOTL TECNOLOGÍAS DE LA COMUNICACIÓN E INFORMACION ADMINISTRACIÓN DE PROYECTOS DE TI I.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Taller de Desarrollo de Proyectos II (75.47) 2º cuatrimestre 2008.
Transcripción de la presentación:

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

Contenido 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

Requerimientos del simulador 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

Informació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 Java Log4j JUnit ant Javadoc Ambientes de desarrollo: Windows GNU/Linux Ubuntu 9.10

Descripción de Arquitectura

Vista lógica (I) Descripción de Arquitectura (cont.) - Clases del Modelo de Análisis

Vista lógica (II) Descripción de Arquitectura (cont.) - Mediador de Acciones (I) ¿Qué ocurre cuando dos jugadores chocan? (1) Falta (2) Conflicto de Pelota (3) Conflicto de Posición

Vista lógica (III) Descripción de Arquitectura (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

Vista lógica (IV) Descripción de Arquitectura (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); }

Vista lógica (V) Descripción de Arquitectura (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); }

Vista lógica (VI) Descripción de Arquitectura (cont.) - Secuencia de un tick de juego

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 (cont.)

Vista de procesos Descripción de Arquitectura (cont.) ¿ ?

Vista de Despliegue (I) Descripción de Arquitectura (cont.)

Vista de Despliegue (II) Descripción de Arquitectura (cont.) java –jar simulador.jar configuracion.xml [salida.xml] Si no se especifica salida, default: simulacion_principal.xml

Descripción de Arquitectura (cont.) Vista de Casos de Uso ¿ ?

Patrones de diseño utilizados Builder Singleton Strategy Command Observer PseudoMediator

Builder (I) Patrones de diseño utilizados (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

Builder (II) Patrones de diseño utilizados (cont.)

Partido Mediador de Acciones Naturaleza EventQueue Singleton Patrones de diseño utilizados (cont.) ¿Dónde? ¿Por qué? Por la necesidad de tener una única instancia de cada clase para ser accedida desde diferentes lugares

Patrones de diseño utilizados (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

Patrones de diseño utilizados (cont.) Strategy (II)

Patrones de diseño utilizados (cont.) Command (I) ¿Dónde? ¿Por qué? En el comportamiento de cada jugador Necesidad de una jerarquía que permita extender nuevos comandos y poder deshacer las acciones.

Command (II) Patrones de diseño utilizados (cont.)

Observer (I) ¿Dónde? ¿Por qué? Patrones de diseño utilizados (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

Observer (II) Patrones de diseño utilizados (cont.)

¿Dónde? ¿Por qué? PseudoMediator Patrones de diseño utilizados (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.

Posibilidades de extensión Creación de nuevos comandos. Crear estrategias propias defensivas u ofensivas. ¡No requiere recompilación! ¿Por qué? Creación de nuevas jugadas

Desafí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.

Demo / Muestra de código

¿Preguntas?

Miguel Abate Gabriel Cartuccia Mauro Cohen Federico Goldenberg María Eugenia Liva Lucas Mancini Pablo Mazzini Mario Silisque ¡Muchas Gracias! Grupo D