Herbert Game Documentación Técnica Versión 1.4 Historia de revisiones Fecha Versión Descripción Autor 6/11/2011 1.0 Primer versión de la Documentación Técnica Hernán Albano 06/11/2011 1.1 Revisión del Documento Federico Dadalt 18/11/2011 1.2 Extensión del documento y correcciones menores Emiliano Barcia 19/11/2011 1.3 Extensión del documento Emiliano Barcia 20/11/2011 1.4 Revisión del documento Federico Dadalt
Contenido CONTENIDO... 2 1. INTRODUCCIÓN... 3 1.1. Definiciones, siglas y abreviaturas.... 3 2. INSTALACIÓN... 3 3. ARQUITECTURA... 4 3.1. Descripción... 4 3.2. Proyecto Herbert.Api... 4 3.3. Proyecto Herbert.Dal... 4 3.4. Proyecto Herbert.Designer... 4 3.5. Proyecto Herbert.Globals... 4 3.6. Proyecto Herbert.Language... 4 3.7. Proyecto Herbert.Language.GUI... 4 3.8. Herbert.Phone... 5 3.9. Proyecto Herbert.Web... 5 3.10. Proyecto Herbert.Services... 5 3.11. Modelos... 5 4. TECNOLOGÍAS Y HERRAMIENTAS DE DESARROLLO... 5 4.1. C#... 5 4.2. Windows Forms... 5 4.3. Silverlight... 5 4.4. XNA... 6 4.5. Servicios WCF... 6 4.6. Linq... 6 4.7. NUnit... 6 4.8. Stylecop... 6 4.9. Redmine... 6 4.10. Tortoise SVN... 6 4.11. Google Docs... 7 4.12. Esquema Base de Datos... 8 4.13. Configuración (Base de Datos)... 8 4.13.1. Pasos para la creación de la base de datos... 8
1. Introducción El objetivo primordial del documento es el de dar un paneo del proyecto en lo que a términos técnicos se refiere. Fundamentalmente, respecto a temas relacionados con la arquitectura y el diseño del mismo. El sistema consta de varios subproyectos: tenemos por un lado el Servidor, encargado de proveer la lógica de negocios y servicios a ser utilizados por los clientes. Por otro lado, tenemos dos tipos de cliente, cada uno como otro proyecto. Estos son: El cliente web, desarrollado en Silverlight y una solución para Windows Phone 7. 1.1. Definiciones, siglas y abreviaturas. Ver Glosario del proyecto. 2. Instalación Esta parte detallará el proceso de implantación del producto desarrollado. Basándonos en el Plan de Implantación, tenemos algunos requerimientos previos antes de poder instalar el Producto. El módulo servidor de la aplicación requiere: Sistema Operativo Windows XP o superior.net Framework 4.0 SQL Server 2008 Express Edition Internet Information Server 7.0 El cliente web de la aplicación requiere Navegadores compatibles con Silverlight El cliente phone requiere de un teléfono celular con sistema operativo WP7 Por otro lado podemos decir que para el desarrollo de la aplicación fue necesario contar con: Visual Studio 2010.NET Framework 4.0. Mobile SDK 7.1 (Mobile development kit) Microsoft Silverlight 4.0 XNA Game studio 4.0 (Librería para juegos) SQL Server 2008 R2 IIS Express
3. Arquitectura 3.1. Descripción El sistema sigue una arquitectura de tipo cliente servidor. Para más detalle ver documento de especificación de la arquitectura. Proyectos de la Solución A continuación se describe cada uno de los subproyectos y su función dentro del sistema. 3.2. Proyecto Herbert.Api Este proyecto expone al resto de los proyectos, los servicios provistos por el proyecto Herbert.Services que es quién los provee. De esta forma queda centralizado el acceso a dichos servicios, desde cada uno de los proyectos. 3.3. Proyecto Herbert.Dal El proyecto Herbert.Dal (Data Access Layer) representa la capa de acceso a datos, centralizando las consultas a realizar sobre la base de datos del proyecto, donde se guardan los niveles, usuarios, puntajes, etc Este proyecto cuenta con un archivo generado a través del Entity Framework provisto por.net, para generar la base de datos a partir de él. 3.4. Proyecto Herbert.Designer El proyecto Herbert.Designer es una aplicación de escritorio (hecha en Windows Form) que permite crear mapas para el juego. El diseñador guarda/carga mapas localmente en un formato particular (.mfh) y permite cargar mapas a la base de datos, chequeando previo a dicha subida, que se cumpla con las restricciones correspondientes. 3.5. Proyecto Herbert.Globals Este proyecto cumple simplemente con el propósito de proveer al resto de los proyectos, con definiciones de constantes y estructuras de datos que les son comúnes. 3.6. Proyecto Herbert.Language Herbert.Language proporciona las funcionalidades necesarias para el parseo de los comandos introducidos por el usuario, a movimientos del personaje del juego. Este proyecto es el alma del juego: el intérprete de comandos. 3.7. Proyecto Herbert.Language.GUI Al ser el proyecto Herbert.Language una librería para Silverlight, se creó un proyecto de escritorio que proporcionara una interfaz sencilla, para poder testear el funcionamiento de la librería Herbert.Language.
3.8. Herbert.Phone En este caso tenemos también un conjunto de vistas adaptadas a la pantalla del dispositivo móvil. El proyecto soporta la orientación landscape y además soporta tombstoining para la aplicación en caso de requerirlo. Desde este proyecto se referencia también al componente XNA. El proyecto es de tipo Windows phone Silverlight and XNA application. 3.9. Proyecto Herbert.Web Este proyecto es la aplicación web que corre del lado del servidor, para proveer a los navegadores de las vistas de Silverlight y del procesamiento lógico de la aplicación. 3.10. Proyecto Herbert.Services Proyecto que provee de los servicios a consumir por parte de los clientes silverlight (web y phone) y del diseñador de mapas. 3.11. Modelos Aquí se encuentra el modelo de datos que se utiliza en el sistema ADO.NET Entity Data Model, que brinda una interfaz de acceso a los datos y al esquema de la Base de Datos. HerbertDataModel.edmx 4. Tecnologías y herramientas de desarrollo La solución implementada fue desarrollada utilizando el.net Framework 4.0, con el IDE Visual Studio 2010. Dentro del Framework de.net son muchas las opciones a disposición del programador, dependiendo de las características particulares de la solución a implementar. A continuación detallamos las tecnologías del Framework que utilizamos, los motivos y ventajas de la decisión adoptada, y también detallaremos el resto de las herramientas adoptadas para funcionar como equipo de desarrollo. 4.1. C# El lenguaje de programación orientado a objectos del framework C Sharp, es parte de todos los proyectos de nuestra solución, como lenguaje sobre el que se desarrolla la lógica de cada aplicación. 4.2. Windows Forms Es la API para desarrollo gráfico (interfaz de ventanas) del Framework de.net. Fue utilizada para desarrollar el diseñador de mapas y para la aplicación de testeo de la librería del parser del lenguage h. 4.3. Silverlight Silverlight le permite a los desarrolladores implementar aplicaciones RIA (Rich Internet Application) tanto para ser utilizadas con un navegador o como aplicación de escritorio. En nuestro caso, el cliente solicitó que se utilizara Silverlight tanto para la aplicación web como para la aplicación Windows Phone.
4.4. XNA El Framework de.net ofrece una librrería (XNA) para desarrollo de videojuegos tanto para PC, como para Xbox y Windows Phone. Surgió como una sugerencia del cliente, investigar qué podría ofrecer esta librería para el desarrollo de la aplicación Windows Phone. El SDK para desarrollo en Windows Phone disponible al momento de comenzar a desarrollar nuestra aplicación, carecía de soporte para XNA integrado con Silverlight. Para poder juntar ambas tecnologías fue necesaria una librería de terceros (third party library) que nos permitió justamente, dicha integración. Al momento de redactar este documento, Microsoft liberó la siguiente versión del SDK para Windows Phone, que incluye entre sus nuevas prestaciones, integración con XNA. 4.5. Servicios WCF Para el intercambio de datos entre las aplicaciones cliente (web y phone) y la aplicación servidor, se utilizaron servicios WCF (Windows Communication Foundation), que resulta ser el modelo de programación de Microsoft para generar aplicaciones orientadas a servicios. 4.6. Linq Es una tecnología de Microsoft que permite agregar consultas SQL a los lenguajes del Framework de.net. 4.7. NUnit NUnit es un Framework destinado al testeo unitario, de código abierto, que se integra fácilmente al desarrollo en.net. Cuenta con varias funcionalidades y librerías, que permiten desarrollar test unitarios y correrlos (dentro o por fuera del Framework de.net) y ver resultados detallados. 4.8. Stylecop Es un complemento para visual studio, que permite especificar directivas de calidad de codificación (propias o las que trae por defecto) y hacer una revisión técnica del código, que presente los resultados y especifique dónde se debe corregir. 4.9. Redmine Es una aplicación web que permite la organización y seguimiento de proyectos de desarrollo de software, con varias funcionalidades que facilitan el trabajo de directores de proyecto y desarrolladores. En nuestro caso, sirvió como medio de intercambio de alta, corrección y baja de reportes de bugs en la aplicación. 4.10. Tortoise SVN Es un proyecto de software libre que permite mantener y manejar un repositorio para el proyectos. Nuestro equipo de desarrollo utilizó un repositorio para mantener varias ramas (branches) de desarrollo y para mantener disponibles los documentos a redactar.
4.11. Google Docs Por simplicidad, cierto tipo de documentos fueron alojados en una cuenta de Google Docs, para manipulación del equipo de desarrollo.
4.12. Esquema Base de Datos 4.13. Configuración (Base de Datos) La base de datos es una base de datos relacional sobre SQL Server Express 2008 y puede ser levantada en forma local. 4.13.1. Pasos para la creación de la base de datos Es necesario utilizar algún administrador para crear la base, el grupo optó por usar el SQL management studio. Conectados al servidor podremos crear la base de datos. La base de datos que estamos utilizando localmente se llama Herbert_lib2, nombre que le quedó de la última liberación realizada. Para la puesta en funcionamiento de la base de datos tenemos un script (HerbertDataModel.sql) encargado de dejar la base con algunos usuarios como para poder probar la aplicación.