scieee AI-readable full text Open interactive document viewer

Herramienta para facilitar el open government en la Administración Central

David Monzón, Carlos Enrique

Abstract

Los ayuntamientos cada vez están más interesados en lo que piensan sus ciudadanos y cómo poder entre todos hacer un gobierno con mayor participación de estos en algunas decisiones, mejorando los canales de comunicación. En este sentido, no cabe duda de que los principios del gobierno abierto, es decir, la transparencia, la participación y la colaboración, están siendo, demandados tanto por los organismos públicos como por los ciudadanos. Para conseguir este objetivo se desarrollará un portal web llamado Actívate por Galdar 2.0 en el cual los ciudadanos podrán pertenecer a una comunidad donde dialogarán en foros y propondrán proyectos. Además el portal les administrará una serie de herramientas que serán de utilidad para que participen en la ejecución del mismo.

Full text

Herramienta)para)facilitar)el)open) government)en)la)Administración)Local) Proyecto(Fin(de(Carrera( Universidad(de(las(Palmas(de(Gran(Canaria( ) ) Autor:(Carlos(E.(David(Monzón(( Tutores:(Alexis(Quedada(Arencibia( (((((Agustín(Sánchez(Medina( Proyecto(fin(de(carrera(de(Ingeniería(en(Informática(de(la(Universidad(de( Las(Palmas(de(Gran(Canaria(presentado(por(el(alumno:( Carlos(E.(David(Monzón( ( Título)del)Proyecto:) Herramienta(para(facilitar(el(open%government(en(la(Administración(Local( ( Tutores:) D.(Alexis(Quesada(Arencibia( D.(Agustín(Sánchez(Medina( ( ( ( ( ( ( Me%lo%contaron%y%lo%olvidé;%% lo%vi%y%lo%entendí;%% lo%hice%y%lo%aprendí.% % Confucio% % % % A%mi%familia,%% por%estar%siempre.% % ( Agradecimientos) Este(proyecto(es(la(culminación(de(todos(estos(años(de(carrera,(en(los(que(he( aprendido(y(sufrido(a(partes(iguales,(este(momento(es(para(acordarse(de(todas( aquellas(personas(que(han(influido(en(mí(y(agradecerles(todo(su(apoyo.( En(primer(lugar(agradecer(a(mi(familia,(mis(padres(y(mis(hermanos(por( apoyarme(en(cada(momento(y(darme(el(empujón(para(terminar(mis(estudios.( A(mis(compañeros(de(la(“Uni”,(agradecerles(a(ellos(todo(el(apoyo(que(me(han( dado(estos(años(ayudándome(en(todo(lo(que(necesitaba(y(explicando(todas(esas(cosas( que(nunca(salían.(Y(como(no,(en(especial,(a(Ione,(amigo(de(la(infancia(que(hemos( estado(soportándonos(durante(toda(la(vida(y(que(seguramente(seguiremos( aguantándonos(durante(mucho(tiempo(más.( A(mi(compañera(en(la(vida,(Jennifer,(que(tanto(ratos(hemos(estado( apoyándonos(y(ayudándonos(en(todo(para(terminar(de(una(vez(por(todas(nuestros( estudios.( A(mis(tutores(Alexis(Quesada(y(Agustín(Sánchez,(por(mostrarme(su(apoyo(a(la( hora(de(realizar(este(proyecto(y(por(estar(ahí(siempre(que(lo(necesitaba.( A(las(personas(de(colaboración(ciudadana(de(Gáldar(por(facilitarnos(nuestra( labor(y(hacer(más(fácil(la(realización(del(proyecto.( ( También(quiero(agradecer(a(los(miembros(del(IUCTC(por(hacerme(sentir( bienvenido(y(ayudándome(en(todo(lo(que(estaba(en(su(mano,(en(especial(a(dos( personas,(Jonathan(Alemán(y(a(Nancy(Ojeda(siendo(mis(dos(compañeros/tutores(de( los(que(he(aprendido(tanto(y(que(gracias(a(ellos(se(ha(podido(realizar(este(proyecto.( ( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 9 Índice) Agradecimientos......................................................................................................................7! 1..Introducción......................................................................................................................13! 2..Objetivos.............................................................................................................................14! 3..Estructura.del.documento............................................................................................15! 4..Estado.del.arte..................................................................................................................16! 4.1.Gobierno.de.España...............................................................................................................16! 4.2.Irekia..........................................................................................................................................16! 4.3.Gobierno.Abierto.de.Navarra.............................................................................................17! 4.4.Conclusiones............................................................................................................................18! 5..Metodología.......................................................................................................................19! 5.1.Modelo.de.proceso.de.software.........................................................................................19! 5.2.Lenguaje.de.modelado.........................................................................................................21! 5.3.Metodología.aplicada............................................................................................................21! 6..Planificación.temporal...................................................................................................23! 6.1.Introducción............................................................................................................................23! 6.2.Plan.de.trabajo........................................................................................................................23! 6.2.1!Planificación!temporal!estimada!.............................................................................................!23! 6.2.2!Dedicación!real!................................................................................................................................!27! 6.2.3!Tabla!comparativa!de!resultados!............................................................................................!30! 6.2.4!Conclusiones!.....................................................................................................................................!32! 7..Estudio.de.las.herramientas........................................................................................34! 7.1.Sitio.web....................................................................................................................................34! 7.1.1!Drupal!..................................................................................................................................................!34! 7.1.2!Moodle!.................................................................................................................................................!35! 7.1.3!Joomla!..................................................................................................................................................!36! 7.1.4!Wordpress!.........................................................................................................................................!36! 7.1.5!Conclusiones!.....................................................................................................................................!37! 7.2.Otras.herramientas...............................................................................................................38! 8..Recursos.necesarios.......................................................................................................39! 8.1.Recursos.Hardware...............................................................................................................39! 8.1.1!Servidor!Web!....................................................................................................................................!39! 8.1.2!Estaciones!de!trabajo!....................................................................................................................!39! 8.2.Recursos.Software.................................................................................................................40! 8.2.1!Sistema!Operativo!Windows!7!.................................................................................................!40! 8.2.2!Paquete!de!Microsoft!Office!.......................................................................................................!40! 8.2.3!Xampp!(Apache,!MySQL,!Php)!..................................................................................................!41! 8.2.4!Visual!Paradigm!for!UML!............................................................................................................!41! 8.2.5!FileZilla!...............................................................................................................................................!42! 8.2.6!PuTTY!..................................................................................................................................................!42! 8.2.7!Bitbucket!............................................................................................................................................!42! 8.2.8!Dropbox!..............................................................................................................................................!42! 8.2.9!Notepad!..............................................................................................................................................!43! 9..Tecnología.utilizada........................................................................................................44! 9.1.PHP..............................................................................................................................................44! 9.2.MYSQL........................................................................................................................................44! 9.3.HTML..........................................................................................................................................44! 9.4.JavaScript..................................................................................................................................45! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 16 4.)Estado)del)arte) El(proyecto(consistirá(en(un(portal(web(que(sirva(de(labor(comunicativa(entre( una(institución(pública(y(sus(ciudadanos(mediante(la(elaboración(de(proyectos.(En(la( actualidad(no(existe(ningún(portal(web(con(las(especificaciones(del(nuestro,(por(tanto( se(ha(elaborado(un(estudio(de(los(diferentes(portales(gubernamentales(que(practican( Gobierno(Abierto.( 4.1)Gobierno)de)España) Datos.gob.es 1(es( el( portal( de( carácter( nacional( que( organiza( y( gestiona( el(Catálogo(de(Información(Pública(del(sector(público.(Asimismo,(desde(este(portal(se( proporciona(información(general,(materiales(formativos(y(noticias(de(actualidad(sobre( la(reutilización(de(la(información(del(sector(público.( En(línea(con(los(objetivos(del(Proyecto)Aporta,(este(servicio(pretende(estimular( la(apertura(y(reutilización(de(la(información(del(sector(público(y(hacerlo,(además,(con( la(participación(creativa(de(sus(usuarios((ya(sea(en(forma(de(ideas(o(de(aplicaciones( concretas).( 4.2)Irekia) El( Portal( Irekia 2es( una( iniciativa( del( Gobierno( Vasco( para( aumentar( la( transparencia(de(la(administración(vasca.( Irekia( es( un( canal( de( comunicación( directa( entre( la( ciudadanía( y( la( Administración(a(través(de(Internet(con(un(lenguaje(no(administrativo(y(que(se(basa(en( los(tres(ejes(principales(del(Gobierno)Abierto:( -(Transparencia( Desde(el(Ejecutivo(se(pone(a(disposición(de(la(ciudadanía(información(y(datos( en(tiempo(real(sobre(su(actividad,(actuaciones,(decisiones,(planes(e(intenciones.( ( ( 1 http://datos.gob.es/ 2 http://www.irekia.euskadi.eus/es Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 17 %-%Participación% Las(actuaciones,(leyes,(decretos(o(medidas(que(toma(el(Gobierno(se(debaten,( valoran( y( completan( con( las( opiniones( de( la( ciudadanía.( Pero( también( las( personas( interesadas(plantean(sus(propias(propuestas,(ideas(o(consultas( para( ser( discutidas( y( analizadas.( -(Colaboración( El( Gobierno( Vasco( colabora( con( la( ciudadanía,( las( empresas( y( el( resto( de( las( administraciones( vascas,( aportando( herramientas( innovadoras( y( nuevos(métodos( de( trabajo(colaborativos.(Les(escucha(y(trabajan(juntos(para(construir(una(sociedad(más( conectada.( Imagen 4.1 Proyecto en Irekia ) 4.3)Gobierno)Abierto)de)Navarra) El(Portal(Gobierno(Abierto(de(Navarra3(es(una(iniciativa(del(Gobierno(navarro( para(la(realización(de(gobierno(abierto.(Se(asemeja(mucho(al(portal(de(Irekia. ( 3 http://gobiernoabierto.navarra.es/es Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 18 4.4)Conclusiones) Observamos(que(tanto(Irekia(como(Gobierno(Abierto(de(Navarra(practican(el( gobierno( abierto,( pero( no( al( nivel( que( se( pretende( desarrollar,( al( ser( web( institucionales( abarcan( una( gran( variedad( de( temas,( pero( no( profundizan( en( las( herramientas( necesarias( para( diseñar( y( ejecutar( proyectos.( Este( punto( es( crítico( en( nuestro(portal,(ya(que(se(pretende(que(sean(los(propios(usuarios(sean(los(creadores(de( los(proyectos(y(los(desarrolladores(del(mismo,(asumiendo(así(una(autonomía(propia.( ) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 19 5.)Metodología) 5.1)Modelo)de)proceso)de)software) La( metodología( empleada( en( el( desarrollo( software( del( proyecto( ha( sido( el( modelo) en) espiral,( propuesto( originalmente( por( Boehm( en( 1988,( es( un( modelo( de( proceso(de(software(evolutivo(que(conjuga(la(naturaleza(iterativa(de(construcción(de( prototipos( con( los( aspectos( controlados( y( sistemáticos( del( modelo( lineal( secuencial.( Esta(metodología(cubre(las(mejores(características(tanto(del(ciclo(de(vida(clásico,(como( de(la(construcción(de(prototipos,(añadiendo(un(nuevo(elemento:(el(análisis(del(riesgo.( Proporciona(el(potencial(para(el(desarrollo(rápido(de(versiones(incrementales( del(software.(En(el(modelo(espiral,(el(software(se(desarrolla(en(una(serie(de(versiones( incrementales.(Durante(las(primeras(iteraciones,(la(versión(incremental(podría(ser(un( modelo( en( papel( o( un( prototipo.( Durante( las( últimas( iteraciones,( se( producen( versiones(cada(vez(más(completas(del(sistema(diseñado.( ( Imagen 5.1 Metodología de desarrollo en espiral en seis regiones Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 20 El(modelo(en(espiral(se(divide(en(un(número(de(actividades(de(marco(de(trabajo,( también(llamadas(regiones(de(tareas.(Generalmente,(existen(entre(tres(y(seis(regiones( de(tareas.(El(modelo(en(espiral(contiene(seis(regiones(de(tareas:( • Comunicación)con)el)cliente:(se(trata(de(las(tareas(requeridas(para(establecer( comunicación(entre(el(desarrollador(y(el(cliente.( • Planificación:( las( tareas( requeridas( para( definir( recursos,( el( tiempo( y( otra( información(relacionadas(con(el(proyecto.( • Análisis) de) riesgos:( las( tareas( requeridas( para( evaluar( riesgos( técnicos( y( de( gestión.( • Ingeniería:(las(tareas(requeridas(para(construir(una(o(más(representaciones(de( la(aplicación.( • Construcción)y)acción:(las(tareas(requeridas(para(construir,(probar,(instalar(y( proporcionar(soporte(al(usuario,(como(documentación(y(práctica.( • Evaluación) del) cliente:( las( tareas( requeridas( para( obtener( la( reacción( del( cliente( según( la( evaluación( de( las( representaciones( del( software( creadas( durante(la(etapa(de(ingeniería(e(implementada(durante(la(etapa(de(instalación.( Cuando( empieza( este( proceso( evolutivo,( se( gira( alrededor( de( la( espiral( en( la( dirección( de( las( agujas( del( reloj,( comenzando( por( el( centro.( El( primer( circuito( de( la( espiral( puede( producir( el( desarrollo( de( una( especificación( de( productos;( los( pasos( siguientes( en( la( espiral( se( podrían( utilizar( para( desarrollar( un( prototipo( y( progresivamente(versiones(más(sofisticadas(del(software.(Cada(paso(por(la(región(de( planificación( produce( ajustes( en( el( plan( del( proyecto.( El( coste( y( la( planificación( se( ajustan(con(la(realimentación(ante(la(evaluación(del(cliente.( Las(principales(ventajas(que(tiene(son:( • Posee(uno(de(los(enfoques(más(realistas(para(el(desarrollo(de(software.( • Utiliza( un( enfoque( evolutivo( permitiendo( al( desarrollador( y( al( cliente( reaccionar(a(los(riesgos(en(cada(nivel(evolutivo.(( • Utiliza(la(creación(de(prototipos(como(mecanismo(de(reducción(del(riesgo.(( • Mantiene(el(enfoque(sistemático(del(ciclo(de(vida(clásico.(( • Si(se(aplica(correctamente(debe(reducir(los(riesgos(antes(de(que(se(conviertan( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 21 en(problemáticos.(( 5.2)Lenguaje)de)modelado) El(lenguaje(de(modelado(utilizado(a(lo(largo(del(proyecto(será(UML(o(Lenguaje) Unificado)de)Modelado((UML,(por(sus(siglas(en(inglés,(Unified%Modeling%Language)(es( el( lenguaje( de( modelado(de( sistemas( de(software(más( conocido( y( utilizado( en( la( actualidad;( está( respaldado( por( el( OMG)(Object% Management% Group).( Permite( expresar(un(modelo(de(análisis(utilizando(una(notación(de(modelado(con(unas(reglas( sintácticas,(semánticas(y(prácticas.( Es( un( lenguaje( gráfico( para( visualizar,( especificar,( construir( y( documentar( un( sistema.( UML( ofrece( un( estándar( para( describir( un( modelo( del( sistema,( incluyendo( aspectos( conceptuales( tales( como( procesos( de( negocio( y( funciones( del( sistema,( además( de( aspectos( concretos( como( expresiones( de( lenguajes( de( programación,( esquemas(de(bases(de(datos(y(componentes(reutilizables.(Se(emplea(para(definir(un( sistema,(para(detallar(los(artefactos(en(el(mismo,(para(documentar(y(construir.( UML( no( puede( compararse( con( la( programación( estructurada,( pues( UML( significa( Lenguaje( Unificado( de( Modelado,( no( es( programación,( sólo( se( diagrama( la( realidad( de( una( utilización( en( un( requerimiento.( Mientras( que,( programación( estructurada,( es( una( forma( de( programar( como( lo( es( la( orientación( a( objetos,( sin( embargo,(la(programación(orientada(a(objetos(es(un(complemento(de(UML,(pero(no( por(eso(se(toma(UML(sólo(para(lenguajes(orientados(a(objetos.( UML( cuenta( con( varios( tipos( de( diagramas,( los( cuales( muestran( diferentes( aspectos(de(las(entidades(representadas.( 5.3)Metodología)aplicada) El(proyecto(descrito(en(este(documento(se(desarrollará(en(base(al(modelo(de( proceso( de( software( y( el( lenguaje( de( modelado( indicados.( A( la( hora( de( analizar( y( diseñar(el(sistema(a(desarrollar,(se(emplearán(los(diagramas(elaborados(siguiendo(las( pautas( establecidas( por( el( Lenguaje) Unificado) de) Modelado) UML.( Entre( estos( diagramas(destacan(la(identificación(de(actores,(casos(de(uso,(de(clases(y(de(secuencia.( ( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 22 El(desarrollo(del(software(se(llevará(a(cabo(utilizando(el(Modelo)de)Proceso)en) Espiral.(Se(irán(desarrollando(prototipos(de(validación(tras(pasar(por(cada(una(de(las( fases( descritas( en( el( modelo,( sobre( todo( en( las( tareas( fundamentales( de( análisis,( diseño(e(implementación.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 23 6.)Planificación)temporal) 6.1)Introducción) La(planificación(temporal(de(un(proyecto(es(una(actividad(que(evoluciona(con( el(tiempo(y(que(permite(identificar,(definir(y(programar(las(actividades(específicas(que( se(requieren(para(realizar(una(actividad.( La(planificación(temporal(permite:( • Definir(todas(las(tareas( • Definir(las(tareas(críticas( • Identificar(el(camino(crítico( • Realizar(seguimiento(a(tareas(->(Detectar(retraso( 6.2)Plan)de)trabajo) En(la(propuesta(del(proyecto((PFC-1)(se(realizó(una(plan(de(trabajo(donde(se( especificó( una( planificación( temporal.( En( él,( se( desglosó( de( manera( detallada( el( trabajo(de(cada(fase,(que(a(su(vez,(se(divide(en(las(actividades(de(cada(fase(con(una( estimación( aproximada( de( horas.( En( este( apartado( se( expone( tanto( la( planificación( temporal(como(la(dedicación(real,(dando(una(explicación(al(final(del(mismo(sobre(las( desviaciones(en(las(que(hemos(incurrido.( 6.2.1)Planificación)temporal)estimada) Fase%1:%Análisis%(220h)% Actividad(1.1(Documentación(y(herramientas((100h).( • Realización(encuestas(y(entrevistas.( • Adquisición(de(información.( • Estudio(herramientas(necesarias(para(el(PFC.( • Búsqueda(en(internet(de(información(herramientas.( • Generación(de(documentación(sobre(herramientas.(( ( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 24 Actividad(1.2(Análisis(de(requisitos(de(usuario((60h).( • Análisis(de(requerimientos(de(usuario.( • Análisis(de(viabilidad(de(requerimientos(de(usuario.( • Generación(documentación(análisis(de(requisitos(de(usuario.( Actividad(1.3(Análisis(de(requisitos(de(software((60h).( • Análisis(de(requerimientos(de(software.( • Análisis(de(viabilidad(de(requerimientos(de(software.( • Generación(documentación(análisis(de(requisitos(de(software.( Fase%2:%Diseño%(145h)%% Actividad(2.1(:(Estudio(herramientas((70h).( • Estudio(de(herramientas(necesarias(para(la(elaboración(del(proyecto.( • Generación(documentación(sobre(estudio(de(herramientas.( Actividad(2.2(:(Diseño(de(módulo(de(bases(de(datos((20h).( • Diseño(de(base(de(datos.( • Diseño(de(módulo(de(interconexión(con(base(de(datos.( • Generación(documentación(de(módulo(de(base(de(datos.( Actividad(2.3(:(Diseño(de(módulos(de(aplicación((40h).( • Diseño(de(módulo(de(gestión(de(usuarios.( • Diseño(de(módulo(de(gestión(de(propuestas(y(proyectos.( • Diseño(de(módulo(de(herramientas(del(proyecto.( • Generación(documentación(de(Diseño(de(módulos(de(aplicación(local.( Actividad(2.4(:(Diseño(de(módulos(interfaz(Web((10h).( • Diseño(de(interfaz(Web.( • Generación(documentación(de(Diseño(de(módulos(de(aplicación(Web.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 25 Actividad(2.5(:(Diseño(de(instalación((5h).( • Diseño(de(instalación(de(tecnología(Hardware/Software.( • Generación(documentación(de(Diseño(de(Instalación.( Fase%3:%Implementación%(520h)% Actividad(3.1(:(Implementación(de(módulos(de(bases(de(datos((40h).( • Implementación(de(base(de(datos.( • Implementación(del(módulo(de(interconexión(con((base(de(datos.( • Generación(documentación(de(Implementación(de(base(de(datos.( Actividad(3.2(:(Implementación(de(módulos(de(aplicación((400h).( • Implementación(de(módulo(de(gestión(de(usuario.( • Implementación(de(módulo(de(propuestas(y(proyectos.( • Implementación(de(módulo(de(herramientas(del(proyecto.( • Generación( documentación( de( implementación( de( módulos( de( aplicación( local.( Actividad(3.3(:(Implementación(de(módulos(de(aplicación(Web(Corporativa((30h).( • Implementación(de(módulos(de(aplicación(Web.( • Actualizar(bibliografía(de(implementación(de(módulos(de(aplicación(Web.( • Consulta(tutor(sobre(implementación(de(módulos(de(aplicación(Web.( Actividad(3.4(:(Implementación(de(interfaz((30h).( • Implementación(de(interfaz(y(vistas.( • Implementación(de(módulos(de(interconexión(Hardware/Software.( • Implementación(de(interfaz(Hardware/Software.( • Generación( documentación( de( Implementación( de( módulos( de( interfaz( Hardware/Software( ( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 32 6.2.4)Conclusiones) ( Como(se(observa(existe(diferencias(entre(el(tiempo(estimado(y(el(tiempo(real( dedicado(al(proyecto.(A(continuación(veremos(las(circunstancias(que(se(han(dado(para( estás(diferencias,(siendo(en(gran(medida(a(la(inexperiencia(del(autor(del(proyecto(a(la( hora(de(realizar(la(planificación(de(un(proyecto(de(esta(envergadura.( ( Las(horas(dedicadas(al(análisis(han(superado(las(estimadas.(El(principal(motivo( de( este( incremento( ha( sido( el( tiempo( empleado( en( la( realización( de( encuestas( y( entrevistas( a( los( clientes,( debido( a( que( era( un( colectivo( de( participación( ciudadana( donde(todas(las(cuestiones(se(llegaban(por(consenso.(Además(se(realizaron(reuniones( a( posteriori( tanto( los( clientes,( como( entre( el( grupo( de( desarrollo( para( mejorar( aspectos(fundamentales(del(análisis.(Al(final,(gracias(al(tiempo(dedicado,(se(ha(podido( captar(en(su(totalidad(los(requisitos(de(usuarios(y(los(de(software.( ( El( tiempo( dedicado( al( estudio( de( las( herramientas( ha( sido( mucho( mayor( del( estimado.( Hemos( tenido( que( aprender( a( utilizar( Drupal,( un( CMS( que( posee( una( curvatura(de(aprendizaje(mucho(mayor(que(otros(como(Wordpress(o(Joomla.(Siendo( una(ardua(tarea(comprender(todos(sus(parámetros(y(módulos(externos(utilizados(en(el( diseño(y(desarrollo(del(proyecto.( ( Las(horas(dedicadas(al(diseño(han(sufrido(un(ligero(incremento(con(respecto(a( las( horas( estimadas.( ( El( motivo( es( la( inexperiencia( con( Drupal,( que( nos( llevó( a( aumentar(el(número(de(horas(dedicadas(al(diseño(de(los(módulos.( ( Al( contrario( de( lo( que( ocurre( con( las( fases( de( análisis( y( diseño,( el( tiempo( dedicado(a(la(fase(de(implementación(se(ha(visto(reducido.(La(razón,(es(la(utilización( de( un( CMS( como( Drupal( para( desarrollar( la( herramienta,( ya( que,( posee( una( gran( facilidad(para(la(implementación(de(los(módulos(y(de(la(interfaz,(así(como(también(del( ensamblaje(de(módulos.(( ( Finalmente(tenemos(la(parte(de(validación(y(publicidad(que(se(ha(reducido(su( tiempo(con(respecto(a(lo(previsto.(Esto(es(debido(a(la(elaboración(de(vídeo-tutoriales( que(explicasen(todo(el(funcionamiento(del(contenido(en(detrimento(de(manuales(por( escrito;(reduciendo(considerablemente(el(apartado(de(publicidad(en(el(proyecto.(( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 33 ( Por(último(reseñar(que(aunque(se(ha(sobrepasado(el(límite(de(horas(estimadas( en(el(proyecto,(este(no(ha(supuesto(más(del(10%(del(total(de(horas(estimadas.(Además( en(cada(apartado(no(ha(habido(un(incremento(o(decremento(de(porcentaje(mayor(que( el(10%(del(tiempo(estimado.(Con(estos(datos(podemos(considerar(que(aunque(no(haya( sido(una(perfecta(planificación,(si(ha(resultado(óptima(para(el(desarrollo.( ) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 34 7.)Estudio)de)las)herramientas) Con(el(fin(de(determinar(las(herramientas(y(aplicaciones(más(adecuadas(para( desarrollar( el( portal( web,( se( realizó( un( estudio( de( las( herramientas( disponibles( que( ofrecen(o(facilitan(estos(servicios.( 7.1)Sitio)web) Para(realizar(el(estudio(de(herramientas(para(desarrollo(y(gestión(de(sitios(web( se(deberán(tener(en(cuenta,(al(menos,(los(siguientes(aspectos(importantes:( • Ser(de(uso(extendido(con(amplia(documentación(disponible.(( • Ser(de(fácil(utilización(por(parte(de(administradores(y(usuarios.(( • Ser(adaptable(a(la(mayor(cantidad(y(tipo(de(contenidos(posible.(( • Ser(segura(y(fiable.(( • Estar(basado(en(un(lenguaje(de(programación(web(de(uso(extendido.(( • Utilizar(bases(de(datos(capaces(de(soportar(múltiples(accesos(simultáneos.((( De(esta(forma,(se(presentarán(a(continuación(las(herramientas(estudiadas(con( sus(principales(características.(( 7.1.1)Drupal) Drupal(es(un(sistema)de)gestión)de)contenido)modular(multipropósito(y(muy( configurable( que( permite( publicar( artículos,( imágenes( u( otros( archivos( y( servicios( añadidos( como( foros,( encuestas,( votaciones,( blogs( y( administración( de( usuarios( y( permisos.( Destaca(por(la(calidad(y(limpieza( de(su( código(y( de(las( páginas(generadas,( el( respeto( de( los( estándares( de( la( web,( y( un( énfasis( especial( en( la( usabilidad( y( consistencia( de( todo( el( sistema.( Su( comunidad( está( altamente( profesionalizada( y( exigen(una(metodología(altamente(rígida(y(efectiva(para(la(inclusión(de(código(fuente( en(su(comunidad.( Drupal( es( un( sistema( dinámico:( en( lugar( de( almacenar( sus( contenidos( en( archivos( estáticos( en( el( sistema( de( ficheros( del( servidor( de( forma( fija,( el( contenido( textual(de(las(páginas(y(otras(configuraciones(es(almacenado(en(una(base(de(datos(y(se( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 35 edita(utilizando(un(entorno(Web.( Es( un( software( libre,( con( licencia( GNU/GPL,( escrito( en( PHP,( desarrollado( y( mantenido(por(una(activa(comunidad(de(usuarios(alrededor(de(todo(el(planeta.( El( diseño( de( Drupal( es( especialmente( idóneo( para( construir( y( gestionar( comunidades(en(Internet.(No(obstante,(su(flexibilidad(y(adaptabilidad,(así(como(la(gran( cantidad( de( módulos( adicionales( disponibles,( hace( que( sea( adecuado( para( realizar( muchos(tipos(diferentes(de(sitio(web.( 7.1.2)Moodle) Moodle( es( una( plataforma( de( aprendizaje( diseñada( para( proporcionarle( a( educadores,( administradores( y( estudiantes( un( sistema) integrado) único,) robusto) y) seguro(para(crear(ambientes(de(aprendizaje(personalizados.( Promueve(una(manera(constructiva(social((colaboración,(actividades,(reflexión( crítica,(etc.).(Su(arquitectura(y(herramientas(fueron(diseñadas(para(clases(en(línea,(así( como(también(para(complementar(el(aprendizaje(presencial.( La(instalación(requiere(una(plataforma(que(soporte(PHP(y(la(disponibilidad(de( una(base(de(datos.(Moodle(tiene(una(capa(de(abstracción(de(bases(de(datos(por(lo(que( soporta(los(principales(sistemas(gestores(de(bases(de(datos.( Se(ha(puesto(énfasis(en(una(seguridad(sólida(en(toda(la(plataforma.(Todos(los( formularios( son( revisados,( las( cookies( cifradas,( etc.( La( mayoría( de( las( áreas( de( introducción(de(texto((materiales,(mensajes(de(los(foros,(entradas(de(los(diarios,(etc.)( pueden( ser( editadas( usando( el( editor( HTML,( tan( sencillo( como( cualquier( editor( de( texto.( Sus(utilidades(están(basadas(en(una(serie(de(módulos:( • Gratuito( • Basado(en(web(y(accesible(utilizando(cualquier(navegador(( • Formado(por(una(serie(de(módulos(con(distinta(finalidad(( • Módulo(de(tareas(gestionables(y(calificables(( • Módulo(de(consulta(y(votaciones(( • Módulo(de(foro(de(discusión(( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 36 • Módulo(de(cuestionario(( • Módulo(wiki(( • Módulo(blog(( 7.1.3)Joomla) Joomla(es(un(sistema)de)gestión)de)contenidos(lanzado(el(16(de(septiembre(de( 2005( como( mejora( y( evolución( de( Mambo,( otro( gestor( de( contenidos.( Está( desarrollado( por( Open( Source( Matters( y( es( utilizado( en( sitios( webs( internacionales( como( la( web( oficial( de( Danone( (www.danone.com)( o( la( web( oficial( de( Porsche( en( Brasil((www.porsche.com.br).(Al(igual(que(Drupal,(Joomla!(se(emplea(a(lo(largo(de(todo( el(mundo(en(proyectos(de(gran(importancia.(También(a(nivel(nacional,(muchos(de(los( sitios( web( de( los( institutos( universitarios( estudiados( lo( utilizan( para( gestionar( sus( contenidos.( Las( características( principales( que( presenta( este( sistema( de( gestión( de( contenidos(son(las(siguientes:( • Excelente(documentación(y(soporte( • Excelente(gestión(y(utilización(por(parte(de(administradores(y(usuarios( • Excelente(variedad(de(herramientas(de(personalización(de(contenidos( • Muy(buen(sistema(de(seguridad(y(login(por(parte(de(los(usuarios( • Basado(en(el(lenguaje(de(programación(PHP( • Utiliza(MySQL(como(base(de(datos( Al( tratarse( de( un( sistema( de( gestión( de( contenidos( tan( extendido( a( nivel( mundial,( Joomla!( presenta( una( gran( diversidad( de( herramientas( y( plugins( ya( incorporados(o(que(pueden(ser(instalados(de(forma(complementaria(para(satisfacer(el( gran(abanico(de(necesidades(para(todo(tipo(de(empresas,(usuarios(y(administradores.(( 7.1.4)Wordpress) WordPress(es(un(sistema)de)gestión)de)contenido)enfocado)a)la)creación)de) blogs( (sitios( web( periódicamente( actualizados).( Desarrollado( en( PHP( y( MySQL,( bajo( licencia( GPL.( Wordpress,( es( un( sistema( de( publicación( web( basado( en( entradas( ordenadas(por(fecha,(entre(otras(muchas(posibilidades(además(de(páginas(estáticas.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 37 La(estructura(y(diseño(visual(del(sitio(depende(del(sistema(de(plantillas.( La( gestión( y( ejecución( corre( a( cargo( del( sistema( de( administración( con( los( complementos(y(las(aplicaciones(que(usan(las(plantillas.( Permite(múltiples(autores(o(usuarios.(Permite(comentarios(y(herramientas(de( comunicación( entre( blog.(Tiene( búsqueda( integrada( y( un( sin( fin( de( utilidades( desarrolladas( por( sus( usuarios( de( forma( independiente( y( no( muy( coordinada( que( suplen(casi(cualquier(necesidad(mientras(ésta(no(sea(muy(compleja(y(el(mantenedor( esté( dispuesto( a( ir( saltando( de( un( autor( a( otro( hasta( que( uno( de( los( plugins(con( funcionalidades( similares( se( imponga( sobre( los( demás( y( se( convierta( en( el( más( o( menos(oficial.( 7.1.5)Conclusiones) A(pesar(de(la(gran(variedad(de(herramientas(existentes(para(cubrir(necesidades( de( todo( tipo( en( centros( de( las( características( estudiadas,( no( se( ha( encontrado( un( software(único(capaz(de(agrupar(todas(las(aplicaciones(necesarias(e(integrar(servicios( externos(de(forma(ágil.(( En(la(que(hemos(propuesto(como(herramientas(de(estudio,(destacan(Drupal(y( Moodle(como(las(que(más(se(acercan(a(nuestro(objetivo(de(desarrollo(del(Portal(por( sus(características,(decidiéndonos(al(final(por(Drupal(debido(a(los(siguientes(motivos:( • Cualquier( diseño( es( posible( con( Drupal.( Muchas( veces( se( dice( que( un( CMS( preconfigurado(no(tiene(un(diseño(flexible(y(que(puede(limitar(la(creatividad(de( los(diseñadores.(Drupal(permite(hacer(cualquier(cosa.(( • El(concepto(de(usuario(es(intrínseco(a(Drupal.(Esto(quiere(decir(que(si(alguien( se(registra,(se(registra(para(todas(las(aplicaciones(que(haya(en(Drupal.(Desde( foros,(blogs,(encuestas,(UGCs,(tienda...(este(control(centralizado(del(usuario(es( clave(para(los(proyectos(de(hoy(en(día(y(donde(se(centrará(nuestra(atención.(( • Drupal( es( multi-idioma.( Es( normal( tener( un( sitio( web( en( dos( idiomas( o( más.( Esta( funcionalidad( es( natural( en( Drupal( y( muy( fácil( de( activar( y( con( herramientas( muy( profesionales( para( generar( el( contenido( traducido( y( mantenerlo(actualizado.(( • Abierto(a(PHP.(Drupal(por(defecto(permite(que(en(cualquier(tipo(de(contenido( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 38 se( puede( agregar( PHP( a( medida.( Este( permite( retocar( y( personalizar( las( funcionalidades( del( sitio( Web( si( aún( no( se( está( familiarizado( con( su( API(de( programación.(( • La( principal( ventaja( de( Drupal( frente( a( Joomla(es(que( Drupal( tiene( una( comunidad(muy(buena.(Cualquier(duda(está(documentada(y(explicada.(( • El(soporte(natural(de(Drupal(permite(editar(video(y(audio(sin(problemas.( • El( consumo( de( recursos( del( servidor( que( hace( Drupal( es( muy( bajo,( grandes( portales(de(internet(usan(esta(herramienta(como(principal.( • El(control(para(los(administradores(es(total.( • Implementación( con( el( módulo( Grupos) Orgánicos) (Organic% Groups),( permitiéndonos(tener(diferentes(roles(de(usuario,(según(en(el(contexto(en(que( se(encuentre(un(usuario.( • Carga(de(trabajo(menor(que(Moodle,(ya(que(al(tener(que(realizar(un(software( tan( específico,( Moodle( abarcaría( demasiado( para( lo( que( proyectamos( desarrollar.( 7.2)Otras)herramientas)) Además(del(CMS(Drupal,(tenemos(otras(herramientas(que(utilizaremos(para(la( elaboración(del(sitio(web.(Estas(se(mostrarán(en(el(apartado(de(tecnología(utilizada.( ) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 39 8.)Recursos)necesarios) 8.1)Recursos)Hardware) 8.1.1)Servidor)Web) Básicamente,(un(servidor(web(sirve(contenido(estático(a(un(navegador,(carga( un(archivo(y(lo(sirve(a(través(de(la(red(al(navegador(de(un(usuario.(Este(intercambio(es( mediado(por(el(navegador(y(el(servidor(que(hablan(el(uno(con(el(otro(mediante(HTTP.( Al( tratarse( de( un( servicio( basado( en( Web,( será( primordial( el( tiempo( de( respuesta(de(la(máquina(a(la(hora(de(responder(a(las(múltiples(peticiones(por(parte(de( los( usuarios( del( sistema.( El( servidor( indicado( deberá( poseer( al( menos( las( siguientes( características:( • Sistema(Operativo(Linux,(preferiblemente(Ubuntu(Server( • Servicio(Apache(( • Servicio(PHP(5(o(superior(( • Servicio(MySQL(5(o(superior( Las(características(del(servidor(donde(se(aloja(el(proyecto(son:( Servidor(de(trabajo:( • Modelo:(DELL(R510( • Procesadores(Intel(“Xeon”(serie(5500( • Sockets(de(los(procesadores:(2( • Memoria(RAM:(64(Gb( • Disco(duro:(1,2(Tb(SAS(+(6(Tb(SATA( 8.1.2)Estaciones)de)trabajo) En(informática)una(estación(de(trabajo((en(inglés(workstation)(es(un(ordenador( de(altas(prestaciones(destinado(para(trabajo(técnico(o(científico.(A(diferencia(de(una( computadora(aislada,(tiene(una(tarjeta(de(red(y(está(físicamente(conectada(por(medio( de(cables(u( otros( medios( no( guiados( con( los( servidores.( Los( componentes( para( servidores( y( estaciones( de( trabajo( alcanzan( nuevos( niveles( de( rendimiento( informático,( al( tiempo( que( ofrecen( fiabilidad,( compatibilidad,( escalabilidad( y( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 40 arquitectura(avanzada(ideales(para(entornos(multiproceso.( Para( el( desarrollo( del( proyecto( se( han( utilizado( dos( estaciones( de( trabajo( independientes,( una( orientada( a( la( creación( del( portal( y( otra( a( la( elaboración( de( documentos:( Estación(de(trabajo(1:( • Modelo:(Asus( • Disco(Duro:(160(Gb( • Procesador:(Intel(R)(Core(TM)(I7(CPU(2,6(GHz( • Memoria(RAM:(6,00(Gb( • Tipo(de(Sistema:(Sistema(Operativo(64(bits( Estación(de(trabajo(2:( • Modelo:(MacBook((Apple)( • Procesador:(Intel(Core(2(Duo,(2,4(GHz( • Memoria(RAM:(2,00(Gb( • Tarjeta(gráfica:(NVIDIA(GeForce(9400M(256Mb( 8.2)Recursos)Software) 8.2.1)Sistema)Operativo)Windows)7) Debido( a( la( naturaleza( del( proyecto( se( puede( optar( por( cualquier( sistema( operativo.(Sin(embargo,(debido(a(las(aplicaciones(y(editores(que(se(van(a(utilizar(en(el( desarrollo( se( ha( decidido( utilizar( un( sistema( operativo( Windows,( concretamente( Windows)7)Professional.( 8.2.2)Paquete)de)Microsoft)Office) Hemos(escogido(para(la(realización(de(la(documentación(del(proyecto(el(paquete( de(Microsoft(Office(2010.(Office(2010(incluye(compatibilidad(extendida(para(diversos( formatos(de(archivos,(actualizaciones( de( la( interfaz( de( usuario( y( una( experiencia( de( usuario(refinada.(Por(primera(vez(y(con(la(introducción(de(Office(2010,(la(suite(está( disponible( en( una( compilación( para( arquitecturas( de( 64( bits.( Las( principales( herramientas(que(hemos(escogido(de(Office(han(sido:( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 41 • Microsoft)Office)Word:(para(la(elaboración(de(documentos.( • Microsoft)Office)Excel:(para(el(desarrollo(de(las(tablas(de(datos(y(también(para( las(tablas(de(los(documentos,(además(de(emplearlas(para(la(elaboración(de(los( primeros(bocetos.( • Microsoft)Office)PowerPoint:(para(las(presentaciones(con(los(clientes.( 8.2.3)Xampp)(Apache,)MySQL,)Php)) XAMPP(es( un( servidor) independiente) de) plataforma,( software( libre,( que( consiste( principalmente( en( la( base( de( datos( MySQL,( el( servidor( Web( Apache( y( los( intérpretes(para(lenguajes(de(script:(PHP(y(Perl.(El(nombre(proviene(del(acrónimo(de(X( (para(cualquiera(de(los(diferentes(sistemas(operativos),(Apache,(MySQL,(PHP,(Perl.(El( programa(está(liberado(bajo(la(licencia(GNU(y(actúa(como(un(servidor(Web(libre,(fácil( de(usar(y(capaz(de(interpretar(páginas(dinámicas.(Actualmente,(XAMPP(está(disponible( para(Microsoft(Windows,(GNU/Linux,(Solaris,(y(MacOS(X.( XAMPP( se( ha( utilizado( actualmente( como( servidor( Web( y,( con( algunas( modificaciones,(es(lo(suficientemente(seguro(para(serlo.(Con(el(paquete(se(incluye(una( herramienta(especial(para(proteger(fácilmente(las(partes(más(importantes.( 8.2.4)Visual)Paradigm)for)UML) La(gran(mayoría(de(los(diagramas(elaborados(a(lo(largo(de(las(diferentes(fases( del(proyecto(serán(elaborados(en(el(Lenguaje)Unificado)de)Modelado)UML,(por(lo(que( será(necesario(utilizar(alguna(herramienta(de(edición(que(permita(trabajar(de(forma( sencilla( y( rápida( con( este( lenguaje.( En( concreto,( se( ha( utilizado( el( software( Visual) Paradigm)for)UML)for)Comunnity.(Se(trata(de(una(herramienta(CASE(que(soporta(el( modelado( mediante( UML( y( proporciona( asistencia( a( los( analistas,( ingenieros( de( software(y(desarrolladores,(durante(todos(los(pasos(del(Ciclo(de(Vida(de(desarrollo(de( un(Software.(Utilizamos(la(versión(Comunnity(que(es(una(versión(gratuita(para(uso(no( comercial.( ) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 48 administración( de( listas( de( correo( electrónico,( e( integración( de( CVS( (Concurrent% Version%System).( Alguno(de(los(papeles(más(especiales(que(Drupal(ha(cumplido(incluye(intranets( de( compañías,( enseñanza( en( línea,( comunidades( de( arte( y( administración( de( proyectos.( Drupal( fue( además( la( base( de( DeanSpace,( un( sistema( de( administración( de( contenido(usado(para(impulsar(sitios(web(en(apoyo(a(la(campaña(presidencial(de(2004( de(Howard(Dean.(Una(vez(finalizada(la(campaña(el(proyecto(creció(hasta(convertirse( en( CivicSpace,( también( basado( en( Drupal.( CivicSpace( es( una( "plataforma( de( organización( grassroots( que( impulsa( la( acción( colectiva( en( comunidades( y( conecta( cohesivamente(grupos(remotos(de(partidarios((supporters).( 10.2)Arquitectura)Drupal) El(secreto(de(Drupal(para(conseguir(su(reconocida(flexibilidad(y(facilidad(en(la( creación( de( sitios( web( es( la( abstracción( y( organización( en( capas( que( aplica( en( el( tratamiento(de(los(contenidos.(En(lugar(de(considerar(el(sitio(web(como(un(conjunto( de( páginas( interrelacionadas,( Drupal( estructura( los( contenidos( en( una( serie( de( elementos(básicos.(Estos(son(los(nodos((nodes)(,(modulos((modules),(bloques(y(menus( (blocks(&(menus)(,(permisos)de)usuario(y(plantillas((templates).( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 49 Ilustración 10.1: Arquitectura de drupal. Los(“nodos”(son(los(elementos(básicos(en(que(Drupal(almacena(la(información,( los(contenidos.(Así(a(medida(que(el(sitio(web(crece,(lo(va(haciendo(el(número(de(nodos( los(cuales(van(formando(un(depósito(de(nodos(cada(vez(mayor.(Se(puede(decir(que(la( primera(capa(de(la(estructura(de(Drupal(la(forma(este(“deposito”(de(“nodos”.( Los( “módulos”( son( los( elementos( que( operan( sobre( los( nodos( y( otorgan( funcionalidad( a( Drupal( permitiendo( incrementar( sus( capacidades( o( adaptarlas( a( las( necesidades(de(cada( sitio( web.(( Son(como(complementos( que( se( instalan(en(el(sitio( web(proporcionándole(nuevas(funcionalidades.( La( siguiente( capa( de( Drupal( la( constituyen( los( “bloques) y) menús”.( Estos( permiten( estructurar( y( organizar( los( contenidos( en( la( página( web.( Es( decir,( son( los( elementos( que( albergan( y( permiten( acceder( al( usuario( a( la( salida( generada( y( procesada(por(los(módulos(a(partir(de(la(información(almacenada(en(los(nodos.( La(siguiente(capa(importante(en(Drupal(es(la(de(control(de(usuarios(y(permisos.( Actualmente,(la(mayor(parte(de(sitios(web(son(multiusuario,(por(lo(que(la(seguridad(y( control( de( los( usuarios( es( un( punto( clave( para( garantizar( la( integridad( de( la( información(almacenada.(Con(esta(finalidad(Drupal(dispone(de(un(registro(de(usuarios( y( de( roles( que( permiten( especificar( qué( tareas( pueden( realizar( y( a( que( contenidos( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 50 puede( acceder( cada( tipo( de( usuario.( Es( decir( que( las( operaciones( que( se( pueden( realizar( sobre( los( elementos( provenientes( de( las( capas( inferiores( (( lectura,( modificación,(creación(…()(se(encuentran(limitadas(por(la(capa(de(control(de(usuarios(y( permisos(de(Drupal.( La( ultima( capa,( es( la( capa( de( plantillas( y( es( la( que( establece( la( apariencia( gráfica(o(estilo(de(la(información(que(se(le(muestra(al(usuario.(Esta(separación(entre( información(y(aspecto(gráfico(permite(cambiar(el(diseño(o(apariencia(del(sitio(web(sin( necesidad( de( modificar( los( contenidos,( lo( que( es( muy( práctico( si( lo( único( que( queremos(es(renovar(la(apariencia(de(un(sitio(web.( Cron(es(otro(elemento(importante(en(Drupal.(Es(una(aplicación(que(se(ejecuta( periódicamente( con( la( finalidad( de( realizar( las( tareas( básicas( de( mantenimiento( del( sitio(web,(como(limpiar(los(logs,(indexar(los(nuevos(contenidos,(etc.(La(configuración( de( Cron( variará( dependiendo( del( SO( en( que( estemos( trabajando.( Además( existen( algunas(alternativas,(menos(efectivas,(pero(más(sencillas(de(utilizar(que(Cron.( 10.3)Estructura)de)directorios) Drupal( se( estructura( en( un( conjunto( agrupado( de( carpetas( que( contienen( el( código(PHP,(imágenes(y(ficheros(de(configuración(necesarios(para(su(funcionamiento.( Cada(vez(que(algún(usuario(accede(al(sitio(web,(el(servidor(web((p.ej(apache)(accede(a( esta(carpeta,(interpreta(el(código(y(realiza(las(acciones(pertinentes.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 51 Ilustración 10.2: Contenido de Drupal Los( ficheros( install.php(y( update.php% que( se( hallan( en( la( raíz,( son( los( que( realizan( las( tareas( de( instalación( y( actualización( del( sitio( web.( Ambos( ficheros( van( acompañados(de(sus(guías(de(uso(en(formato(TXT(y(para(ejecutarlos(basta(con(abrir(el( navegador( y( escribir( la( dirección( base( del( sitio( web( seguido( de( install.php% o( update.php.( También( en( la( raíz( aparece( el( fichero( cron.php.( Este( contiene( el( código( encargado(de(la(ejecución(de(las((tareas(periódicas(de(mantenimiento(del(sitio((cron% jobs).(En(función(del(tipo(de(SO(se(deberá(instalar(un(daemon(o(servicio(que(ejecute( este(código(cada(intervalo(de(tiempo.( También(en(la(raíz(de(Drupal(se(encuentran(las(carpetas(Modules(y(Themes(en( las( que( Drupal( guarda( los( Modules(y( Themes( que( trae( por( defecto.( Allí( podríamos( guardar(también(los(módulos(y(temas(que(bajemos(para(nuestro(sitio,(pero(a(pesar(de( que(funcionaría,(no(es(lo(correcto(ya(que(Drupal(limpia(esas(carpetas(cada(vez(que(se( actualiza.( Lo( correcto( es( crear( dos( carpetas( diferenciadas( (themes(y( modules)( en(( “…/sites/all”( lo( que( evitará( que( se( puedan( borrar( cada( vez( que( se( actualice( el( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 52 Núcleo.(Además(esto(ayudará(a(mantener(los(ficheros(de(nuestros(Modules(y(Themes( más(ordenados(y(controlados.( 10.4)Características)de)Drupal) Las(principales(características(por(las(que(destacar(Drupal(son:( • Drupal(permite(extender(y(manipular(los(campos(granularmente(a(través(de(los( módulos,(a(nivel(de(estructura((arrays%of%objects)(y(presentación((theming).(De( esta(forma,(por(ejemplo,(pueden( extenderse( los( campos( de( un( nodo( usando( por( ejemplo( el( módulo( CCK( (Content% Construction% Kit)( ó( modificar( la( presentación( de( las( listas( de( nodos( usando( el( módulo( Vista( (Views).( A( diferencia(de(otros(sistemas,(la(unidad(básica(de(Drupal(es(el(nodo.(Un(nodo(es( una( unidad( de( contenido( compuesto( básicamente( por( dos( campos:( título( y( cuerpo(de(texto.( • Drupal(cuenta(con(una(poderosa(API((Application%Programming%Interface)(muy( bien(documentada(que(permite(programar(todo(tipo(de(módulos(que(pueden( hacer( prácticamente( cualquier( cosa( con( la( estructura( y( presentación( de( los( nodos.(Es(una(gran(caja(de(herramientas.( • Drupal(tiene(un(sistema(de(roles(y(permisos(muy(configurables.(Gracias(a(los( roles( los( módulos( pueden( también( manipular( el( sistema( de( autenticación( de( usuarios(que(viene(por(defecto(incorporado(en(el(núcleo(del(software(y(cuyos( permisos(puede(configurarse.(( • Drupal(tiene(un(sistema(de(menús(que(permite(referenciar(fácilmente(cualquier( tipo(de(contenido(a(través(de(un(URL.(( • Drupal(tiene(un(sistema(de(caché(potente(que(permite(reducir(las(consultas(al( motor(de(base(de(datos(del(servidor(optimizando(de(esta(forma(el(rendimiento.(( • Drupal(tiene(módulos(importantes(que(no(están(en(otros(CMS(y(vienen(como( opcionales(en(el(núcleo:( o Taxonomía.(Permite(clasificar(la(información(en(taxonomías(de(manera( muy(flexible.( o Búsqueda.( Las( resultados( de( las( búsquedas( son( indexadas( para( acelerarlas.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 53 o URLs( limpios.( Los( URLs( que( genera( Drupal( son( limpios( facilitando( la( indexación(por(los(motores(de(búsqueda.(Además(se(le(puede(asignar( fácilmente( un( URL( limpio( a( cualquier( contenido( y( crear( enlaces( permanentes(a(él((permalinks).(( o Blog.(A(todo(usuario(que(crea(una(cuenta(se(le(puede(asignar(un(blog.(( o Comentarios.(Los(comentarios(pueden(administrarse(por(cada(nodo(de( información.(( o Registros( e( Informes.( Toda( la( actividad( de( los( sucesos( del( sistema( es( recopilada(en(un(registro(de(eventos(visible(para(el(administrador.(( o Libro.(Permite(crear(un(tipo(de(contenido(que(puede(ser(organizado(en( páginas(por(los(usuarios(con(los(permisos(adecuados.(( o Control( de( congestión.( Permite( balancear( la( carga( producida( por( una( enorme( cantidad( de( accesos( al( sitio( web( desactivando( automáticamente( algunas( secciones( del( portal( con( el( objetivo( que( el( sitio(web(esté(siempre(disponible.( • Drupal(tiene(un(sistema(de(registro(unificado.(Esto(quiere(decir(que(si(alguien( se(registra,(puede(tener(acceso(a(foros,(blogs,(encuestas,(UGCs((user%generated% content),(tiendas,(etc.( • Drupal( permite( tener( un( sitio( multi-idioma.( Es( normal( tener( un( sito( en( dos( idiomas( o( más.( Esta( funcionalidad( es( natural( en( Drupal( y( activarla( es( muy( sencillo.(( • Drupal( utiliza( código( PHP.( Drupal( por( defecto( permite( agregar( código( PHP( a( medida(en(cualquier(tipo(de(contenido.(Esto(permite(retocar(y(personalizar(la( funcionalidad( del( backend( (el( término( backend( hace( referencia( a( la( visualización( del( administrador( del( sitio( con( sus( respectivos( sistemas)( o( del( frontend( (( el( término( frontend( hace( referencia( a( la( visualización( del( usuario( navegante).( ( ( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 54 • Drupal(tiene(un(soporte(de(comunidad(muy(amplio.(Quizás(la(principal(ventaja( de(Drupal(frente(otros(gestores(de(contenido(como(Joomla,(es(que(Drupal(tiene( una( comunidad( muy( activa.( Drupal.org( es( el( punto( de( encuentro.( Cualquier( duda(está(documentada(y(explicada.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 55 11.)Análisis) 11.1)Introducción) En( este( capítulo( se( detalla( el( proceso( de( análisis( del( proyecto.( Una( parte( fundamental(de(la( etapa(del(análisis(consiste( en( extraer) los) requisitos(del( producto( donde( el( cliente( juega( un( papel( determinante.( Crearemos( un( documento( con( los( requisitos) de) software( que( hace( falta( para( la( elaboración( del( portal,( donde( se( identifica(los(actores(que(utilizan(el(portal(y(los)casos)de)uso(del(mismo.( 11.2)Requisitos)del)software) 11.2.1)Propuesta)inicial) La(idea(planteada(fue(la(realización(de(un(software(de(participación(ciudadana( que( sirva( de( labor( comunicativa( entre( una( institución( pública( y( sus( ciudadanos.( El( proyecto(consistiría(en(un(portal(web(que(funcionaría(desde(una(institución(pública,( donde( el( ciudadano( expondría( y( valoraría( los( diferentes( proyectos( de( los( otros( usuarios(o(de(la(propia(administración.(( 11.2.2)Jornadas)de)Innovación)Social) A(partir(de(diversas(reuniones(con(los(tutores(se(llegó(a(la(conclusión(que(sería( muy(conveniente( conseguir( la( participación( de( algún( ayuntamiento( interesado( en( el( proyecto.( Dada( la( colaboración( de( los( tutores( del( proyecto( con( la( Concejalía( de( Participación(Ciudadana(del(Ayuntamiento(de(Gáldar,(se(decidió(invitarles(a(participar( en( el( proyecto( de( forma( que( se( pudiera( realizar( una( primera( experiencia( piloto( del( portal( en( dicho( ayuntamiento.( La( propuesta( tuvo( una( buena( acogida( por( parte( de( dicha( Concejalía( que( se( comprometió( a( participar( en( el( proyecto.( Tras( diversas( reuniones(con(los(técnicos(de(dicha(Concejalía,(se(propuso(llevar(a(acabo(una(Jornadas( de(Innovación(Social(abiertas(a(la(participación(ciudadana(que(nos(ayudará(a(definir(los( requisitos( del( software,( identificar( los( diferentes( tipos( de( actores( que( habrían( en( el( portal(y(así(poder(describir(correctamente(los(casos(de(usos.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 56 En(este(sentido(podríamos(afirmar(que(el(desarrollo(del(proyecto(en(si(mismo( ha(sido( un( proyecto(participativo(donde( se(ha(tenido( en(cuenta(desde(su( origen(las( propuestas(de(los(ciudadanos(y(agentes(específicos(del(municipio.( Todo(el(seguimiento(de((las(Jornadas)de)Innovación)Social(se(realizó(a(través(de( un(curso(Moodle(creado(en(el(servidor(Moodle(del(IUCTC((Instituto(Universitario(de( Ciencias( y( Tecnologías( Cibernéticas),( donde( se( lleva( al( día( todo( el( contenido( programado(en(las(jornadas(y(donde(los(propios(ciudadanos(participantes(colaboran( de( forma( activa( en( algunas( cuestiones( del( portal,( como( su( nombre,( las( categorías( pertenecientes(a(los(proyectos(o(el(código(ético.( ( Ilustración 11.1: Página de Inicio del Moodle. Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 57 Ilustración 11.2: Actividad en el curso Moodle. 11.2.3)Identificación)de)actores) Los( actores( son( las( diferentes( personas( (o( dispositivos)( que( utilizan( la( aplicación.(Los(actores(representan(los(papeles(que(juegan(las(personas(conforme(al( portal(web.(Definido(de(una(manera(más(formal,(un(actor(es(algún!elemento'que'se' comunica( con( el( sistema( o( producto( y( que( es( externo( al( sistema( en( sí( mismo.( Cada( actor(tiene(una(o(más(metas(cuando(utiliza(el(sistema.(( Al(ser(una(herramienta(orientada(a(la(creación(de(proyectos(en(el(portal(se(tienen( diferentes(tipos(de(actores(según(los(roles(de(usuario(y(su(ámbito(de(acción.(Por(tanto( diferenciaremos(dos(tipos(de(clasificación(de(roles:( • Roles)en)el)portal.) • Roles)en)un)proyecto.) ) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 64 Nº#Caso#de# uso# Actor#predominante# Acción# Resumen# Objetivo# Dentro#del#Portal# CU-1% Usuario%Anónimo% Registrarse%vía%Internet% Registrar%utilizando%correo%electrónico,%nombre%de%usuario%y% contraseña.%% REGISTRO% CU-2% Confirmar%registro% Confirmar%el%registro%con%su%correo%electrónico.% CU-3% Registrarse%vía%física% Registrar%utilizando%el%DNI%del%usuario.% CU-4% Confirmar%Registro% (autenticado)% Una%persona%de%la%administración%le%confirma%el%registro.% CU-5% Usuario%Registrado% Loguearse% Una%vez%registrado,%utiliza%su%correo%o%nombre%de%usuario%y% contraseña%para%entrar%en%el%sistema.% CU-6% Cerrar%sesión% Cerrar%sesión%en%el%sistema.% CU-7% Editar%Perfil% Editar%sus%datos%de%perfil.% Editar%datos%de% usuario% CU-8% Contenedor%de%imágenes% Permitir%tener%un%gestor%de%imágenes.% CU-9% Subir%imagen% Subir%una%imagen%a%tu%contenedor%de%imágenes% CU-10% Eliminar%imagen% Eliminar%una%imagen%de%tu%contenedor%de%imágenes.% CU-11% Seleccionar%imagen% Seleccionar%una%imagen%de%tu%contenedor%de%imágenes.% CU-12% Enviar%mensaje% Enviar%un%mensaje%a%otro%usuario.% Envío%de% mensajes% CU-13% Seleccionar%Usuario% Seleccionar%al%usuario%que%quieres%enviar%el%mensaje.% CU-14% Participar%en%el%foro% Participar%en%el%foro%un%usuario.% Foros%y% comentarios% CU-15% Gestión%tema% Gestionar%el%tema%del%foro.% CU-16% Crear%tema% Crear%el%tema%en%el%foro.% CU-17% Edita%tema% Editar%que%tema%quieres%que%se%hable%en%el%foro.% CU-18% Seleccionar%tema% Seleccionar%un%tema.% CU-19% Eliminar%tema% Eliminar%un%tema%que%has%creado.% CU-20% Seleccionar%categoría% Seleccionar%a%la%categoría%que%pertenece%el%tema%del%foro.% Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 65 CU-21& Gestión&respuesta& Gestionar&la&respuesta&del&foro.& CU-22& Crear&respuesta& Enviar&una&respuesta&en&un&foro.& CU-23& Editar&respuesta& Editar&una&respuesta&en&un&foro.& CU-24& Eliminar&respuesta& Eliminar&la&respuesta&del&foro.& CU-25& Seleccionar&respuesta& Seleccionar&la&respuesta&que&deseas&gestionar.& CU-26& Realizar&comentarios& Realizar&comentarios&dentro&de&los&nodos&del&portal.& CU-27& Votar& Realizar&una&votación& Votaciones&o& encuestas& CU-28& Visualizar&votaciones& Visualizar&los&datos&de&una&votación.& CU-29& Seleccionar&votación& Seleccionar&una&votación.& CU-30& Rellenar&encuesta& Realizar&una&encuesta.& CU-31& Visualizar&encuesta& Visualizar&los&resultados&de&una&encuesta.& CU-32& Seleccionar&encuesta& Seleccionar&una&encuesta.& CU-33& Inscribirse& Inscribir&a&un&usuario&en&un&proyecto.& Proyectos& CU-34& Darse&de&baja& Dar&de&baja&de&un&proyecto.& CU-35& Seleccionar&proyecto& Seleccionar&el&proyecto&al&que&quieras&pertenecer.& CU-36& Usuario&Autenticado& Proponer&proyecto& Proponer&un&proyecto&en&el&sistema.& CU-37& Administrador& Gestionar&contenido& Gestionar&contenido& Tareas&de& administración& CU-38& Crear&contenido& Crear&nuevo&contenido&dentro&del&portal.& CU-39& Eliminar&contenido& Eliminar&cualquier&contenido&del&sistema.& CU-40& Ocultar&contenido& Ocultar&cualquier&contenido&del&sistema.& CU-41& Editar&contenido& Editar&cualquier&contenido&en&el&sistema.& CU-42& Publicar&contenido& Publicar&cualquier&contenido&del&sistema.& CU-43& Seleccionar&contenido& Seleccionar&el&contenido&donde&quiere&hacer&la&acción.& CU-44& Gestionar&usuarios& Gestionar&&los&usuarios&dentro&del&sistema.& CU-45& Validar&usuario& Validar&a&los&usuarios,¶&convertirlos&en&usuarios& autenticados.& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 66 CU-46& Añadir&usuario& Añadir&a&un&usuario&dentro&del&proyecto.& CU-47& Editar&usuario& Editar&los&datos&de&un&usuario.& CU-48& Bloquear&usuario& Bloquear&a&un&usuario.& CU-49& Eliminar&usuario& Eliminar&a&un&usuario&del&sistema.& Dentro'de'un'Proyecto' CU-50& Administrador& Gestión&de&herramienta& Gestionar&las&herramienta&que&puedes&desarrollar&en&un& proyecto:&votaciones,&encuestas,&wiki,&foros,&eventos,&y& repositorio&de&documentos.& & Tareas& comunes&de&un& Proyecto& Agente&de&cambio& Experto& Colaborador& CU-51& Administrador& Crear&herramienta& Crear&las&herramienta&que&puedes&desarrollar&en&un&proyecto:& votaciones,&encuestas,&wiki,&foros,&eventos,&y&repositorio&de& documentos.& & Agente&de&cambio& Experto& Colaborador& CU-52& Administrador& Eliminar&herramienta& Eliminar&las&herramienta&que&puedes&desarrollar&en&un& proyecto:&votaciones,&encuestas,&wiki,&foros,&eventos,&y& repositorio&de&documentos.& & Agente&de&cambio& Experto& Colaborador& CU-53& Administrador& Editar&herramienta& Editar&las&herramienta&que&puedes&desarrollar&en&un&proyecto:& votaciones,&encuestas,&wiki,&foros,&eventos,&y&repositorio&de& documentos.& & Agente&de&cambio& Experto& Colaborador& CU-54& Administrador& Seleccionar&herramienta& Seleccionar&la&herramienta&que&quieres&crear.& & & & Agente&de&cambio& Experto& Colaborador& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 67 CU-55% Administrador% Seleccionar%ámbito% Seleccionar%el%ámbito%donde%quieres%crear%una%herramienta,% dependiendo%del%permiso%que%tenga,%la%puedes%crear%en% diferentes%ámbitos%de%trabajo.% % Agente%de%cambio% Experto% Colaborador% CU-56% Administrador% Gestionar%usuarios%al% proyecto% Gestionar%a%los%usuarios%dentro%de%un%proyecto.% % %Administración% dentro%de%un% proyecto% Agente%de%cambio% CU-57% Administrador% Editar%rol%en%el%proyecto% Edita%el%rol%o%los%roles%de%un%usuario%dentro%del%proyecto,%estos% pueden%ser:%Agente%de%Cambio,%Experto,%Colaborador%o% Participante.% Agente%de%cambio% CU-58% Administrador% %Bloquear%usuario%del% proyecto% Bloquear%a%un%usuario%dentro%de%un%proyecto.% % Agente%de%cambio% CU-59% Administrador% %Eliminar%usuario%del% proyecto% Eliminar%a%un%usuario%dentro%de%un%proyecto.% % Agente%de%cambio% CU-60% Administrador% Invitar%usuarios%al% proyecto% Invitar%a%usuarios%a%participar%dentro%de%un%proyecto.% % Agente%de%cambio% Tabla 11.1: Casos de usos Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 68 11.5$Diagrama$de$casos$de$Usos$ Una$vez$identificados$los$actores$del$sistema,$se$elabora$el$diagrama$general$de$ casos$de$uso$así$como$la$explicación$detallada$de$cada$uno.$Toda$esta$información$se$ puede$encontrar$en$el$anexo$I$de$esta$memoria.$ 11.6$Diagrama$de$actividades$ Los$diagramas$de$actividad$muestran$la$secuencia$de$actividades$que$sigue$una$ aplicación$ mediante$ diagramas$ de$ flujo,$ desde$ el$ punto$ inicial$ hasta$ el$ punto$ final$ indicando$ muchas$ de$ las$ rutas$ de$ decisiones$ posibles$ durante$ la$ ejecución$ de$ la$ aplicación.$ Gracias$ a$ ellos$ se$ observa$ la$ transición$ de$ diferentes$ ejecuciones$ en$ el$ portal.$ Diagrama 11.3: Diagrama de actividades de un proyecto. Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 69 En#el#diagrama#de#actividades#9.3#se#observa#el#ciclo#de#un#proyecto#desde#su# proposición# hasta# su# cierre.# Como# se# puede# observar# hay# tres# tipos# de# figuras# representativas# en# el# proceso,# la# primera# es# el# usuario# autenticado# que# propone# el# proyecto,#pudiéndose#convertir#en#agente#de#cambio#de#su#proyecto;#la#segunda#figura# es#el#administrador#del#portal#que#actúa#de#mediador#entre# la#comisión#y#el#usuario# autenticado;# y# por# último# tenemos# la# comisión# de# proyectos# que# se# encargará# de# evaluar# la# proposición# del# proyecto# propuesto.# A# continuación# detallaremos# paso# a# paso#el#diagrama#de#actividades#expuesto:# 1. El#usuario'autenticado#propone#un#proyecto.# 2. Al#administrador#le#llega#el#proyecto#y#los#entrega#a#la#comisión'de'proyectos.# 3. La#comisión#evalúa#el#proyecto:# 3.1. Si# la# comisión# aprueba# el# proyecto,# el# administrador# lo# crea# y# notifica# al# usuario#que#ya#puede#empezar#a#realizar#el#proyecto#(Vamos#al#punto#4).# 3.2. Si#la#comisión#rechaza#el#proyecto:# 3.2.1. Si#se#puede#modificar#el#administrador#envía#una#notificación#al# usuario# rechazando# el# proyecto# y# proponiéndole# los# cambios# para# la# aceptación#del#proyecto.# 3.2.2. Si#no#se#puede#modificar,#se#rechaza#el#proyecto.# 4. El#proyecto#entra#en#fase#de#ejecución#donde#el#usuario#autenticado#pasa#a#ser#el# agente'de'cambio#del#proyecto.# 5. Una#vez#terminado#el#proyecto,#tanto#por#inactividad#de#los#usuarios#del#proyecto#o# por#la#notificación#del#agente#de#cambio,#el#administrador#cerrará#el#proyecto.### ' Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 70 12.$Diseño$ 12.1$Introducción$ Una$vez$realizado$el$análisis$y$evaluar$qué$se$quiere$hacer,$pasamos$a$la$fase$de$ diseño$ en$ la$ que$ se$ evalúa$ como$ se$ quiere$ hacer.$ El$ diseño$ es$ la$ creación$ de$ una$ representación$ o$ modelo$ del$ software$ que$ proporciona$ detalles$ acerca$ de$ la$ estructura$de$datos,$las$arquitecturas,$las$interfaces$y$los$componentes$del$software.$ 12.1.1$Arquitectura$cliente-servidor$ La$arquitectura$ cliente-servidor$es$ un$ modelo$ de$ aplicación$ distribuida$ que$ consiste$básicamente$en$un$cliente$que$realiza$peticiones$a$otro$programa$(el$servidor)$ que$le$da$respuesta.$Aunque$esta$idea$se$puede$aplicar$a$programas$que$se$ejecutan$ sobre$ una$ sola$plataforma$ es$ más$ ventajosa$ en$ un$ sistema$ operativo$multiusuario$ distribuido$a$través$de$una$red$de$computadores.$La$interacción$cliente-servidor$es$el$ soporte$de$la$mayor$parte$de$la$comunicación$por$redes.$ $ $ Ilustración 12.1: Arquitectura Cliente-Servidor En$este$modelo$las$aplicaciones$se$dividen$de$forma$que$el$servidor$contiene$la$ parte$que$debe$ser$compartida$por$varios$usuarios$y$en$el$cliente$permanece$sólo$lo$ particular$de$cada$usuario.$$ $ Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 71 Los$clientes$realizan$funciones$como:$ • Manejar$la$interfaz$de$usuario$ • Capturar$y$validar$datos$de$$entrada$ • Generar$consultas$e$informes$sobre$la$base$de$datos$ • Es$quien$inicia$solicitudes$o$peticiones$ El$servidor$realiza,$entre$otras,$las$siguientes$operaciones:$ • Acepta$las$conexiones$de$un$gran$número$de$clientes$ • Al$iniciarse$espera$a$que$lleguen$las$solicitudes$de$los$clientes$ • Tras$ la$ recepción$ de$ una$ solicitud,$ la$ procesa$ y$ luego$ envía$ la$ respuesta$ al$ cliente$ $ $ Ilustración 12.2: Diagrama arquitectura cliente-servidor Algunas$características$del$modelo$cliente-servidor$son:$ • El$cliente$no$necesita$reconocer$la$lógica$del$servidor,$sólo$su$interfaz$$externa.$ • El$cliente$no$depende$de$la$ubicación$física$del$servidor,$ni$del$tipo$de$$equipo$ físico$en$el$que$se$encuentra,$ni$de$su$sistema$operativo.$ • Los$cambios$en$el$servidor$implican$pocos$o$ningún$cambio$en$el$cliente.$$ ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 72 12.1.2$Patrón$MVC$(Modelo$Vista$Controlador)$ El# patrón# de# arquitectura# MVC# (Modelo# Vista# Controlador)# es# un# patrón# que# define# la# organización# independiente# del# Modelo# (Objetos# de# Negocio),# la# Vista# (interfaz#con#el#usuario#u#otro#sistema)#y#el#Controlador#(controlador#del#workflow#de# la#aplicación).# De#esta#forma,#dividimos#el#sistema#en#tres#capas#donde,#como#explicaremos# más#adelante,#tenemos#la#encapsulación#de#los#datos,#la#interfaz#o#vista#por#otro#y#por# último#la#lógica#interna#o#controlador.# El#patrón#de#arquitectura#"modelo#vista#controlador",#es#una#filosofía#de#diseño# de#aplicaciones,#compuesta#por:# • Modelo# o Contiene#el#núcleo#de#la#funcionalidad#(dominio)#de#la#aplicación.# o Encapsula#el#estado#de#la#aplicación.# o No#sabe#nada#/#independiente#del#Controlador#y#la#Vista.# • Vista# o Es#la#presentación#del#Modelo.# o Puede#acceder#al#Modelo#pero#nunca#cambiar#su#estado.# o Puede#ser#notificada#cuando#hay#un#cambio#de#estado#en#el#Modelo.# • Controlador# o Reacciona# a# la# petición# del# Cliente,# ejecutando# la# acción# adecuada# y# creando#el#modelo#pertinente.# $ Ilustración 12.3: Patrón MVC Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 73 A" continuación" se" muestra" el" diagrama" de" secuencia" del" Modelo" Vista" Controlador"(MVC):" Diagrama 12.1: Diagrama de secuencia MVC Pasos:" 1. El"usuario"introduce"el"evento." 2. El"Controlador"recibe"el"evento"y"lo"traduce"en"una"petición"al"Modelo"(aunque" también"puede"llamar"directamente"a"la"vista)." 3. El"modelo"(si"es"necesario)"llama"a"la"vista"para"su"actualización." 4. Para"cumplir"con"la"actualización"la"Vista"puede"solicitar"datos"al"Modelo." 5. El"Controlador"recibe"el"control." 12.2$Propiedades$del$portal$ En"este"apartado"se"presenta"el"diseño"de"un"sitio"web"adecuado"para"un"portal" de"participación"ciudadana,"para"ello"establecemos"unas"pautas"de"guía"para"el"diseño" de"nuestra"web:" • El"portal"debe"ser"bastante"intuitivo"y"fácil"de"manejar." • Los"fallos"que"se"pudieran"generar"arreglarlos"lo"más"rápidamente"posible." • Actualizar"diariamente"el"portal"para"que"no"quede"obsoleto." • Enseñar" al" usuario" del" sistema" como" utilizar" correctamente" el" portal" y" los" beneficios"que"tiene"utilizarlo"correctamente." Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 80 view_display, Almacena(información(acerca(de(cada(pantalla(conectada(a(una(vista.( views_view( Almacena(los(datos(generales(de(una(vista. Ilustración 12.9: Estructura base de datos asociadas a las vistas. Lista&de&tablas&relacionadas&con&Organic&Groups.& og_membership, La(tabla(con(todos(los(nodos(pertenecientes(a(un(grupo.( og_membership_type, El tipo de participación en el grupo de un usuario. og_role, El(rol(de(cada(usuario(por(grupo.( og_role_permission, Almacena(el(permiso(asignado(a(funciones(de(usuario(por(grupo.( og_users_roles, Mapas(de(los(usuarios(a(los(roles.( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 81 Ilustración 12.10: Estructura base de datos asociadas a Organic Groups. ! Lista!de!algunas!tablas!de!Webform!(cuestionario).! webform( Tabla%para%almacenar%propiedades%adicionales%para%los%nodos%WebForm.% webform_component( Almacena%la%información%acerca%de%los%componentes%para%los%nodos%WebForm.% webform_conditional( Mantiene%la%información%sobre%la%lógica%condicional.% webform_roles( Mantiene%la%información%de%acceso%con%respecto%a%qué%funciones%puede%usar%un% usuario.% Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 82 Ilustración 12.11: Estructura base de datos asociadas a los cuestionarios. Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 83 12.3.2%API%de%Drupal% Una$API$(Interfaz$de$programación$de$aplicaciones,$Application* programming* interface)$no$ es$más$ que$una$librería$de$funciones$que$ se$pone$ a$disposición$de$ los$ desarrolladores$ para$ acceder$ a$ determinados$ datos$ del$ sistema$ de$ una$ forma$ abstracta,$sin$necesidad$de$conocer$cómo$se$organiza$el$sistema$internamente.$Esto$ también$permite$que$el$sistema$se$pueda$modificar$internamente$sin$que$afecte$a$las$ aplicaciones$ que$ han$ hecho$ uso$ de$ las$ funciones$ de$ la$ API,$ siempre$ que$ éstas$ mantengan$intactos$su$nombre$y$parámetros$de$entrada$y$salida.$ A$ continuación$ se$ muestra$ la$ Api$ de$ la$ base$ de$ datos$ de$ Drupal.$ Se$ puede$ consultar$la$API$de$Drupal$en$http://api.drupal.org.$ Ilustración 12.12: API de la base de datos de Drupal. % Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 84 12.4%Interfaz% Esta% sección% está% destinada% para% mostrar% los% diferentes% diseños% iniciales% que% fueron%realizados%para%cada%vista%de%la%aplicación.% 12.4.1%Primeros%diseños% Para%el%diseño%de%la%interfaz%primero%se%realizó%unos%bocetos%simples%para%ver%la% organización% de% la% información% que% contiene% la% web.% En% los% bocetos% se% establece% la% estructura%de%la%web,%donde%irán%sus%apartados%y%enlaces%e%igualmente%nos%da%una%vista% general%de%los%requisitos%de%interfaz.% Boceto&del&Inicio&del&Portal& 1.1Logo% %% %% %% %% 1.2.Login% %% %% 1.Encabezado% %% %% %% nombre% contraseña% %% %% %% %% %% %% %% 1.3.Apartados%del%Portal% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% 2.Fotos%de%los%proyectos,%y%explicación%del%portal% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % % % % % %% %% 3.Inscribirse% % 4.Entrar% %% %% %% % %% %% %% %% %% %% % %% %% %% %% %% %% % %% %% %% %% %% %% % %% %% %% %% %% %% %% %% %% %% %% 5.Pie%del%portal% Ilustración 12.13: Boceto página de Inicio. Se%ha%decidido%por%un%diseño%típico%de%estructura%web,%donde%cada%punto%es%un% área%de%interés:% 1. Tenemos% el% encabezado% del% portal% web,% este% se% muestra% siempre% y% en% el% contiene:% 1.1. %El%logo%del%portal%o%el%nombre%de%la%página%web.%Se%establece%en%la%parte% superior%izquierda.% Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 85 1.2. El& enlace& de& Login& donde& se& muestra& el& formulario& de& nombre& y& contraseña,&también&se&muestra&un&enlace&al&formulario&de®istro.& 1.3. Los& apartados( del( portal,& a& través& de& los& cuales& se& puede& enlazar& a& cualquier&punto&de&la&web:&proyectos,&foros&generales,¬icias,&etc.& 2. Mostramos&imágenes&atrayentes&a&los&usuarios&y&una&pequeña&explicación&del& portal.& 3. El®istro&de&la&web&esta&contenido&en&la&sección&de&Inscribirse.& 4. En&el&bloque&Entrar&los&usuario&acceden&a&un&listado&de&los&proyectos&activos& del&portal.& 5. El&pie(de(página&al&igual&que&el&encabezado&se&muestra&en&cualquier&parte&del& portal,&en&esta&parte&se&incluye&las&entidades&colaborativas&y&el©right&de&la& web.& Boceto&dentro&de&un&proyecto& 1.1&Logo& && && && && 1.2& Usuario& Cerrar& && 1.(Encabezado( && && && && && && && && && && && 1.3&Apartados&del&portal& 2.1&Nombre&proyecto& && & && && && && && && 2.( Proyecto( & & 2.4&Miembros& && & & & & & && 2.2&Edición& Herramientas& & 2.3&Recurso& & && & & 2.5&Calendario& & & && & & && & & 2.6&Ult.& Noticias& & & && & & && & & 2.7&Ult.& Eventos& & & && && && && && && && && 3.(Pie(de(página( Ilustración 12.14: Boceto dentro de un proyecto. Repetimos&el&mismo&esquema&que&el&boceto&anterior,&el&encabezado&y&el&pie&de& página&se&muestra&fijo&en&todas&las&páginas&de&la&web.&La&única&salvedad&con&respecto& al&anterior&boceto&es&que&este&boceto&muestra&a&una&persona&ya&logueada&,&por&tanto& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 86 en#el#apartado#1.2#se# muestra# el# nombre# del# usuario# logueado# y# un# enlace# a#cerrar# sesión.## # Los#detalles#de#los#otros#apartados#se#muestran#a#continuación:# 2. Se#muestra#una#pantalla#con#todo#lo#perteneciente#al#proyecto.# 2.1. En#la#esquina#superior#izquierda#se#muestra#el#nombre'del'proyecto.# 2.2. El#bloque#de#la#izquierda#tiene#todas#las#herramientas#de#la#que#dispone#el# proyecto#para#su#ejecución.# 2.3. Muestra#el#contenido#del#recurso.# 2.4. Muestra#todos#los#miembros#pertenecientes#al#proyecto.# 2.5. Un#calendario#con#hitos.# 2.6. Las#últimas#novedades#del#proyecto.# 2.7. Los#últimos#eventos#del#proyecto.# 12.4.2'Temas' Una#vez#establecido#cómo#van#a#estar#distribuidos#los#diferentes#apartados#del# portal,#se#realizó#un#estudio#de#los#temas#compatibles#con#lo#diseñado#en#los#bocetos#y# que#cumplen#ciertos#requisitos:# Técnicos:) • Compatible#con#Drupal#7# • Compatible#con#los#principales#navegadores:#IE,#Firefox,#Safari,#Opera,#Chrome.# • Diseño# web# adaptable# (Responsive) web) design),# adapta# la# apariencia# de# las# páginas#web#al#dispositivo#que#se#está#utilizando#para#visualizarla.# Funcionalidad:) • Intuitivo#y#manejable# • Sencillo# • Que#incluya#el#mayor#número#de#herramientas# • Bien#documentado# # Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 87 Se# realizó# una# búsqueda# por# diferentes# webs# donde# se# proponen# diferentes# temas#buscando#un#diseño#que#cumpliera#con#los#requisitos#establecidos:## • https://www.drupal.org/# • http://www.templatemonster.com/# • http://themeforest.net/# Tras#esta#búsqueda#realizamos#una#selección#de#3#temas#que#se#adaptaron#al# proyecto: Stability( Ilustración 12.15: Theme Stability http://themeforest.net/item/stability-responsive-drupal-7-ubercart-theme/7555904 Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 88 Blocks' Ilustración 12.16: Theme Blocks http://themeforest.net/item/blocks-a-metroinspired-responsive-drupal-theme/3635281 Metro' Ilustración 12.17: Theme Metro http://www.templatemonster.com/drupal-themes/48975.html Finalmente) el) tema) escogido) fue) “Stability”) debido) que) es) el) mejor) que) se) adapta) a) los) requisitos) y) herramientas) necesarias) en) el) proyecto.) Posee) una) gran) cantidad)de)elementos)que)pueden)facilitar)la)implementación)del)portal,)por)ejemplo) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 89 ya#viene#incluido#en#el#tema#la#herramienta#“fórum1”.#Además#se#puede#personalizar## con# facilidad# los# colores# de# la# presentación,# escogiendo# el# verde# ya# que# es# un# color# representativo#para#Gáldar.# 12.5%Diseño%de%la%estructura% Una#vez#escogido#el#tema#“Stability”#y#diseñado#la#interfaz#de#la#web,#se# muestra#una#comparativa#del#diseño#de#la#estructura#con#los#primero#bocetos,# observando#la#semejanza#entre#los#bocetos#y#la#interfaz.# 1 Forum: herramienta que da soporte a discusiones u opiniones en línea. Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 96 Menu% Permite'a'los'administradores'personalizar'el'menú'de'navegación'del'sitio.' Node% Permite'que'se'envíe'contenido'al'sitio'y'que'se'despliegue'en'páginas.' Number% Define'tipos'de'campos'numéricos.' Options% Define'controles'de'selección,'casillas'de'selección'y'botones'de'opciones'para' los'campos'de'textos'y'números.' Path% Permitir'a'los'usuarios'renombrar'las'URLs.' Search% Permite'la'búsqueda'de'palabras'en'todo'el'sitio.' System% Gestión'de'la'configuración'general'del'sitio'por'administradores.' Taxonomy% Permite'la'categorización'del'contenido.' Text% Define'tipos'de'campo'de'texto'simple.' Trigger% Activa'las'acciones'que'serán'disparadas'en'ciertos'eventos'del'sistema,'como' cuando'se'crea'nuevo'contenido.' Update%manager% Comprueba'las'actualizaciones'disponibles'y'puede'instalar'módulos'y'temas'de' forma'segura'a'través'de'una'interfaz'web.' % Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 97 User% Administra*el*registro*de*usuarios*y*el*sistema*de*inicio*de*sesión.* 13.1.2%Módulos%Views% Views*(Vistas)*es*un*módulo*que*permite*realizar*listas*y*consultas*sobre*la*base* de*datos.*En*el*proceso*de*desarrollo*se*ha*utilizado*el*módulo*para*la*realización*de* todo* tipos* de* listas,* desde* listas* de* usuarios* hasta* listas* de* cualquier* tipo* de* contenido.** Ilustración 13.1: Vista de los usuarios en un proyecto. Ilustración 13.2: Vista de todos los cuestionarios en un proyecto. % % Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 98 Views& Crear%listas%y%consultas%personalizadas%de%la%base%de%datos.% Views&Bulk&Operations& El% módulo% Views& Bulk& Operations% (VBO)% añade% cuadros% de% selección% de% tipo% checkbox%a%los%resultados%de%la%vista.%Sobre%los%resultados%seleccionados%por%el%usuario% se%podrán%realizar%distintas%operaciones.% Views&Load&More& Un%complemento%que%ofrece%la%opción%de%añadir%un%botón%“más”%a%una%vista.% Views&UI& Interfaz%administrativa%que%permite%crear%o%editar%las%vistas.% 13.1.3$Organic$Groups$ Para% el% desarrollo% de% los% proyecto% utilizamos% los% módulos% pertenecientes% a% Organics) Groups&(Grupos% Orgánicos).% Este% módulo% permite% recoger% un% grupo% de% entidades%con%alguna%relación%entre%sí%y%agruparlas.%Gracias%a%estos%módulos%podemos% construir% espacios% independientes% en% el% sitio% web% con% áreas% de% usuarios,% públicos% o% privados,%con%características%diferentes%cada%uno.%% Los%usuarios%del%portal,%pueden%%seguir%a%distintos%grupos%y%subscribirse%o%ser% asignados% a% otros.% Además,% pueden% tener% definidos% roles% dentro% del% grupo% con% permisos%específicos%dentro%de%él,%los%cuales%pueden%sobrescribir%a%los%generales%del% portal%dentro%del%contexto%del%grupo.% Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 99 Ilustración 13.3: Parte de código limitación de los roles. Organic(groups( API$que$permite$asociar$contenido$con$grupos.$ Organic(groups(access(control( Activar$control$de$acceso$para$grupos$privados$y$públicos,$y$para$el$contenido$ de$grupo.$ Organic(groups(context( Obtiene$un$grupo$de$la$página$que$se$está$viendo$actualmente.$ Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 100 Organic(groups(extras( Añade&nuevas&vistas&y&bloques¶&Organic(Groups.& Organic(groups(moderation( Habilitar& control& de& acceso& para& las& opciones& de& publicación& y& revisión& del& contenido&del&grupo.& Organic(groups(register( Permite&suscribirse&a&grupos&durante&el®istro&de&usuario.& Organic(groups(UI( Interfaz&de&Uuuario&de&Organic(Groups.& Organic(groups(Webform(integration( Permite& a& los& administradores& de& Organic( Groups& modificar& formularios& web& dentro&de&sus&grupos.& Organic(groups(Invite( Permite& a& los& miembros& de& un& grupo& invitar& a& otros& usuarios& a& unirse& a& su& grupo.& 13.1.4%Campos% Entity(Reference( Proporciona&un&campo&que&puede&hacer&referencia&a&otras&entidades.& Link( Define&los&tipos&de&campo&enlace&simples.& 13.1.5%Herramientas%para%los%usuarios% Dentro& del& portal& los& usuarios& pueden& interactuar& con& diferentes& recursos,& hemos& realizado& un& listado& de& los& principales& módulos& con& los& que& interactúa& un& usuario.& & & & Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 101 Dentro'del'núcleo'se'encuentran'los'módulos:' Comment' Permite'a'los'usuarios'comentar'y'discutir'contenido'publicado.' Forum' Proporciona'foros'de'discusión.' Poll' Permite' que' el' sitio' recopile' votos' sobre' diferentes' temas' en' forma' de' preguntas'de'opción'múltiple.' Webform' Permite'la'creación'de'formularios'y'cuestionarios.' ShareThis' Añade' una' barra' de' botones' para' compartir' el' contenido' en' las' diferentes' redes'sociales.' SMTP'Authentication'Support' Permitir' que' los' correos' electrónicos' del' sitio' sean' enviados' a' través' de' un' servidor'SMTP.' IMCE' Un' cargador' y' navegador' de' imágenes/archivos' con' soporte' de' directorios' personales'y'cuota'de'usuario.' CKEditor' Se'trata'de'un'editor'HTML'de'tipo'WYSIWYG'(What'You'See'Is'What'You'Get)' para'su'uso'en'lugar'de'campos'de'texto'sin'formato.' Calendar' Extensión' de' Views' para' mostrar' vistas' que' contengan' fechas' como' Calendarios.' ' ' Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 102 Date% Hace%que%los%campos%fecha/hora%estén%disponibles.% Date%API% API%de%fechas%que%puede%ser%usada%por%otros%módulos.% CAPTCHA% El% módulo% CAPTCHA% permite% añadir% preguntas% a% los% formularios% de% manera% arbitraria,%para%evitar%que%software%automatizados%causen%daños%en%el%sistema.% Google%Captcha% Verifica% si% el% usuario% es% un% humano% sin% necesidad% de% resolver% un% código% de% imagen.% 13.1.6%Rules% Usando% Rules% podremos% definir% acciones% condicionales,% que% se% ejecutarán% cuando% ocurran% determinados% eventos.% Rules% permite% definir% reglas% complejas% y% flexibles%para%determinar%si%una%acción%debe%o%no%ejecutarse%al%producirse%el%evento.% Rules% Realiza%una%acción%según%un%evento%y%sus%condiciones.% Rules%UI% Interfaz%administrativa%para%la%gestión%de%reglas.% 13.1.7%My%Modules% Además% de% los% módulos% que% hemos% instalados% en% drupal% para% el% funcionamiento%de%la%herramienta%se%han%implementado%otros%módulos.% Action%add%an%article,%forum%and%poll%to%PROYECTO%group%or%its%subgroup% Acción%de%agregar%un%tipo%de%contenido%al%proyecto%o%a%un%grupo%de%trabajo.% Action%add%members%to%group%or%its%subgroup%when%adding%or%updating%the% USUARIOS%FIELD% Acción%de%agregar%miembros%a%un%proyecto%o%a%un%grupo%de%trabajo.% Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 103 Action'creates'three'subgroups'in'a'new'content'of'type'Project' Acción&de&crear&los&tres&grupos&de&trabajo&asociados&al&proyecto.& Action'delete'member(s)'from'a'subgroups'when'is'removed'from'the' PROYECTO'group.' Acción& de& eliminar& un& miembro& de& un& grupo& de& trabajo& cuando& este& se& ha& eliminado&de&un&proyecto.& Action'update'member(s)'role'from'a'project'or'subgroups' Acción&de&actualizar&el&rol&de&un&miembro&dentro&de&un&proyecto.& Blocks'Gáldar' Este&módulo&se&utiliza¶&mostrar&un&bloque&en&función&del&papel&del&usuario.& Blocks'Gáldar'Abajo' Este&módulo&se&utiliza¶&activar&o&desactivar&un&bloque&en&función&del&papel& del&usuario.& Blocks'Gáldar'Derecha' Este&módulo&se&utiliza¶&activar&o&desactivar&un&bloque&en&&función&del&papel& del&usuario.& Hide'the'group'audience'field'in'the'wiki,'forum'and'poll' Ocultar&ciertos&campos&dentro&del&formulario&de&un&contenido&que&se&utiliza&en& la&action_add_article.&Además,&se&esconde&la&opción&carpeta&de&proyectos&en&el&menú& desplegable&foro.& Nodes'Gáldar' Este&módulo&se&utiliza¶&modificar&la&plantilla.& This'module'is'used'to'delete'a'project'or'subgroup'and'all'contents' Acción&eliminar&un&proyecto&o&grupo'de'trabajos&y&todos&sus&contenidos.& Trigger'add'member'to'a'group'and'subgroups' Disparador&de&agregar&miembros&a&un&proyecto&y&grupos'de'trabajo.& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 104 Trigger&creates&three&subgroups&in&a&new&content&of&type&Project& Disparador)para)crear)lo)tres)grupos)de)trabajo)asociados)a)un)proyecto.) Trigger&delete&member(s)&from&the&subgroup(s)& Disparador) de) borrar) un) miembro,)desde) los) grupos)de)trabajo) cuando) se) elimine)del)proyecto.) Trigger&update&role(s)&of&some&subgroup(s)& Disparador)de)la)actualización)del)rol)de)un)miembro.) 13.1.8%Librerías%externas% Para)la)importación)de)algunos)módulos)se)requiere)la)instalación)de)algunas) librerías)externas)que)no)pertenecen)a)Drupal,)aquí)mostramos)todas)ellas:) ckeditor& Librería) que) permite) que) el) editor) de) texto) ckeditor) pueda) cargar) todas) sus) plantillas)y)actuar)conforme)a)ellas.) colorbox& Colorbox)es)un)módulo)que)nos)permite)ver)imágenes)por)encima)de)la)capa) actual)sin)necesidad)de)ir)al)enlace)de)dicha)imagen.)) 13.2%Tipos%de%Contenido% El)nodo)es)la)unidad)básica)de)contenido)en)Drupal.)Los)nodos)pueden)ser)de) distintos)tipos:)una)página)de)contenido)estático,)un)mensaje)del)foro,)un)artículo)que) se)vende)en)una)tienda)online,)un)formulario)web,)una)noticia)en)un)diario)digital,)una) imagen)de)una)galería)multimedia,)etc.) Drupal) categoriza) los) nodos) a) través) de) los) tipos) de) contenido.) Los) tipos) de) contenido) constituyen) una) potente) herramienta) para) implementar) contenidos) estructurados.)Una)vez)creado)el)tipo)de)contenido)ya)se)pueden)crear)los)elementos) de)contenido.)El)tipo)de)contenido)ya)tiene)por)defecto)un)título)y)un)campo)para)la) descripción.) Tenemos)varios)tipos)de)contenido)que)iremos)viendo)a)continuación.) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 105 13.2.1%Proyecto% Tipo%de%nodo%para%los%proyectos.%Posee%varios%campos%entre%los%que%destacan%el% campo%Grupo&%perteneciente%al%módulo%de%Organic%Groups,%por%el%cual%se%almacenan% los% demás% tipos% de% contenido% dentro% de% su% grupo% o% el% campo% Categoría%que% nos% permite% elegir% entre% un% listado% de% términos% de% taxonomía% la% categoría% a% la% que% pertenece%el%proyecto.% Campos' Título&del&proyecto& Campo%de%tipo%texto%que%da%nombre%al%proyecto.% Grupo& Campo% booleano% por% el% cual% definimos% si% un% proyecto% es% un% grupo% o% no,% por% defecto%se%almacena%como%grupo%y%los%usuarios%no%pueden%modificar%sus%parámetros% ya%que%está%oculto.% Imágenes& Campo% que% nos% permite% almacenar% imágenes% que% nos% sirva% para% mostrar% el% proyecto.%Por%defecto%ya%tiene%una%imagen%predefinida.% Button&link& Este% campo% crea% un% botón% enlazado% para% poder% registrarnos% al% proyecto,% se% crea%con%un%enlace%estático%y%no%puede%modificarse%por%los%usuarios.% Categoría& Campo%donde%se%tiene%varias%categorías%y%el%usuario%puede%seleccionar%cuales% pueden%relacionarse%con%su%proyecto.%% Información&del&proyecto& Campo%texto%donde%el%usuario%redacta%una%descripción%del%proyecto.% Opciones&de&ruta&URL& Campo%donde% nos%crea% automáticamente%el% enlace%web% por%el% cual%podemos% acceder%al%contenido.% Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 112 Ilustración 13.9: Campos del tipo de contenido Foros de Proyecto.! ! 13.2.7!Carpeta! Nodos! que! tienen! un! campo! especial! llamado! Fichero! que! sirve! para! poder! almacenar!adjuntos!a!la!web.! Campos' TítuloCampo!texto!donde!se!escribe!el!título!de!la!carpeta! Grupos-de-audienciaCampo! entityreference! que! permite! enlazar! el! contenido! a! un! grupo.! Este! campo!está!oculto!al!usuario!y!se!asigna!automáticamente!a!un!proyecto!o!un!grupo! de!trabajo!dependiendo!de!donde!se!cree!el!contenido.! Opciones-de-ruta-URLCampo! que! crea! automáticamente! un! enlace! web! para! que! el! contenido! sea! accesible!mediante!una!ruta.! CuerpoCampo!texto!para!escribir!una!descripción!del!contenido!de!la!carpeta.! FicheroCampo!archivo!que!permite!guardar!imágenes,!pdf,!etc.! ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 113 Ilustración 13.10: Campos del tipo de contenido Carpeta.! ! 13.2.8!Eventos! Es!un!tipo!de!nodo!que!tiene!un!campo!especial!Fecha!donde!se!puede!escribir! una!fecha!y!se!marcará!en!el!calendario!del!proyecto.!Este!tipo!de!contenido!se!puede! desarrollar!gracias!a!los!módulos!date!y!calendar.! Campos. Título, Campo!texto!donde!se!establece!el!título.! Groups,audience, Campo! entity, reference! que! permite! enlazar! el! contenido! a! un! grupo.! Este! campo!está!oculto!al!usuario!y!se!asigna!automáticamente!a!un!proyecto!o!un!grupo! de!trabajo!dependiendo!de!donde!se!cree!el!contenido.! Opciones,de,ruta,URL, Campo! que! crea! automáticamente! un! enlace! web! para! que! el! contenido! sea! accesible!mediante!una!ruta.! Descripción,del,evento, Campo!texto!para!poder!describir!el!evento.! Fecha, Campo!fecha! que!proporciona! un!calendario! desplegable!para! seleccionar!las! fechas.! ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 114 Ilustración 13.11: Campos del tipo de contenido Eventos.! ! A! parte! de! los! tipos! de! contenidos! de! un! proyecto! el! portal! cuenta! con! más! tipos!de!contenido:! 13.2.9!Forum!topic! Tipo!de!contenido!para!poder!crear!foros!generales!en!la!web.!Posee!un!campo! especial! llamado! “Foros”,! capaz! de! crear! mediante! la! taxonomía! de! Drupal! foros! y! contendedores!relacionados.!Este!tipo!de!contenido!viene!ya!incluido!con!el!módulo! Forum.!La!diferencia!que!existe!entre!los!foros!generales!y!los!foros!de!los!proyecto!es! la!ausencia!del!campo!group&audience!en!los!primeros.!! Campos* Tema& Campo!donde!se!establece!el!título!del!hilo.! Opciones&de&ruta&URL& Campo!donde! nos!crea! automáticamente!el! enlace!web! por!el! cual!podemos! acceder!al!contenido.! Foros& Campo!entity&reference!relacionado!con!el!módulo!que!permite!seleccionar!la! categoría!de!foro!en!la!que!se!quiere!crear!el!hilo.!Este!campo!se!oculta!al!usuario!y! según!a!la!categoría!que!accede!se!le!asigna.! Cuerpo& Campo!texto!donde!se!escribe!el!primer!comentario!del!hilo.!! ! ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 115 Ilustración 13.12: Campos del tipo de contenido Forum.! ! 13.2.10!Noticia! Tipo%de%contenido%para%crear%noticias.%Posee%muchos%campos%que%se%activan%o% desactivan%dependiendo%del%tipo%de%noticia.% Campos' Titulo! Campo%donde%se%establece%el%título%de%la%noticia.% Categoría! Campo%donde%se%tiene%varias%categorías%y%el%usuario%puede%seleccionar%cuales% pueden%relacionarse%con%la%noticia.%% Tags! Campo% igual% que% el% de% categoría% donde% se% establecen% las% subcategorías% que% pueden%relacionarse%con%la%noticia.% Masonry!size! Campo% numérico% que% establece% el% tamaño% del% bloque% que% va% a% ocupar% la% noticia,% por% defecto% ya% hay% un% tamaño% preestablecido% que% el% usuario% no% puede% modificar.% Tipo!de!noticia! Campo%de%lista%de%selección%donde%el%usuario%establece%el%tipo%de%noticia.%Según% el%tipo%de%la%noticia%el%formulario%a%desarrollar%varía.% Video!iframe! Campo%texto%que%sirve%para%poner%la%dirección%de%un%vídeo.% ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 116 Images' Campo&que&nos&permite&añadir&imágenes&adjuntas&a&la¬icia.& Body' Campo&texto&donde&se&escribe&la¬icia.& Audio' Campo&que&nos&permite&adjuntar&audios&a&la¬icia.& Audio'iframe' Campo&texto&que&sirve¶&poner&la&dirección&de&un&audio& Opciones'de'ruta'URL' Campo&donde& nos&crea& automáticamente&el& enlace&web& por&el& cual&podemos& acceder&al&contenido.& & & Ilustración 13.13: Campos del tipo de contenido Noticia.! & & 13.3!Otros!detalles!de!la!implementación! En& este& apartado& se& indicarán& los& aspectos& más& relevantes& de& la& implementación& de& “Actívate& por& Gáldar& 2.0”.&Ya& hemos& visto& anteriormente& los& módulos&y&los&tipos&de&contenido&instalados&y&creados&en&el&portal,&por&lo&que&en&este& apartado&mostraremos&la&implementación&de&las&actividades&más&comunes&en&la&web.& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 117 13.3.1$Propuesta$de$un$Proyecto$ Un#usuario#autenticado#puede#proponer#un#proyecto,#para#ello#solo#tiene#que#ir# dentro# del# apartado# proyecto# y# seleccionar# “Proponer# Proyecto”.# Aparece# un# formulario#que#el#usuario#rellena#y#guarda;#una#vez#guardado#se#muestra#un#mensaje# diciendo# que# se# ha# guardado# el# proyecto.# Internamente# una# vez# que# el# usuario# ha# guardado# la# propuesta# de# proyecto# se# crea# un# proyecto# de# tipo# de# contenido# “proyecto”#y# se# activan# unos# disparadores# que# ejecutan# diferentes# acciones# que# se# comentan#a#continuación.# Crear%los%grupos%de%trabajo% Una#vez#guardada#una#propuesta#de#proyecto,#se#activan#los#módulos#“Action% creates% three% subgroups%in% a% new% content% of% type% Project”# y# “Trigger% creates% three% subgroups%in%a%new%content%of%type%Project”,#La#ejecución#de#estos#módulos#crea#un# grupo#de# trabajo# para# Agentes# de# cambio,# otro# para# Colaboradores# y# otro# para# Expertos,#cada#uno#del#tipo#de#contenido#correspondiente.#A#continuación#se#muestra# una#parte#de#código#donde#se#crea#el#grupo#de#trabajo#de#agentes#de#cambio. Ilustración 13.14: Código de creación de grupos de trabajo.$ % % % % % % og_group('node', $entity); // ------------- Agente ---------------- $node_agent = new stdClass; $node_agent->type = 'grupo_de_trabajo_agentes'; $node_agent->language = LANGUAGE_NONE; $node_agent->title = 'Grupo de trabajo de agentes de cambio del proyecto ' . $entity->title; $node_agent->uid = $entity->uid; $node_agent->status = 1; $node_agent->comment = 2; $node_agent->promote = 0; $node_agent->created = REQUEST_TIME; node_object_prepare($node_agent); // Save the node node_save($node_agent); Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 118 ! Rol!del!creador!del!proyecto! Una$vez$creado$el$proyecto$y$los$grupos$de$trabajo$se$ha$configurado$Organics! Groups$ para$ que$ al$ creador$ del$ proyecto$ y$ sus$ grupos$ de$ trabajo$ tengan$ automáticamente$el$rol$de$Agente$de$Cambio.$ Ocultar!proyecto! El$ proyecto$ creado$ no$ se$ muestra$ ya$ que$ en$ las$ opciones$ de$ visibilidad$ está$ oculto.$Cuando$el$proyecto$sea$aprobado$por$el$administrador,$simplemente$se$activa$ la$opción$de$visibilidad$y$se$muestra$el$proyecto.$ Mensaje!de!creación!de!proyecto! Cuando$el$proyecto$es$creado$se$envía$un$mensaje$al$administrador$indicando$ que$se$ha$creado$un$proyecto$indicando$su$nombre.$Esto$es$posible$gracias$al$módulo$ de$Rules,$ya$que$podemos$activar$disparadores$y$añadir$acciones$a$ellos.! 13.3.2!Organigrama!de!un!grupo!de!trabajo! Dentro$de$los$proyectos$el$Agente$de$cambio$puede$realizar$operaciones$sobre$ los$usuarios.$Los$módulos$de$Organics!Groups$permiten$al$Agente$de$cambio$invitar$a$ una$persona$a$su$proyecto,$modificar$el$rol$de$un$usuario$o$eliminarlo.$ Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 119 Ilustración 13.15: Vista general de los usuarios de un proyecto. Invitar(a(un(usuario( Cuando' un' usuario' tiene' el' rol' de' Agente' de' cambio' de' un' proyecto' puede' invitar' a' los' usuarios' a' que' participen' en' él.' Esto' es' posible' gracias' a' un' módulo' externo'de'Organics(Groups,'denominado'Organic(groups(Invite.' Este' módulo' se' ha' modificado' para' ajustarlo' mejor' a' nuestro' portal.' Por' ejemplo,'como'se'puede'ver'en'la'ilustración'12.18'en'la'invitación'de'participación'de' un'proyecto'que'se'envía'a'un'usuario'se'indica'el'rol'que'se'le'propone'que'tenga'en' el'proyecto.'Igualmente'se'puede'acceder'a'un'listado'de'todos'los'usuarios'a'los'que' se'ha'enviado'invitaciones.'' Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 120 Ilustración 13.16: Formulario de invitación a un usuario. Ilustración 13.17: Mensaje de invitación a un usuario. ! Modificar!rol! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 121 El#Agente#de#cambio#puede#modificar#el#rol#de#cualquier#usuario#dentro#de#un# proyecto.#Una#vez#modificado#un#rol#se#activan#unos#disparadores#de#los#módulos#de# acciones#que#eliminaran#al#usuario#de#los#grupos#de#trabajo#del#rol#antiguo#y#lo#añade# en# los# grupos# e# trabajo# asociados# a# su# nuevo# rol.# Además# se# manda# un# correo# electrónico# al# usuario# notificándole# el# cambio.# Por# último,# modificamos# el# código# fuente# de# Organics) Groups# para# limitar# los# roles# como# están# especificados# en# los# requisitos#de#software.#A#continuación#se#muestra#parte#del#código#donde#verificamos# si# el# usuario# puede# ser# “Agente# de# cambio”# si# está# registrado# en# el# sistema# como# Autenticado.# Ilustración 13.18: Parte de código limitación de los roles. Eliminar)usuario) Cuando##eliminamos#a#un#usuario#de#un#proyecto,#éste#se#eliminará#de#todos#los# grupos# de# trabajo# a# los# que# pertenezca# y# recibirá# una# notificación# de# que# ha# sido# eliminado#del#grupo.#En#caso#de#que#el#usuario#haya#sido#bloqueado#pero#no#eliminado# ocurrirá#exactamente#lo#mismo#salvo#que#no#se#eliminará#del#proyecto,#aunque#sí#de# los# grupos# de# trabajo.# Para# estas# operaciones# utilizamos# también# los# módulos# de# Action#y#Trigger#que#se#han#creado#específicos#para#está#acción.# 13.3.3$Las$herramientas$ Como#hemos#visto#anteriormente#sólo#algunos#usuarios#pueden#acceder#a#las# herramientas#y##además#sólo#en#determinados#ámbitos.#En#este#apartado#explicaremos# cómo#hemos#conseguido#este#funcionamiento#particular.# // ---- Galdar Gáldar --- $account = user_load($form_state['og_membership']->etid); if (($form_state['values']['roles'][12] > 0 ) && (array_search(AUTEN_RES,$account->roles) === FALSE && array_search(AUTEN_NO_RES,$account->roles) === FALSE && array_search(AUTEN_VINC,$account->roles) === FALSE)){ form_set_error('name', t('El usuario no tiene el permiso requerido para tener el rol de Agente de Cambio.')); return; } Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 128 claramente) los) requisitos) que) se) deben) cumplir) para) proponer) un) proyecto) y) se) incluye,)al)igual)que)en)el)resto)de)funcionalidades,)un)video-tutorial)donde)se)muestra) la)creación)de)un)proyecto)piloto)de)prueba.) Dentro)de) un)proyecto)se) han)desarrollado)diferentes)espacios) o)entonos)de) trabajo)para)una)mayor)flexibilidad)a)la)hora)de)implementar)un)proyecto.)Entre)estos) espacios)tenemos)un)espacio)público)(parte)principal)del)proyecto),)visible)para)todos) los) usuarios) de) la) web,) y) múltiples) espacios) privados) (grupos) de) trabajo)) donde) los) usuarios)con)ciertos)roles)pueden)trabajar)conjuntamente)en)entornos)privados.) Por)último,)destacar)en)un)proyecto)su)parte)administrativa.)Se)les)ha)otorgado) a) los) responsables) del) proyecto) (agentes) de) cambio)) todas) las) funciones) administrativas) de) sus) proyectos.) Con) una) interfaz) clara) y) sencilla) estos) agentes) pueden) gestionar) tanto) a) los) usuarios) como) las) herramientas) de) un) proyecto.) Esto) otorga)una)verdadera)autonomía)y)libera)de)algunas)“cargas”)a)los)administradores)del) portal)dándoles)una)mayor)responsabilidad)a)los)agentes)de)cambio,)logrando)de)esta) forma)que)se)involucren)más)en)sus)proyectos.) 14.1.4$Herramientas$ Se)ha)implementado)un)conjunto)de)herramientas)elegidas)por)los)clientes)para) el) completo) desarrollo) de) los) proyectos.) La) creación,) gestión) y) uso) de) estas) herramientas) son) simples) y) se) asemejan) unas) a) otras) haciendo) más) fácil) su) interacción.) También) se) ha) implementado) en) las) herramientas) vídeo-tutoriales) para) mostrar)su)creación)y/o)uso.) Además) de) las) herramientas) dentro) de) un) proyecto,) se) han) añadido) otras) herramientas)generales)al)portal.)Una)de)estas)herramientas)son)los)foros)generales) que)son)usados)por)cualquier)usuario)registrado)en)el)portal.)Otra)de)las)herramientas) son) las) noticias,) que) son) gestionadas) por) los) administradores.) Se) han) desarrollado) estos)recursos)dentro)del)portal)para)darle)mayor)funcionalidad)al)mismo.)Además,)en) las)noticias,)los)administradores)pueden)crear)diferentes)tipos)de)noticias)(noticias)con) imágenes)y)texto,)una)galería)de)imágenes,)insertar)vídeos)de)youtube,)etc.))con)solo) un)tipo)de)contenido.) ) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 129 14.2%Conclusiones% Un#aspecto#fundamental#a#la#hora#de#dar#por#finalizado#un#proyecto#de#fin#de# carrera#es# comprobar# que# los# objetivos#marcados#en# el# comienzo# del# mismo# se#han# satisfecho#con#el#trabajo#desarrollado.# Se# ha# conseguido# desarrollar# una# web# de# creación# de# proyectos# para# el# ayuntamiento# de# Gáldar,# donde# todos# los# objetivos# propuestos# han# sido# cumplidos,# además#hemos#añadido#algunas#funciones#extras#que#mejoran#el#producto#final.## El# software# creado# pretende# ser# un# pequeño# paso# para# la# participación# ciudadana# dentro# de# las# instituciones# públicas,# pudiendo# a# través# de# las# nuevas# tecnologías# ir# creando# un# gobierno# abierto# en# que# la# transparencia,# participación# y# colaboración#ciudadana#estén#a#la#orden#del#día.# Para# el# desarrollo# del# proyecto# se# han# tenido# que# combinar# conocimientos# obtenidos# durante# la# carrera# con# el# aprendizaje# de# aplicaciones# y# herramientas# desconocidas,# lo# cual# ha# proporcionado# unas# nuevas# aptitudes# que# pueden# ser# muy# útiles#en#el#futuro.# El#proyecto#ha#sido#realizado#para#un#cliente#real,#esto#supuso#tanto#un#desafío# como# una# gran# motivación,# ya# que# estábamos# experimentando# una# situación# como# Ingeniero#en#el#mundo#laboral.#Esto#requería#profesionalidad#en#las#entrevistas,#en#la# elaboración# de# los# documentos# y# en# el# desarrollo# del# software.# Así# mismo,# al# ser# el# software#para#un#cliente,#el#trabajo#realizado#será#utilizado#y#por#lo#tanto#productivo.# Otro# de# los# aspectos# a# destacar# ha# sido# la# creación# del# portal# dentro# de# un# grupo# o# entorno# de# trabajo,# experimentando# lo# que# es# el# trabajo# en# un# equipo# de# desarrollo#(reuniones,#implementación,#cargas#de#trabajo#repartidas,#etc.).# En# el# aspecto# técnico# hay# que# destacar# que# supuso# una# gran# ocasión# para# estudiar#y#aprender#tecnologías#webs#actuales.# Con#respecto#a#Drupal#destacar#qua#ha#resultado#una#buena#herramienta#para# el#desarrollo#del#software.#Gracias#a#la#cantidad#de#módulos#que#ofrece#ha#sido#posible# crear#las#diferentes#funciones#requeridas,#en#especial#el#módulo#Organics)Groups#para# la# creación# de# los# grupos.# Además# posee# una# gran# comunidad# de# usuarios# con# Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 130 múltiples)foros)donde)están)resuelto)los)problemas)que)puedan)aparecer)con)Drupal.) También)hay)múltiples)páginas)y)blogs)donde)se)dan)consejos)o)resuelven)dudas)para) mejorar)la)experiencia)en)Drupal.)) Como) punto) negativo) a) Drupal) está) la) elevada) curva) de) aprendizaje) con) respecto) a) otros) CMS.) Por) otra) parte) tenemos) que) la) implementación) de) algunos) módulos)daban)problemas)en)su)instalación)o)no)cubrían)todo)el)espectro)requerido) para) el) portal.) Por) tanto) se) ha) tenido) que) personalizar) algunos) módulos) o) crearlos,) ampliando)más)el)tiempo)de)desarrollo)del)portal.) En)lo)personal,)todas)las)horas)dedicadas)a)este)proyecto)han)merecido)la)pena.) El) motivo) es) el) hecho) de) que) el) cliente) final) haya) quedado) satisfecho) con) la) herramienta.) Además) de) ser) la) primera) realización) de) un) proyecto) de) esta) envergadura.) ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 131 15.$Trabajo$futuro$ Actívate(por(Gáldar(es(un(producto(específico(para(el(ayuntamiento(de(Gáldar( nacido(de(una(idea(de(proyecto(de(participación(ciudadana.(Al(ser(la(primera(versión( de(un(producto(la(aplicación(puede(mejorarse(de(diferentes(maneras:( • Web( de( colectivos:( sería( reconvertir( el( portal( web.( El( portal( web( no( estaría( destinado(solamente(a(la(creación(de(proyectos(para(Gáldar,(si(no(que(este(sólo( fuera(uno(de(los(muchos(colectivos(que(se(unieran(a(la(web(para(realizar(sus( propios(proyectos.(En(definitiva(una(web(donde(tanto(colectivos(como(usuarios( se(registran;(los(usuarios(proponen(proyectos(para(los(colectivos(registrados;(y( estos(se(encargan(de(administrar(sus(proyectos.( • Flexibilidad( en( los( proyectos:( el( creador( de( un( proyecto( tendría( libertad( a( la( hora( de( desarrollarlo.( Podría( establecer( su( jerarquía( de( trabajo( (roles( y( sus( permisos),(creación(de(herramientas(a(utilizar,(creación(de(grupos(de(trabajo,( etc.( Además( también( se( le( daría( la( posibilidad( de( cambiar( la( interfaz( del( proyecto,(color,(aspecto,(localización(de(las(herramientas,(etc.( • Valoración(de(los(proyectos(y(de(usuarios:(que(se(puedan(valorar(los(proyectos( en(base(a(su(uso(o(a(la(valoración(de(los(usuarios,(además(de(un(ranking(de(los( usuarios(más(activos(o(los(mejor(valorados.((( • Traducción(en(varios(idiomas.( ( En(base(a(las(herramientas(de(los(proyecto:( • Los( eventos:( creación( de( tipos( de( eventos( diferentes( con( colores( en( los( calendarios(para(su(diferenciación(y(tooltips,(además(de(la(posibilidad(de(dar(la( opción(de(recordatorio(con(un(mensaje(o(un(correo.( • Sistemas(de(archivos:(un(sistema(de(archivos(multinivel(donde(podamos(tener( carpetas(agrupadas,(establecer(permisos(individualizados(en(carpetas…( • Wikis:( agrupar( wikis,( permitiendo( a( los( usuarios( crear( y( organizar( los( contenidos(relacionados(en(un(libro.( • Otras( herramientas:( crear( otras( herramientas( como( puede( ser( el( chat,( etiquetar(y(valorar(cada(apartado(del(programa. ( Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 132 16.$Referencias$Bibliográficas$ Libros'electrónicos' • Fran'Gil,'Experto(en(Drupal((Nivel(inicial),'Aprende'Drupal'con'Forcontu,'2014' ' • Fran'Gil,'Experto(en(Drupal((Nivel(intermedio),'Aprende'Drupal'con'Forcontu,' 2014' ' • Fran'Gil,'Experto(en(Drupal((Nivel(avanzado),'Aprende'Drupal'con'Forcontu,' 2014' ' • Martín'González'Robles,'Organic(Groups,'Aprende'Drupal'con'Forcontu,'2014' ' PFCs' ' • María'Cañizares'Ordás,'Gestores(de(contenido(web:(Wordpress(y(Drupal,'2010' Disponible'en:'' http://www.marysalento.com/wp-content/uploads/2010/09/PFC.pdf' ' • Pedro'Javier'Melián'Rodríguez,'Timemanager' Disponible'en:'PFC'de'la'facultad'de'Informática' ' • Emilio'Macías'Conde,'Intraweb( Disponible'en:'PFC'de'la'facultad'de'Informática' ( • Mª'José'Pons'Tur,'Diseño(e(implementación(de(un(sitio(web(utilizando(Drupal(7,' 2012' Disponible'en:' https://riunet.upv.es/bitstream/handle/10251/17051/Memoria.pdf' ( Blogs' ' • María'Cañizares'Ordás,'Blog(de(María(Cañizares''[blog].'' Disponible'en:'http://www.marysalento.com/' ' Reseña'en'blog' ' • Guillermo'Cerezo,'Drupal(7:(Esquema(de(la(Base(de(Datos(en(MySQL.' Disponible'en:'http://guillermocerezo.com/es/blog/drupal-7-esquema-de-labase-de-datos-en-mysql' ' ' ' ' ' ' Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 133 Sitios&web&se&contenido&en&general& & • Wikipedia:&the&free&encyclopedia&[Wiki&en&Internet].& Disponible&en:&http://en.wikipedia.org/& & • Libros&web& Disponible&en:&https://librosweb.es/& & • SomeBooks&&&News& Disponible&en:&http://somebooks.es/& & Sitios&web&de&contenido&especializado& & • Drupal&stay&for&the&community& Disponible&en:&https://www.drupal.org/& & • Tutoríal&drupal& Disponible&en:&http://www.cursosdrupal.com/content/indice& & Páginas&web&concretas& & • Prestashop5estrellas,&El#Patrón#MVC#(Modelo#Vista#Controlador),& Disponble&en:&https://prestashop5estrellas.wordpress.com/2010/03/29/elpatron-mvc-modelo-vista-controlador/& & • EcuRed&conocimientos&con&todos&y¶&todos,&Arquitectura#Cliente#Servidor,& Disponible&en:& http://www.ecured.cu/index.php/Arquitectura_Cliente_Servidor& & • Ejemplos&TIW,&Patrón#de#arquitectura#Modelo#Vista#Controlador#(MVC)& Disponible&en:&http://www.lab.inf.uc3m.es/~a0080802/RAI/mvc.html& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 134 17.$Glosario$de$Epígrafes$ Imagen'4.1'Proyecto'en'Irekia'................................................................................................................................................'17! Imagen'5.1'Metodología'de'desarrollo'en'espiral'en'seis'regiones'........................................................................'19! Tabla'6.1:'Diagrama'de'Gantt'................................................................................................................................................'27! Tabla'6.2:'Comparativa'de'resultados.'...............................................................................................................................'30! Diagrama'6.1:'Porcentaje'de'horas'previstas.'.................................................................................................................'31! Diagrama'6.2:'Porcentaje'de'horas'dedicadas.'...............................................................................................................'31! Ilustración'10.1:'Arquitectura'de'drupal.'..........................................................................................................................'49! Ilustración'10.2:'Contenido'de'Drupal'................................................................................................................................'51! Ilustración'11.1:'Página'de'Inicio'del'Moodle.'.................................................................................................................'56! Ilustración'11.2:'Actividad'en'el'curso'Moodle.'...............................................................................................................'57! Diagrama'11.1:'Comparativa'entre'roles'y'permisos.'..................................................................................................'58! Diagrama'11.2:'Tipos'de'roles'en'un'proyecto.'...............................................................................................................'60! Tabla'11.1:'Casos'de'usos'..........................................................................................................................................................'67! Diagrama'11.3:'Diagrama'de'actividades'de'un'proyecto.'........................................................................................'68! Ilustración'12.1:'Arquitectura'Cliente-Servidor'..............................................................................................................'70! Ilustración'12.2:'Diagrama'arquitectura'cliente-servidor'.........................................................................................'71! Ilustración'12.3:'Patrón'MVC'..................................................................................................................................................'72! Diagrama'12.1:'Diagrama'de'secuencia'MVC'..................................................................................................................'73! Ilustración'12.4:'Estructura'de'la'base'de'datos'inicial'de'Drupal.'........................................................................'74! Ilustración'12.5:'Estructura'base'de'datos'asociadas'a'los'nodos.'.........................................................................'76! Ilustración'12.6:'Estructura'base'de'datos'asociadas'a'los'roles.'...........................................................................'77! Ilustración'12.7:'Estructura'base'de'datos'asociadas'a'la'taxonomía.'.................................................................'78! Ilustración'12.8:'Estructura'base'de'datos'asociadas'a'los'bloques.'.....................................................................'79! Ilustración'12.9:'Estructura'base'de'datos'asociadas'a'las'vistas.'.........................................................................'80! Ilustración'12.10:'Estructura'base'de'datos'asociadas'a'Organic'Groups.'.........................................................'81! Ilustración'12.11:'Estructura'base'de'datos'asociadas'a'los'cuestionarios.'.......................................................'82! Ilustración'12.12:'API'de'la'base'de'datos'de'Drupal.'..................................................................................................'83! Ilustración'12.13:'Boceto'página'de'Inicio.'.......................................................................................................................'84! Ilustración'12.14:'Boceto'dentro'de'un'proyecto.'..........................................................................................................'85! Ilustración'12.15:'Theme'Stability'........................................................................................................................................'87! Ilustración'12.16:'Theme'Blocks'............................................................................................................................................'88! Ilustración'12.17:'Theme'Metro'.............................................................................................................................................'88! Ilustración'12.18:'Imagen'de'Inicio'del'Portal'................................................................................................................'90! Ilustración'12.19:'Imagen'dentro'de'un'proyecto.'.........................................................................................................'92! Ilustración'13.1:'Vista'de'los'usuarios'en'un'proyecto.'................................................................................................'97! Ilustración'13.2:'Vista'de'todos'los'cuestionarios'en'un'proyecto.'.........................................................................'97! Ilustración'13.3:'Parte'de'código'limitación'de'los'roles.'...........................................................................................'99! Ilustración'13.4:'Campos'del'tipo'de'contenido'Proyecto.'........................................................................................'106! Ilustración'13.5:'Campos'del'tipo'de'contenido'Grupos'de'trabajo.'.....................................................................'108! Ilustración'13.6:'Campos'del'tipo'de'contenido'Encuesta.'.......................................................................................'109! Ilustración'13.7:'Campos'del'tipo'de'contenido'Cuestionario.'................................................................................'110! Ilustración'13.8:'Campos'del'tipo'de'contenido'Wiki.'................................................................................................'111! Ilustración'13.9:'Campos'del'tipo'de'contenido'Foros'de'Proyecto.'.....................................................................'112! Ilustración'13.10:'Campos'del'tipo'de'contenido'Carpeta.'.......................................................................................'113! Ilustración'13.11:'Campos'del'tipo'de'contenido'Eventos.'.......................................................................................'114! Ilustración'13.12:'Campos'del'tipo'de'contenido'Forum.'..........................................................................................'115! Ilustración'13.13:'Campos'del'tipo'de'contenido'Noticia.'........................................................................................'116! Ilustración'13.14:'Código'de'creación'de'grupos'de'trabajo.'..................................................................................'117! Ilustración'13.15:'Vista'general'de'los'usuarios'de'un'proyecto.'..........................................................................'119! Ilustración'13.16:'Formulario'de'invitación'a'un'usuario.'.......................................................................................'120! Ilustración'13.17:'Mensaje'de'invitación'a'un'usuario.'.............................................................................................'120! Ilustración'13.18:'Parte'de'código'limitación'de'los'roles.'.......................................................................................'121! Ilustración'13.19:'Código'de'asignación'de'bloques.'..................................................................................................'122! Ilustración'13.20:'Comparativa'de'bloques'con'permisos'y'sin'permisos.'........................................................'123! Ilustración'13.21:'Formulario'de'creación'de'un'Agente'de'Cambio.'.................................................................'124! Ilustración'13.22:'Formulario'de'creación'de'un'Colaborador.'.............................................................................'124! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 135 Diagrama'A.I.1:'Registrarse.'..................................................................................................................................................'136! Diagrama'A.I.2:'Loguearse.'....................................................................................................................................................'136! Diagrama'A.I.3:'Mensajería.'..................................................................................................................................................'137! Diagrama'A.I.4:'Participación'en'el'foro.'.........................................................................................................................'137! Diagrama'A.I.5:'Votación'o'encuesta.'................................................................................................................................'138! Diagrama'A.I.6:'Inscribirse'en'un'proyecto.'....................................................................................................................'138! Diagrama'A.I.7:'Proponer'Proyecto.'..................................................................................................................................'138! Diagrama'A.I.8:'Gestionar'Usuario.'....................................................................................................................................'139! Diagrama'A.I.9:'Gestionar'Contenido.'...............................................................................................................................'139! Diagrama'A.I.10:'Gestión'de'herramientas.'....................................................................................................................'140! Diagrama'A.I.11:'Gestionar'Usuarios'al'Proyecto.'.......................................................................................................'140! Diagrama'A.I.12:'Invitar'usuario'al'Proyecto.'...............................................................................................................'141! Ilustración'A.II.2:'Página'de'Inicio'de'Xampp'................................................................................................................'194! Ilustración'A.II.4:'Página'de'Instalación'de'Drupal.'...................................................................................................'196! Ilustración'A.II.5:'Habilitar'importación'de'nodos.'.....................................................................................................'199! Ilustración'A.II.6:'Habilitar'importación'de'bloques.'.................................................................................................'199! Ilustración'A.II.7:'Habilitar'Mega'Slider.'.........................................................................................................................'200! Ilustración'A.II.8:'Formulario'de'copia'de'seguridad.'................................................................................................'201! ! Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 136 Anexos' Anexo'I:'Casos'de'Usos' En#este#anexo#se#presentan#los#esquemas#de#casos#de#usos#y#los#casos#de#usos# detallados.# AI.1'Casos'de'Usos' Diagrama A.I.1: Registrarse. Diagrama A.I.2: Loguearse. Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 137 Diagrama A.I.3: Mensajería. Diagrama A.I.4: Participación en el foro. Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 144 convertirse*en*un*caso*de*uso*el*cual*pueda*ser*incluido*por*aquellos*casos*de*uso*que* necesiten*esa*funcionalidad.* Requisitos)especiales) Si* un* requisito* no* funcional,* atributo* de* calidad* o* restricción* se* relaciona* de* manera* específica* con* un* caso* de* uso,* se* recoge* en* el* caso* de* uso.* Esto* incluye* cualidades* tales* como* rendimiento,* fiabilidad* y* facilidad* de* uso,* y* restricciones* de* diseño* (a* menudo,* en* dispositivos* de* entrada/salida)* que* son* obligados* o* se* consideran*probables.* Notas) Lista*cualquier*comentario*adicional*sobre*el*caso*de*uso.* AI.3%Casos%de%Usos%detallados% Registro) Nombre% Registrase*vía*Internet* Identificador% CU-1* Actor%principal% Usuario*Anónimo* Personal%involucrado%o%intereses% Usuario*Anónimo:*realizar*el*proceso*de*registro,*para*poder*acceder*como*usuario* registrado*al*portal.* Descripción% El*usuario*accede*al*sistema*donde*se*registra*rellenando*un*formulario*que*cuenta,* entre*otras*cosas:*Nombre,*Correo*Electrónico,*Contraseña*y*Alias.* Trigger% Precondición% Postcondición% Flujo%normal% 1.*El*sistema*muestra*al*usuario*un*formulario*de*registro.** 2.*El*usuario*debe*rellenar*correctamente*todos*los*apartados*obligatorios*del* registro.* Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 145 3.#Una#vez#rellenado#el#formulario,#el#usuario#hará#clic#en#el#botón#de#Registrarse.## 4.#Se#inicia#el#proceso#de#Confirmar#Registro#CU-2.# Flujo*Alternativo* Excepción* 2*#El#Usuario#no#ha#rellenado#el#formulario#correctamente,#el#sistema#le#señalará# donde#ha#cometido#el#error,#para#que#lo#corrija.# Includes* Se#utiliza#el#caso#de#uso#CU-2#(Confirmar#Registro).# Requisitos*Especiales* Notas* Nombre* Confirmar#Registro#(Registrado)# Identificador* CU-2# Actor*principal* Usuario#Anónimo# Personal*involucrado*o*intereses* Usuario#Anónimo:#completar#el#registro#parcial# Descripción* Una#vez#que#haya#rellenado#correctamente#el#formulario#de#registro#y#haber#apretado# el#botón#de#registro,#al#usuario#le#llega#un#email#al#correo#electrónico#dado#en#el# formulario,#donde#se#le#indica#los#pasos#a#seguir#para#terminar#su#registro.# Trigger* Se#ejecuta#cuando#el#usuario#haya#apretado#el#botón#de#registrase#en#la#fase#de# registro# Precondición* Haber#rellenado#correctamente#el#formulario#de#registro,#y#poner#un#email#accesible#al# usuario.# Postcondición* El#usuario#queda#registrado#en#sistema.# Flujo*normal* 1.#Se#envía#al#usuario#un#correo#a#la#dirección#dada#por#el#usuario#en#el#formulario#de# registro.####################################################################################################2.El#usuario#accede#al# Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 146 correo%y%lo%valida.% Flujo&Alternativo& Excepción& 1*%Si%no%se%ha%podido%enviar%el%correo%electrónico,%o%la%dirección%es%invalida%el%usuario% pasa%a%tener%el%rol%de%Usuario%Pendiente%de%Validación.% Includes& Requisitos&Especiales& Notas& El%correo%mandado%puede%que%se%aloje%en%las%carpetas%de%correo%basura,%se%le%advierte% al%usuario%para%que%lo%tenga%en%cuenta.% Nombre& Registrase%vía%física% Identificador& CU-3% Actor&principal& Usuario%Anónimo% Personal&involucrado&o&intereses& Usuario%Anónimo:%realizar%el%proceso%de%registro,%para%acceder%al%sistema%como% usuario%autenticado.% Descripción& Si%el%usuario%quiere%tener%más%beneficios%que%en%un%usuario%registrado%o%que%un% usuario%anónimo,%puede%presentarse%en%una%administración%y%rellenar%un%formulario% para%acceder%al%sistema%como%usuario%autenticado.% Trigger& Precondición& Postcondición& Flujo&normal& 1.%El%usuario%se%presenta%en%una%administración.%% 2.%Rellena%un%formulario%dado.% 3.%Una%vez%completado%correctamente%el%formulario,%este%se%envía%al%administrador.%% 4.%Se%inicia%el%proceso%de%Confirmar%Registro%CU-4.% Flujo&Alternativo& Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 147 Excepción) Includes) Se#utiliza#el#caso#de#uso#CU-4#(Confirmar#Registro).# Requisitos)Especiales) El#usuario#tiene#que#presentar#su#DNI.# Notas) Nombre) Confirmar#Registro#(autenticado)# Identificador) #CU-4# Actor)principal) Usuario#Anónimo################################################################################################################### Administrador# Personal)involucrado)o)intereses) Usuario#Anónimo:#completar#el#registro.################################################################# Administrador:#ayudar#al#usuario#a#ser#un#usuario#autenticado.# Descripción) Una#vez#que#haya#rellenado#correctamente#el#formulario#de#registro,#un# administrador#confirma#su#registro,#y#pasa#a#ser#un#usuario#autenticado#(dependiendo# de#su#domicilio#se#incluye#en#una#especialización#del#rol).# Trigger) Precondición) Postcondición) El#usuario#queda#registrado#en#sistema#como#usuario#autenticado.# Flujo)normal) 1.#El#administrador#valida#al#usuario#como#usuario#autenticado.# Flujo)Alternativo) Excepción) Includes) Requisitos)Especiales) Notas) Una#vez#haya#completado#el#registro#el#usuario#es#reconocido#y#la#administración# Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 148 tiene%sus%datos.% Nombre' Loguearse% Identificador' CU-5% Actor'principal' Cualquier%Usuario%registrado%en%el%sistema.% Personal'involucrado'o'intereses' Los%Usuarios:%acceder%al%sistema%y%beneficiarse%de%sus%usos%como%usuario%registrado%en% él.% Descripción' El%usuario%puede%entra%al%sistema%como%un%usuario%de%él,%solo%rellenando%el%formulario% de%login,%es%decir%poniendo%su%nombre%de%usuario%o%correo%y%contraseña.% Trigger' Precondición' El%usuario%debe%estar%registrado%en%el%sistema% Postcondición' Flujo'normal' 1.%Rellenar%el%formulario%de%login.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2.%El%sistema%comprueba%si%es%válido.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3.%Entrar%en%el%sistema%como%usuario.% Flujo'Alternativo' Excepción' 2*%Si%se%ha%equivocado%en%el%formulario,%le%pedirá%que%lo%vuelva%a%rellenar.% Includes' Requisitos'Especiales' Notas' Si%el%usuario%se%ha%olvidado%la%contraseña%puede%volverla%a%pedir,%y%se%le%enviará%un% correo%electrónico%con%los%pasos%para%recuperarla,%en%caso%de%que%no%pueda%acceder%a% su%correo,%tendrá%que%pedir%ayuda%al%administrador.% % Nombre' Cerrar%sesión% Identificador' CU-6% Actor'principal' Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 149 Cualquier)usuario)que)esté)registrado.) Personal)involucrado)o)intereses) Usuario)(en)general):)terminar)sesión.) Descripción) El)usuario)termina)la)sesión)del)sistema.) Trigger) Precondición) El)usuario)tiene)que)estar)logueado) Postcondición) Flujo)normal) 1.)El)usuario)hace)clic)en)el)botón)de)cerrar)sesión.))))))))))))))))))))))))))))))))))))))))))))))))))))))) 2.)El)sistema)cambia)a)Usuario)Anónimo.) Flujo)Alternativo) Excepción) Includes) Requisitos)Especiales) Notas) Editar'datos'de'usuarios' Nombre) Editar)Perfil) Identificador) CU-7) Actor)principal) Cualquier)usuario)registrado)en)el)sistema.) Personal)involucrado)o)intereses) Usuarios:)modificar)sus)datos.) Descripción) Los)usuario)pueden)modificar)su)perfil,)como)para)cambiar)sus)contraseñas)o)su) correo)electrónico.) Trigger) Precondición) El)usuario)debe)haberse)logueado)previamente.) Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 150 Postcondición* Flujo*normal* 1.#El#usuario#accede#a#su#perfil,#donde#se#le#muestra#todos#sus#datos.## 2.#Observa#y#cambia#los#datos#que#desee.## 3.#Selecciona#la#tecla#guardar.## 4.#Se#guarda#en#el#sistema#los#nuevos#datos.# Flujo*Alternativo* Excepción* Includes* Requisitos*Especiales* Notas* Algunos#datos#no#pueden#ser#modificables,#como#puede#ser#el#nombre#de#usuario.# Nombre* Contenedor#de#imágenes# Identificador* CU-8# Actor*principal* Cualquier#usuario#registrado#en#el#sistema.# Personal*involucrado*o*intereses* Usuarios:#permite#tener#un#gestor#de#imágenes.# Descripción* El#usuario#tiene#un#contenedor#de#imágenes#donde#puede#almacenar#las#imágenes# que#el#usuario#desee#utilizar#dentro#del#editor#de#texto.# Trigger* Precondición* Postcondición* Flujo*normal* 1.#El#usuario#accede#a#su#contenedor#de#imágenes#que#esta#dentro#de#su#pantalla#de# Inicio.# Flujo*Alternativo* Excepción* Includes* Requisitos*Especiales* Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 151 Las$imágenes$almacenadas$deben$tener$unos$requisitos:$formato,$tamaño,$ capacidad…$ Notas& Las$imágenes$pueden$utilizarse$en$los$editores$de$texto.$ Nombre& Subir$Imagen$ Identificador& CU-9$ Actor&principal& Cualquier$usuario$registrado$en$el$sistema.$ Personal&involucrado&o&intereses& Usuarios:$permite$subir$una$imagen$al$contenedor$de$imágenes.$ Descripción& Al$usuario$se$le$permite$subir$una$imagen.$ Trigger& Precondición& Postcondición& El$usuario$tiene$la$imagen$en$su$contenedor.$ Flujo&normal& 1.$El$usuario$accede$a$su$contenedor$de$imágenes$que$está$dentro$de$su$pantalla$de$ Inicio.$$ 2.$Selecciona$el$botón$subir$imagen.$$ 3.$Se$abre$un$cuadro$de$dialogo$donde$el$usuario$selecciona$la$imagen$que$desee$ subir.$$ 4.$Selecciona$el$botón$aceptar.$ Flujo&Alternativo& Excepción& 4*.$En$caso$de$que$el$usuario$no$haya$cumplido$con$los$requisitos$de$contenedor$de$ imágenes,$se$le$muestra$un$error.$ Includes& Se$utiliza$el$caso$de$uso$CU-11$ Requisitos&Especiales& Las$imágenes$almacenadas$deben$tener$unos$requisitos:$formato,$tamaño,$ Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 152 capacidad…' Notas& Nombre& Eliminar'Imagen' Identificador& CU-10' Actor&principal& Cualquier'usuario'registrado'en'el'sistema.' Personal&involucrado&o&intereses& Usuarios:'permite'poder'eliminar'una'imagen.' Descripción& El'usuario'puede'eliminar'una'imagen'de'su'contenedor'de'imágenes.' Trigger& Precondición& Postcondición& La'imagen'se'elimina'de'su'contenedor'de'imágenes.' Flujo&normal& 1.'El'usuario'accede'a'su'contenedor'de'imágenes'que'está'dentro'de'su'pantalla'de' Inicio.'' 2.'Selecciona'la'imagen'que'desee'eliminar.'' 3.'Selecciona'el'botón'eliminar.'' 4.'Se'le'confirma'mediante'un'mensaje'que'la'imagen'se'ha'borrado.' Flujo&Alternativo& Excepción& 3.*'Si'no'ha'seleccionado'ninguna'imagen'el'portal'le'pide'que'seleccione'una.' Includes& Se'utiliza'el'CU-11' Requisitos&Especiales& Notas& Nombre& Seleccionar'Imagen' Identificador& CU-11' Actor&principal& Cualquier'usuario'registrado'en'el'sistema.' Proyecto Fin de Carrera Escuela de Ingeniería Informática - ULPGC 153 Personal)involucrado)o)intereses) Usuarios:)permite)poder)seleccionar)una)imagen.) Descripción) El)usuario)puede)seleccionar)una)imagen)dentro)de)su)contenedor)de)imágenes.) Trigger) Precondición) Postcondición) Flujo)normal) 1.)El)usuario)accede)a)su)contenedor)de)imágenes)que)está)dentro)de)su)pantalla)de) Inicio.)) 2.)Selecciona)la)imagen)que)quiere)gestionar.) Flujo)Alternativo) Excepción) Includes) Requisitos)Especiales) Notas) Envío&de&mensajes& Nombre) Enviar)mensaje) Identificador) CU-12) Actor)principal) Cualquier)usuario)registrado.) Personal)involucrado)o)intereses) Usuarios:)poder)enviar)un)mensaje)a)otro)usuario)del)sistema.) Descripción) Un)usuario)que)este)dentro)del)sistema)puede)mandar)un)mensaje)a)cualquier)usuario) que)este)registrado)en)el)sistema) Trigger) Precondición) El)usuario)destinatario)debe)estar)ya)creado.) Postcondición)