# Obligatorio 1 --- M3B - Docente: Gabriela y Pablo Sanchez * Violeta Clerc * Nicolas Artola Nombre del Repositorio: [ORT-FIS-202008/ob1-artola-clerc](https://github.com/ORT-FIS-202008/ob1-artola-clerc) #Fundamentos de Ingenieria de Software 2020 / Obligatorio 1 ## Repositorio Creamos el repositorio directamente desde GitHub. Decidimos utilizar el repositorio directamente desde la pagina de GitHub ya que consideramos que tiene mejor visulizacion comparado con la terminal. En este archivo README, plantearemos toda la documentacion para el Oblicatorio 1; incluyendo las tecnicas de elicitacion, las especificaciones y las validaciones. ## Versionado Trabajamos nuestro proyecto en las ramas develop y main. También a la hora de realizar la encuesta con el profesor de guitarra, creamos otra rama llamada “encuesta” en la cual nos sirvió para trabajar de forma paralela y una vez finalizado se mergio con la rama develop y se continuó sin afectar ninguna otra rama. Cuando terminamos con el obligatorio fue que mergiamos develop con main. Utilizamos SourceTree y mismo Git para hacer los commits necesarios, adjuntamos capturas de pantalla en la carpeta llamada "Versionado". --- ## TECNICAS DE ELICITACION ### Tormenta de Ideas Comenzamos el obligatorio con una tormenta de ideas sobre como podrian los niños aprender a tocar un instrumernto a travez de una apliacacion o pagina web. Llegamos a la conclusion de que seria mejor la usabilidad de una aplicacion en vez de una pagina web, dada su portabilidad. Consideramos un celular o tablet es mas portable que una computadora. A su vez, hoy dia, todos tienen un 'smartphone' haciendolo facil de llegar a todos los que desean aprender a tocar la guitarra. ### Entrevista Gracias a un ex-profesor de Guitarra el cual fui alumno (Nicolás Artola) fue que obtuvimos la información y resultados de la entrevista. En un principio, le contamos generalmente cual era nuestra idea del sistema que queríamos crear y luego le realizamos preguntas de cómo era la forma de enseñarle a sus alumnos a cerca de la música y como nosotros lo podíamos transmitir en la aplicación. Entrevista realizada a Maximiliano Segredo, profesor particular de Guitarra y batería. --- ![FaceTime con Maximiliano](https://i.imgur.com/Pf3CbTQ.jpg) --- ### Comienza la entrevista: **¿Cómo crees que un niño debe aprender a tocar la guitarra en pandemia?** Desde que comenzó todo esto de la pandemia y las personas debían hacer cuarentena aca en Uruguay fue que decidí no realizar más clases tanto por mi salud como la de mis alumnos. Hoy en día la mayoría de las personas siguen respetando mucho el distanciamiento social, por lo tanto me parece una gran idea el hecho de crear una aplicación que enseñe a como tocar la guitarra ya que cualquiera puede aprender ya sea desde su casa o en el lugar que se encuentre. **¿Dónde realizas tus clases?** En mi casa. Tengo una barbacoa en la cual me creé un estudio para poder hacer ruido y no molestar a mis vecinos. **¿Cómo llegan tus alumnos a contactarte? ¿Por qué medio te contactan más?** Tengo una cuenta de Instagram en la cual, la mayoría de alumnos que tuve fueron gracias a ella. **¿Cómo crees que deberíamos publicitar la aplicación? ¿Por qué medios?** Yo creo que hoy en día Instagram es una muy buena alternativa y como dije anteriormente es por donde he contactado la mayoría de mis alumnos. También Facebook es una buena opción, al igual que Whatsapp. Podrían enviar el link de la app a sus conocidos y grupos para que la gente se entere y la descargue. **¿Se hace más complejo el hecho de enseñarle a un niño que como lo haces con adultos?** Ni más fácil ni más complejo, creo que es totalmente diferente. Todo depende del niño, hay algunos que aprenden con más facilidad como a otros se les dificulta un poco más, pero la clave está en mostrarle las cosas de una manera que les resulte lo más sencillo posible. Eso es algo que les recomiendo para su aplicación, que sea fácil de entender, que las indicaciones y los pasos a seguir de la misma se entiendan fácilmente. Me parece muy importante también el hecho de que si el niño tiene dudas o quiere obtener más información, se pueda contar con un foro para que se comunique con un profesor o alguien que sepa del tema. **¿Alguna recomendación que se te ocurra para la aplicación?** A los niños les divierte mucho no tanto lo teórico sino que las actividades interactivas, por lo tanto creo que hacer una sección de preguntas y respuestas a modo evaluación sería una buena forma de que el niño se divierta como también aprenda. También contar con un ranking al finalizar sus preguntas de cuántas respuesta correctas e incorrectas para que pueda comparar sus resultados con los demás niños/as. ### Conclusión entrevista: -Se confirmó que las clases presenciales no son una opción hoy en día. -Por medio de una cuenta de instagram sería una de las mejores opciones para publicitar la aplicación. También Facebook y Whatsapp son otra alternativa. -La app debe explicar y enseñar de una forma divertida, sencilla y que sea fácil de entender. -Surge la idea de la creación de un foro para interactuar con el profesor por si llega a surgirle alguna duda del tema o si quiere obtener más información del mismo. -Que la aplicación cuente con actividades interactivas como una sección de preguntas y respuestas y que esta sea a modo de evaluación de lo aprendido anteriormente. -Surge la idea de hacer un ranking para que sea competitivo entre los demás usuarios - - - ### **Ingeniería Inversa** Gracias a la entrevista con el profesor de Guitarra, que nos recomendó tener una sección en nuestra app de preguntas y respuestas, surgió la idea de aplicar ingeniería inversa a aplicaciones como lo es la conocida app ‘Preguntados’. Nos apoyamos en ésta aplicación para ver la forma de cómo implementaríamos nuestro menú de preguntas y respuestas en nuestro sistema También ver la forma en cómo lo evaluamos. De aquí pudimos sacar la idea de implementar un ranking como lo hace también ‘Preguntados’. La forma de proceder de respuestas múltiple opción, fue tomada de aquí también, ya que si bien teníamos en claro que queríamos un juego de ese estilo, no sabíamos si dejarlos que hagan respuestas libres o orientarlos con múltiples opciones. ### Encuesta Utilizamos Google Forms para la realización de la misma. ![Imagenes/Encuesta/Encuasta1](https://i.imgur.com/Lqh4p31.jpg) El primer dato importante que nos arrojó la encuesta, fue que la mayoría de los encuestados no consideran necesario contar con una guitarra para aprender las funciones básicas de ésta. Es así que llegamos a la conclusión que todo aquel que quiera aprender puede, ya que no hace falta contar con ningún elemento más que ganas de formarse en el tema. Estos datos se pueden ver en el gráfico anterior. (Imágen 1) ![Imagenes/Encuesta/Encuasta2](https://i.imgur.com/eOmr7Hz.jpg) A partir de nuestras opciones planteadas, pudimos sacar la conclusión de que nuestra plataforma para desarrollar el sistema iba a ser sin duda alguna por medio de una aplicación. (Imágen 2) ![Imagenes/Encuesta/Encuasta3](https://i.imgur.com/p0pncee.jpg) Otro aspecto configurable que le agregaría valor a nuestro sistema fue la idea de implementar un ranking que evalúa la cantidad de respuestas correctas por medio del método de preguntas y respuestas propuesto por el profesor entrevistado. Una idea original la cual fue avalada por medio de los encuestados. (Imágen 3) ![Imagenes/Encuesta/Encuasta4](https://i.imgur.com/P0bHB8k.jpg) Finalmente cuando consultamos acerca de este feature en la encuesta, los resultados obtenidos fueron que a la mayoría les parecía una buena idea incluir un foro para interactuar con el profesor, y el resto divididos en que les daba igual y otros preferirán que no se incluyera, siendo estos últimos la minoría. Es así que no dudamos en incluir esta función en nuestra aplicación adaptándolo a gusto del usuario. (Imágen 4) ++Adjuntamos el link de la encuesta aquí++ : https://docs.google.com/forms/d/1XVYKtfxgIC6NHAklaBkNwDgYEjHBQuXnNgxuOV4AbnE/edit?usp=sharing - - - ## Modelar Usuarios del Sistema Al ser una aplicación para niños, consideramos que algún adulto mayor sería el responsable de bajar la aplicación o de aceptar la descarga. Por esta misma razón, decidimos modelar tres adultos: Una madre que le hubiera gustado tocar la guitarra, un padre que toca y quiere enseñarle a sus hijos, y una abuela que le gusta que los niños se mantengan activos. ![Imagenes/User Story/Analia](https://i.imgur.com/tuDX0cN.png) --- ![Imagenes/User Story/Matias](https://i.imgur.com/KBfhVR6.png) --- ![Imagenes/User Story/Maria](https://i.imgur.com/OQKhU06.png) --- - - - ## Requerimientos Funcionales ### RF1 - Registrar Usuario **Actor:** Usuario (Profesor/Estudiante) Descripción: La pantalla de inicio incluye la opción de registrar un nuevo usuario al sistema, ya sea usuario profesor o usuario estudiante. Para poder registrarse debe indicar Nombre de usuario, email y contraseña. **Prioridad:** Alta ### RF2 - Entrar **Actor:** Sistema Descripción: El sistema debe admitir el ingreso mediante los datos del usuario previamente registrado (Usuario y Contraseña). Este requerimiento es clave para reconocer a los distintos estudiantes y distinguir entre profesor y estudiante. **Prioridad:** Alta ### RF3 - Elección de juego **Actor:** Estudiante Descripción: El usuario deberá ser libre de empezar por el juego que más le guste. Nos pareció importante que el estudiante se sienta cómodo y pueda decidir con qué juego comenzar, esto lo tomamos como un requerimiento funcional. **Prioridad:** Media ### RF4 - Foro **Actor:** Usuario (Alumno/Profesor) Descripción: Este requerimiento surge de la entrevista con el profesor y luego fue confirmado en la encuesta. Es una instancia en donde los alumnos pueden estar en contacto entre ellos y con el profesor para evacuar dudas u obtener más información del tema. **Prioridad:** Media ### RF5 - Jugar Quiz **Actor:** Estudiante Descripción: El Quiz es una instancia de evaluación de los conceptos aprendidos anteriormente por el alumno. Se desprende este requerimiento de la entrevista y de aquí también surgió la ingeniería inversa aplicada a la app ‘Preguntados’. **Prioridad:** Alta ### RF6 - Terminar Quiz **Actor:** Sistema Descripción: Al finalizar el quiz el sistema avisa su finalización y muestra la cantidad de respuestas correctas e incorrectas. **Prioridad:** Alta ### RF7 - Jugar Chords **Actor:** Estudiante Descripción: Este requerimiento es similar al anterior pero otro tipo de juego. Es el momento de mostrar lo aprendido previamente seleccionando como serían los acordes sin ayuda de nadie. **Prioridad:** Alta ### RF8 - Ranking **Actor:** Sistema Descripción: La idea del ranking, apoyada y avalada por los encuestados, surge como un requerimiento importante para cumplir el objetivo del sistema que es de MOTIVAR e INCENTIVAR, teniendolo así como uno de alta prioridad. **Prioridad:** Alta ## Requerimientos no funcionales ### RNF 1 - Portabilidad El sistema en su v1 deberá funcionar en Android 9.0 e IOS 10.0.2. **Prioridad:** Alta ### RNF 2 - Usabilidad La página web desarrollada está diseñada de tal manera que su uso es bastante intuitivo, siguiendo con los estándares de diseño que tienen la mayoría de las app para no generar problemas en el usuario. **Prioridad:** Alta ### RNF 3 - Mantenimiento El sistema en su primera versión, si bien es completo, se pueden agregar otros complementos para brindar una mejor experiencia de usuario. El software, además de ser mantenido y actualizado por el equipo de desarrollo, brinda la posibilidad de que el Actor Profesor disponga del derecho de agregar y quitar canciones. **Prioridad:** Alta ### RNF 4 - Eficiencia Nuestro objetivo es que nuestra aplicación tenga un tiempo máximo de respuesta de 1 segundo. **Prioridad:** Media ### RNF 5 - Disponibilidad En cuanto a la disponibilidad creemos que es un aspecto clave que el usuario pueda acceder a la app en cualquier momento que lo desee, ya que el objetivo es motivar a los estudiantes. Es por esto que nuestro sistema brinda la posibilidad de ser accedido desde cualquier celular. **Prioridad:** Alta ### RNF 6 - Seguridad La única información que debe ser manejada es la de los usuarios. Estos están asegurados con los mecanismos de encriptación bajo los estándares IP, y SSL. El aspecto de la seguridad no es un requerimiento clave para nuestro sistema ya que no manejamos datos delicados más que la información propia de los usuarios, eso justifica la prioridad que le damos al mismo. **Prioridad:** Media --- ## Historias de Usuario ### Historia de Usuario 1 **Título:** Aprender acordes Como estudiante quiero poder aprender los acordes de forma visual y auditiva **Criterios de aceptación:** 1. que haya un video con los acordes para saber como suena 2. que hayan imágenes para poder practicar facil y rapido 3. que se encuentren todos los acordes básicos ### Historia de Usuario 2 **Título:** Consultas Como estudiante quiero poder hacer consultas dentro de la aplicación **Criterios de aceptación:** 1. Poder enviar mensajes privados a un profesional con dudas puntuales 2. Que haya una variedad de profesores para elegir a quien mandarle ### Historia de Usuario 3 **Título:** Foro Como profesor quiero poder subir cosas importantes para que todos los alumnos lo vean **Criterios de aceptación:** 1. Que los alumnos vean noticias de música y guitarra para que se mantengan motivados 2. Que los estudiantes también puedan subir cosas que les parezcan interesantes 3. Poder contestar consultas específicas ### Historia de Usuario 4 **Título:** Juego Como profesor quiero que los alumnos puedan fijar conocimientos **Criterios de aceptación:** 1. Más de un juego para fijar conocimientos 2. Que hayan puntajes para que la competencia genera motivación y ganas de aprender 3. Debe haber también canciones con sus acordes con las dificultades marcadas con los colores del semáforo para los niños. - - - ## Casos de Uso ### Casos de uso 1 **Título:** Registrar usuario **Actores:** Profesor y estudiante **Curso normal:** Acción de los actores | Respuesta del sistema ---------: | :----- | **1.** Usuario quiere registrarse (como profesor o estudiante) | **2.** Sistema muestra los campos a ingresar para registrarse | **3.** Usuario hace login | **4.** Sistema muestra la lista de opciones (aprender acordes, foro, jugar) **Curso alternativo:** **2.1.** El usuario no ingresa todos los campos requeridos. **2.2** Se muestra un cartel de error y se saltea el paso (3.) **3.1** Si no tiene cuenta, se muestra el sign up para estudiante o para profesor **3.2** El usuario no ingresa un campo obligatorio **3.3** Se muestra mensaje de error, “falta ingresar un campo obligatorio” **3.4** El usuario presiona ok y se saltea el paso (4.) ### Casos de uso 2 **Título:** Aprender acordes **Actores:** estudiante **Curso normal:** Acción de los actores | Respuesta del sistema ---------: | :----- | **1.** Usuario presiona start en Aprender Acordes | **2.** El sistema redirecciona a un pagina los acordes por etapas donde hay un video con los sonidos de cada acorde | **3.** El usuario presiona la flecha para pasar al siguiente acorde | **4.** El sistema responde pasando al siguiente acorde | **5.** El usuario presiona la flecha hacia atrás, para pasar al acorde anterior | **6.** El sistema responde pasando al acorde anterior. | **7.** El usuario llega al final de la lista. | **8.** El sistema cesa de pasar acordes ya que la lista se terminó. **Curso alternativo:** **1.1.** Usuario no presiona start **2.1** Sistema no avanza y queda en la lista de opciones **2.2** No se presiona en el video **3.1** El usuario no presiona la flecha **4.1** El sistema se mantiene en el acorde **7.1** El usuario no llega al final de la lista **8.1** El sistema sigue pasando acordes ### Casos de uso 3 **Título:** Foro **Actores:** Estudiante y profesor **Curso normal:** Acción de los actores | Respuesta del sistema ---------: | :----- | **1.** Usuario presiona botón ask | **2.** El sistema redirecciona a las opciones dentro del foro(foro discusión y contactos ) | **3.** Profesor presiona foro discusión | **4.** El sistema redirecciona al foro. El profesor puede subir distintos artículos, videos y fotos para que los alumnos se mantengan informados y motivados. | **5.** El estudiante presiona en el foro discusión | **6.** El sistema redirecciona al foro. Esto sería algo similar a un facebook, los estudiantes pueden ver los distintos posteos que hacen los profesores | **7.** Profesor/estudiante presiona contactos | **8.** El sistema redirecciona a contactos. Se muestra una lista de contactos donde se puede mandar un mensaje privado a cualquiera de ellos **Curso alternativo:** **1.1.** Usuario no presiona el botón ask **2.1** No se muestran las opciones del foro **3.1 y 5.1** Usuario no presiona foro de discusión ni contactos **4.1 y 6.1** El sistema se mantiene en la lista de opciones del foro **7.1** Usuario no presiona contactos **8.1** No se muestra la lista de contactos **8.2** Usuario no presiona ningún contacto **8.2.1** No se muestra la ventana de mensaje privado ### Casos de uso 4 **Título:** Juego **Actores:** Estudiante **Curso normal:** |Acción de los actores | Respuesta del sistema| | -------- | -------- | |**1.** Estudiante presiona botón play | **2.** El sistema redirecciona a una lista de opciones de juego (chords, quiz, score, songs) | |**3.** Estudiante presiona chords | **4.** El sistema redirecciona a chords, donde se muestra un acorde, y el estudiante debe presionar las cuerdas correctas con las cuales se compone el acorde | |**5.** Estudiante presiona quiz | **6.** Sistema redirecciona a quiz. Se muestra una pregunta y 4 posibles respuestas.| |**7.** Estudiante presiona score | **8.** Se muestra la ventana de los puntajes máximos de los usuarios | |**9.** Estudiante presiona songs | **10.** Se muestra una lista de canciones | |**11.** Estudiante selecciona una canción | **12.** Se muestra la letra de la misma con sus acordes **Curso alternativo:** **1.1.** Estudiante no presiona el botón play **2.1** No se redirecciona a la lista de opciones de juego **3.1** Estudiante no presiona la opción chords **4.1** No se muestra la ventana de chords **4.2** Estudiante presiona mal las cuerdas de los acordes **4.2.1** No se suman puntos al score final **5.1** Estudiante no presiona la opción quiz **6.1** No se muestra la ventana de quiz **6.2** La respuesta al quiz es incorrecta **6.2.1** No se suman puntos al score final **7.1** Estudiante no presiona la opción score **8.1** No se muestra la ventana de score **9.1** Estudiante no presiona la opción songs **10.1** No se muestra la ventana de songs **11.1** Estudiante no presiona una canción **12.1** No se muestra la letra de la canciones y sus acordes --- ## Modelo Conceptual Realizamos el siguiente modelo conceptual para modelar lo que sería la aplicación creada. --- ![](https://i.imgur.com/pWYyzQA.png) --- ## Validación con usuarios Al tener que hacer la validación con usuarios las personas elegidas fueron, Diego Sansonetti, guitarrista de la banda Bungee (rock) y Juan Clerc el hermano de Violeta Clerc, el cual toca la guitarra desde chico y está muy informado en el tema. Lo primero que hicimos con ambos, fue contarles la idea de que trataba nuestro sistema y para que puedan validarlo fue que les enseñamos nuestros prototipos que habíamos creado gracias a proto.io. Diego Sansonetti desde un principio le encantó la idea y le pareció una forma muy creativa de cómo puede aprender un niño a tocar la guitarra. En su mayoría fueron comentarios positivos, pero uno de sus aportes que nos pareció muy importante para implementar en nuestro sistema fue la idea de incluir videos que muestren sonidos de los acordes y que no sean sólo imágenes. Fue así, que no dudamos en incluirlo ya que nos pareció una gran idea. También nos recomendó que quitemos los textos introductorios acerca de cómo se compone la guitarra ya que para un niño le parecía eran muy largos y un poco aburridos. Por el otro lado, a Juan Clerc también le pareció una idea muy original. Nos dio su opinión acerca de la interfaz de la aplicación, sugiriendo que agreguemos más imágenes, más color para que al niño le atraiga lo que está viendo. Hizo énfasis en que la aplicación debe ser de fácil manejo e intuitiva para que el niño comprenda lo que está viendo. Más allá de esos comentarios, le gustaron las ideas planteadas y cree que es una buena oportunidad para que todo niño que tenga ganas de aprender, esto lo ayude como motivación para poder crecer. - - - ## Glosario **Hackmd:** Editor que permite el trabajo compartido online, compartir una nota y editarla de forma grupal, entre otras funciones. **SourceTree:** Es uno de los mejores clientes GUI para manejar repositorios git y mercurial que existen en la actualidad **‘Preguntados’:** Es un videojuego de trivia para móviles iOS, Android y Windows Phone. **SSL:** (Secure Sockets Layer) es un estándar de seguridad global que permite la transferencia de datos cifrados entre un navegador y un servidor web. **IP:** El sistema de clasificación IP (Ingress Protection) es una forma de identificar el grado de protección de los materiales **Google Forms:** Formulario web. Un formulario web dentro de una página web permite al usuario introducir datos los cuales son enviados a un servidor para ser procesados. **proto.io:** Herramienta de creación de prototipos --- ## Reflexión El desarrollo de este sistema nos permitió bajar a tierra y aplicar un montón de conceptos trabajados en el curso. Lo que aprendimos durante las clases fue clave para poder desempeñar sin demasiadas complicaciones el trabajo que nos fue solicitado. Muchas veces lo teórico nos da un pantallazo de cómo son las cosas, pero al aplicarlos te das cuenta de lo importante que eran. Las técnicas de elicitación fue la etapa que nos consumió más tiempo, ya que le dimos la importancia que merece, porque no queríamos avanzar demasiado sin saber con certeza de cómo íbamos a encarar nuestro sistema. El uso del Hackmd, a pesar de que no pudimos realizar los commits desde ahí mismo, fue fundamental para el trabajo colaborativo, más hoy en día con el tema COVID-19. El equipo se comunicó de una excelente manera ya que nos conocíamos de realizar otros obligatorio juntos, fuimos realizando el trabajo de forma pareja, evitando apuros y sin dejar pasar ningún aspecto importante. Todos los aspectos incluidos en la aplicación fueron meditados y de común acuerdo entre nosotros los desarrolladores. Para terminar, creemos que es importante este tipo de situaciones ficticias para simular una posible realidad a la que podemos y vamos a estar enfrentados en un futuro.