<h1>Diamanthia: Torch Game</h1> <h2>Introducción</h2> <p> En el presente proyecto, se busca desarrollar una especificación de requisitos para un producto de Software, en este caso, un videojuego dedicado al entretenimiento. El cual, en resumen, se basa en la exploración de escenarios utilizando una antorcha, la cual representará la visibilidad del usuario, igualmente, sirviendo como arma para defenderse. En resumen, las mecánicas del juego giran en torno a la utilización de la antorcha. </p> <p> Para este propósito, se hará uso de técnicas para la licitación de dichos requisitos (como brainstorming o lluvia de ideas), los cuales serán plasmados en un formato en el que se enfatice su función y prioridad, aunado a un código único para facilitar su distinción. Además, se representarán claramente los límites, estructura y comportamiento del sistema de Software. </p> <h2>Definición del problema seleccionado</h2> <p> La problemática, planteada en este caso no como una situación adversa, sino como una cuestión para la cual determinamos un método a seguir para un resultado esperado, sería el desarrollo de un videojuego orientado al entretenimiento del ususario. En este sentido, la necesidad a satisfacer consiste en la de proveer entretenimiento, cuya importancia reside en distraer, alegrar o deleitar al potencial usuario, dejando de lado preocupaciones o angustias, canalizando estrés y, en consecuencia, mejorar temporalmente el estado de ánimo, apoyando así a mantenerse mentalmente saludable. </p> <p> Luego, la solución propuesta consiste en el desarrollo de un videojuego, en el cual el usuario final, es decir, el jugador, se vea inmerso en escenarios diversos a explorar con una antorcha, que representará su medio de visión y su única arma. Mediante la experiencia de juego, junto con un sistema de logros que incentive al usuario a completar desafíos, se busca brindar un espacio que posibilite un pasatiempo a modo de recreación. </p> <h2>Glosario de términos</h2> <p> <b>Juego:</b> "Un juego es una actividad interactiva y voluntaria, en la cual uno o mas jugadores siguen reglas que restringen su comportamiento, promulgando un conflicto artificial que termina en un resultado cuantificable" (Zimmerman, E. 2004). </p> </p> <p> <b>Videojuego:</b> "Un videojuego es un juego que se juega gracias a un aparato audiovisual y el cual puede ser basado en una historia" (Esposito, N. Enero 2005). </p> <p> <b>Rogue-Like:</b> "Rogue-like es un subgenero de los videojuegos de rol caracterizado por ser un dungeon crawl por medio de generación procedural de niveles, gameplay por turnos, graficos basados en casillas, y muerte permanente del personaje del jugador." (Panitz, A. 18 de junio, 1993). </p> <p> <b>Generación procedural:</b> "Generación procedural esta definida como la creación algoritmica de contenido de juego con entrada de usuario limitada o indirecta." (Schedi, D. Yannakakis, G. Enero 2011). </p> <p> <b>Run:</b> "Una vez el personaje muere, el jugador debe empezar una nueva partida, tambien llamada 'run', la cual generara un nuevo set de niveles debido a la generacion procedural." (Craddock. 2015). </p> <p> <b>Loot:</b> "En los video juegos, el loot describe items de valor recogidos por el personaje del jugador durante el transcurso del juego, tales como la moneda del juego, hechizos, equipamiento y armas. En juegos de un solo jugador, es comun obtener loot de tesoros o reclamado de enemigos derrotados" (Rogers, S. 2014). </p> <p> <b>Dungeon crawl:</b> "Un dungeon crawl es un tipo de escenario en juegos de rol de fantasia en los que los heroes navegan un entorno laberintico (un 'calabozo'), enfrentando varios monstruos, esquivando trampas, resolver acertijos, y lootear cualquier tesoro que puedan encontrar". (Brewer, N. 10 de enero de 2020). </p> <p> <b>Floor:</b> También llamado "piso", es "Un escenario generado aleatoriamente en el que se encuentran distintas variedades de enemigos y objetos cada vez que son accedidos". (Messner, S. 23 de abril de 2020). </p> <p> <b>Sprite: Imágenes basadas en mapeado de bits.</b> </p> <h2>Ingeniería de requisitos</h2> <p> En primer lugar, se realizó una lluvia de ideas en StormBoard con el objetivo de generar diferentes puntos de vista con respecto al proyecto, permitiendo así generar una perspectiva más amplia respecto al mismo. <img src="https://media.discordapp.net/attachments/646456546007449644/749457118951899216/unknown.png?width=1151&height=672"> <br><br> <p> Despues de tener todas las ideas de requisitos y de filtrarlas usamos la tecnica de priorización de requisitos Moscow que "Es una técnica de priorización de requisitos basada en el hecho de que, aunque todos los requisitos se consideren importantes, es fundamental destacar aquellos requisitos vitales que aportan un mayor valor al negocio y que son considerados obligatorios, de forma que el producto o servicio no se puede poner en producción si incumple alguno de estos requisitos." (Sevilla, J. 22 de marzo del 2016.) </p> Dichos requisitos serán especificados en forma de tabla: <table> <tbody> <tr> <th>Id de requisito</th> <td>Código de identificación del requisito. Ejemplo: G-FR-001.</td> </tr> <tr> <th>Descripción</th> <td>Una corta descripción en prosa del requisito.</td> </tr> <tr> <th>Prioridad</th> <td>Debe. | Debería. | Podría.</td> </tr> <tr> <th>Versión</th> <td>Versionado del requisito.</td> </tr> <tr> <th>Adjuntos</th> <td>Posibles archivos adjuntos al requisito. Ejemplo archivos de especificación de una interface.</td> </tr> </tbody> </table> </p> <h3>Requisitos funcionales</h3> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-01</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de "muertes", es decir, finalizaciones de partida sin posibilidad de volver a un punto, de carácter permanente al perder todos sus puntos de salud.</td> </tr> <tr> <th>Prioridad</th> <td>Debe.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-02</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de objetos que pueden ser coleccionados y consisten en mejoras pasivas para las características de su personaje.</td> </tr> <tr> <th>Prioridad</th> <td>Debe.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-03</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de habitaciones independientes entre sí, es decir, generadas aleatoriamente sin depender de aquellas anteriores o posteriores.</td> </tr> <tr> <th>Prioridad</th> <td>Debe.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-04</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de mazmorras generadas de manera procedural.</td> </tr> <tr> <th>Prioridad</th> <td>Debe.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-05</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de objetos consumibles, es decir, de uso inmediato con consecuencias directas a las características de un personaje.</td> </tr> <tr> <th>Prioridad</th> <td>Debería.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-06</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de sprites para su personaje, compuesto de partes (imágenes) elegidas al azar.</td> </tr> <tr> <th>Prioridad</th> <td>Debería.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-07</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de objetos generados en conjunto con la mazmorra.</td> </tr> <tr> <th>Prioridad</th> <td>Debería.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-08</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de una experiencia "singleplayer" (Solo un usuario puede jugar una partida en un mismo tiempo).</td> </tr> <tr> <th>Prioridad</th> <td>Debería.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-09</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de varios tipos de enemigos, con características y apariencias distintas.</td> </tr> <tr> <th>Prioridad</th> <td>Debe.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-10</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de habitaciones escogidas al azar de entre un conjunto de habitaciones previamente diseñadas.</td> </tr> <tr> <th>Prioridad</th> <td>Debería</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-11</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de una lista de enemigos con los que se ha encontrado en sus distintas partidas.</td> </tr> <tr> <th>Prioridad</th> <td>Podría</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-12</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de una pantalla de logros, accesible desde el menú principal.</td> </tr> <tr> <th>Prioridad</th> <td>Podría</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-13</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de persitencia, permitiendo la continuidad de una partida guardada con anterioridad.</td> </tr> <tr> <th>Prioridad</th> <td>Debería</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-14</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de varias dificultades, que alterarán elementos de juego como las características del jugador, de enemigos y el número de enemigos en cuestión.</td> </tr> <tr> <th>Prioridad</th> <td>Podría</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>F-15</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de una antorcha, que servirá de objeto princial para proporcionar visibilidad y atacar enemigos.</td> </tr> <tr> <th>Prioridad</th> <td>Debe</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <h3>Requisitos no funcionales</h3> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-01</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de artes diseñados en estilo "pixelart".</td> </tr> <tr> <th>Prioridad</th> <td>Debe.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-02</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de artes variantes, que dependan de la iluminación del escenario en el que se encuentra.</td> </tr> <tr> <th>Prioridad</th> <td>Podría.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-03</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de un arte limitado a una paleta de colores.</td> </tr> <tr> <th>Prioridad</th> <td>Debería.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> <tr> <th>Apéndices</th> <td>La paleta en cuestión puede encontrarse en: https://lospec.com/palette-list/fantasy-24</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-04</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de enemigos cuyos diseños estén basados en criaturas nocturnas y seres mitológicos como: murcielagos, lobos o cíclopes.</td> </tr> <tr> <th>Prioridad</th> <td>Debería.</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-05</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de diseños de habitaciones basados en grabados en las cuadrículas del suelo y en las paredes de una sala, cuyo propósito es meramente estético.</td> </tr> <tr> <th>Prioridad</th> <td>Podría</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-06</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de estética y diseño diferente para cada piso.</td> </tr> <tr> <th>Prioridad</th> <td>Debería</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-07</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de objetos y antorchas, como objeto principal, con diseños distintos basados en sprites.</td> </tr> <tr> <th>Prioridad</th> <td>Debe</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-08</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de enemigos con distintos sprites que representarán leves variarantes en su color.</td> </tr> <tr> <th>Prioridad</th> <td>Debe</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-09</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de personajes con sprites generados aleatoriamente al iniciar cada partida.</td> </tr> <tr> <th>Prioridad</th> <td>Debería</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-10</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de un efecto de brillo momentáneo para los objetos coleccionables.</td> </tr> <tr> <th>Prioridad</th> <td>Podría</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <tbody> <tr> <th>Id de requisito</th> <td>NF-11</td> </tr> <tr> <th>Descripción</th> <td>El sistema proveerá al usuario de destellos o parpadeos en la apariencia de los enemigos al recibir un ataque por parte del jugador.</td> </tr> <tr> <th>Prioridad</th> <td>Debería</td> </tr> <tr> <th>Versión</th> <td>1.0</td> </tr> </tbody> </table> <table> <h2>Diagrama de dominio</h2> <p> <img src="https://i.imgur.com/xozsLwH.png"> </p> <h2>Diagrama de contexto</h2> <p> <img src="https://i.imgur.com/NV0fYHS.png"> </p> <p> El sistema principal es Godot, el motor o game engine utilizado para la elaboración del proyecto. En este sentido, el sistema principal de lógica de juego se comunica con los distintos sitemas contenidos en el motor mencionado con anterioridad, como lo son: visualización de Sprites y recepción de inputs de usuario por medio del mapeo de entradas. Entonces, la lógica del videojuego se ve afectada por los inputs del usuario, mientras gestiona el sistema de logros, mostrando una lista de logros desbloqueados y cuáles faltan por desbloquear. Además, se generan archivos de persistencia de logros y de partidas guardadas. </p> <h2>Diagrama de casos de uso</h2> <img src="https://i.imgur.com/NHug5Tu.jpg"/> <p> <table> <thead> <tr> <th>UC-005</th> <th colspan="2">Jugar</th> </tr> </thead> <tbody> <tr> <td>Version</td> <td colspan="2">1.0</td> </tr> <tr> <td>Autores </td> <td colspan="2">Julián Bueno, Adrián Gutiérrez y Simón Flórez</td> </tr> <tr> <td>objetivos asociados</td> <td colspan="2">OBJ-001 Jugar</td> </tr> <tr> <td>Descripción</td> <td colspan="2">El jugador por medio del teclado manejará a su personaje a través de la mazmorra, para derrotar enemigos y coleccionar objetos.</td> </tr> <tr> <td rowspan="5">SECUENCIA NORMAL</td> <td><span style="font-weight:bold">PASO</span><br></td> <td>ACCIÓN<br></td> </tr> <tr> <td>1</td> <td>El sistema inicia el juego con el jugador en la sala inicial, o en caso de cargar partida, en la ultima sala visitada.<br></td> </tr> <tr> <td>2</td> <td>El jugador mueve al personaje para explorar la mazmorra e interactuar con los items.</td> </tr> <tr> <td>3</td> <td>El jugador ataca y es atacado por los enemigos generados por el sistema.</td> </tr> <tr> <td>4</td> <td>El jugador pierde si su salud llega a cero o gana en caso de superar todos los pisos de la mazmorra.</td> </tr> <tr> <td>Frecuencia</td> <td colspan="2">Desconocida</td> </tr> <tr> <td>Importancia</td> <td colspan="2">Vital<br></td> </tr> <tr> <td>Urgencia</td> <td colspan="2">Prioridad más alta</td> </tr> <tr> <td>Estabilidad<br></td> <td colspan="2">Alta</td> </tr> </tbody> </table> <table> <thead> <tr> <th>UC-006</th> <th colspan="2">Visualizar Extras</th> </tr> </thead> <tbody> <tr> <td>Version</td> <td colspan="2">1.0</td> </tr> <tr> <td>Autores </td> <td colspan="2">Julián Bueno, Adrián Gutiérrez y Simón Flórez</td> </tr> <tr> <td>objetivos asociados</td> <td colspan="2">OBJ-002 Ver Colecciones</td> </tr> <tr> <td>Descripción</td> <td colspan="2">El jugador accede a distintas colecciones de logros, enemigos y objetivos que se ha encontrado a través de las distintas partidas.</td> </tr> <tr> <td rowspan="5">SECUENCIA NORMAL</td> <td><span style="font-weight:bold">PASO</span><br></td> <td>ACCIÓN<br></td> </tr> <tr> <td>1</td> <td>El sistema permite al jugador seleccionar entre las distintias colecciones (logros, enemigos u objetos encontrados) desde el menú principal.<br></td> </tr> <tr> <td>2</td> <td>El jugador selecciona la colección que desea visualizar y explora las entradas de dicha colección.</td> </tr> <tr> <td>3</td> <td>El sistema le enseña al jugador información acerca de los objetos, enemigos y logros encontrados.</td> </tr> <tr> <td>4</td> <td>El jugador puede regresar al menu principal desde la pantalla de colecciones.</td> </tr> <tr> <td>Frecuencia</td> <td colspan="2">Desconocida</td> </tr> <tr> <td>Importancia</td> <td colspan="2">Casi Vital<br></td> </tr> <tr> <td>Urgencia</td> <td colspan="2">Prioridad Media</td> </tr> <tr> <td>Estabilidad<br></td> <td colspan="2">Alta</td> </tr> </tbody> </table> </p> <h2>Diagrama de actividad</h2> <p> <p><b>Exploración de un piso</b></p> <img src="https://cdn.discordapp.com/attachments/646456546007449644/749486033132978247/Activity1_1.png"> <p><b>Desbloquear un ítem</b></p> <img src="https://media.discordapp.net/attachments/646456546007449644/749493250741764176/Activity2.png?width=287&height=702"> </p> <h2>Diagrama de secuencia</h2> <p> <p><b>Generación de partidas</b></p> <img src="https://i.imgur.com/RCSWGIG.jpg"/> <p><b>Visualización de logros</b></p> <img src="https://i.imgur.com/P6TH4DU.jpg"> </p> <h2>Diagrama de clases de diseño</h2> <p> <img src="https://cdn.discordapp.com/attachments/646456546007449644/749810031091777546/Torch_Game.png"> <p> <b>Character:</b> La clase Character hereda de la clase KinematicBody2D de Godot, esta clase provee a Character con funciones y atributos básicos que permiten el movimiento y manipulación del nodo en la escena. Además de lo heredado, tenemos un atributos `hitpoints` con sus respectivos getter y setter que representa la vida del Character o la cantidad de golpes que necesita para ser derrotado; el atributo `attack_points` con sus respectivos getter y setter que representa la cantidad de golpes por los que vale un solo ataque de este Character; `defense_points` con sus respectivos getter y setter que representa que tan fuerte tiene que ser un golpe para que haga daño al Character, si el golpe es menor a este valor, no se registrará; `speed_points` con sus respectivos getter y setter que representa la velocidad a la que el Character se desplaza por el mundo de juego; la propiedad `attack(other: Character)` que permite atacar a otro Character y disminuir sus `hitpoints`; `lessenHitpoints(quantity: int)` que permite disminuir los `hitpoints` y mostrar una animación cuando por ejemplo se recibe un ataque; `die()` que permite mostrar la animación de muerte del Character. </p> </p> <h2>Diagrama de estado</h2> <p> <img src="https://cdn.discordapp.com/attachments/646456546007449644/749792035241721917/diagrama_estados.png"> </p> <h2>Referencias bibliográficas</h2> <p> <p> Brewer, Nathan. "Going Rogue: A Brief History of the Computerized Dungeon Crawl". IEEE-USA InSight. </p> <p> Craddock 2015, Chapter 2: "Procedural Dungeons of Doom: Building Rogue, Part 1" </p> <p> Esposito, N. A short and simple definition of what a videogame is. Research Gate, January 2005. </p> <p> Messner, S. (2020). PC GAMER. <e>World of Warcraft's upcoming roguelike dungeon is the best thing added to the game in years</e> [en línea]. Recuperado de: https://www.pcgamer.com/world-of-warcrafts-upcoming-roguelike-dungeon-is-the-best-thing-added-to-the-game-in-years/#:~:text=And%20when%20I%20say%20roguelike,(in%20a%20good%20way). </p> <p> Panitz, Aliza. (June 18, 1993). "Time for a new level of heirarchy?". Newsgroup: rec.games.moria. Usenet: 1vsuhk$mj7@bronze.lcs.mit.edu. </p> <p> Rogers, S (2014). Level up! : the guide to great video game design (2nd ed.). Hoboken: Wiley. p. 399. </p> <p> Schedi, D. Yannakakis, G. What is Procedural Content Generation? Mario on the borderline. Research Gate, January 2011. </p> <p> Sevilla, J. Priorización de requisitos - Técnica MoSCoW. overti, march 2016. </p> <p> Zimmerman, E. Narrative, Interactivity, Play, and Games. In Wardrip-Fruin, N. &amp Harrigan, P. (eds), First Person, MIT Press, 2004. </p> </p> <h2>Conclusiones</h2> <p> En conclusión, es claro que el desarrollo de productos de software conlleva una premeditación considerable a la hora de especificar las funciones requeridas para el correcto desarrollo de una aplicación. La especificación de requisitos y la diagramación del sistema, en sus distintas formas permiten la construcción de un producto de software fiel a la idea de solución que se busca generar, podríamos compararlo con los planos para la construcción de un edificio, los cuales son absolutamente necesarios para una construcción segura, procesos especificos y métodos a seguir y, principalmente, un producto de calidad. Entonces, luego de haber realizado el debido proceso de análisis y planeación, se logró alcanzar una lista de requisitos definidos y diagramas que expresan la estructura, comportamiento y contexto en el que se desarrollará nuestro producto. </p>