Arquitectura de Software PDF
Arquitectura de Software PDF
Arquitectura de Software PDF
pa
RESUMEN– En los últimos años la arquitectura de software se ha consolidado como una disciplina que intenta contrarrestar los efectos
negativos que pueden surgir durante el desarrollo de un producto informático, ocupando un rol significativo en la estrategia de negocio de una
organización que basa sus operaciones en el software, volviéndose necesaria para todo tipo de desarrollo, incluyendo los videojuegos. La presente
investigación tiene como objetivo desarrollar una arquitectura de software para videojuegos desarrollados sobre el motor de juego Unity 3D, que
permita organizar y estructurar sus características funcionales básicas. A partir del estudio de arquitecturas usadas en videojuegos se agruparon
las clases candidatas de la solución propuesta, identificándose los paquetes principales, dependencias entre ellos, patrones de diseño y buenas
prácticas empleadas, concretando una arquitectura de software basada en la integración de los tipos de arquitectura: en capas y basada en
componentes. Se desarrolla un prototipo funcional de un videojuego del género plataformas, empleando para describirlo elementos del diseño de
videojuegos, especificación de mecanismos y las vistas propuestas por Robert Nord: conceptual, de módulos, de código y de implementación. La
arquitectura propuesta fue validada a través de las técnicas de evaluación basadas en prototipos, en escenarios y en conjunto con la aplicación del
método de Análisis de Acuerdos de Arquitectura de Software. Con la aplicación de esta técnica se identificaron los riesgos presentes en la
arquitectura propuesta, teniendo en cuenta el comportamiento de atributos de calidad sobre la solución, según el modelo ISO/IEC 25010.
videojuego es necesario, desde el concepto inicial hasta usuarios, con un alto valor agregado, resultado de un
su versión final, el conocimiento de varias disciplinas y ciclo completo de I+D+I (Investigación-Desarrollo e
habilidades por parte del equipo de trabajo, tales como: Innovación) [7].
programación, arquitectura de software, diseño y Este centro ha desarrollado varios productos
marketing. El desarrollo de productos de este tipo pasa utilizando el motor de juego Unity 3D, los cuales han
por la creatividad y tiene en cuenta otros factores, como sido liberados satisfactoriamente desde la Dirección de
la estética o la temática en el instante de definir ciertos Calidad de la Universidad, algunos son: Súper Claria,
géneros [2]. Aventuras en la Manigua, Especies invasoras, La
Actualmente, se pueden encontrar en los mercados Neurona, Villa Tesoro y Caos Numérico. Después de la
diferentes opciones de videojuegos, tales como: basados entrega de los productos antes mencionados se ha
en licencias libres como comerciales que usan diferentes continuado con el desarrollo de nuevos videojuegos,
motores, los que se encargan de renderizado para los pero se ha detectado, mediante consultas a expertos en
gráficos 2D y 3D, motor físico o detector de colisiones, el desarrollo, algunas limitaciones. La inexistencia de
sonidos, scripting, animación, inteligencia artificial, una estructura lógica basada en paquetes de la
redes, streaming, administración de memoria y un implementación dificulta el entendimiento de esta por
escenario gráfico [3]. parte del equipo de desarrollo y de los nuevos
Entre los motores de juego más utilizados se especialistas. Además, la poca representación y
encuentra Unity 3D [4], que es empleado para realizar documentación que describe el funcionamiento de un
proyectos tanto 2D como 3D, dado que posee un videojuego que se desarrolle sobre el motor de juego
entorno de desarrollo sencillo de manejar para los Unity 3D, obstaculiza el proceso de su aprendizaje para
principiantes y suficientemente potente para los los desarrolladores. Por otra parte, no se tiene referencia
expertos, permitiendo crear fácilmente videojuegos y sobre el código fuente que se necesita para el desarrollo
aplicaciones para diversas plataformas. de nuevos videojuegos, lo que provoca desorganización
El diseño y desarrollo de un videojuego es en la implementación y diversidad en el modo que se
demasiado complejo para que pueda ser abordado por implementa en los proyectos de este tipo. El análisis
completo sin utilizar una estructura lógica que describa anterior conduce al siguiente problema de la
los componentes que lo forman. Otro aspecto esencial investigación: ¿Cómo establecer una organización y
para estructurar y desarrollar un videojuego con la estructuración funcional de las características básicas de
calidad deseada es la Arquitectura de software (AS), la un videojuego que se desarrolle sobre el motor de juego
cual se encarga de definir de forma abstracta, los Unity 3D? El objetivo de esta investigación consiste en:
componentes de un sistema, sus interfaces y la Desarrollar una arquitectura de software para
comunicación entre ellos. Una AS, consiste en un videojuegos implementados sobre el motor de juego
conjunto de patrones y abstracciones coherentes que Unity 3D, que permita organizar y estructurar sus
proporcionan soluciones a problemas de manera características funcionales básicas.
eficiente [5], así como se encarga de satisfacer
determinados atributos de calidad, tales como: 2. Materiales y métodos
mantenibilidad, extensibilidad, flexibilidad e interacción Como métodos científicos de investigación para la
con otros sistemas de información [6]. obtención de información sobre el proceso de desarrollo
En la Universidad de Ciencias Informáticas (UCI) en de videojuegos centrado en la arquitectura se
colaboración con los Estudios de Animación del emplearon, dentro de los teóricos: el histórico-lógico
Instituto Cubano de Arte e Industria Cinematográfico para el análisis y las tendencias actuales de las
(ICAIC) se realizan videojuegos de diferentes géneros. arquitecturas de software; el analítico-sintético para
Para ello la universidad cuenta con el Centro de extraer y analizar la información sobre las principales
Entornos Interactivos 3D Vertex, el cual tiene como arquitecturas de software usadas en el Centro de
objetivo generar soluciones integrales, tecnologías, Entornos Interactivos 3D, Vertex. Dentro de los
productos y servicios informáticos virtuales que métodos empíricos se utilizaron: consultas de fuentes de
cumplan con las necesidades y expectativas de los información para el análisis de fuentes bibliográficas y
criterios de personal involucrado directamente con el 2.3 Arquitecturas de software utilizadas para el
proceso de desarrollo de videojuegos en el centro desarrollo de videojuegos
Vertex; la observación para observar los resultados Un ejemplo que se podría citar es la Arquitectura
obtenidos en la caracterización e identificación de los para videojuegos serios con aspectos culturales,
principales tipos de arquitecturas de software y publicada por Ricardo Emmanuel Gutiérrez Hernández,
proponer la solución Francisco Álvarez Rodríguez y Jaime Muñoz [10], de la
Universidad Autónoma de Aguascalientes en México,
2.1 Arquitectura de software que consiste en una arquitectura en seis Capas, las
Kruchten, en Rational Unified Process plantea: “La cuales son: interfaz de usuario, escenario, objetos juego,
arquitectura de software representa la estructura o las decoración, aplicación y contexto cultural.
estructuras del sistema, que consta de componentes de Para la propuesta de solución no se utilizará como
software, las propiedades visibles externamente y las referencia esta arquitectura, debido a que los
relaciones entre ellas” [8]. videojuegos desarrollados en el centro Vertex no se
Por otro lado, Robert Nord plantea [9]: “Arquitectura centran en contextos culturales, sin embargo, el estudio
de software es sobre tomar decisiones estructurales de la organización de sus componentes brinda una
fundamentales que son costosos de cambiar una vez mayor visión de cómo estructurar un sistema en capas,
implementado. Opciones de arquitectura de software, definiendo qué almacena cada una de manera más
también llamados decisiones arquitectónicas, incluyen organizada.
opciones estructurales específicas de posibilidades en el Otro ejemplo cercano al contexto que se analiza es la
diseño de software. Por ejemplo, los sistemas que tesis que lleva por título: “Diseño y Desarrollo de un
controlaban la lanzadera de espacio vehículo de Prototipo Básico de un Videojuego de Plataformas en
lanzamiento tenía el requisito de ser muy rápido y muy 2D” publicada por Carlota Esteban Cazalla [11]. Para
confiable. Por lo tanto, una adecuada computación en esta tesis se utilizó como motor de juego Unity 3D y
tiempo real lengua tendría que ser elegido. Además, una arquitectura Modelo-Vista-Controlador (MVC).
para satisfacer la necesidad de fiabilidad la elección El patrón MVC permite separar los datos de la lógica
podría realizarse para tener múltiples redundantes e del videojuego. Sin embargo, desacoplar el modelo de
independientemente producido copias del programa y la vista no significa que los desarrolladores del modelo
ejecutar estas copias en independiente hardware y puedan ignorar la naturaleza de las vistas. Si el modelo
contrastar resultados”. experimenta cambios frecuentes, podrían desbordarse
las vistas con una lluvia de requerimientos de
2.2 Conceptualización de videojuegos actualización, lo que trae consigo que no cumpla con el
Un videojuego o juego de video es un software atributo de calidad mantenibilidad en proyectos con
creado para el entretenimiento en general y basado en la cambios frecuentes en los requisitos como suelen ser los
interacción entre una o varias personas y un aparato videojuegos. Teniendo en cuenta estas limitantes, dicha
electrónico que ejecuta dicho videojuego; este arquitectura es utilizada como referencia solamente para
dispositivo electrónico puede ser una computadora, una concebir la estructuración y organización de los
máquina arcade, una videoconsola, un dispositivo de componentes del sistema en capas.
mano (un teléfono móvil, por ejemplo) los cuales son
conocidos como "plataformas" [1]. 2.3.1 Arquitecturas de software utilizadas para el
Aunque, usualmente el término "video" en la palabra desarrollo de videojuegos en el centro Vertex
"videojuego" se refiere en sí a un visualizador de En el centro Vertex se han desarrollado videojuegos
gráficos, hoy en día se utiliza para hacer referencia a de diferentes géneros, contando con equipos de diversos
cualquier tipo de visualizador. Se entiende por programadores y arquitectos de software, que en la
videojuegos todo tipo de juego digital interactivo, con mayoría de los casos no coinciden, por lo que sus
independencia de su soporte [2]. criterios a la hora de definir una AS para el videojuego
difieren. Esto, sumado a que en muchos casos no se
contaba con un estudio del arte referente al tema, ha
traído consigo desorganización y dio origen a la
necesidad de proponer una AS que satisfaga la situación • El polimorfismo observado en métodos como
problemática antes descrita [12]. Conquistar(), que permite separar los elementos que
cambian de los que no lo hacen. El método
2.3.2 AS del videojuego Especies invasoras mencionado se implementa de diversas formas,
facilitando la ampliación, el mantenimiento y la
reutilización del código.
• El uso del patrón de diseño singleton en el Game
Manager, que garantiza que haya una sola instancia
de dicha clase, reduciendo la carga en memoria de
datos y optimizando el código.
• El uso del manejador de eventos (Event Handler), lo
que posibilita optimizar el control de acciones en un
juego que tiene demasiados estados.
controlador principal del juego se usa un patrón de las vistas arquitectónicas que propone Robert Nord [9] y
diseño singleton que se implementó en el mismo. las buenas prácticas de ingeniería de software
• State Machine: Se encarga de definir los estados del propuestas por el marco de trabajo ingenieril para el
videojuego. Guarda los mismos en un enum que proceso de desarrollo de videojuegos utilizado en el
posee todos los diferentes estados que puede asumir centro Vertex [13]:
el videojuego en un momento dado. • Vista conceptual
• Sound Manager: Controla el sonido del juego y • Vista de módulos
particularmente de cada elemento o acción que • Vista de código
active un sonido. Guarda los tipos de sonidos (dos • Vista de ejecución.
tipos de sonido, o sea, dos listas: FX para Effects y
BGM para Background) en listas usando estructuras 3.2.1 Vista conceptual
(struct), formadas por tres elementos: un AudioClip, En esta vista se describe el sistema en términos de
un AudioSource para poder reproducir el AudioClip
sus elementos principales de diseño y las relaciones
y un enum que guarda los nombres de los sonidos
entre estos según el dominio como se visualiza en la
para diferenciarlos a la hora de agregarlos al
figura 4. Esta vista es independiente de las decisiones de
videojuego.
implementación [14].
• Data Manager: Maneja los datos del juego. Se
encarga de cargar, guardar el estado del videojuego o
la puntuación.
• Scene Manager: Maneja las escenas del juego y los
cambios entre ellas.
• Puntuación: Controla la puntuación del juego. En
caso de no existir se puede eliminar esta clase de la
arquitectura.
Capa de Caracteres: En esta capa se encuentran los
caracteres (ControladorPersonaje), diferenciándose
entre ellos por ser jugables (Player) o no jugables
(NPC). Si se desea agregar otro tipo de personaje que
intervenga en el videojuego se incorpora en esta capa. Figura 4. Modelo conceptual de la solución propuesta.
Capa de Interacción con el mundo: En esta capa se
encuentran el escenario y los objetos que pertenecen al 3.2.2 Vista de módulos
mismo. Si existen otros tipos de objetos que modifiquen En esta vista se captura la descomposición funcional
el videojuego se agregan a esta capa. y las Capas del sistema. El sistema es descompuesto
lógicamente en subsistemas, módulos, y unidades
3.1 Restricciones arquitectónicas abstractas. Cada capa representa las distintas interfaces
• La arquitectura debe garantizar que los productos de comunicación permitidas entre los módulos [14]. Las
que se desarrollen sean multiplataforma (Android, dependencias entre paquetes resumen dependencias
Windows, Ubuntu). entre los elementos internos a ellos como se muestra en
• La arquitectura debe permitir la actualización, la figura 5 [11].
modificación o incorporación de compontes de
forma natural.
• Las prestaciones de hardware dependerán de los
requerimientos no funcionales de los productos que
se desarrollen utilizando la arquitectura propuesta.
• Se debe usar como motor de videojuegos Unity 3D.
calidad que aparecen en las hojas del árbol de utilidad recursos y tipos de
[16]. recursos
Los escenarios aplicados y las propuestas se unen utilizados
cuando se pregunta cómo estos son soportados por la cuando el
arquitectura. El resultado es un conjunto de decisiones videojuego
lleva a cabo su
arquitectónicas. Si estas decisiones son potencialmente
función deben
problemáticas o especialmente importantes, o si afectan
ser bajos.
a más de un atributo, entonces deben ser registradas
Compatibili- Coexistencia El videojuego Media
como riesgos. Por tanto, el método ATAM permite dad debe poder
identificar los riesgos arquitectónicos que coexistir con
potencialmente prohíben a una organización conquistar otro software
las metas del contexto [16]; mientras que el esfuerzo independiente,
dedicado a contrarrestar estos eventos garantiza una en un entorno
estructura lógica y robusta de las funcionalidades bases común,
de un producto de software de calidad. compartiendo
Árbol de utilidad: Los atributos presentes en el recursos
árbol de utilidad [16], usados para evaluar la comunes sin
arquitectura mediante el método ATAM, en conjunto detrimento.
con técnicas basadas en escenarios y prototipo, son los Interoperabili- El videojuego Media
más relevantes a comprobar sobre el dominio de dad debe poder
intercambiar
aplicación desarrollado (videojuegos), dado que aportan
información y
interpretaciones consistentes, pertinentes, facilitando el
utilizar la
análisis de su comportamiento desde el núcleo información
arquitectónico hasta los horizontes de la arquitectura intercambiada
relacionados con las funcionalidades más básicas del con otro
videojuego (prototipo funcional). Las especificaciones sistema.
de atributos pertenecen al modelo de calidad ISO/IEC Usabilidad Estética La interfaz de Media
25010 [17] y sus descripciones se muestran en la tabla usuario debe
1. agradar y
Tabla 1. Árbol de utilidad satisfacer la
Atributo Subatributo Escenario Prioridad interacción
Adecuación Corrección El videojuego Alta con el usuario.
Funcional Funcional debe proveer Aprendizaje El usuario Media
resultados debe
correctos con comprender el
el nivel de sistema con
precisión facilidad.
requerido. Operabilidad El sistema Media
Eficiencia Comporta- Los tiempos Alta (Jugabilidad) debe satisfacer
miento de respuesta y la experiencia
Temporal procesamiento del jugador.
del videojuego Fiabilidad Tolerancia El sistema Alta
con respecto a opera según lo
cada una de previsto en
las acciones presencia de
del usuario fallos
deben ser hardware o
cortos. software.
Utilización de Las cantidades Alta Disponibilidad El sistema está Alta
disponible determinados
cuando se de hardware,
requiere su software,
uso. operacionales
Seguridad Confidenciali- El sistema Media o de uso.
dad protege contra Facilidad de El producto se Media
el acceso a instalación puede instalar
datos e y/o desinstalar
información de forma
de personas no exitosa en un
autorizadas, ya determinado
sea accidental entorno.
o deliberada-
mente. 3.4 Evaluación basada en escenarios con presencia
Integridad El sistema Alta de riesgos sobre la propuesta
previene
accesos o Tabla 2. Descripción del Escenario Confidencialidad del
modificacio- atributo Seguridad
nes no Atributo de Calidad Seguridad
autorizados a Subatributos/Sub-
Confidencialidad.
sus datos. característica
Mantenibili- Modularidad Al realizar un Alta El sistema protege contra el acceso a
dad cambio en un datos e información de personas no
Objetivo
componente autorizadas, ya sea accidental o
del sistema deliberadamente.
debe tener un Origen Usuarios del sistema
impacto Artefacto Videojuego.
mínimo en los Entorno El sistema desplegado.
demás. Estímulo Respuesta: Flujo de eventos
Reusabilidad Los elementos Alta 1. Se accede al (Escenarios)
del videojuego sistema sin
deben ser autorización.
reusables en Se accede al sistema El sistema no posee autenticación de
otros sin autenticarse. usuarios.
desarrollos. Medida de respuesta
Capacidad de El sistema Alta Desplegar el sistema.
ser modificado puede ser
modificado de Tabla 3. Descripción del Escenario Integridad del
forma efectiva atributo Seguridad
y eficiente sin Atributo de Calidad Seguridad
introducir Subatributos/Sub-
defectos o Integridad.
característica
degradar el El sistema previene accesos o
desempeño. Objetivo modificaciones no autorizados a sus
Portabilidad Adaptabilidad El producto Media datos.
puede ser Origen Usuarios del sistema.
adaptado de Artefacto Videojuego.
forma efectiva Entorno El sistema desplegado.
y eficiente a
Estímulo Respuesta: Flujo de eventos
diferentes
1. Se accede al (Escenarios)
entornos