Aplicación web para crear música de forma colaborativa
Abstract
Esta aplicación desarrollada consiste en una pequeña red social en la que los usuarios se pueden poner en contacto con el mero fin de crear música entre varias personas. de esta manera se fomenta la compartición de las creaciones.
Full text
! ! ! Proyecto!de!fin!de!carrera.!Escuela!de!Ingeniería!Informática.! Universidad!de!Las!Palmas!de!Gran!Canaria.! ! ! ! ! Aplicación!web! para!la!creación!de! música!de!forma! colaborativa! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 2! ! ! ! Laia!Pérez!Ríos! Las!Palmas!de!Gran!Canaria,!Abril!2014! ! ! Proyecto! de! fin! de! carrera! de! la! Escuela! de! Ingeniería! Informática! de! la! Universidad!de!Las!Palmas!de!Gran!Canaria,!presentado!por!la!alumna:! ! Laia!Pérez!Ríos! Título!del!Proyecto:"Aplicación"web"para"la"creación"de"música"de"forma" colaborativa" Tutor:"D."Alexis"Quesada"Arencibia" ! !
! ! ! 3! A!mi"madre:!! Por!apoyarme!y!comprenderme!en!los!momentos!más!duros.! A!mi"padre:! Por!acompañarme!cada!día!de!mi!vida!y!creer!en!mí.! A!mi"hermana:! Por!confiar!en!que!iba!a!sacar!este!proyecto!adelante.! A!Álvaro:! Mi!vida,!por!la!ayuda!que!me!ha!brindado!y!tanta!sabiduría!que!me!transmite.! Por!recordarme!cada!día!que!soy!capaz!de!conseguir!lo!que!me!proponga!y!por! guiarme!en!el!camino!de!la!vida.!! ! !
! ! ! 4! Agradecimientos" ! En!primer!lugar!quiero!mostrar!mi!más!sincero!agradecimiento!a!las!personas! mencionadas! en! la! dedicatoria,! pues! probablemente,! sin! su! ayuda! y! su! apoyo! incondicional! en! los! momento! más! duros,! no! habría! podido! sacar! este! proyecto! adelante.! En! segundo! lugar,! me! gustaría! agradecer! de! una! manera! muy! especial! a! mi! tutor!de!proyecto,!D.!Alexis!Quesada!Arencibia,!pues!ha!sabido!guiarme!a!lo!largo!de! todo!este!recorrido!y!ha!sido!muy!paciente!y!comprensivo!conmigo,!sobretodo!en!los! momentos!de!mayor!caída!emocional!que!he!tenido.!! Asimismo,!!me!gustaría!agradecer!a!otras!personas!que!han!ayudado!a!que!este! proyecto!se!lleve!a!cabo:! ! § Airam!Sosa!Perea:!por!aportar!su!granito!de!arena!ayudándome!con! el!diseño!de!la!aplicación!y!el!logo.! § Juan!Andrés!Godoy!González:!experto!en!música!y!licenciado!en!el! Conservatorio! de! Música! de! Las! Palmas! de! Gran! Canaria,! quien! aportó! sus! conocimiento! para! asentar! las! bases! sobre! las! que! se! sustenta!el!proyecto.! § Ciro!Hernández!Arocha:!por!aportar!sus!conocimientos!como!músico! y!como!usuario!de!aplicaciones!de!edición!de!audio.! § Jorge!Rodríguez!Cabrera,!Noelia!Pérez!Suárez,!Lorena!Moriel!de! la! Cruz,! Aday! López! Ramírez:! mis! amigos,! por! alegrarme! este! duro!! camino!y!hacer!que!fuera!más!ameno.! !
! ! ! 5! Índice" ! 1.! Introducción!................................................................................................!10! 2.! Estructura!del!documento!...........................................................................!12! 3.! Objetivos!.....................................................................................................!13! 3.1!!Objetivos!generales!.............................................................................................!13! 3.2!!Objetivos!musicales!.............................................................................................!14! 4.! Metodología!................................................................................................!15! 5.! Planificación!temporal!.................................................................................!16! 6.! Recursos!necesarios!....................................................................................!17! 6.1!Recursos!hardware!...............................................................................................!17! 6.2!Recursos!software!................................................................................................!18! 7.! Definición!del!sistema!.................................................................................!20! 7.1!!!!Alcance!del!sistema!...........................................................................................!20! 7.2!!Usuarios!finales!...................................................................................................!22! 7.3!!Requisitos!funcionales!.........................................................................................!22! 7.4!!Requisitos!no!funcionales!....................................................................................!24! Requisitos!de!Seguridad!.........................................................................................!24! Requisitos!de!Rendimiento!.....................................................................................!24! Requisitos!de!Implantación!....................................................................................!24! Requisitos!de!Disponibilidad!del!Sistema!...............................................................!25! 8.! Estado!del!arte!.............................................................................................!26! 8.1!!Myna!....................................................................................................................!27! 8.2!!Soundation!Studio!...............................................................................................!28! 8.3!!AVS!Audio!Editor!..................................................................................................!29! 8.4!!Sonar!LE!...............................................................................................................!30! 8.5!!Cocaacola!music!experience!................................................................................!31!
! ! ! 6! 9.! Análisis!.........................................................................................................!33! 9.1!!Modelos!de!casos!de!uso!.....................................................................................!33! Actores!del!sistema!................................................................................................!34! Diagrama!de!casos!de!uso!a!Administrador!............................................................!37! Diagrama!de!casos!de!uso!a!Usuario!no!registrado!................................................!38! Diagrama!de!casos!de!uso!a!Usuario!registrado!.....................................................!39! Diagrama!de!casos!de!uso!a!Usuario!colaborador!..................................................!43! Diagrama!de!casos!de!uso!a!Usuario!creador!.........................................................!44! Resumen!de!los!casos!de!uso!.................................................................................!45! 10.!Diseño!.......................................................................................................!49! 10.1!!!Patrones!de!diseño!...........................................................................................!49! Modelo!a!!Vista!a!Controlador!.................................................................................!49! Patrón!Memento!....................................................................................................!50! Patrón!Front!Controller!..........................................................................................!51! 10.2!Diseño!arquitectónico!del!Sistema!.....................................................................!52! 10.3!!Diseño!de!la!base!de!datos!................................................................................!55! 10.4!Diagrama!de!capas!del!sistema!..........................................................................!58! 10.5!!Diseño!de!la!interfaz!de!usuario!........................................................................!61! Página!principal!......................................................................................................!62! Perfil!de!usuario!.....................................................................................................!64! Vista!de!un!proyecto!musical!.................................................................................!66! 10.6!Diseño!arquitectónico!de!la!aplicación!...............................................................!68! Modelos!..................................................................................................................!68! Comandos!...............................................................................................................!69! Relaciones!Comandos!a!Modelos!...........................................................................!74! Relación!de!las!vistas!con!los!comandos!................................................................!77! 11.! Implementación!........................................................................................!80! 11.!1!!Estructura!del!CD!..............................................................................................!80!
! ! ! 7! 11.2!!!Soporte!plurilingüe!...........................................................................................!81! 11.3!!Soporte!de!audio!–!Web!Audio!API!...................................................................!82! Puntos!fuertes!de!la!librería!Web!Audio!API!..........................................................!83! Ejemplo!básico!de!enrutamiento!...........................................................................!84! Integración!con!la!aplicación!..................................................................................!85! 11.4!!División!de!fragmentos!......................................................................................!87! 11.5!!Utilidad!‘Deshacer’!............................................................................................!88! 11.6!!Utilidad!‘Recorte!de!imagen’!.............................................................................!89! 11.7!!Compatibilidad!entre!navegadores!...................................................................!91! 11.8!!Control!simultáneo!de!edición!en!un!proyecto!.................................................!92! 12.! Pruebas!......................................................................................................!94! 12.1!!!Pruebas!de!caja!blanca!.....................................................................................!94! 12.2!!Pruebas!de!caja!negra!.......................................................................................!95! 12.3!!Pruebas!de!rendimiento!....................................................................................!96! 12.4!!Pruebas!de!validación!........................................................................................!96! 13.! Resultados!y!conclusiones!.........................................................................!98! 13.1!!Aplicación!Multiplataforma!...............................................................................!98! 13.2!!Aplicación!colaborativa!.....................................................................................!99! 13.3!Funcionalidad!social!.........................................................................................!100! 13.4!Funcionalidad!de!audio!....................................................................................!101! Reproducción!simultánea!de!las!pistas!de!un!proyecto!.......................................!101! Aplicación!de!un!solo!a!una!pista!.........................................................................!101! Enmudecer!una!pista!determinada!......................................................................!102! Modificar!el!volumen!individual!de!una!pista!......................................................!102! Aplicación!de!fundidos!entrantes!y!salientes!a!las!pistas!.....................................!102! Interfaz!intuitiva!...................................................................................................!103! 14.! Futuras!líneas!de!actuación!.....................................................................!105! 14.1!!Grabar!audio!....................................................................................................!105!
! ! ! 8! 14.2!Descargar!..........................................................................................................!105! 14.3!!Votar!proyectos!...............................................................................................!106! 14.4!Edición!simultánea!de!un!proyecto!..................................................................!106! 15.! Anexo!A:!Manual!de!usuario!...................................................................!107! 15.1!!!Acceder!al!perfil!de!usuario!............................................................................!107! 15.2!Editar!información!de!perfil!..............................................................................!108! 15.3!Visitar!y!colaborar!en!proyectos!.......................................................................!109! 15.4!Crear!y!editar!información!de!proyecto!...........................................................!110! 15.5!!Editar!proyecto!................................................................................................!113! Recursos:!subir!y!eliminar,!reproducir!..................................................................!113! Pistas!....................................................................................................................!115! Fragmentos!...........................................................................................................!116! 16.! Anexo!B:!Especificación!de!los!casos!de!uso!...........................................!119! 16.1!!!Especificación!de!los!casos!de!uso!..................................................................!119! Especificación!de!casos!de!uso!a!Administrador!...................................................!119! Especificación!de!casos!de!uso!a!Usuario!no!registrado!.......................................!121! Especificación!de!casos!de!uso!a!Usuario!registrado!............................................!131! Especificación!de!casos!de!uso!a!Usuario!colaborador!.........................................!163! Especificación!de!casos!de!uso!a!Usuario!colaborador!.........................................!173! 17.!Anexo!C:!Detalles!sobre!el!estado!del!arte!..............................................!178! 17.1!Detalles!sobre!el!estado!del!arte!......................................................................!178! Análisis!de!Myna!...................................................................................................!178! Análisis!de!Soundation!Studio!..............................................................................!187! Análisis!de!AVS!Audio!Editor!................................................................................!197! Análisis!de!Sonar!LE!..............................................................................................!203! Análisis!de!Cocaacola!Music!Experience!...............................................................!209! 18.! Glosario!de!términos!...............................................................................!213!
! ! ! 9! 19.! Bibliografía!..............................................................................................!218! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 16! 5. Planificación"temporal" ! En! este! apartado! se! pretende! reflejar! toda! la! planificación! temporal! que! ha! supuesto!el!desarrollo!de!este!proyecto.!Se!han!diferenciado!las!distintas!etapas!que!se! han!llevado!a!cabo!y!se!ha!determinado,!para!cada!una!de!ellas,!el!tiempo!en!meses! que!ha!supuesto!su!ejecución.! En!la!siguiente!tabla!se!muestra!la!planificación!temporal!que!ha!supuesto!este! proyecto.! ! ! Tarea! Plazo"(Meses)! ! 1! 2! 3! 4! 5! 6! 7! Análisis! ! ! ! ! ! ! ! Diseño! ! ! ! ! ! ! ! Implementación! ! ! ! ! ! ! ! Pruebas! ! ! ! ! ! ! ! Documentación! ! ! ! ! ! ! ! Tabla%1.%Planificación%temporal%% " ! !
! ! ! 17! 6. Recursos"necesarios" 6.1"Recursos"hardware" Para!el!desarrollo!e!implementación!del!sistema!será!necesario!trabajar!con!un! servidor! lo! suficientemente! capaz! como! para! soportar! todas! las! herramientas! de! desarrollo! web! y! gestión! de! datos! necesarias! para! la! consecución! del! proyecto.! Se! precisa! de! un! equipo! con! las! siguientes! características,! detalladas! con! un! valor! aproximado:! a 4!GB!de!memoria!RAM! a 600!GB!de!disco!duro! a Procesador!Intel!Core!i5!o!superior! ! La! mayoría! de! los! equipos! de! sobremesa! o! portátiles! soportan! estas! características,! e! incluso! superiores,! por! lo! que! no! deberá! presentar! un! impedimento!para!el!desarrollo!del!proyecto.! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 18! 6.2"Recursos"software" Las! características! tecnológicas! y! de! software! que! el! sistema! de! información! precisa! para! su! desarrollo! no! son! muy! complejas.! Sin! embargo,! no! por! ello,! menos! importantes.!!Dichos!requisitos!son!los!siguientes:! a Sistema"operativo"Windows"7!o!superior.! a Servidor! WEBrick" [12]" (Masayoshi! Takahashi! y! Yuuzou! Gotou,! 2003):" biblioteca!de!funciones!en!Ruby!que!proveen!los!servicios!básicos!de!un! servidor!web.! a Servidor!MySQL"[8]!(David!Axmark,!2013):!servidor!multiplataforma!que! incluye!base!de!datos!MySQL.! a !RybyMine!JetBrains"[11]! (JetBrains,! 2000):! entorno! de! desarrollo! integrado!para!facilitar!la!escritura!y!organización!del!código!fuente!en! el!lenguaje!de!programación!Ruby.! a Rails" [14]! (Rails,! 2013):! framework!de! código! libre! para! desarrollar! aplicaciones!web!en!Ruby.! a StarUML" [7]! (Comunidad! StarUML):! aplicación! de! ingeniería! del! software!destinada!a!la!creación!de!los!diagramas!de!análisis!y!diseño.! a OnmiGraffle"[10]"(Group):"aplicación!desarrollada!para!OS!X!que!provee! al!usuario!de!multitud!de!funcionalidades!para!crear!diversos!tipos!de! diagramas,!tales!como!diagramas!de!diseño!de!Ingeniería!del!Software.! ! Dado! que! el! sistema! desarrollado! se! trata! de! una! aplicación! web,! es! posible! acceder!a!ella!desde!cualquier!!sistema!operativo!que!disponga!de!conexión!a!Internet,! a!través!del!navegador.! A!continuación!se!expone,!a!modo!resumen,!los!recursos!software!que!se!han! barajado!para!el!desarrollo!e!implementación!de!este!proyecto!y!se!muestran!en!la! última!columna!la!elección!finalmente!escogida.! ! ! !
! ! ! 19! Tabla%2.%Entorno%tecnológico% ! Para! el! lenguaje! del! servidor! se! decidió! usar! Ruby! por! ser! uno! de! los! más! actuales! y! extendidos! a! nivel! mundial.! Asimismo! así! se! aprendía! un! lenguaje! nuevo! para!futuras!implementaciones!de!otras!herramientas.!En!cuanto!al!framework#!Rails! es!también!uno!de!los!más!usados!para!desarrollar!aplicaciones!web!escritas!en!Ruby!y! se!decidió!usar!éste!dadas!las!facilidades!que!ofrece!al!programador!para!implementar! los!casos!de!usos!más!usuales!en!las!aplicaciones!web.! La!gestión!del!audio!se!decidió!hacer!en!HTML5!dada!su!versatilidad!y!su!nueva! implantación!en!la!mayoría!de!los!navegadores!actuales.!Por!otro!lado!cabe!decir!que! el! entorno! de! desarrollo! integrado! Ruby# Mine!!está! mucho! más! actualizado! para! escribir! aplicaciones! en! Ruby! ya! que! en! las! nuevas! versiones! de! NetBeans! no! han! seguido!implementando!actualizaciones!para!Ruby.! Y!por!último,!como!sistema!de!gestión!de!base!de!datos!se!usó!MySQL!por!ser! uno!de!los!más!extendidos!actualmente.! " Propuesta"1" Propuesta"2" Propuesta"3" Decisión" Servidor" ! ! ! ü Ruby! Cliente" ! ! ! ü JavaScript! Base"de" datos" ! ! ! ü MySQL! Framework" ! ! FIASCO! ü Rails! Gestión"de" audio" ! ! ! ! ü HTML5! IDE" ! ! ! ü RubyMine!
! ! ! 20! 7. Definición"del"sistema" ! Antes! de! comenzar! a! entrar! en! detalle! sobre! el! desarrollo! del! proyecto! es! importante!aclarar!ciertos!aspectos!de!la!aplicación!construida,!como!su!alcance!y!los! objetivos!principales!que!persigue.!Asimismo,!conviene!especificar!el!ámbito!al!que!va! dirigido!y!los!tipos!de!usuarios!a!los!que!va!destinada!la!aplicación.! 7.1""""Alcance"del"sistema" La!aplicación!que!se!pretende!desarrollar!está!destinada!a!la!creación!de!música! de!forma!colaborativa,!en!la!que!varias!personas,!procedentes!de!cualquier!parte!del! mundo,!comparten!sus!ideas!y!talento!y!colaboran!entre!sí!para!componer!una!pieza! musical.!! La! herramienta! se! enmarca! en! un! ámbito! musical! y! creativo! en! el! que!se! aceptan!sugerencias!y!propuestas!de!todo!tipo!hasta!llegar!a!un!acuerdo!común!y!así! plasmarlo!en!una!obra!musical,!a!fin!de!que!ésta!sea!mostrada!al!público!y!valorada! por!éste.! A! continuación! se! detalla! el! modelo! de! dominio! del! sistema,! que! pretende! ayudar!a!comprender!el!alcance!del!sistema.!
! ! ! 21! ! Ilustración%1.%Modelo%de%dominio% ! El!sistema!permite!la!creación!de!proyectos"musicales!de!forma!colaborativa.! Todo! proyecto! pertenece! a! un! creador! y! puede! tener,! o! no,! varios! usuarios! colaboradores! interesados! en! el! mismo! que! contribuyan! al! desarrollo! del! proyecto! musical.! Un!proyecto!está!formado!por!un!conjunto!de!pistas!que!pueden!ser!creadas!y! añadidas!por!el!creador!o!por!los!colaboradores!del!mismo.!! Cada! pista! pertenece! a! un! único! proyecto! y,! tanto! el! creador! como! los! colaboradores,!pueden!realizar!modificaciones!sobre!la!misma.!Asimismo,!cada!pista! está!formada!por!un!conjunto!de!fragmentos!musicales,!porciones!de!un!archivo!de! sonido! que! está! asociado! a! un! único! recurso!que! haya! sido! aportado! al! proyecto! previamente!por!alguno!de!los!usuarios!colaboradores.!Los!recursos"no!son!más!que!!
! ! ! 22! diversos! archivos! de! sonidos! que! los! usuarios! van! aportando! progresivamente! al! proyecto.! Los!usuarios!registrados!en!el!sistema!y!que!colaboren!en!proyectos!tienen!la! posibilidad!de!comunicarse!con!los!otros!usuarios!colaboradores!mediante!mensajes.!! 7.2""Usuarios"finales" Dado!que!la!aplicación!resultante!se!engloba!en!un!ámbito!musical!y!creativo,! cualquier!usuario!interesado!en!la!creación!de!música,!colaboración!y!compartición!de! la!misma!podrá!disfrutar!de!las!funcionalidades!que!el!sistema!ofrece.!Para!hacer!uso! de! la! aplicación! no! es! requisito! indispensable! tener! conocimientos! avanzados! en! el! terreno!musical,!basta!con!presentar!una!especial!predilección!por!la!música!e!interés! en!crear!obras!y!compartirlas!con!más!personas!para!disfrutar!de!esta!herramienta.! ! 7.3""Requisitos"funcionales" La! aplicación! a! implementar! deberá! cumplir! ciertos! requisitos! y! ofrecer! las! siguientes!funcionalidades!y!opciones!a!sus!usuarios!para!que!éstos!puedan!disfrutar! de!la!misma.!Algunas!de!las!funciones!que!debe!presentar!se!exponen!a!continuación:! ! ▪ Crear," guardar," abrir" y" borrar" proyectos.! Los! proyectos! musicales! creados! por! los! usuarios! se! guardarán! en! el! servidor!y! deben! ser! accesibles!desde!cualquier!usuario!que!acceda!a!la!plataforma.! ▪ Compartir"el"proyecto"con"otros"usuarios.!Se!dará!la!posibilidad!a!un! usuario!de!seguir!los!avances!de!un!proyecto!y!colaborar!en!el!mismo.! ▪ Sistema" de" notificación" de" cambios" en"los" proyectos.! Ante! cualquier! tipo! de! modificación! que! se! haya! producido! en! algún! proyecto,! bien! creado!o!seguido,!se!debe!notificar!al!usuario!de!los!cambios.! ▪ Subir" pistas" a" un" proyecto.! Se! almacenarán! en! la! base! de! datos! y! quedarán!registradas!como!pistas!de!ese!proyecto.!
! ! ! 23! ▪ Reproducción" de" pistas.! Se! permitirá! que! el! usuario! elija,! en! un! proyecto,!las!pistas!que!desea!reproducir!en!un!momento!dado.! ▪ Dejar"comentarios.!El!usuario!podrá! dejar! su!opinión!referente!a! una! pista!o!a!un!proyecto!concreto.! ▪ Votar"una"pista."Las!pistas!de!un!proyecto!podrán!ser!votadas!por!los! usuarios.! ▪ Valorar" un" proyecto."Cuando! un! proyecto! esté! finalizado,! se! dará! la! posibilidad!a!los!usuarios!de!realizar!una!valoración!sobre!el!mismo." ▪ Darse"de"alta"en"el"sistema.!Es!imprescindible!para!poder!hacer!uso!de! la!aplicación.! ▪ Buscar"proyectos.!El!usuario!tendrá!la!opción!de!buscar!los!proyectos! existentes!en!el!sistema!con!el!fin!de!poder!seguirlo!los!avances!de!los! mismos!si!le!interesa.! ▪ Grabación" de" audio.! El! usuario! tendrá! la! posibilidad! de! conectar! un! micrófono! o! un! instrumento! y! realizar! grabaciones! directamente! a! través!de!la!plataforma.! ▪ Mensajería"privada.!Los!usuarios!podrán!comunicarse!entre!sí!mediante! mensajes!privados.! ▪ Editar" información" de" usuario." Se! da! la! posibilidad! al! usuario! de! modificar!los!datos!introducidos!sobre!su!información!privada.!! ! ! ! ! ! ! !
! ! ! 24! 7.4""Requisitos"no"funcionales" Los! requisitos! anteriormente! citados! se! complementan! con! los! requisitos! no! funcionales! del! sistema,! que! se! enfocan! en! el! diseño! o! la! implementación! de! la! herramienta.! ! Requisitos"de"Seguridad" ▪ Sistema"de"autentificación"de"usuarios.!El!acceso!a!la!plataforma!se!realiza! a!través!del!par!usuario!y!contraseña!encriptado.!! ▪ Acceso"restringido"a"proyectos"según"el"tipo"de"usuario.!Si!un!usuario!no!es! colaborador!de!un!proyecto,!solo!podrá!acceder!a!un!número!limitado!de! características!del!mismo.! ▪ Copias"de"seguridad.!Backup!periódico!de!la!aplicación!web!por!un!lado,!y! de!los!proyectos!y!sus!pistas!correspondientes!por!otro.! ! Requisitos"de"Rendimiento" ▪ Sincronización.!El!sistema!debe!garantizar!la!sincronización!cuando!dos!o! más!usuarios!intentan!acceder!o!modificar!un!proyecto!al!mismo!tiempo.! ▪ Consistencia.!!Los!problemas!de!latencia!al!subir!pistas!a!un!proyecto!no! deben!permitir!que!la!plataforma!quede!inaccesible.!!! ! Requisitos"de"Implantación" ▪ Sistema" de" reproducción" de" pistas.! El! sistema! debe! garantizar! la! sincronización!al!reproducir!simultáneamente!las!pistas!que!el!usuario!haya! seleccionado!en!un!momento!dado.! ▪ Módulo"de"grabación"de"audio"online.!Sistema!que!permita!la!grabación!de! audio!por!parte!de!los!usuarios.!
! ! ! 25! ! Requisitos"de"Disponibilidad"del"Sistema" ▪ El!sistema!debe!ser!disponible!las!24"horas"del"día!y!desde!cualquier!parte! del!mundo.! ▪ Para!acceder!a!él,!basta!que!el!usuario!disponga!de!conexión"a"internet"y" esté"registrado"en"el"sistema." ▪ El!sistema!debe!presentar!una!mínima!disponibilidad!para!su!acceso!desde! dispositivos"móviles.! ! " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 32! Carlos! Jean! y! CocaaCola! Music! Experience! lanzan! retos! musicales! para! crear! canciones.! Los! usuarios! interesados! pueden! subir! sus! aportaciones! a! las! propuestas! enviadas!por!Carlos!Jean!para!crear!canciones!de!manera!colaborativa.!Si!la!canción! consigue! ser! un! éxito,! es! posible! competir! en! las! principales! listas! con! los! grandes! artistas!internacionales.! Para!conocer!en!más!profundidad!algunas!de!sus!características,!se!remite!al! lector!al!"Anexo".! Ilustración%6.%CocaGcola%Music%Experience% En!definitiva,!todas!estas!herramientas!disponen!de!numerosas!funcionalidades! que!permiten!a!un!usuario!la!creación!de!composiciones!musicales.!Cabe!decir!que!la! herramienta! construida! pretende! juntar! las! ventajas! de! todas! ellas! y! sobretodo! desarrollar!una!herramienta!online!que!permita!poner!en!contacto!a!diversos!usuarios! de! cualquier! parte! del! mundo! para! que! colaboren! entre! sí! y! desarrollen! proyectos! musicales.! ! ! ! ! ! ! ! !
! ! ! 33! 9. Análisis" 9.1""Modelos"de"casos"de"uso" En!este!apartado!se!procede!a!detallar!los!casos!de!uso!del!sistema.!En!primer! lugar! se! nombrarán! los! diferentes! actores! que! se! han! identificado! y! luego! se! expondrán!los!casos!de!uso!de!cada!uno!de!ellos.!Cada!caso!de!uso!se!especificará!con! una!ficha!descriptiva!que!consta!de!los!siguientes!apartados:! ! ▪ Identificación:!número!secuencial!único!que!!identifica!al!caso!de!uso.! ▪ Nombre:!es!el!nombre!que!se!la!ha!asignado!al!caso!de!uso!y!que!será!lo! más!explicativo!posible.! ▪ Actores:! identifica! a! los! usuarios! del! sistema! que! participan! en! la! consecución!de!la!operación!que!implica!el!caso!de!uso.! ▪ Personal" involucrado:"sugiere! y! delimita! qué! es! lo! que! debe! hacer! el! sistema." ▪ Descripción:! breve! texto! descriptivo! que! detalla! las! razones! y! el! resultado!del!caso!de!uso.! ▪ Trigger:!identifica!al!evento!que!inicializó!el!caso!de!uso.! ▪ Precondiciones:!establece!qué!es!lo!que!debe!cumplirse!siempre!antes! de!comenzar!un!escenario!de!caso!de!uso.! ▪ Posthcondiciones:!detallan!qué!debe!cumplirse!cuando!el!caso!de!uso!se! completa!con!éxito.!! ▪ Flujo!normal:! describe! el! camino! de! éxito! típico! que! satisface! los! intereses!del!personal!involucrado!en!el!caso!de!uso.! ▪ Flujo" alternativo" o" extensiones:! indican! todos! los! escenarios! o! bifurcaciones,!tanto!de!éxito!como!de!fracaso,!que!puede!presentar!el! caso! de! uso! en! cuestión.! La! combinación! del! flujo! normal! y! del! flujo! alternativo! debería! satisfacer! casi! todos! los! intereses! del! personal! involucrado!en!el!sistema.!
! ! ! 34! ▪ Excepciones:! describe! cualquier! condición! de! error! que! pueda! ocurrir! durante!la!ejecución!del!caso!de!uso!y!define!cómo!el!sistema!responde! ante!este!tipo!de!situaciones.! ▪ Includes:!lista!cualquier!otro!caso!de!uso!que!sea!llamado!por!el!caso!de! uso!en!cuestión.! ▪ Requisitos"especiales:!incluye!cualidades!como!rendimiento,!fiabilidad,! facilidad!de!uso!y!restricciones!de!diseño!que!deba!cumplir!el!caso!de! uso.! ▪ Notas:!lista!comentarios!adicionales!u!observaciones!del!caso!de!uso.! ! ! ! ! Actores"del"sistema" Se! han! identificado! diferentes! actores! del! sistema.! En! primer! lugar,! cabe! mencionar!al!usuario"no"registrado,!aquel!que!no!se!ha!identificado!en!el!sistema!pero! que,!aún!así,!tiene!a!su! disposición!algunas!de!las!funcionalidades! que! la!aplicación! ofrece.!Por!otro!lado,!se!encuentra!el!usuario"registrado,!que!difiere!del!anterior!en! que!éste!sí!tiene!cuenta!y!las!posibilidades!que!se!le!ofrecen!son!mucho!mayores.!El! usuario! registrado! es! una! generalización! de! dos! tipos! de! usuario! más:! el! administrador,! que! se! encarga,! principalmente,! de! gestionar! usuarios;! y! el! usuario! colaborador,!aquel!que!participa!en!la!creación!de!una!obra!musical.!Finalmente,!se! encuentra!el!usuario!creador,!que!hereda!del!colaborador!y!que!a!su!vez!presenta!un! mayor!número!de!funcionalidades.!A!continuación!se!expone!el!diagrama!de!actores! del!sistema.!
! ! ! 35! Ilustración%7.%Actores%del%sistema% ! ! ! ! ! ! ! ! ! !
! ! ! 36! A! continuación! se! muestra! una! tabla! resumen! con! las! definiciones! y! peculiaridades!de!cada!tipo!de!usuario.! ! Actor" Tipo" Definición" Usuario"no"registrado" Secundario! Usuario!carente!de!cuenta!en!el!sistema.!No!obstante,! puede!visitar!los!proyectos!existentes!y!registrarse!en! la!plataforma.! Usuario"registrado" Principal! Este! usuario! puede! acceder! al! sistema! en! cada! momento!y!hacer!!uso!de!las!funcionalidades!que!éste! ofrece.! Administrador" Principal! Es! un! usuario! registrado! que! se! encarga! del! mantenimiento!de!la!plataforma!así!como!de!gestionar! los!usuarios!de!la!misma.! Colaborador" Principal! Usuario! registrado! que! participa! en! algún! proyecto! musical!existente!en!el!sistema,!aportando!su!opinión,! valoración!y/o!creatividad.! Creador" Principal! Usuario!registrado!y!autor!de!uno!o!más!proyectos.!Es! el!encargado!de!iniciar!la!creación!de!un!proyecto!y!da! la!posibilidad!de!que!el!resto!de!usuarios!colaboren!con! él.! Tabla%3.%Definición%de%los%actores%del%sistema% Cabe!decir!que,!una!vez!que!un!usuario!se!ha!registrado!en!el!sistema,!puede! actuar!tanto!de!colaborador!como!de!creador,!dependiendo!del!proyecto!al!que!esté! accediendo!en!un!momento!dado.!Es!decir,!que!un!usuario!que!ha!creado!un!proyecto! accede!a! editar! dicho!proyecto,! durante! este!intervalo! de! tiempo,!será! considerado! creador.!Si!por!el!contrario,!accede!a!editar!un!proyecto!que!no!ha!sido!creado!por!él! mismo,!será!un!usuario!colaborador.! !En!la!tabla!siguiente!!se!detallan!los!permisos!que!posee!cada!tipo!de!usuario.! ! Proyecto% Pista% Recursos% Fragmentos% Creador% üCrea!proyecto! üElimina!proyecto! üReproduce!las! pistas!del!proyecto! üSube!pistas! üElimina!pistas! üDescarga!pistas! üSube!y! reproduce! recursos! üEdita!los! fragmentos!
! ! ! 37! Colaborador% üReproduce!las! pistas!del!proyecto! üSube!pistas! üDescarga!pistas! üDescarga!pistas! üSube!y! reproduce! recursos! üEdita!los! fragmentos! Usuario!no! registrado% üReproduce!las! pistas!del!proyecto! ! ! ! Tabla%4.%Permisos%de%usuario% ! Diagrama"de"casos"de"uso"h"Administrador" El! administrador! será! el! encargado! del! mantenimiento! de! la! herramienta,! pudiendo! desactivarla! temporalmente! en! caso! de! que! sea! preciso.! Además,! puede! comunicarse! con! el! conjunto! de! usuarios! registrados! en! el! sistema! si! lo! considera! oportuno.! A! continuación! se! expone! un! diagrama! con! los! casos! de! uso! cuyo! actor! principal!del!sistema!es!el!administrador.! ! ! Ilustración%8.%Casos%de%uso%del%administrador% ! ! !
! ! ! 38! ! ! Diagrama"de"casos"de"uso"h"Usuario"no"registrado" El!usuario!no!registrado!representa!a!todos!aquellas!personas!que!acceden!a!la! plataforma!y!que!no!están!registradas!en!el!sistema.!No!obstante,!tienen!la!posibilidad! de!realizar!ciertas!acciones,!como!visitar!un!proyecto!existente!e!incluso!valorarlo.!A! continuación!se!detalla!un!diagrama!con!los!casos!de!uso!de!este!usuario.! ! ! Ilustración%9.%Diagrama%de%casos%de%uso%G%Usuario%no%registrado% ! ! ! ! ! ! !
! ! ! 39! ! ! Diagrama"de"casos"de"uso"h"Usuario"registrado" En!este!apartado!se!incluye!un!conjunto!de!diagramas!que!hacen!referencia!a! todos!los!casos!de!uso!de!actor!Usuario#registrado,!y!que!se!han!separado!para!facilitar! la!lectura!y!comprensión!del!documento.! ! Ilustración%10.%Diagrama%1%de%casos%de%uso%de%usuario%registrado%
! ! ! 40! % Ilustración%11.%Diagrama%2%de%casos%de%uso%de%usuario%registrado%
! ! ! 41! ! Ilustración%12.%Diagrama%3%de%casos%de%uso%de%usuario%registrado%
! ! ! 48! Votar!pista! Indica!si!le!gusta!o!no!una! pista.! Usuario!creador! Eliminar!proyecto! Elimina!un!proyecto!y!toda! su!información.! Eliminar!pista! Elimina! una! pista! del! proyecto.! Eliminar!comentario! Borra!un!comentario.! Etiquetar!proyecto! Añade! una! etiqueta! al! proyecto.! Lanzar!petición!! Manda!una!petición!a!otro! usuario!del!proyecto.! Publicar!proyecto! Convierte! a! definitivo! el! proyecto.! Tabla%5.%Lista%de%acciones%del%sistema% Si!se!desea!obtener!más!información!detallada!sobre!los!casos!de!uso!de!los! diferentes! usuarios! de! la! aplicación,! se! remite! al! lector! al! anexo,! concretamente! al! apartado!de!Especificación"de"los"casos"de"uso." " " " " " " " " " "
! ! ! 49! " 10. Diseño" 10.1"""Patrones"de"diseño" Con!el!objetivo!de!llevar!a!cabo!un!buen!diseño!del!sistema!es!importante!hacer! uso! de! los! patrones! de! diseño! de! software! (Comunidad! Wikipedia,! Wikipedia).! Un! patrón!de!diseño!es!la!base!para!la!búsqueda!de!soluciones!a!problemas!comunes!en!el! desarrollo!software.!Los!objetivos!del!uso!de!patrones!son!proporcionar!catálogos!de! elementos!reusables!en!el!diseño!de!sistemas,!evitar!la!reiteración!en!la!búsqueda!de! soluciones! a! problemas! ya! conocidos,! estandarizando! el! modo! en! que! se! realiza! el! diseño.!! Por!tanto,!es!importante!analizar!bien!el!software!que!se!quiere!desarrollar!con! el! objetivo! de! establecer! los! patrones! de! diseño! que! resultarán! más! útiles! en! la! implementación! del! sistema.! De! ese! análisis! han! surgido! los! siguientes! patrones:! Modelo!a!Vista!a!Controlador,!MVC![2]!(Pavón!Maestras,!2008);!el!patrón!Memento![3]! (Comunidad! Wikipedia,! Patrón! Memento)! y! el! patrón! Front! –! Controller! [6]! (Comunidad!PmWiki).! ! Modelo"h""Vista"h"Controlador" !Es!un!patrón!de!arquitectura!de!las!aplicaciones!software!que!separa!la!lógica! de!negocio!de!la!interfaz!de!usuario.!De!esta!manera,!facilita!la!evolución!por!separado! de!ambos!aspectos,!incrementa!la!reutilización!y!aporta!flexibilidad.! El!patrón!parte!de!la!idea!de!que!para!un!modelo!existen!varias!vistas!y!diversos! controladores.!Estos! dos!últimos! suelen!estar! muy! relacionados,! de! manera!que! los! controladores!tratan!los!eventos!que!se!produce!en!la!interfaz!gráfica.!En!el!caso!de! desarrollo!de!aplicaciones!web!existen!las!siguientes!relaciones!!entre!los!elementos! del!patrón!y!los!componentes!de!una!aplicación!web:!
! ! ! 50! ! ▪ Vista!a!Página!HTML.! ▪ Controlador! a! código! que! obtiene! datos! dinámicamente! y! genera! contenido!HTML.! ▪ Modelo!a!información!almacenada!en!una!base!de!datos!o!XML.! ! A!continuación!se!adjunta!un!diagrama!sobre!la!interacción!entre!los!componentes!de! este!patrón!de!diseño.! ! Ilustración%16.%Diagrama%del%patrón%Modelo%G%Vista%–%Controlador% ! ! ! Patrón"Memento"
! ! ! 51! Es!un!patrón!de!diseño!cuya!finalidad!es!almacenar!el!estado!de!un!objeto!o!del! sistema!completo!en! un! momento! dado,! de!manera!que!se!pueda!restaurar!en!ese! punto!de!una!forma!sencilla.!Para!ello,!se!mantiene!almacenado!el!estado!del!objeto! para!un!instante!de!tiempo!en!una!clase!independiente!de!aquella!a!la!que!pertenece! el!objeto!en!cuestión,!pero!sin!romper!el!encapsulamiento,!de!forma!que!ese!recuerdo! permita!que!el!objeto!sea!modificado!y!pueda!volver!a!ser!restaurado!posteriormente.! ! ! Ilustración%17.%Diagrama%del%patrón%Memento% Patrón"Front"Controller" Para!las!aplicaciones!web,!como!la!de!este!proyecto,!se!recomienda!utilizar!este! patrón,! que! parte! de! la! base! de! la! idea! de! que! todas! peticiones! realizadas! a! la! aplicación!en!cuestión!pasen!por!un!controlador!determinado!y!único.! El!controlador!proporciona!un!punto!de!entrada!único!que!controla!y!gestiona! las!peticiones!web!realizadas!por!todos!los!clientes.!De!esta!manera,!se!evita!tener!que! repetir!la!misma!lógica!de!control!en!los!controladores!de!la!aplicación.!Generalmente! se!usa!esta!clase!con!otra!denominada!Dispatcher,!que!es!la!responsable!de!redirigir!el! flujo!de!ejecución!hacia!otro!controlador!determinado.!
! ! ! 52! ! Ilustración%18.%Diagrama%de%secuencia%del%patrón%Front%G%Controller% 10.2"Diseño"arquitectónico"del"Sistema" La!arquitectura!de!software!indica!la!estructura,!funcionamiento!e!interacción! entre!las!partes!que!componen!y!constituyen!el!software.!Consiste!en!un!conjunto!de! patrones! y! abstracciones! coherentes! que! proporcionan! el! marco! de! trabajo.! Se! selecciona!y!diseña!con!base!en!objetivos!y!restricciones.!Los!objetivos!son!prefijados! para!el!sistema!de!información!y!pueden!ser!de!tipo!funcional,!de!mantenimiento,!de! flexibilidad!y!de!interacción;!mientras!que!las!restricciones!son!aquellas!limitaciones! que!se!derivan!de!las!tecnologías!de!las!que!se!dispone!para!implementar!y!desarrollar! el!sistema!de!información.!! En! este! apartado! se! describen! los! niveles! que! componen! la! arquitectura! del! sistema,! mediante! la! definición! de! las! principales! particiones! físicas! del! mismo,! representadas!como!nodos!y!comunicaciones!entre!los!mismos.! El!estilo!arquitectónico!que!se!ha!escogido,!dadas!las!características!del!sistema! de!información!y!sus!funcionalidades,!es!la!Arquitectura"Cliente"h"Servidor."" Para! realizar! esta! tarea,! se! han! tomado! en! consideración! los! elementos! de! infraestructura!más!significativos!de!la!arquitectura!en!la!que!se!va!a!implementar!el!
! ! ! 53! sistema! de! información,! tales! como:! gestores! de! datos,! clientes,! servidores,! comunicaciones,!etc.! A!continuación!se!presenta!un!diagrama"en!el!que!se!han!detallado!los!nodos! más! significativos! que! intervienen! en! el! Sistema! de! Información,! así! como! las! comunicaciones!que!se!establecen!entre!los!mismos.! ! % Ilustración%19.%Arquitectura%del%Sistema% Tal! y! como! se! observa! en! el! diagrama,! se! distinguen! tres! nodos:! el! Servidor" Web,!el!Servidor"de"Base"de"Datos!y!el!Cliente.!! ▪ El! nodo! principal! es! el! Servidor" Web,! donde! se! encuentra! instalada! la! aplicación!y!en!donde!se!lleva!acabo!toda!la!lógica!del!Sistema.!! ! ▪ El! nodo! Cliente! representa! a! todos! los! usuarios! que! desean! hacer! uso! de! la! aplicación!y,!para!ello,!establecen!conexiones!con!el!Servidor"Web!y!le!envían! peticiones"HTTP.!
! ! ! 54! ! ▪ El!Servidor"de"Base"Datos!es!donde!se!almacena!toda!la!información!referente! a! los! usuarios! registrados! en! el! sistema,! así! como! sus! proyectos! musicales! creados!y!las!diferentes!pistas!subidas.! ! A!continuación!se!detalla!una!tabla!resumen!con!los!nodos!especificados!y!el! tipo!de!comunicación!que!establece!entre!los!mismos.! ! Nodo"Principal" Nodos"Secundarios" Servidor"Web" Nombre" Descripción" Conexión"entre" nodos" HTTP" Cliente" Representa!a! los!usuarios!de!la! aplicación.! TCP/IP! Servidor"de"Base"de" Datos" Alberga!toda!la! información!sobre!los! usuarios!y!sus! proyectos!musicales.! Tabla%6.%Tabla%resumen%de%la%arquitectura%del%sistema% Cabe! decir! que! es! importante! dar! al! usuario! la! impresión! de! que! está! trabajando!con!una!herramienta!de!escritorio,!por!lo!que!el!tiempo!de!respuesta!del! sistema!no!debe!demorarse!demasiado.!Para!ello,!es!importante,!en!la!medida!de!lo! posible,! evitar! las! recargas! de! la! página! web.! Por! ello,! se! diferencia! la! parte! del! servidor,!encargado!de!toda!la!lógica!y!del!procesamiento!de!información!del!usuario;! y!por!otro!lado,!la!parte!del!cliente,!que!da!la!posibilidad!al!usuario!de!hacer!uso!de! todas! las! funcionalidades! que! el! sistema! presenta! como! si! de! una! aplicación! de! escritorio!se!tratase.!A!continuación!se!muestra!otro!diagrama!en!la!que!se!detalla!la! arquitectura!de!cada!una!de!las!partes!anteriormente!nombradas.! ! ! !
! ! ! 55! ! ! Ilustración%20.%Diseño%arquitectónico% 10.3""Diseño"de"la"base"de"datos" Algo!esencial!en!el!desarrollo!del!proyecto!es!determinar!cómo!se!almacenará! toda!la!información!con!la!que!se!va!a!trabajar,!así!como!especificar!la!forma!en!la!que! se!interconectará.!Para!ello,!se!ha!realizado!un!Diagrama!EntidadaRelación,!debido!a! que!es!un!tipo!de!base!de!datos!muy!extendido!que!resulta!muy!apropiado!y!adecuado! para!este!tipo!de!proyecto.! Por!motivos!de!claridad!y!sencillez,!se!mostrará!el!diseño!final!en!dos!diagramas! diferenciados!que!resultan!muy!fáciles!de!comprender.!Cabe!decir!que!se!ha!seguido! un!código!de!colores!para!identificar!a!cada!uno!de!los!elementos!que!intervienen!en! el!diagrama.!La!leyenda!es!la!siguiente:! ! Tipo"de"clase" Color" Entidad! ! Relación! ! Propiedad! ! ! ! Servidor! Sistema!operativo!a!Mac!OS!X! SGBD!a!MySQL! WEBrick! Ruby! Rails! Cliente! Sistema!operativo!! Navegador!Web! JavaScript! Aplicación! ! HTML! HTTP! JSON! HTTP!
! ! ! 56! En!los! diagramas! no! se! han! especificado! todas! las! propiedades! de! todas! las! entidades! que! aparecen,! dado! que! se! comentarán! en! apartados! posteriores! y! así! resulta!más!sencillo!de!leer!y!entender.! ! % Ilustración%21.%Diagrama%entidad%G%relación%de%la%base%de%datos%1% En!el!diagrama!anterior!se!presentan!las!entidades!principales!que!entran!en! juego!en!la!aplicación.!El!usuario!creador!puede!crear!varios!proyectos!y!todo!proyecto! tiene! que! poseer! como! mínimo! y! como! máximo! un! usuario! creador.! Por! otro! lado,! cada! pista! tiene! un! identificador! y! el! identificador! del! usuario! que! la! ha! creado! así! como!el!identificador!del!proyecto!al!que!ha!sido!subida.!! Cabe!decir!que!entre!las!entidades!pista,!proyecto!y!usuario,!existe!una!relación! ternaria! en! la! que! cada! combinación! de! pista! y! usuario! debe! estar! asociada! como! mínimo!con!un!proyecto,!y!cada!combinación!de!pista!y!proyecto!debe!estar!asociada! como!mínimo!con!un!colaborador!que!la!haya!subido.! !
! ! ! 57! ! % Ilustración%22.%Diagrama%entidad%G%relación%de%la%base%de%datos%2% Un!usuario!puede!subir!muchos!recursos!a!un!proyecto!pero!un!recurso!solo! puede!estar!asociado!a!una!combinación!de!usuario!y!proyecto.!A!su!vez,!cada!recurso! puede!estar!asociados!con!múltiples!fragmentos!de!un!proyecto!pero!n!fragmento!se! asocia!como!máximo!a!una!instancia!de!un!recurso.!Así!mismo!una!pista!puede!estar! compuesta!por!varios!fragmentos!mientras!que!cada!uno!de!ellos!solo!puede!asociarse! como!máximo!con!una!pista.! ! ! !
! ! ! 64! Perfil"de"usuario" ! Ilustración%26.%Diseño%de%la%interfaz%del%perfil%de%usuario% En!la!parte!superior!se!encuentran!tanto!el!logo!de!la!aplicación!como!la!barra! de!menú!con!diferentes!opciones!que!le!permiten!al!usuario!cambiar!de!vista!o!salir!de! la!aplicación.!La!parte!inferior!está!dividida!en!dos!partes:!la!parte!izquierda!y!la!parte! derecha.!! a La!parte!izquierda!contiene!la!foto!e!información!relevante!del!usuario! del! cual! se! está! visitando! su! perfil! y! justo! debajo! tiene! un! menú! con! diferentes!opciones!a!realizar,!como!crear!un!proyecto!nuevo.!! a La! parte! de! la! derecha! se! reserva! para! los! proyectos! en! los! que! el! usuario! participa.! En! primer! lugar! se! muestran! los! proyectos! creados! por!dicho!usuario!y,!justo!debajo,!se!presentan!aquellos!en!los!que!el! usuario!en!cuestión!colabora.! ! La!implementación!final!quedó!de!la!siguiente!manera:! !
! ! ! 65! ! Ilustración%27.%Implementación%final%de%la%vista%del%perfil%de%usuario% ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 66! Vista"de"un"proyecto"musical" Ilustración%28.%Diseño%de%la%vista%de%un%proyecto% En!la!parte!superior!de!la!vista!se!muestra!la!información!relativa!al!proyecto! que!se!está!visitando,!como!el!nombre!del!usuario!creador,!la!fecha!de!creación!y!el! estilo!musical!del!proyecto,!entre!otros.!Asimismo,!en!la!parte!superior!se!sitúa!una! barra!de!herramientas!que!posibilita!al!usuario!activar!el!menú!de!edición!de!audio,! por!ejemplo.! La!sección!central!se!divide!en!tres!subasecciones:! ! a Parte!izquierda:!en!esta!subasección!se!detalla!información!relativa!a!la! pista,!como!su!autor,!el!instrumento!principal!de!la!misma!y!demás.! a Parte! central:! muestra! los! espectros! de! cada! una! de! las! pistas! que! componen!el!proyecto!que!se!está!visitando.! a Parte! derecha:! contiene! diferentes! opciones! que! se! pueden! realizar! sobre!las!pistas.!
! ! ! 67! Por!último,!la!parte!inferior!contiene!los!controles!de!reproducción!para!poder! escuchar!o!pausar!la!reproducción!de!un!proyecto,!así!como!ajustar!el!volumen! y!demás!parámetros.! ! ! ! Ilustración%29.%Implementación%final%de%la%vista%de%un%proyecto% ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 68! 10.6"Diseño"arquitectónico"de"la"aplicación" En! este! apartado! se! procede! a! detallar! el! diseño! de! arquitectónico! de! los! subsistemas!de!la!aplicación!a!desarrollar.!En!todos!ellos!se!hará!uso!de!los!patrones! de! diseño! nombrados! en! el! apartado! 10.1# # # Patrones# de!diseño! de! esta! misma! memoria.! Para! facilitar! la! lectura! y! comprensión! de! los! diagramas! que! se! expondrán! a! continuación,!se!ha!seguido!un!código!de!colores!para!identificar!visualmente!el!tipo! de!cada!una!de!las!clases.!La!leyenda!es!la!siguiente:! ! Tipo"de"clase" Color" Comando!a!Controlador! ! Modelo! ! Vista! ! Patrón!de!diseño! ! Tabla%8.%Leyenda%de%los%diagramas% Modelos" A!continuación!se!muestra!el!diagrama!de!los!modelos!más!representativos!de! la!aplicación,!junto!a!sus!atributos!correspondientes,!así!como!las!relaciones!entre!los! mismos.!
! ! ! 69! ! ! Ilustración%30.%Modelos%de%la%aplicación% Un!proyecto!es!una!agregación!de!pistas!musicales!aportadas!por!los!diferentes! usuarios!colaboradores!del!mismo.!Un!proyecto!musical!solo!tiene!un!usuario!creador! pero! puede! tener! varios! usuarios! colaboradores.! Los! usuarios! de! la! aplicación! se! pueden!poner!en!contacto!mediante!un!sistema!de!mensajería!privada.!Cabe!decir!que! las!pistas!son!aportadas!a!cada!proyectos!por!los!usuarios!colaboradores!del!mismo!y! éstas!pueden!contener!varios!fragmentos.! ! ! Comandos" Este! apartado! está! dedicado! a! las! clases! de! tipo! comando.! Éstas! se! corresponden!con!casi!la!totalidad!de!los!diferentes!casos!de!uso!analizados!en!la!fase! previa.!A!continuación!se!presentan,!en!varios!diagramas,!los!distintos!comandos!que! presenta!la!aplicación.!
! ! ! 70! ! Ilustración%31.%Diagrama%1%de%comandos%
! ! ! 71! ! Ilustración%32.%Diagrama%2%de%comandos%
! ! ! 72! ! Ilustración%33.%Diagrama%3%de%comandos%
! ! ! 73! Patrón"Memento" Uno!de!los!patrones!de!diseño!utilizados!es!el!patrón!denominado!Memento,! que!almacena!el!estado!interno!de!un!objeto!para!que,!posteriormente,!éste!pueda!ser! recuperado.! Para! implementar! dicho! patrón! se! sugiere! la! estructura! detallada! en! el! siguiente!diagrama.! ! Ilustración%34.%Patrón%Memento% En!el!diagrama!anterior!se!observa!que!existe!una!clase!denominada!Memento! que!es!la!que!almacena!el!estado!interno!de!un!objeto.!Por!otro!lado!existe!la!clase! conserje,!que!es!una!agregación!de!diferentes!objetos!de!tipo!de!Memento!y!que!da!la! posibilidad! de! registrar! los! cambios! producidos! por! el! originador,! que! en! este! caso,! coincide!con!la!clase!comando.!Esto!se!ha!hecho!de!esta!manera!para!que!cualquier! acción!realizada!pueda!ser!restaurada.! ! Para!llevar!a!cabo!este!patrón!en!la!herramienta!desarrollada!se!ha!hecho!uso! de!la!gema!de!Rails!denominada!Paper#Trails,!que!permite!al!programador!abstraerse! de! la! lógica! en! la! que! se! basa! dicho! comando! y! simplemente! se! requiere! que! implemente!el!método!genérico!para!revertir!una!acción.! ! ! !
! ! ! 80! 11. Implementación" ! La!fase!de!implementación!ha!sido,!sin!lugar!a!dudas,!la!más!larga!y!compleja! de!todo!el!proyecto.!No!obstante,!ha!sido!la!fase!con!la!!que!más!resultados!se!han! obtenido!y!por!tanto,!la!más!satisfactoria!y!gratificante!de!realizar.! ! Explicar! con! detenimiento! cada! una! de! las! etapas! de! esta! fase! de! implementación!supondría!extenderse!demasiado!a!lo!largo!de!esta!memoria.!Por!esa! razón,!tan!solo!se!comentarán!aquellos!apartados!que!se!consideran!más!relevantes.! Cabe!decir!que!en!el!CD!que!se!adjunta!con!esta!memoria!se!expone!todo!el!código! correspondiente!al!desarrollo!de!este!proyecto.! 11."1""Estructura"del"CD" En!el!CD!adjunto!a!esta!memoria!existen!dos!directorios.!Uno!se!corresponde!a! la!memoria!y!el!otro!a!todo!el!código!fuente.!A!continuación!se!detalla!un!diagrama! que!muestra!la!estructura!del!CD.! ! ! ! ! ! ! ! ! ! ! ! Memoria" Código"fuente" Beat"the"music" Directorio"raíz"
! ! ! 81! 11.2"""Soporte"plurilingüe"" ! Uno! de! los! objetivos! principales! que! presenta! este! proyecto! es! dar! la! posibilidad! de! crear! una! composición! musical! entre! varias! personas! procedentes! de! cualquier!parte!del!mundo.!Es!por!ello!que!se!precisaba!de!un!soporte!plurilingüe!que! diera!la!posibilidad!de!proporcionar!la!herramienta!en!varios!idiomas,!principalmente! en!inglés,!el!idioma!universal.!! La!realización!de!esta!funcionalidad!no!fue!muy!compleja!gracias!a!la!forma!en! la!que!se!trabajan!los!ficheros!de!idiomas!en!las!aplicaciones!web.!Basta!con!tener!un! archivo!por!cada!idioma!en!el!que!se!quiera!implementar!la!aplicación,!que!contenga! conjuntos!de!pares!claveavalor!indicando!qué!frase!es!la!que!se!desea!traducir!y!cómo! se!almacena!la!traducción!correspondiente.! A! continuación! se! muestra! una! pequeña! parte! del! archivo! de! traducción! del! idioma!inglés!junto!con!su!equivalente!en!español.! ! ! !! ! %Ilustración%40.%Extracto%del%fichero%de%traducción%del%idioma%inglés% !
! ! ! 82! ! ! Ilustración%41.%Extracto%del%fichero%de%traducción%del%idioma%español% ! 11.3""Soporte"de"audio"–"Web"Audio"API" La! manipulación! del! audio! era! un! pieza! clave! en! la! implementación! de! este! proyecto.!Para!ello,!se!precisaba!de!una!librería!que!abstrajese!al!programador!de!la! lógica!interna!que!yacía!bajo!los!archivos!de!sonido.!Debido!a!esa!razón!se!buscaron!y! se!analizaron!diversas!librerías!de!sonido!disponibles!para!la!manipulación!de!audio!en! aplicaciones!web,!hasta!que!se!decidió!usar!la!librería!Web!Audio!API.!!!! ! La! librería! Web! Audio! API! es! una! especificación! de! alto! nivel! diseñada! para! JavaScript!para!procesar!y!sintetizar!audio!en!aplicaciones!web.!Parte!un!paradigma! principal! que! se! basa! en! el! enrutamiento! de! nodos! de! audio! donde! los! objetos! AudioNode!!son!conectados!los!unos!a!los!otros!para!definir!el!audio!final.! ! La!decisión!de!hacer!uso!de!esta!librería!de!sonido!se!debe!a!que!era!una!de!las! más! completas,! posibilitando! el! desarrollo! e! implementación! de! un! reproductor! y! editor! de! audio! online.! Asimismo! ! también! se! debe! su! elección! a! ! su! alta!
! ! ! 83! compatibilidad! entre! navegadores.! A! continuación! se! muestra! un! gráfico! de! la! compatibilidad!de!esta!librería.! ! Ilustración%42.%Ilustración%de%la%compatibilidad%de%la%Web%Audio%API%[caniuse.com]% ! Puntos"fuertes"de"la"librería"Web"Audio"API" Tal!y!como!se!ha!comentado,!una!de!las!características!principales!por!las!que! se! decidió! hacer! uso! de! esta! librería! se! debía! al! gran! número! de! funcionales! que! presenta.!A!continuación!se!exponen!algunas!de!dichas!funcionalidades.! § Manejo!de!diferentes!tipos!de!fuentes!de!sonido! § Control!del!volumen!individual!de!cada!pista!! § Control!del!volumen!global! § Efectos!y!filtros!de!sonidos!variados! § Control!de!diferentes!líneas!de!entradas!y!una!sola!salida!master! § Análisis!de!audio!en!tiempo!real!
! ! ! 84! § Representación!gráfica!del!audio!(espectro!de!la!pista)! § Control!de!la!frecuencia!y!los!BPM! § Modificación!de!parámetros!de!efectos!en!tiempo!real!! § Los!clips!se!pueden!reproducir!!de!acuerdo!a!un!tempo!determinado.!# § Programación! de! efectos! de! sonido! en! un! intervalo! de! tiempo! determinado.# ! ! Ejemplo"básico"de"enrutamiento" Tal!y!como!se!comentó!anteriormente,!el!paradigma!principal!en!el!que!se!basa! la!librería!consiste!en!el!enrutamiento!de!nodos!de!audio!de!manera!que!la!conexión! entre!los!mismos!produzcan!una!salida!musical.!Todas!las!conexiones!se!llevan!a!cabo! dentro!de!lo!que!se!denomina!el!contexto!de!audio.! ! Cada!nodo!presenta!una!serie!de!líneas!de!entrada!y!salida.!Un!nodo!fuente!se! caracteriza!porque!carece!de!líneas!de!entrada,!mientras!que!un!nodo!destino!carece! de!líneas!de!salida.!El!caso!más!simple!y!sencillo!de!enrutamiento!entre!nodos!es!aquel! que! presenta! la! conexión! entre! un! nodo! fuente! y! un! nodo! destino.! En! la! siguiente! figura!se!muestra!gráficamente!dicha!conexión.! ! ! Ilustración%43.%Ejemplo%básico%de%enrutamiento%de%la%Web%Audio%API% !
! ! ! 85! ! ! Integración"con"la"aplicación" Para!hacer!uso!de!la!librería!se!precisaba!de!una!estructuración!y!enrutamiento! particular!de!los!nodos!de!audio!que!hiciera!posible!la!integración!de!la!Web!Audio!API! con!el!resto!de!la!aplicación!web.!! Recordemos!que! el!módulo!de!audio!del!proyecto!presenta!una!conjunto!de! pistas!que!podían!contener! uno! o!varios!fragmentos,!cada!uno!de!ellos!asociados!a! archivo!de!sonidos,!denominados!‘Recursos’!dentro!de!la!aplicación.!Sobre!cada!pista! se!puede!aplicar!un!‘solo’!o!puede!ser!enmudecida.!Asimismo,!se!puede!modificar!el! volumen!individual!de!cada!pista!que!compone!el!proyecto!musical,!así!como!variar!el! volumen! global.! Con! la! finalidad! de! desarrollar! estas! funcionalidades! y! demás,! la! estructura!de!enrutamiento!que!se!implementó!se!muestra!en!el!siguiente!diagrama.! ! ! Ilustración%44.%Enrutamiento%de%la%Web%Audio%API%implementado%para%el%proyecto%
! ! ! 86! Tal!y!como!se!observa!en!el!diagrama!anterior,!cada!pista!tiene!integrados!tres! tipos!de!nodos!ganancia:!uno!para!implementar!la!opción!de!‘enmudecer!pista’,!otro! para!la!aplicación!del!‘solo’!sobre!una!pista!y!otro!para!controlar!el!nivel!de!volumen! de!una!pista!en!concreto.!Todas!las!salidas!de!los!nodos!ganancia!de!cada!una!de!las! pistas!se! conectan! con!un! nodo!final! que! controla!el! nivel! del!volumen! de!la!salida! global!de!la!composición!musical.! ! La!pregunta!que!surge!al!analizar!el!diagrama!anterior!es:!¿de!dónde!provienen! los! archivos! fuentes?! Como! se! ha! comentado! anteriormente,! cada! pista! posee! un! conjunto!de!fragmentos!y!cada!uno!de!ellos!está!asociado!con!un!recurso!de!audio!–un! archivo!de!músicaa.!Internamente,!cada!fragmento!guarda!una!instancia!de!lo!que!se! conoce!como!AudioSourceNode,!que!almacena!información!sobre!el!archivo!de!sonido! en! cuestión! y! su! buffer! interno.! A! continuación! se! muestra! un! extracto! de! código! donde!se!realiza!la!asociación!entre!el!archivo!y!el!nodo!fuente.! ! ! Ilustración%45.%Extracto%de%código%de%la%inicialización%del%nodo%fuente%
! ! ! 87! ! 11.4""División"de"fragmentos" La!división!de!fragmentos!supone!una!de!las!funcionalidades!del!editor!online! más! relevantes! ya! que! permite,! dado! un! fragmento! que! alberga! una! composición! musical,!seleccionar!y!cortar!aquella!proporción!de!la!misma!que!no!interese!para!la! reproducción! final.! ! Para! implementar! esta! funcionalidad! se! precisa! de! ciertas! funciones!básicas!y!auxiliares,!como!actualizar!tanto!en!el!cliente!como!en!el!servidor,! los!valores!de!comienzo,!fin!y!longitud!del!fragmento!en!cuestión.!A!continuación!se! muestra!un!ejemplo!de!código!en!el!que!se!actualiza!en!la!base!de!datos!el!parámetro! de!posición!de!comienzo!de!un!fragmento!determinado.! ! ! Ilustración%46.%Código%para%la%actualización%en%la%base%de%datos%del%parámetro%‘start’%.% Una!vez!que!el!usuario!haya!seleccionado!la!opción!de!cortar!fragmento,!éste! indicará! mediante! el! clic! de! ratón! la! posición! donde! desea! que! se! haga! efectivo! el! corte.!Se!calcula!el!nuevo!final!del!fragmento!a!partir!de!dicha!posición!y!se!crea!un! nuevo! fragmento! que! parta! de! esa! posición! hasta! el! final! previo! del! fragmento! a! cortar.! Se! actualizan! también! en! el! servidor! los! nuevos! valores! de! comienzo,! fin! y! longitud!de!cada!uno!de!los!fragmentos.! !
! ! ! 88! 11.5""Utilidad"‘Deshacer’" Otra!de!las!funcionales!relevantes!que!presenta!la!aplicación!desarrollada!es!la! posibilidad!de!deshacer!las!operaciones!realizadas.!Supongamos!que!el!usuario!decide,! en! un! momento! dado,! eliminar! uno! de! los! fragmentos! del! proyecto! porque! lo! considera! oportuno.! Segundos! más! tarde,! se! da! cuenta! de! que! ha! cometido! un! pequeño!fallo!al!eliminar!dicho!fragmento!y!desea!rectificar!su!decisión.!Gracias!a!la! opción!de!‘Deshacer’!esto!se!hace!posible.!! Dicha!funcionalidad!se!basa!en!el!patrón!denominado!Memento,!que!permite! deshacer!las!operaciones!realizadas!por!el!usuario!sobre!un!modelo!concreto.!! En!el!caso!de!la!aplicación!desarrollada,!se!ha!hecho!uso!de!la!gema!de!Rails! conocida!como!Paper_Trail,#que!permite!al!programador!especificar!qué!modelos!van! a!presentar!esta!opción!y!qué!operaciones!de!los!mismos!podrán!ser!revertidas.!Para! cada!una!de!las!!operaciones!que!se!ha!especificado!que!pueden!ser!revertidas,!se!crea! un! enlace! que! redirige! el! flujo! hacia! el! controlador! encargado! de! seleccionar! las! versiones!almacenadas!previamente!en!la!base!de!datos!y!revertirlas.!!A!continuación! se! muestra! el! código! correspondiente! al! controlador! de! versiones! que! permite! deshacer!las!operaciones.! ! !! Ilustración%47.%Método%revertir%del%controlador%de%versiones%
! ! ! 89! 11.6""Utilidad"‘Recorte"de"imagen’" A!la!hora! de! editar!el!perfil! de! usuario,!una!de! las! opciones!que! presenta! la! aplicación! es! la! posibilidad! de! seleccionar! el! área! de! la! imagen! especificada! por! el! usuario!que!desea!mostrar!como!imagen!de!perfil.!Últimamente!esto!se!está!poniendo! en! práctica! en! diversas! aplicaciones! móviles! y! web,! a! la! vez! que! en! distintas! redes! sociales!bastante!conocidas.!Por!eso,!la!aplicación!desarrollada!no!iba!!a!ser!menos.!! Para! implementar! dicha! funcionalidad! se! ha! hecho! uso! de! la! gema! de! Rails! denominada! RMagic.# Una! vez! que! el! usuario! ha! seleccionado! la! imagen! que! desea! presentar!como!avatar,!se!le!proporciona!a!éste!un!mecanismo!para!especificar!el!área! de!dicha!imagen!que!desea!mostrar!finalmente,!tal!y!como!se!muestra!en!la!imagen! siguiente.! ! ! Ilustración%48.%Ejemplificación%del%recorte%de%la%imagen%de%perfil%
! ! ! 96! § Utilidad!de!deshacer! § Cortar!un!fragmento! § Eliminación!de!una!pista! § Eliminación!de!un!fragmento! § Aplicación!de!un!fundido! ! 12.3""Pruebas"de"rendimiento" En! ingeniería! del! software,! las pruebas! de! rendimiento son! aquellas! que! se! realizan!desde! una! perspectiva! para! determinar! lo! rápido!que! ejecuta!una! tarea!un! sistema!en!condiciones!particulares!de!trabajo.!Asimismo!puede!servir!para!validar!y! verificar! otros! atributos! de! la! calidad! del! sistema,! tales! como! la escalabilidad,! fiabilidad y!uso!de!los!recursos.!Las!pruebas!de!rendimiento!son!un!subconjunto!de! la ingeniería! de! pruebas,! una! práctica informática! que! se! esfuerza! por! mejorar! el! rendimiento,!englobándose!en!el!diseño!y!la!arquitectura!de!un!sistema,!antes!incluso! del!esfuerzo!inicial!de!la!codificación.! En!el!caso!de!este!tipo!de!prueba!se!ejecutaron!pruebas!de!carga,!de!manera! que!se!sometía!el!sistema!a!una!gran!sobrecarga!de!peticiones!y!se!observaba!que!el! resultado!obtenido!era!deseado.! La! prueba! más! importante! de! este! tipo! que! se! realizó! fue! la! de! abrir! varios! navegadores! y! someter! la! aplicación! a! numerosas! peticiones! y! comprobar! cómo! respondía!el!sistema.! 12.4""Pruebas"de"validación" Este! tipo! de! pruebas! son! el! proceso! de! revisión! que! verifica! que! el! sistema! de!software! producido! cumple! con! las! especificaciones! y! que! logra! su! cometido.!! Normalmente!es!una!parte!del!proceso!de!pruebas!de!software!de!un!proyecto,!que! también! utiliza! técnicas! tales! como! evaluaciones,! inspecciones! y! tutoriales.! La!
! ! ! 97! validación! es! el! proceso! de! comprobar! que! lo! que! se! ha! especificado! es! lo! que! el usuario!realmente!quería.! Una!de!las!pruebas!realizadas!en!este!apartado!fue!la!comprobación!de!que!se! podía!añadir!más!de!un!fragmento!sobre!una!pista!concreta.!Al!realizarla!se!comprobó! que!había!un!pequeño!fallo!en!la!colocación!del!fragmento!nuevamente!añadido!y!es! que! éste! se! pintaba! al! principio! de! la! pista,! cuando! debería! pintarse! justo! a! continuación! del! fragmento! anterior! en! caso! de! que! lo! hubiera.! Debido! al! descubrimiento! de! este! pequeño! detalle,! la! implementación! del! proyecto! se! vio! ligeramente!retrasada.! Las!pruebas!de!este!tipo!más!importantes!fueron:! § Añadir!un!fragmento! § Añadir!una!pista! § Añadir!un!nuevo!usuario!colaborador! § Eliminación!de!un!proyecto! § Publicación!de!un!proyecto! " ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 98! 13. Resultados"y"conclusiones" ! Después!de!todo!el!trabajo!realizado,!llega!el!momento!de!recapacitar!sobre!los! resultados! obtenidos! con! el! desarrollo! del! proyecto,! evaluando! cada! uno! de! los! objetivos!alcanzados.! ! 13.1""Aplicación"Multiplataforma" Al! tratarse! de! una! aplicación! web! se! extiende! el! uso! de! esta! plataforma! a! cualquier! usuario! de! cualquier! sistema! operativo.! De! esta! manera,! se! obtiene! un! público!mayor!que!hará!uso!de!la!aplicación,!facilitando!así!su!extensión!a!usuarios!de! nuevos!sistemas!operativos!o!actualizaciones!de!los!mismos.! La! portabilidad! y! compatibilidad! de! aplicaciones! entre! los! distintos! sistemas! operativos!siempre!ha!sido!un!gran!problema!a!la!hora!de!desarrollar!aplicaciones!que! abarquen!todo!el!público!posible.!Hasta!ahora,!siempre!se!desarrollan!las!aplicaciones! según!el!sistema!operativo!al!que!vayan!dirigidas!sin!posibilidad!de!exportarlo!a!otro! diferente.! Dado!que!el!uso!de!las!aplicaciones!móviles!y!web!se!está!extendiendo!cada!vez! más,!se!vio!la!oportunidad!de!desarrollar!el!editor!de!audio!online!colaborativo!como! una! aplicación! web,! a! la! que! cualquier! usuario! procedente! de! cualquier! parte! del! mundo! y! accediendo! desde! cualquier! sistemas! operativo,! pueda! hacer! uso! de! la! misma.! ! ! !
! ! ! 99! 13.2""Aplicación"colaborativa" Uno! de! los! objetivos! que! perseguía! el! desarrollo! de! esta! aplicación! y! que,! finalmente,! se! ha! logrado,! es! crear! una! aplicación! en! la! que! cualquier! composición! musical!sea!obra!de!múltiples!usuarios.!De!esta!manera,!cuando!un!usuario!crea!un! proyecto! queda! disponible! para! el! resto! de! usuarios! de! la! aplicación,! dándoles! la! posibilidad! de! subir! cualquier! aportación! musical! al! mismo.! Por! tanto,! un! usuario! dispondrá! de! proyectos! propios,! es! decir,! proyectos! creados! por! él! mismo,! y! de! proyectos!en!los!que!colabora,!que!han!sido!creados!por!otros!usuarios!y!en!los!que!se! le!permite!realizar!cambios!y!modificaciones!según!considere!oportuno.!La!principal! diferencia!entre!un!proyecto!creado!por!el!propio!usuario!y!otro!en!el!que!colabora,!es! que!la! decisión!final! de!publicarlo! o! bien,! eliminarlo,! sólo! la! puede! tomar! el! propio! usuario!creador!del!proyecto.! ! ! Ilustración%54.%Opciones%disponibles%únicamente%para%el%usuario%creador%del%proyecto% En! el! caso! de! que! el! usuario! que! visita! un! proyecto! sea! un! colaborador! del! mismo,! se! le! debía! dar! también! la! posibilidad! de! abandonarlo! debido! a! diversas! razones.! Por! ello,! si! se! accede! a! un! proyecto! como! usuario! colaborador! se! debe! mostrar!esta!opción,!tal!y!como!se!observa!en!la!siguiente!figura.! ! ! Ilustración%55.%Opción%de%abandonar%un%proyecto%para%un%usuario%colaborador%
! ! ! 100! ! 13.3"Funcionalidad"social" Tal! y! como! se! ha! comentado! en! el! apartados! anteriores,! la! aplicación! desarrollada!tiene!un!objetivo!principal,!y!es!romper!con!esa!individualidad!a!la!hora! de!crear! obras! musicales.! Antes,!el!autor!de!una!composición!musical!era!el!mismo! usuario!que!hacía!de!la!aplicación!que!utilizase!para!ese!fin.!Con!esta!aplicación!web,!el! autor!de!una!obra!deja!de!ser!uno!solo!y!pasan!a!ser!muchos!los!usuarios!a!los!que!se! atribuyen!los!reconocimientos!de!autor!de!una!pista!musical.! Para! poder! aportar! esta! funcionalidad! al! proyecto! se! comenzó! diseñando! y,! posteriormente!desarrollando,!un!módulo!social!en!el!que!cada!usuario!se!registraba,! creaba! un! perfil! y! podría! visitar! y! ponerse! en! contacto! con! otros! usuarios! de! la! aplicación,! bien! para! obtener! información! sobre! sus! gustos! musicales! y! decidir! si! participaban!ambos!en!la!creación!de!un!proyecto!o!bien!para!tomar!decisiones!sobre! el! curso! que! llevaría! un! proyecto! que! ya! había! sido! creado! y! en! el! que! ambos! colaboraban.! ! % Ilustración%56.%Bandeja%de%entrada%de%los%mensajes%de%un%usuario%
! ! ! 101! ! 13.4"Funcionalidad"de"audio" La! funcionalidad! de! audio! que! presenta! actualmente! la! aplicación! es! la! funcionalidad!mínima!que!cualquier!editor!de!audio!debería!proporcionar.!El!resultado! de!este!módulo!ha!sido!muy!satisfactorio!ya!que!gracias!a!la!Web!Audio!API!se!han! podido!cubrir!los!siguientes!requisitos:! ! Reproducción"simultánea"de"las"pistas"de"un"proyecto" Cuando!se!accede!!a!un!proyecto!concreto!y!se!hace!clic!en!el!botón!de!play,# comienza! la! reproducción! de! todas! las! pistas! que! en! ese! momento! conforman! el! proyecto.!A!su!vez,!se!le!permite!al!usuario!la!pausa!de!la!reproducción!o!la!parada! definitiva,!según!se!desee!en!cada!momento.!La!sincronización!a!la!hora!de!reproducir! todas! las! pistas! del! proyecto! se! consigue! de! forma! transparente! gracias! ! a! la! Web! Audio!API,!!de!manera!que!en!el!caso!de!que!hubiera!algún!retraso!en!la!reproducción! de!alguna!de!ellas!sería!prácticamente!imperceptible!para!el!oído!humano.! ! ! Aplicación"de"un"solo"a"una"pista" Al! editar! una! composición! musical! y! trabajar! con! varias! pistas! simultáneamente,!en!ocasiones!es!útil!poder!escuchar!una!única!pista!que!de!entre! todas! las! que! integran! la! obra! con! detenimiento.! Para! ello! existe! lo! que! se! conoce! como!aplicar!un!solo!a!una!pista,!que!consiste!en!enmudecer!al!resto!de!la!pistas!y! reproducir! únicamente! la! pista! seleccionada.! De! esta! manera! es! más! fácil! detectar! posibles!imperfecciones!en!la!misma!o!detalles!que!se!quieran!eliminar!o!incorporar.! ! !
! ! ! 102! ! ! Enmudecer"una"pista"determinada" En! otras! ocasiones,! cuando! un! usuario! se! encuentra! editando! un! proyecto! puede!considerar!oportuno!enmudecer!la!salida!de!la!pista!para!verificar!que!el!resto! de!la!composición!es!correcta!y!de!su!agrado.!Esta!funcionalidad!resultó!muy!sencilla! de!implementar!y!desarrollar!dado!que!como!cada!pista!guardaba!un!registro!de!su! volumen!que!luego!era!procesado!por!el!nodo!de!ganancia!correspondencia,!bastaba! con!actualizar!el!volumen!de!dicho!nodo!a!0.!Una!vez!que!el!usuario!desea!finalizar!la! aplicación! de! este! efecto,! el! valor! que! tenía! anteriormente! el! volumen! la! pista! se! restaura!y!se!vuelve!a!escuchar!de!manera!normal.! ! Modificar"el"volumen"individual"de"una"pista" En!las!diversas!aplicaciones!que!existen!actualmente!de!música,!la!mayoría!de! ellas! presentan! la! funcionalidad! de! modificar! el! volumen! individual! de! cada! pista.! Muchos!de!los!deejays!juegan!con!esta!posibilidad!que!se!les!ofrece!para!que!algunas! pistas!sobresalgan!sobre!otras!y!se!escuchen!de!manera!más!potente.!!La!aplicación! desarrollada!!no!iba!a!ser!menos!y!de!esta!manera,!cada!pista!ofrece!la!posibilidad!de! modificar!su! volumen!individual! mediante! un! control! de! volumen! que! se! encuentra! gráficamente!junto!a!la!misma.! ! Aplicación"de"fundidos"entrantes"y"salientes"a"las"pistas" La!gran!mayoría!de!editores!de!audio!ofrecen!a!los!usuarios!la!posibilidad!de! aplicar!diferentes!efectos!de!sonido!sobre!las!pistas!que!componen!una!obra!musical.! Algunos! de! dichos! efectos! son! denominados! transiciones! de! audio! y! entre! ellos! se! encuentran!los!llamados!fundidos.!Si!el!usuario!desea!que!el!comienzo!de!una!pista! vaya! aumentando! progresivamente! de! volumen,! basta! con! que! seleccione! el! fragmento!sobre!el!que!quiere!aplicar!el!fundido!e!indique!el!valor!final!que!tendrá!el!
! ! ! 103! parámetro!volumen!así!como!el!tiempo!que!durará!la!aplicación!del!fundido.!Por!otro! lado,!si!lo!que!desea!es!que!el!final!de!la!reproducción!de!una!pista!no!sea!brusco!sino! que!el!volumen!vaya!disminuyendo!paulatinamente,!deberá!seleccionar!la!opción!de! fundido! saliente! y! especificar! los! mismos! parámetros! que! para! el! fundido! entrante,! salvo!que!en!este!caso,!la!aplicación!del!fundido!será!inversa!y!se!aplicará!al!final!del! fragmentos!correspondiente.! ! Interfaz"intuitiva" Durante! la! fase! de! análisis! y! del! estado! del! arte! se! estudiaron! y! evaluaron! diversas! herramientas.! La! gran! mayoría! de! ellas! eran! editores! musicales! y! una! características!básica!que!debían!presentar!todas!para!una!mejor!interacción! con! el! usuario!era!mostrar!y!ofrecer!una!interfaz!sencilla!a!la!vez!que!intuitiva,!que!facilitase! la!navegación!del!usuario!a!través!de!las!distintas!opciones!de!la!herramienta.!Si!un! usuario!se!enfrenta!por!primera!vez!a!una!interfaz!muy!sobrecargada!y!abrumadora! probablemente!acabe!por!desistir!de!ese!programa,!cosa!que!no!sucedería!si!se!tratase! de!una!interfaz!sencilla!de!usar!y!que!no!requiera!de!mucho!tiempo!en!adaptarse!a! ella.! Por! ello! se! colocaron! las! distintas! opciones! de! reproducción! y! edición! de! las! pistas!y!fragmentos!en!sitios!estratégicamente!estudiados!previamente.!En!el!caso!de! los! controles! de! reproducción,! tales! como! reproducir,! pausar,! parar! y! modificar! volumen,!se!incluyeron!todos!en!la!parte!inferior!de!la!vista,!mientras!que!los!controles! de!edición,!como!cortar!y!eliminar,!se!añadieron!en!una!barra!de!herramientas!situada! a!la!derecha!de!la!vista!de!un!proyecto.! ! ! Como! conclusiones! podemos! destacar! que! se! han! cumplido! los! objetivos! planteados!al!comienzo!del!desarrollo!de!este!proyecto!y!que!trabajar!con!la!librería!de! sonido!desarrollada!por!Chrome!y!denominada!Web!Audio!API,!ha!sido!sin!duda!una! satisfacción,!tanto!de!cara!al!aprendizaje!!como!de!cara!a!la!infinidad!de!posibilidades! que!permite.!Con!esta!tecnología!se!pueden!construir!aplicaciones!de!sonido!online!
! ! ! 104! muy!fácilmente!y!cumplan!con!la!mayoría!de!las!funcionales!que!proveen!los!editores! de!música!más!famosos!del!mercado.! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! 105! 14. Futuras"líneas"de"actuación" ! A! largo! de! este! apartado! se! hablará! de! distintas! funcionalidades! que! se! implementarán!una!vez!que!el!proyecto!sea!entregado.! 14.1""Grabar"audio" Durante! la! etapa! de! análisis! de! este! proyecto,! se! estudiaron! diferentes! funcionalidades!que!por!motivos!de!complejidad!o!dado!el!tiempo!que!se!necesitaba! invertir! para! implementarlas! se! ha! decidido! postergar! su! desarrollo.! Entre! dichas! funcionalidades!se!encuentra!la!de!proporcionar!al!usuario!la!opción!de!grabar!audio! online.!Esto!se!puede!hacer!mediante!la!librería!con!la!que!se!ha!realizado!el!resto!del! proyecto,! la! denominada! Web! Audio! API,! que! permite! capturar! sonido! desde! el! micrófono!del!ordenador!origen!o!desde!un!micrófono!externo!conectado!al!mismo.! Esta!funcionalidad! se! antoja!bastante! útil! para! aquellos! usuarios! que! deseen! aportar!su!voz!a!un!proyecto!o!bien!que!quieran!grabarse!a!sí!mismos!tocando!algún! instrumento.! Esta! funcionalidad! les! facilitaría! el! trabajo! ya! que! ahorrarían! tiempo! y! memoria! en! grabar! previamente! el! audio! en! su! ordenador! local! y! luego! subirlo! al! proyecto!en!cuestión.! 14.2"Descargar" En!un!futuro!inmediato!se!pretender!dar!al!usuario!la!opción!de!descargar!una! pista,!fragmento!o! la! composición!musical! de! un!proyecto.!El! objetivo!que!persigue! esta!funcionalidad!es!que!el!usuario!disponga!de!dicha!pista!en!su!ordenador!local!y!la! estudie!detenidamente!con!el!fin!de!aportar!una!pista!de!acompañamiento!con!otro! instrumento! musical.! Actualmente,! la! librería! Web! Audio! API! tan! solo! permite! la! exportación!a!archivos!con!extensión!.wav.!Si!el!usuario!desea!otro!tipo!de!extensión,! deberá!por!tanto!hacer!uso!de!software!adicional!para!convertirlo!al!formato!deseado.! !
! ! ! 112! Ilustración%64.%Formulario%para%la%creación%de%un%proyecto% Cuando! el! usuario! creador! de! un! proyecto! entre! a! la! vista! del! mismo,! en! la! barra! de! opciones! únicamente! aparecerá! la! opción! de! editar! información,! que! le! permite! modificar! la! información! básica! de! un! proyecto,! por! si! el! usuario! desea! rectificar! alguno! de! los! valores! de! los! campos! que! componen! la! información! del! proyecto.! ! ! Ilustración%65.%Acción%de%editar%la%información%de%un%proyecto% Cuando! el! usuario! pulse! sobre! dicho! botón,! el! diálogo! que! se! le! mostrará! a! continuación!será!como!el!que!se!observa!en!la!siguiente!figura.! !
! ! ! 113! ! Ilustración%66.%Menú%de%edición%de%un%proyecto% ! 15.5""Editar"proyecto" El!objetivo!principal!que!presenta!el!sistema!es!dar!al!usuario!la!posibilidad!de! editar,!musicalmente!hablando,!un!proyecto.!! ! Recursos:"subir"y"eliminar,"reproducir" Los!recursos!de!un!proyecto!son!los!diferentes!archivos!de!sonido!fuentes!que! conforman! parte! del! proyecto.! Una! vez! éstos! hayan! sido! subidos! y! añadidos! al! proyecto,!se!pueden!aplicar!sobre!ellos!las!siguientes!acciones.! !
! ! ! 114! Eliminar" Si! algún! usuario! desea! deshacerse! de! un! recurso! previamente! subido! al! proyecto,!se!le!da!la!opción!de!eliminarlo.!De!esta!manera,!supondrá!mayor!espacio!y! menos!tiempo!durante!la!carga!del!proyecto.!En!el!caso!de!que!el!recurso!a!eliminar! haya!sido!añadido!previamente!a!una!pista,!se!deberá!informar!al!usuario!de!que!al! eliminarlo,! también! se! eliminarán! todos! aquellos! fragmentos! que! contengan! dicho! recurso.! ! ! Ilustración%67.%Eliminar%recurso% ! Reproducir"recurso" En!el!apartado!de!recursos!de!proyectos!se!muestra!un!mensaje!de!ayuda!que! indica!que!haciendo!doble!clic!sobre!un!recurso!se!puede!reproducir!el!mismo.!Esto!es! útil!para!aquellos!usuarios!que!desconozcan!el!contenido!de!un!recurso!determinado! puedan!escucharlo,!sin!necesidad!de!cargarlo!y!arrastrarlo!previamente!a!una!pista!del! proyecto.! ! Añadir"a"pista" La!utilidad!principal!que!presentan!los!recursos!es!la!posibilidad!de!arrastrarlos! a! una! pista! y! convertirlos! en! fragmentos,! a! los! que! se! le! podrán! aplicar! diferentes! acciones!y!efectos!que!contribuyan!a!la!edición!de!la!composición!musical!y!a!la!mejora! de!la!calidad!del!sonido!resultante.! !
! ! ! 115! ! Ilustración%68.%Arrastrar%un%recurso%a%una%pista% ! Pistas" Las! pistas! de! un! proyecto! son! las! líneas! de! entrada! de! la! composición! resultante.!Un!proyecto!puede!albergar!un!número!ilimitado!de!pistas!y!sobre!ellas!se! pueden!agregar!diferentes!recursos,!que!serán!convertidos!en!fragmentos!para!poder! tratarlos!como!corresponde.! Cabe!recordar!que!las!acciones!que!se!pueden!aplicar!sobre!una!pista!ya!han! sido! comentadas! anteriormente! y! son! la! posibilidad! de! modificar! el! volumen! individualmente,! enmudecer! una! pista,! la! aplicación! de! un! solo! a! una! pista! o! la! eliminación!definitiva!de!una!pista!del!proyecto.!! ! ! Ilustración%69.%Pistas%de%un%proyecto% ! !
! ! ! 116! Fragmentos" Constituyen!uno!de!los!componentes!esenciales!en!un!proyecto!puesto!que!son! los! que! permiten! manipular! con! cierto! detalle! los! recursos! añadidos! al! proyecto.! A! continuación!se!especifican!las!diferentes!acciones!que!se!pueden!realizar!sobre!los! mismos.! ! Mover" Una!vez!añadido!un!fragmento!a!una!pista,!éste!puede!ser!desplazado!a!lo!largo! de!la!misma!con!el!fin!de!programar!cuándo!se!desea!que!comience!su!reproducción.! Cuando!se!añade!un!fragmento!a!una!pista,!por!omisión!se!añade!al!comienzo!de!la! misma!o!al!final!del!último!fragmento!que!se!encuentre!sobre!ella.!Si!el!usuario!desea! retrasar!su!reproducción!o!bien!modificarla!y!situarla!en!otro!instante!de!tiempo,!no! tiene!más!que!desplazar!el!fragmento!a!lo!largo!de!la!línea!de!tiempo!y!situarlo!donde! desee.! ! Ilustración%70.%Mover%fragmentos% ! Cortar" En!ocasiones,!de!un!recurso!realmente!interesa!una!cierta!parte!del!mismo!o! separar! la! reproducción! mediante! la! adición! de! una! pausa.! Por! esa! razón,! es! importante!tener!una!utilidad!de!cortar,!que!permite!al!usuario!seleccionar!qué!partes! del! fragmento! van! a! formar! parte! de! la! composición! final! y! cuáles! no.! Mediante! la! ejecución!de!este!caso!de!uso!aparece!un!nuevo!fragmento.! !
! ! ! 117! ! Ilustración%71.%Cortar%fragmentos% ! Aplicar"fundido"entrante" Para! aplicar! un! fundido! entrante! no! hay! más! que! seleccionar! el! fragmento! sobre!el!que!se!desee!aplicar!el!fundido!y!seleccionar!la!opción!correspondiente!en!el! panel!de!edición.!A!continuación!se!abrirá!un!panel!para!que!el!usuario!especifique!el! valor!final!del!fundido!y!el!tiempo!que!quiere!que!dure!el!efecto.! ! ! Ilustración%72.%Aplicar%fundido%entrante% ! Aplicar"fundido"saliente" Se!realiza!de!manera!similar!al!fundido!entrante,!salvo!que!para!activarlo!hay! que! pulsar! en! la! opción! correspondiente.! Una! vez! más,! el! usuario! debe! especificar! cuánto!tiempo!desea!que!dure!el!efecto.! !
! ! ! 118! ! Ilustración%73.%Aplicar%fundido%saliente% ! Eliminar"fragmento" ! Si!el!usuario!no!está!contento!con!el!resultado!de!la!edición!de!un!fragmento!o! considera! que! éste! ha! dejado! de! ser! útil! para! el! proyecto,! se! le! da! la! opción! de! eliminarlo.!Para!ello,!no!tiene!más!que!seleccionar!el!fragmento!correspondiente!y!a! continuación!hacer!clic!sobre!el!botón!de!‘Delete#fragment’.! ! ! Ilustración%74.%Eliminar%fragmento% !
! ! ! 119! ! ! 16. Anexo" B:" Especificación" de" los"casos"de"uso" 16.1"""Especificación"de"los"casos"de"uso" Para! comodidad! en! la! lectura! de! este! documento! se! ha! querido! detallar! la! especificación!de!los!casos!de!uso!de!los!usuarios!en!este!apartado.!De!esta!manera,!si! el!lector!desea!obtener!información!detallada!sobre!algún!caso!de!uso!concreto,!no! tiene!más!que!acceder!a!este!apartado!y!buscar!el!caso!de!uso!en!cuestión.! ! Especificación"de"casos"de"uso"h"Administrador" Nombre" Seleccionar" usuarios" ID" 1.1" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 11/12/2011! Actor"principal" Administrador! Personal" involucrado" El! administrador! podrá! seleccionar! los! usuarios! sobre! los! que! realizará!una!determinada!acción.! Descripción" A! la! hora! de! gestionar! los! usuarios,! el! administrador! podrá! utilizar!esta!opción!para!seleccionar!los!usuarios!sobre!los!que! realizará!una!acción!determinada.! Trigger" El!sistema!solicita!al!usuario!la!selección!de!usuarios!para!poder! ejecutar!una!determinada!acción.! Precondición" Se!muestra!una!lista!con!los!usuarios!registrados!en!el!sistema.! Postcondición" Los!usuarios!quedan!seleccionados.! Flujo"normal" 1. Se! muestra! un! formulario! con! el! que! seleccionar! los! usuarios!que!sufrirán!alguna!acción.! 2. Una!vez!indicados,!éstos!quedan!seleccionados.! Flujo"alternativo" ! Excepción" ! Includes" !
! ! ! 120! Requisitos" especiales" Debe! existir,! al! menos,! otro! usuario! en! el! sistema! para! que! pueda!ser!seleccionado.! Notas" ! Tabla%9.%Casos%de%uso%del%administrador%G%Seleccionar%usuarios% Nombre" Eliminar"usuario" ID" 1.2" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 11/12/2011! Actor"principal" Administrador! Personal" involucrado" El!administrador!podrá!eliminar!a!un!!usuario!del!sistema!por! cualquier!razón!o!motivo.! Descripción" A! la! hora! de! gestionar! los! usuarios,! el! administrador! podrá! eliminar!a!un!usuario!del!sistema.! Trigger" ! Precondición" ! Postcondición" El!usuario!queda!eliminado!del!sistema.! Flujo"normal" 1. El!administrador!selecciona!el!usuario!a!eliminar!con!el! caso!de!uso!1.1.! 2. Una!vez!seleccionado,!hace!clic!en!el!botón!de!Eliminar! usuario.! 3. Se!pide!confirmación!al!usuario.! 4. Si! la! confirmación! es! positiva,! el! usuario! queda! eliminado!del!sistema!así!como!toda!su!información.! 5. Si!es!negativa,!se!cancela!la!operación.! Flujo"alternativo" ! Excepción" ! Includes" Se!utiliza!el!caso!de!uso!1.1!a!Seleccionar!usuario! Requisitos" especiales" ! Notas" Se! debe! avisar! al! administrador! de! que! va! a! eliminar! a! un! usuario!y!se!le!pedirá!confirmación.! Tabla%10.%Casos%de%uso%del%administrador%G%Eliminar%usuario% Nombre" Añadir"usuario" ID" 1.3" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 11/12/2011! Actor"principal" Administrador! Personal" involucrado" El!administrador!podrá!añadir!algún!usuario!a!la!base!de!datos! del!sistema.! Descripción" A! la! hora! de! gestionar! los! usuarios,! el! administrador! podrá!
! ! ! 121! utilizar!esta!opción!para!añadir!a!algún!usuario!concreto.! Trigger" ! Precondición" El!nombre!de!usuario!o!nick!no!debe!existir!previamente!en!la! base!de!datos.! Postcondición" El!usuario!queda!registrado!en!el!sistema.! Flujo"normal" 1. El! administrador! accede! al! menú! para! gestionar! usuarios.! 2. Hace!clic!en!la!opción!de!Añadir#nuevo#usuario.! 3. Se! muestra! un! formulario! para! que! rellene! la! información!correspondiente.! 4. Se!validan!los!datos!en!el!sistema.! 5. Hace!clic!en!la!opción!de!Aceptar.! Flujo"alternativo" 4a. La!verificación!de!los!datos!es!negativa.!! 4a.1. Se! informa! al! administrador! de! las! causas! y! se! le! pide!que!ingrese!de!nuevo!los!datos!correctos.! Excepción" ! Includes" ! Requisitos" especiales" El!usuario!a!añadir!no!debe!estar!registrado!previamente!en!el! sistema.! Notas" ! Tabla%11.%Casos%de%uso%del%administrador%G%Añadir%usuario% Especificación"de"casos"de"uso"h"Usuario"no"registrado" Nombre" Registrarse" ID" 2.1" Creador"por" Laia!Pérez!Ríos! Fecha! 05/04/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 18/09/2012! Actor"principal" Usuario!no!registrado! Personal" involucrado" Usuario!no!registrado:!podrá!acceder!al!sistema!y!hacer!uso!de! todas!las!funcionalidades!que!éste!ofrece.! Descripción" A! un! usuario! no! registrado! siempre! se! le! da! la! posibilidad! de! registrarse! en! el! sistema! para! poder! acceder! a! todas! las! funcionalidades! disponibles.! Para! ello! debe! rellenar! un! formulario! en! el! que! se! especifica! su! nombre! de! usuario! y! contraseña.!Posteriormente,!el!sistema!validará!la!operación.! Trigger" ! Precondición" 1. El!usuario!no!puede!estar!ya!registrado.!! 2. El!nombre!de!usuario!o!nick!no!debe!estar!escogido!por! otro!usuario.! 3. El!email!que!introduzca!debe!ser!válido.! 4. El!email!que!introduzca!no!debe!estar!escogido!por!otro! usuario.!
! ! ! 128! las!causas!y!pedir!que!envíe!la!información!de!nuevo.! Includes" ! Requisitos" especiales" ! Notas" Las! valoraciones! realizadas! por! los! usuarios! no! registrados! se! diferenciarán!de!las!de!los!usuarios!registrados.!En!este!último! caso,!se!denominan!evaluaciones.! Tabla%21.%Casos%de%uso%de%usuario%no%registrado%G%Valorar%proyecto% Nombre" Buscar"usuario" ID" 2.11" Creador"por" Laia!Pérez!Ríos! Fecha! 16/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 18/09/2012! Actor"principal" Usuario!no!registrado! Personal" involucrado" Usuario! no! registrado:! esta! operación! le! permite! buscar! usuarios!existentes!en!la!base!de!datos!del!sistema!y!así,!si!lo! desea,!visitar!su!perfil!personal.! Descripción" Este!caso!de!uso!permite!a!un!usuario!realizar!búsquedas!de!los! distintos!usuarios!que!constituyen!la!comunidad.!Para!optimizar! el! proceso,! se! pueden! seleccionar! algunos! parámetros! para! acotar!la!búsqueda.! Trigger" ! Precondición" ! Postcondición" El!resultado!de!la!búsqueda!se!muestra!al!usuario.! Flujo"normal" 1. El!usuario!accede!el!menú!de!búsqueda.! 2. Comienza!a!teclear!el!nombre!del!usuario!a!buscar.! 3. El! sistema! realiza! la! búsqueda! interna! en! la! base! de! datos.! 4. Se!muestran!los!resultados!del!proceso.! 5. Selecciona!el!usuario!!deseado.! Flujo"alternativo" 2a. El! usuario! también! puede! activar! la! búsqueda! filtrada,! que!le!permite!especificar!el!valor!de!algunos!parámetros!y! así!acotar!la!búsqueda.! Excepción" El! usuario! debe! poder! cancelar! la! operación! en! cualquier! momento.! Includes" ! Requisitos" especiales" La!búsqueda!interna!debe!estar!optimizada!para!que!el!sistema! no!tarde!demasiado!en!mostrar!los!resultados.! Notas" ! Tabla%22.%Casos%de%uso%de%usuario%no%registrado%G%Buscar%usuario% !
! ! ! 129! Nombre" Visitar" perfil" de" usuario" ID" 2.12" Creador"por" Laia!Pérez!Ríos! Fecha! 16/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 18/09/2012! Actor"principal" Usuario!no!registrado! Personal" involucrado" Usuario!no!registrado:!puede!acceder!a!la!información!pública! de!un!usuario!registrado!en!el!sistema.! Descripción" El! usuario! puede! visitar! en! todo! momento! el! perfil! de! un! usuario! existente! en! el! sistema.! Accederá! únicamente! a! la! información!que!sea!visible!y!catalogada!como!pública.! Trigger" ! Precondición" El!usuario!al!que!visite!debe!estar!registrado!en!el!sistema.! Postcondición" Se!muestra!el!perfil!de!usuario.! Flujo"normal" 1. El!usuario!hace!clic!en!el!enlace!de!un!usuario.! 2. Accede!!a!la!página!en!la!que!se!aloja!el!perfil!de!usuario! y!donde!se!muestran!toda!la!información!relativa!al!mismo,! como!los!proyectos!en!los!que!contribuye.! Flujo"alternativo" ! Excepción" 2a. El! usuario! también! puede! acceder! al! perfil! de! usuario! mediante!el!caso!de!uso!2.11.! Includes" ! Requisitos" especiales" Solo! puede! acceder! a! la! información! pública! del! perfil! de! usuario.! Notas" ! Tabla%23.%Casos%de%uso%de%usuario%no%registrado%G%Visitar%perfil%de%usuario% Nombre" Enmudecer"pista" ID" 2.13" Creador"por" Laia!Pérez!Ríos! Fecha! 21/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 21/09/2012! Actor"principal" Usuario!no!registrado! Personal" involucrado" Usuario!no!registrado:!puede!enmudecer!una!o!varias!pistas.! Descripción" Al! reproducir! un! proyecto,! el! usuario! puede! optar! por! enmudecer! una! o! varias! pistas,! de! manera! que! cuando! interprete! el! proyecto,! las! pistas! enmudecidas! no! se! escucharán.! Trigger" ! Precondición" ! Postcondición" La!o!las!pistas!seleccionadas!quedan!enmudecidas.! Flujo"normal" 1.! El!usuario!accede!a!la!aplicación.! 2.! Vista!un!proyecto!con!el!caso!de!uso!2.4.! 3.! Hace! clic! en! el! botón! de! Enmudecer! en! el! panel! de! la!
! ! ! 130! pista!que!desea!que!no!se!oiga.! 4.! El!botón!cambia!de!color!para!indicar!al!usuario!que!la! pista!está!enmudecida.! 5.! Si!desea!enmudecer!alguna!pista!más,!el!usuario!vuelve! al!paso!3.! 6.! Al! reproducir! el! proyecto,! las! pistas! marcadas! no! se! escucharán.! Flujo"alternativo" ! Excepción" ! Includes" Si!el! usuario!desea! volver! a!activar! el!sonido! de!la! pista,! solo! tiene!que!pulsar!de!nuevo!el!botón!de!Enmudecer.! Requisitos" especiales" ! Notas" ! Tabla%24.%Casos%de%uso%de%usuario%no%registrado%G%Enmudecer%pista% Nombre" Aplicar"solo" ID" 2.14" Creador"por" Laia!Pérez!Ríos! Fecha! 21/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 21/09/2012! Actor"principal" Usuario!no!registrado! Personal" involucrado" Usuario!no!registrado:!puede!aplicar!solo.! Descripción" Si! el! usuario! desea! oír! una! única! pista! en! concreto,! puede! enmudecer!todas!las!demás!o!bien!hacerlo!de!una!manera!más! sencilla!y!rápida,!aplicando!el!solo!a!una!pista.! Trigger" ! Precondición" ! Postcondición" La! única! pista! que! se! reproduce! es! aquella! en! la! que! se! ha! aplicado!el!solo.! Flujo"normal" 1.! El!usuario!accede!a!la!aplicación.! 2.! Vista!un!proyecto!con!el!caso!de!uso!2.4.! 3.! Hace!clic!en!el!botón!Solo!del!panel!de!una!pista.! 4.! El!botón!cambia!de!color!para!indicar!al!usuario!que!a!la! pista!se!le!ha!aplicado!un!solo.! 5.! Al! reproducir! el! proyecto,! solo! se! escuchará! la! pista! sobre!la!que!se!ha!aplicado!el!solo.! Flujo"alternativo" ! Excepción" Solo! puede! aplicar! el! solo! a! una! única! pista! a! la! vez.! Si! ! el! usuario!aplica!un!solo!a!una!pista!y,!a!continuación,!se!lo!aplica! a!otra,!sobre!la!primera!ya!no!se!aplicará!el!solo!y!únicamente! se!aplicará!sobre!la!segunda.! Includes" ! Requisitos" !
! ! ! 131! especiales" Notas" Si!el!usuario!desea!volver!a!escuchar!el!resto!de!los!canales!no! tiene!más!que!pulsar!de!nuevo!el!botón!de!Solo!en!la!pista!en!la! que!previamente!lo!había!pulsado.! Tabla%25.%Casos%de%uso%de%usuario%no%registrado%G%Aplicar%so% ! Especificación"de"casos"de"uso"h"Usuario"registrado" Nombre" Iniciar"sesión" ID" 3.1" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!le!permitirá!entrar!en!el!sistema!para!hacer! uso!de!las!funcionalidades!disponibles.! Descripción" Una! vez! creado! una! entrada! más! en! la! base! de! datos! con! la! información! del! usuario,! éste! podrá! acceder! al! sistema! introduciendo!el!par!usuario!y!contraseña!en!el!formulario!de! acceso.! Trigger" ! Precondición" Debe!estar!registrado!internamente!en!el!sistema.! Postcondición" El!usuario!accederá!al!sistema!y!será!identificado.! Flujo"normal" 1. El!usuario!accede!al!formulario!de!acceso.! 2. Introduce! su! nombre! de! usuario! y! contraseña! en! el! formulario.! 3. Hace!clic!en!el!botón!de!Entrar!en!el!sistema.! 4. El!sistema!comprueba!y!valida!los!datos.! 5. Tras!la!verificación,!el!usuario!queda!identificado.! Flujo"alternativo" ! Excepción" 4a. La!validación!de!datos!es!negativa.! 4a.1. El! sistema! notifica! el! error! y! vuelve! a! estado! indicado!en!el!primer!paso.! Includes" ! Requisitos" especiales" ! Notas" Para!que!este!caso!de!uso!pueda!ser!ejecutado,!el!usuario!no! puede!haber!entrado!en!el!sistema!previamente.! Tabla%26.%Casos%de%uso%del%usuario%registrado%G%Iniciar%sesión%
! ! ! 132! Nombre" Cerrar"sesión" ID" 3.2" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! se! permite! al! usuario! salir! del! sistema! cuando!lo!desee!o!considere!oportuno.! Descripción" Una! vez! que! el! usuario! se! ha! identificado! en! el! sistema,! éste! podrá! cerrar! la! sesión! en! cualquier! momento! y! abandonar! la! aplicación.! Trigger" ! Precondición" El!usuario!debe!estar!registrado!e!identificado!en!el!sistema.! Postcondición" El!usuario!sale!de!la!aplicación.! Flujo"normal" 1. El! usuario! hace! clic! en! el! botón! de! Cerrar# sesión,! accesible!desde!cualquier!página!de!la!aplicación.! 2. El!sistema!cambia!el!estado!del!usuario!a!no!identificado! y!restringe!el!número!de!funcionalidades!disponibles.! Flujo"alternativo" ! Excepción" ! Includes" ! Requisitos" especiales" Si!el!usuario!está!trabajando!en!algún!proyecto!cuando!ejecuta! este!caso!de!uso,!se!le!preguntará!si!desea!guardar!los!cambios.! Notas" Para! llevar! a! cabo! este! caso! de! uso,! el! usuario! debe! estar! previamente!registrado.! Tabla%27.%Casos%de%uso%del%usuario%registrado%G%Cerrar%sesión% Nombre" Mandar"mensaje" ID" 3.3" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! permite! establecer! la! comunicación! entre! dos!usuarios!del!sistema.! Descripción" Si!es!preciso!notificar!algún!hecho!a!los!usuarios,!o!ponerse!en! contacto!con!algún!usuario!en!concreto,!se!puede!establecer!la! comunicación! con! los! mismos! a! través! de! un! sistema! de! mensajería.! Trigger" ! Precondición" El!usuario!debe!haber!accedido!al!sistema.! Postcondición" El!mensaje!llega!al!buzón!del!destinatario.! Flujo"normal" 1. El!usuario!accede!a!la!aplicación!mediante!su!nombre!de! usuario!y!contraseña,!haciendo!uso!del!caso!de!uso!3.1.! 2. Accede!al!sistema!de!mensajería.! 3. Selecciona!la!opción!de!enviar!un!correo!nuevo.!
! ! ! 133! 4. Especifica!el!destinatario.! 5. Envía!el!mensaje.! Flujo"alternativo" 1a. Identificación!no!válida.! 1a.1. El! sistema! indica! el! error! y! le! pide! que! se! autentifique!de!nuevo.! 4a. El!destinatario!no!es!correcto.! 4a.1. Se!le!comunica!que!el!destinatario!no!existe!o!no!es! válido!y!vuelve!a!especificar!otro.! Excepción" Si! se! produce! algún! fallo! durante! el! envío! del! mensaje,! se! le! debe!notificar!al!usuario!para!que!vuelva!a!intentarlo.! Includes" Se!utiliza!el!caso!de!uso!3.6!a!Especificar!destinatario! Requisitos" especiales" ! Notas" ! Tabla%28.%Casos%de%uso%de%usuario%registrado%G%Mandar%mensaje% ! Nombre" Leer"mensaje" ID" 3.4" Creador"por" Laia!Pérez!Ríos! Fecha! 19/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!al!usuario!leer!la!información!de!un! mensaje!que!ha!recibido.! Descripción" Este!caso!de!uso!da!la!posibilidad!al!usuario!de!leer!el!contenido! de!un!mensaje!que!ha!recibido.! Trigger" ! Precondición" Se!deben!haber!cargado!los!mensajes!del!usuario.! Postcondición" El!mensaje!pasa!a!estado!leído.! Flujo"normal" 1. El!usuario!accede!al!menú!de!mensajería.! 2. Selecciona!el!mensaje!que!desea!leer.! 3. Hace!clic!en!la!opción!Leer.! 4. Se! le! muestra! el! contenido! del! mensaje! seleccionado.! 5. El!mensaje!cambia!a!estado!"leído".! Flujo"alternativo" ! Excepción" Si!al!acceder!a!su!bandeja!de!entrada!no!se!cargan!los!mensajes! del!usuario,!se!le!notifica!para!que!recargue!la!página.! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%29.%Casos%de%uso%usuario%registrado%G%Leer%mensaje%
! ! ! 134! Nombre" Eliminar"mensaje" ID" 3.5" Creador"por" Laia!Pérez!Ríos! Fecha! 19/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!puede!limpiar!su!bandeja!de!entrada.! Descripción" Este! caso! de! uso! da! la! posibilidad! al! usuario! de! eliminar! un! mensaje!de!su!bandeja!de!entrada.! Trigger" ! Precondición" El!usuario!debe!estar!identificado!en!el!sistema.! Postcondición" El!mensaje!se!elimina.! Flujo"normal" 1. El!usuario!accede!al!menú!de!mensajería.! 2. Selecciona!el!mensaje!que!desea!eliminar.! 3. Hace!clic!en!la!opción!de!Eliminar.! 4. El!mensaje!se!borra!de!su!bandeja!de!entrada.! Flujo"alternativo" ! Excepción" Si!al!acceder!a!su!bandeja!de!entrada!no!se!cargan!los!mensajes! del!usuario,!se!le!notifica!para!que!recargue!la!página.! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%30.%Casos%de%uso%usuario%registrado%G%Eliminar%mensaje% Nombre" Especificar" destinatario" ID" 3.6" Creador"por" Laia!Pérez!Ríos! Fecha! 11/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! necesita! especificar! el! destinatario! de! su! mensaje.! Descripción" Si!el!usuario!va!a!mandar!algún!mensaje!debe!especificar!el!o! los!destinatarios!del!mismo.!Mediante!esta!opción!le!será!más! cómodo.! Trigger" ! Precondición" El!usuario!registrado!debe!haber!iniciado!un!mensaje!nuevo.! Postcondición" El!o!los!destinatarios!!quedan!especificados.! Flujo"normal" 1. El!usuario!accede!a!la!opción!de!especificar!destinatario.! 2. Comienza! a! escribir! el! nombre! o! el! correo! del! destinatario.! 3. El! sistema! busca! en! la! base! de! datos! las! posibles! coincidencias!para!que!el!usuario!seleccione!el!destinatario!
! ! ! 135! correcto.! 4. Selecciona!el!destinatario.! 5. Si!desea!añadir!otro!destinario!vuelve!al!paso!número!2.! Flujo"alternativo" 3a. El!sistema!no!encuentra!ninguna!coincidencia! 3a.1. El!usuario!deberá!especificar!el!correo!concreto!del! usuario!destinatario!o!el!nombre!de!usuario.! Excepción" ! Includes" ! Requisitos" especiales" La!búsqueda!de!los!correos!de!los!usuarios!del!sistema!no!debe! demorarse!demasiado.! Notas" ! Tabla%31.%Casos%de%uso%del%usuario%registrado%G%Especificar%destinatario% Nombre" Editar"perfil" ID" 3.7" Creador"por" Laia!Pérez!Ríos! Fecha! 19/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! permite! modificar! la! información! de! su! perfil.! Descripción" Una!vez!creada!una!cuenta!en!el!sistema!e!iniciada!la!sesión,!el! usuario!podrá!editar!la!información!personal!que!aparece!en!su! perfil!de!usuario.! Trigger" ! Precondición" El!usuario!debe!haber!accedido!al!sistema.! Postcondición" El!perfil!de!usuario!se!modifica.! Flujo"normal" 1. El!usuario!accede!a!la!aplicación!mediante!su!nombre!de! usuario!y!contraseña,!haciendo!uso!del!caso!de!uso!3.1.! 2. Accede!al!panel!de!Editar#perfil.! 3. Modifica!los!campos!que!considere!oportunos.! 4. Hace!clic!en!Guardar#cambios.! 5. El!sistema!actualiza!el!perfil!de!usuario.! Flujo"alternativo" ! Excepción" 4a. Si!alguno!de!los!datos!introducidos!es!incorrecto,!se!le! notificará!al!usuario!para!que!corrija!la!información.! 4b. Si! se! produce! algún! fallo! durante! el! envío! de! los! cambios,!se!le! debe! notificar!al!usuario!para! que! vuelva!a! intentarlo.! Includes" ! Requisitos" especiales" ! Notas" El!usuario!puede!cancelar!el!proceso.! Tabla%32.%Casos%de%uso%usuario%registrado%G%Editar%perfil%
! ! ! 136! Nombre" Subir"foto" ID" 3.8" Creador"por" Laia!Pérez!Ríos! Fecha! 19/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/12/2011! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!modificar!la!foto!de!su!perfil.! Descripción" Una!vez!creada!una!cuenta!en!el!sistema!e!iniciada!la!sesión,!el! usuario! podrá! subir,! si! lo! desea,! una! foto! como! avatar! de! su! perfil.! Trigger" ! Precondición" El!usuario!debe!haber!accedido!al!sistema.! Postcondición" El!perfil!de!usuario!se!modifica.! Flujo"normal" 1. El!usuario!accede!al!!panel!de!editar!perfil.! 2. Hace!clic!en!la!opción!Foto.! 3. Se! abre! un! cuadro! de! diálogo! en! el! que! el! usuario! puede!elegir!la!foto!a!subir.! 4. Selecciona!el!archivo!correspondiente.! 5. Hace!clic!en!el!botón!Aceptar.! 6. Hace!clic!en!Subir#foto.! 7. La!foto!de!perfil!de!usuario!queda!actualizada.! Flujo"alternativo" 5a.1. Si!no!está!conforme!con!la!foto!puede!seleccionar! un!nuevo!archivo!volviendo!al!paso!número!2.! Excepción" ! Includes" ! Requisitos" especiales" El! tamaño! del! archivo! seleccionado! por! el! usuario! se! debe! ajustar!al!detallado!por!el!sistema.! Notas" ! Tabla%33.%Casos%de%uso%usuario%registrado%G%Subir%foto% ! ! ! ! ! ! ! ! ! !
! ! ! 137! ! ! Nombre" Deshacer" operación" ID" 3.9" Creador"por" Laia!Pérez!Ríos! Fecha! 19/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! permite! deshacer! la! última! operación! aplicada.! Descripción" Con! la! ejecución! de! este! caso! de! uso,! el! sistema! regresa! al! estado! en! el! que! se! encontraba! antes! de! que! el! usuario! realizase!la!última!operación.! Trigger" ! Precondición" El!usuario!debe!haber!realizado!alguna!acción.! Postcondición" El!sistema!regresa!a!un!estado!anterior.! Flujo"normal" 1. El!usuario!realiza!una!operación.! 2. Hace! clic! en! la! opción! Deshacer! o! pulsa! la! combinación!de!teclas!Ctrl#+#z.! 3. El!sistema!regresa!al!estado!en!el!que!se!encontraba! antes! del! que! el! usuario! realizase! la! última! operación.! Flujo"alternativo" ! Excepción" ! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%34.%Casos%de%uso%usuario%registrado%G%Deshacer%operación% Nombre" Rehacer"operación" ID" 3.10" Creador"por" Laia!Pérez!Ríos! Fecha! 19/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 19/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! permite! rehacer! la! última! operación! aplicada.! Descripción" Cuando!el!usuario!decide!deshacer!una!operación,!se!le!da!la! posibilidad!de!rehacerla.! Trigger" ! Precondición" El!usuario!debe!haber!deshecho!!alguna!acción.! Postcondición" El!sistema!regresa!a!un!estado!anterior.! Flujo"normal" 1. El!usuario!deshace!una!operación.!
! ! ! 144! Notas" ! Tabla%42.%Casos%de%uso%de%usuario%registrado%G%Ver%propuesta% ! ! Nombre" Responder" propuesta" de" colaboración" ID" 3.18" Creador"por" Laia!Pérez!Ríos! Fecha! 18/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! puede! ver! las! propuestas! que! le! han! realizado!otros!usuarios!y!aceptarlas!o!bien,!rechazarlas.! Descripción" Cuando! un! usuario! recibe! una! propuesta! puede! optar! por! aceptarla!o!bien,!rechazarla.! Trigger" ! Precondición" La!propuesta!ha!de!ser!lanzada!y!visitada!por!el!destinatario!de! la!misma.! Postcondición" La!propuesta!es!aceptada!o!rechazada.! Flujo"normal" 1. El! usuario! se! registra! en! el! sistema! y! accede! a! su! cuenta.! 2. Accede!al!panel!de!Propuestas.! 3. Selecciona!una!propuesta.! 4. Hace!clic!en!el!enlace!de!la!propuesta.! 5. Se!le!muestra!el!contenido!de!la!misma.! 6. El!usuario!contesta!la!propuesta.! 7. La!propuesta!se!borra!de!la!lista!de!propuestas!del! usuario.! Flujo"alternativo" 6a. El!usuario!acepta!la!propuesta.! 6a.1. El! sistema! envía! una! notificación! al! usuario! que! lanzó!la!propuesta!diciendo!que!ha!sido!aceptada.! 6b. El!usuario!rechaza!la!petición.! Excepción" Si!se!produce!algún!fallo!durante!la!carga!de!las!propuestas,!se! debe!notificar!al!usuario!para!que!vuelva!a!intentarlo.! Includes" ! Requisitos" especiales" En!caso!de!que!el!usuario!acepte!la!petición,!se!!debe!garantizar! que!el!autor!de!la!misma!recibe!la!respuesta.! Notas" ! Tabla%43.%Casos%de%uso%de%usuario%registrado%G%Responder%propuesta%de%colaboración%
! ! ! 145! Nombre" Contestar"petición" ID" 3.18" Creador"por" Laia!Pérez!Ríos! Fecha! 18/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! puede! ver! las! propuestas! que! le! han! realizado!otros!usuarios!y!aceptarlas,!o!bien,!rechazarlas.! Descripción" Cuando! un! usuario! recibe! una! propuesta! puede! optar! por! aceptarla!o!bien,!rechazarla.! Trigger" ! Precondición" La!propuesta!ha!de!ser!lanzada!y!visitada!por!el!destinatario!de! la!misma.! Postcondición" La!propuesta!es!aceptada!o!rechazada.! Flujo"normal" 8. El! usuario! se! registra! en! el! sistema! y! accede! a! su! cuenta.! 9. Accede!al!panel!de!Propuestas.! 10. Selecciona!una!propuesta.! 11. Hace!clic!en!el!enlace!de!la!propuesta.! 12. Se!le!muestra!el!contenido!de!la!misma.! 13. El!usuario!contesta!la!propuesta.! 14. La! propuesta! se! borra! de! la! lista! de! peticiones! del! usuario.! Flujo"alternativo" 6c. El!usuario!acepta!la!propuesta.! 6c.1. El! sistema! envía! una! notificación! al! usuario! que! lanzó!la!propuesta!diciendo!que!ha!sido!aceptada.! 6d. El!usuario!rechaza!la!petición.! Excepción" Si!se!produce!algún!fallo!durante!la!carga!de!las!propuestas,!se! debe!notificar!al!usuario!para!que!vuelva!a!intentarlo.! Includes" ! Requisitos" especiales" En! caso! de! que! el! usuario! acepte! la! propuesta,! se! ! debe! garantizar!que!el!autor!de!la!misma!recibe!la!respuesta.! Notas" ! " Nombre" Evaluar"proyecto" ID" 3.19" Creador"por" Laia!Pérez!Ríos! Fecha! 24/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 24/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! puede! valorar! la! obra! musical! que! haya! visitado.! Descripción" Al!visitar!un!proyecto,!una!de!las!opciones!disponibles!es!la!de! contribuir!al!mismo!mediante!una!valoración!numérica!del!1!al! 5.! Estas! valoraciones! se! diferencian! de! las! realizadas! por! usuarios!que!no!están!registrados!en!el!sistema.! Trigger" !
! ! ! 146! Precondición" El!proyecto!debe!ser!público.! Postcondición" La!valoración!se!añade!a!las!demás!valoraciones!y!se!actualiza!la! calificación! final! del! proyecto! como! la! media! aritmética! de! todas!las!anteriormente!realizadas.! Flujo"normal" 1.! El!usuario!visita!un!proyecto!con!el!caso!de!uso!2.4.! 2.! Accede!al!apartado!de!Valorar.! 3.! Especifica!su!valoración!personal.! 4.! Hace!clic!en!el!botón!!Enviar#valoración.! Flujo"alternativo" ! Excepción" 4a. Si! se! produce! algún! error! al! enviar! la! valoración! del! proyecto,!se!debe!notificar!al!usuario!el!error!producido!y! las!causas!y!pedir!que!envíe!la!información!de!nuevo.! Includes" ! Requisitos" especiales" Estas! evaluaciones! realizadas! se! contabilizan! independientemente!de!las!valoraciones!realizadas!por!usuarios! no!registrados.! Notas" ! Tabla%44.%Casos%de%uso%de%usuario%registrado%G%Evaluar%proyecto% Nombre" Grabar"audio" ID" 3.20" Creador"por" Laia!Pérez!Ríos! Fecha! 18/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! teniendo! una! cuenta! en! el! sistema! es! posible!hacer!uso!del!módulo!de!grabación!para!que!el!usuario! realice!sus!propias!grabaciones.! Descripción" El! menú! de! grabación! online! permite! al! usuario! realizar! sus! propias!grabaciones!y!editarlas.! Trigger" ! Precondición" El!usuario!debe!haber!iniciado!sesión.! Postcondición" Se!realiza!la!grabación.! Flujo"normal" 1. El! usuario! se! registra! en! el! sistema! y! accede! a! su! cuenta.! 2. Accede!al!menú!Grabación#Online.! 3. Se!abre!un!cuadro!de!diálogo!para!que!configure!las! opciones!de!grabación.! 4. Se! le! muestra! el! menú! de! grabación! y! todos! sus! controles.! 5. El! usuario! hace! clic! en! el! botón! Rec! para! iniciar! la! grabación.! Flujo"alternativo" ! Excepción" Si! se! produce! algún! fallo! durante! la! grabación,! éste! debe! ser! notificado!al!usuario.!
! ! ! 147! Includes" Incluye!al!caso!de!uso!3.21!a!Configurar!opciones!de!grabación!! Requisitos" especiales" ! Notas" ! Tabla%45.%Casos%de%uso%de%usuario%registrado%G%Grabar%audio% Nombre" Configurar" opciones" de" grabación"" ID" 3.21" Creador"por" Laia!Pérez!Ríos! Fecha! 18/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:! permite!establecer!algunos!parámetros!de! grabación.! Descripción" Antes!de!comenzar!a!realizar!una!grabación,!se!abre!un!cuadro! de!diálogo!para!que!el!usuario!configure!algunos!parámetros!y! opciones!de!la!grabación.! Trigger" Este!caso!de!uso!se!ejecuta!automáticamente!cuando!el!usuario! accede! al! menú! de! grabación! online! o! porque! hace! clic! en# Opciones#de#grabación.! Precondición" El!usuario!debe!haber!accedido!al!menú!de!grabación!online.! Postcondición" Se!configuran!los!parámetros.! Flujo"normal" 1. El!usuario!accede!al!menú!Grabación#Online.! 2. Se!abre!un!cuadro!de!diálogo!para!que!configure!las! opciones!de!grabación.! 3. El!usuario!establece!los!parámetros!como!considere! oportuno.! 4. Se! le! pregunta! al! usuario! si! desea! guardar! esta! configuración!para!ser!usada!en!otro!momento.! 5. El!usuario!hace!clic!en!Aceptar.! Flujo"alternativo" 3a. El! usuario! puede! hacer! uso! de! una! configuración! predeterminada! o! bien! una! configuración! personalizada! guardada!previamente.! 4.a. El!usuario!responde!a!la!pregunta.! 4.a.1. Si! la! respuesta! es! afirmativa,! se! le! pide! que! introduzca! un! nombre! y! la! configuración! queda! almacenada.! 4.a.2. Si! la! respuesta! es! negativa,! no! se! realiza! ninguna! acción.! Excepción" ! Includes" ! Requisitos" especiales" Durante! la! ejecución! de! este! caso! de! uso! deben! estar! disponibles! las! configuraciones! predeterminadas! de! los!
! ! ! 148! parámetros!de!grabación.! Notas" ! Tabla%46.%Casos%de%uso%de%usuario%registrado%G%Configurar%opciones%de%grabación% Nombre" Activar/desactivar" metrónomo" ID" 3.22" Creador"por" Laia!Pérez!Ríos! Fecha! 24/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! puede! activar! o! desactivar! el! uso! de! un! metrónomo.! Descripción" Cuando! el! usuario! quiere! grabar! sonido! haciendo! uso! del! módulo!de!grabación!online!que!la!aplicación!ofrece,!una!de!las! opciones! que! se! le! presenta! es! la! de! activar! o! desactivar! el! metrónomo! para! que! la! grabación! le! resulte! más! fácil! de! realizar.! Trigger" ! Precondición" El!usuario!debe!haber!accedido!al!menú!de!grabación!online.! Postcondición" El!metrónomo!queda!activado!o!desactivado.! Flujo"normal" 1. El!usuario!accede!a!la!aplicación.! 2. Accede!al!menú!de!grabación!online.! 3. Selecciona! la! opción! de! activar! o! desactivar! el! metrónomo.! Flujo"alternativo" ! Excepción" ! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%47.%Casos%de%uso%de%usuario%registrado%G%Activar/desactivar%metrónomo% ! Nombre" Ajustar"tempo" ID" 3.23" Creador"por" Laia!Pérez!Ríos! Fecha! 20/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!establecer!el!valor!del!tempo.! Descripción" Este! caso! de! uso! permite! al! usuario! establecer! el! valor! del!
! ! ! 149! tempo!entre!un!rango!de!0!a!140.! Trigger" ! Precondición" El!usuario!debe!haber!accedido!al!menú!de!grabación!online.! Postcondición" El!valor!del!tempo!se!actualiza.! Flujo"normal" 1. El!usuario!accede!a!la!aplicación.! 2. Accede!al!menú!de!Grabación#online.! 3. Selecciona!la!opción!Ajustar#tempo#y!establece!el!nuevo! valor.! 4. El!usuario!hace!clic!en!Aceptar.! 5. El!valor!nuevo!del!tempo!se!actualiza.! Flujo"alternativo" ! Excepción" ! Requisitos" especiales" ! Notas" ! Tabla%48.%Casos%de%uso%de%usuario%registrado%G%Ajustar%tempo% Nombre" Pausar"grabación" ID" 3.24" Creador"por" Laia!Pérez!Ríos! Fecha! 24/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!pausar!la!grabación.! Descripción" Este!caso!de!uso!permite!al!usuario!pausar,!temporalmente,!la! grabación!que!está!realizando.! Trigger" ! Precondición" El!usuario!debe!haber!iniciado!una!grabación.! Postcondición" El! pista! queda! grabada! hasta! el! punto! actual! indicado! por! el! usuario.! Flujo"normal" 1. El!usuario!se!registra!en!el!sistema.! 2. Accede!al!menú!de!Grabación#Online.! 3. Se! le! muestra! el! menú! de! grabación! y! todos! sus! controles.! 4. Selecciona!la!opción!Rec!para!iniciar!la!grabación.! 5. Hace!clic!en!el!botón!Pause.! 6. La!grabación!se!detiene!temporalmente.! 7. Se!le!da!la!opción!de!reproducir!la!grabación!reciente!y! de!continuarla!o!borrarla!y!empezar!de!cero.! Flujo"alternativo" ! Excepción" ! Includes" ! Requisitos" especiales" !
! ! ! 150! Notas" ! Tabla%49.%Casos%de%uso%de%usuario%registrado%G%Pausar%grabación% Nombre" Parar"grabación" ID" 3.25" Creador"por" Laia!Pérez!Ríos! Fecha! 24/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!detener!la!grabación.! Descripción" Este!caso! de! uso! permite! al!usuario!detener!la!grabación!que! está!realizando.! Trigger" ! Precondición" El!usuario!debe!haber!iniciado!una!grabación.! Postcondición" El!grabación!se!detiene.! Flujo"normal" 1. El!usuario!se!registra!en!el!sistema.! 2. Accede!al!menú!de!Grabación#Online.! 3. Se! le! muestra! el! menú! de! grabación! y! todos! sus! controles.! 4. Selecciona!la!opción!Rec!para!iniciar!la!grabación.! 5. Pulsa!Stop!para!finalizarla.! 6. Se!le!da!la!opción!de!reproducir!la!grabación!reciente!y! de!continuarla!o!borrarla!y!empezar!de!cero.! 7. !Se!le!da!la!opción!de!guardar!la!pista!localmente!en!su! ordenador!o!en!un!proyecto!nuevo.!! Flujo"alternativo" 7.a. Si!desea!guardar!la!pista!localmente! 7.a.1. Se!abre!un!cuadro!de!diálogo!para!que!especifique! el!directorio!donde!se!desea!guardarla.! 7.b. Si!desea!crear!un!proyecto!nuevo! 7.b.1. Se!abre!un!cuadro!de!diálogo!para!que!especifique! los!parámetros!del!proyecto!y!el!usuario!pasa!a!ser!un! usuario!creador.! Excepción" ! Includes" Si!el!usuario!desea!guardar!la!grabación!incluye!al!caso!de!uso! 3.26!a!Guardar!grabación!!y!si!desea!crear!un!proyecto!nuevo! con!la!pista!recién!grabada!incluye!al!caso!de!uso!3.11!a!Crear! proyecto.! Requisitos" especiales" ! Notas" ! Tabla%50.%Casos%de%uso%de%usuario%registrado%G%Parar%grabación%
! ! ! 151! Nombre" Guardar"grabación" ID" 3.26" Creador"por" Laia!Pérez!Ríos! Fecha! 24/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!guardar!localmente!!la!grabación.! Descripción" Este! caso! de! uso! permite! al! usuario! guardar! localmente! la! grabación!que!acaba!de!realizar.! Trigger" Una! de! las! razones! por! las! que! este! caso! de! uso! de! puede! ejecutar!es!que!el!usuario!acepte!guardar!la!grabación.! Precondición" El!usuario!debe!haber!realizado!una!grabación.! Postcondición" El! grabación! se! almacena! localmente! en! el! ordenador! del! usuario.! Flujo"normal" 1. El!usuario!se!registra!en!el!sistema.! 2. Accede!al!menú!de!Grabación#online.! 3. Se! le! muestra! el! menú! de! grabación! y! todos! sus! controles.! 4. Realiza!una!grabación.! 5. Acepta!!guardar!la!grabación.! 6. Se! abre! un! diálogo! para! que! seleccione! la! ruta! donde! quiere!almacenarlo!dentro!de!su!ordenador!local.! Flujo"alternativo" 6a. !Si!el!usuario!decide!cancelar!la!operación! 6a.1. La!pista!no!será!guardada!y!se!regresa!al!menú!de! grabación.! Excepción" Si!no!hay!espacio!suficiente!en!el!disco!del!cliente!como!para! almacenar!la!pista!se!le!notificará!al!usuario.! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%51.%Casos%de%uso%de%usuario%registrado%G%Guardar%grabación% Nombre" Eliminar"grabación" ID" 3.27" Creador"por" Laia!Pérez!Ríos! Fecha! 24/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!permite!eliminar!!la!grabación.! Descripción" Si!el!usuario!no!está!conforme!con!la!grabación!recién!realizada! puede!eliminarla!y!empezar!de!cero.! Trigger" ! Precondición" El!usuario!debe!haber!seleccionado!una!grabación.!
! ! ! 152! Postcondición" La!grabación!realizada!se!elimina!de!la!aplicación.! Flujo"normal" 1. El!usuario!se!registra!en!el!sistema.! 2. Accede!al!menú!de!Grabación#online.! 3. Se! le! muestra! el! menú! de! grabación! y! todos! sus! controles.! 4. Realiza!una!grabación.! 5. Selecciona!la!grabación.! 6. Hace!clic!en!el!botón!Eliminar.! Flujo"alternativo" ! Excepción" Si!se!produce!algún!fallo!durante!la!eliminación!de!la!pista,!se! debe!garantizar!el!borrado!de!la!misma.! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%52.%Caso%de%uso%de%usuario%registrado%G%Eliminar%grabación% ! ! ! Nombre" Conectar" dispositivo"externo" ID" 3.28" Creador"por" Laia!Pérez!Ríos! Fecha! 20/09/2012! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario! registrado:! tiene! la! posibilidad! de! conectar! un! dispositivo!externo.! Descripción" Si! el! usuario! lo! desea,! puede! conectar! un! dispositivo! externo! para! realizar! la! grabación,! como! un! micrófono! o! un! instrumento.! Trigger" ! Precondición" ! Postcondición" El!archivo!queda!conectado!con!la!aplicación.! Flujo"normal" 1. El!usuario!se!registra!en!el!sistema.! 2. Accede!al!menú!de!grabación!de!audio.! 3. Se!le!muestra!el!menú!de!edición!!y!todos!sus!controles.! 4. Selecciona!la!opción!Conectar#dispositivo#externo.! 5. El! usuario! conecta! el! dispositivo! físico! por! el! puerto! hardware!correspondiente.! 6. El!sistema!detecta!el!dispositivo.! 7. Se! abre! un! cuadro! de! diálogo! para! establecer! la! configuración.!
! ! ! 153! 8. El!usuario!hace!clic!en!el!botón!de!Aceptar.! Flujo"alternativo" ! Excepción" Si!el!sistema!no!consigue!detectar!el!dispositivo!esto!ha!de!ser! informado! al! usuario! y! notificar! las! razones! por! las! que! se! dificulta!la!operación.! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%53.%Casos%de%uso%de%usuario%registrado%G%Conectar%dispositivo%externo% Nombre" Importar"audio" ID" 3.29" Creador"por" Laia!Pérez!Ríos! Fecha! 24/12/2011! Modificado"por" Laia!Pérez!Ríos! Fecha! de! modificación! 20/09/2012! Actor"principal" Usuario!registrado! Personal" involucrado" Usuario!registrado:!puede!importar!una!pista.! Descripción" Si! el! usuario! lo! desea,! puede! importar! una! pista! de! audio! existente! desde! su! ordenador! al! archivo! actual! que! está! creando!en!la!aplicación.! Trigger" ! Precondición" El!archivo!a!importar!no!puede!estar!dañado!y!debe!estar!en!un! formato!reconocido!por!la!plataforma.! Postcondición" La!pista!de!audio!queda!importada.! Flujo"normal" 1.! El!usuario!se!registra!en!el!sistema.! 2.! Accede!al!menú!de!Edición#de#audio.! 3.! Se!le!muestra!el!menú!de!edición!!y!todos!sus!controles.! 4.! Selecciona!la!opción!Importar#audio.! 5.! Se! abre! un! cuadro! de! diálogo! para! que! seleccione! un! archivo!local!que!desea!importar.! 6.! Pulsa!Aceptar.! Flujo"alternativo" 6a. Si!el!usuario!decide!cancelar!la!operación! 6a.1. No!se!importa!ninguna!pista!y!se!regresa!al!editor.! Excepción" Si!selecciona!un!tipo!de!archivo!en!un!formato!no!reconocido! por! la! aplicación,! se! notifica! al! usuario! para! que! convierta! el! archivo!a!un!formato!válido.! Includes" ! Requisitos" especiales" ! Notas" ! Tabla%54.%Casos%de%uso%de%usuario%registrado%G%Importar%audio%