Вы находитесь на странице: 1из 126

UNIVERSIDADCARLOSIIIDEMADRID ESCUELAPOLITCNICASUPERIOR INGENIERAINFORMTICA

SISTEMAPARALA MAQUETACINDE COMPONENTESJSF


JSFCOMPOSER

JorgeVillalobosBeato DavidDezCebollero 06/05/2009

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

ndicedecontenidos
ndicedecontenidos...........................................................................................................................3 ndicedefiguras..................................................................................................................................5 ndicedetablas...................................................................................................................................7 Glosariodetrminos...........................................................................................................................9 1 Introduccin............................................................................................................................11 1.1 Planteamientodelproblema............................................................................................11 1.2 Objetivos...........................................................................................................................11 1.3 Metodologa......................................................................................................................12 1.4 Estructuradeltrabajo .......................................................................................................13 . 2 Estudiodelproblema..............................................................................................................15 2.1 Elcontextodelproblema..................................................................................................15 2.2 Elestadodelacuestin.....................................................................................................18 2.3 Ladefinicindelproblema................................................................................................32 3 Gestindeproyectosoftware................................................................................................35 3.1 Alcancedelproyecto.........................................................................................................35 3.2 Plandetrabajo..................................................................................................................41 3.3 Gestinderecursos ..........................................................................................................45 . 3.4 Gestinderiesgos.............................................................................................................46 4 Solucin...................................................................................................................................49 4.1 Elprocesodedesarrollo....................................................................................................49 4.2 Elproductodeldesarrollo.................................................................................................84 5 Evaluacin...............................................................................................................................95 5.1 Procesodeevaluacin ......................................................................................................95 . 5.2 Anlisisderesultados......................................................................................................112 6 Conclusin.............................................................................................................................115 6.1 Aportacionesrealizadas..................................................................................................115 6.2 Trabajosfuturos..............................................................................................................115 6.3 Problemasencontrados..................................................................................................116 6.4 Opinionespersonales......................................................................................................117 7 Bibliografa............................................................................................................................119 AnexoI.Controldeversiones.........................................................................................................123 AnexoII.Seguimientodeproyectofindecarrera..........................................................................125

Pgina3

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina4

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

ndicedefiguras
Figura1.Etapasdelametodologaseguida......................................................................................12 Figura2.MarcodetrabajoVelocity..................................................................................................20 Figura3.MarcodetrabajoTapestry.................................................................................................21 Figura4.MarcodetrabajoStrutsTiles.............................................................................................22 Figura5.MarcodetrabajoJavaServerFaces:implementacindeMyFaces...................................23 Figura6.MarcodetrabajoJavaServerFaces:implementacindeSun............................................24 Figura7.MarcodetrabajoStruts.....................................................................................................25 Figura8.MarcodetrabajoSpring.....................................................................................................26 Figura9.MarcodetrabajoSeam......................................................................................................27 Figura10.MarcodetrabajoStripes..................................................................................................28 Figura11.MarcodetrabajoHibernate.............................................................................................29 Figura12.MarcodetrabajoTopLink................................................................................................30 Figura13.EtapasdelaincorporacindeunalibreraJSF.................................................................32 Figura14.Planificacindelproyecto................................................................................................44 Figura15.Ciclodevidaenespiral.....................................................................................................50 Figura16.Diagramadeactividadparalainclusindeuncomponenteenunapgina...................54 Figura17.Diagramadeclases...........................................................................................................55 Figura18.Diagramadesecuenciaparalainclusindeuncomponenteenunapgina..................57 Figura19.Casosdeuso:actores.......................................................................................................59 Figura20.Casosdeuso:administracin...........................................................................................59 Figura21.Casosdeuso:accesoalsistema.......................................................................................59 Figura22.Casosdeuso:usuarios.....................................................................................................59 Figura23.DiagramadeEntidad/Relacin.........................................................................................60 Figura24.Arquitecturadelaaplicacin...........................................................................................62 Figura25.Arquitecturadelaaplicacinconcretada........................................................................62 Figura26.Diagramadeclasesdelacapadepersistencia:usuarios.................................................73 Figura27.Diagramadeclasesdelacapadepersistencia:libreras.................................................74 Figura28.Diagramadeclasesdelacapadepersistencia:pginas..................................................75 Figura29.Diagramadeclasesparalacapadepersistencia.............................................................76 Figura30.DiagramadeclasesparalapartedelModelo..................................................................77 Figura31.Diagramadeclasesdeutilidades.....................................................................................78 Figura32.ReglasdenavegacindelControlador.............................................................................80 Figura33.OrganizacinproyectoEclipse.........................................................................................82 Figura34.Organizacinaplicacinweb............................................................................................83 Figura35.Capturadeinicio.xhtml....................................................................................................86 Figura36.Capturaderegistro.xhtml................................................................................................87 Figura37.CapturadeindexAdmin.xhtml.........................................................................................87 Figura38.CapturademodificarDatos.xhtmldelAdministrador......................................................88 Figura39.CapturademodificarDatos.xhtmldelusuario.................................................................88 Figura40.CapturadeadminUsuarios.xhtml. ...................................................................................89 . Figura41.CapturademodificarUsuario.xhtml.................................................................................89 Pgina5

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Figura42.CapturadeadminLibrerias.xhtml.....................................................................................90 Figura43.CapturadeindexUsuario.xhtml.......................................................................................90 Figura44.CapturadeadminPaginas.xhtml......................................................................................91 Figura45.CapturadeeditarPagina.xhtml........................................................................................91 Figura46.Capturadeunavistaprevia. ............................................................................................92 .

Pgina6

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

ndicedetablas
Tabla1.ComparativademarcosdetrabajoparalaVista................................................................31 Tabla2.ComparativademarcosdetrabajoparaelControlador.....................................................31 Tabla3.ComparativademarcosdetrabajoparaelModelo............................................................31 Tabla4.Definicindevaloresclaveparalaplanificacin.................................................................36 Tabla5.Costeporrol........................................................................................................................37 Tabla6.Desglosedehorastrabajadasporrolyportarea...............................................................38 Tabla7.Costedeequipamiento.......................................................................................................39 Tabla8.Costedematerial. ...............................................................................................................39 . Tabla9.Costedetransporte.............................................................................................................40 Tabla10.Costesadicionales.............................................................................................................40 Tabla11.Resumendegastos............................................................................................................40 Tabla12.Presupuestofinal...............................................................................................................40 Tabla13.Identificacinderiesgos....................................................................................................48 Tabla14.Anlisisdeimpactoderiesgos..........................................................................................48 . Tabla15.Requisitosfuncionales.......................................................................................................52 Tabla16.Requisitosnofuncionalesoperacionales..........................................................................53 Tabla17.Requisitosnofuncionalesdeseguridad............................................................................53 Tabla18.Requisitosnofuncionalesnormativos...............................................................................53 Tabla19.PginasdelaVista.............................................................................................................79 Tabla20.BeansmanejadosutilizadosporVistayControlador........................................................79 Tabla21.Descripcindedirectoriosdelaaplicacinweb...............................................................83 Tabla22.Descripcindepaquetesdecdigofuente.......................................................................84 Tabla23.ExplicacindecasodepruebaCP_O_01...........................................................................97 Tabla24.ExplicacindecasodepruebaCP_O_02...........................................................................97 Tabla25.ExplicacindecasodepruebaCP_O_03...........................................................................98 Tabla26.ExplicacindecasodepruebaCP_O_04...........................................................................98 Tabla27.ExplicacindecasodepruebaCP_U_01...........................................................................99 Tabla28.ExplicacindecasodepruebaCP_U_02...........................................................................99 Tabla29.ExplicacindecasodepruebaCP_U_03.........................................................................100 Tabla30.ExplicacindecasodepruebaCP_U_04.........................................................................100 Tabla31.ExplicacindecasodepruebaCP_U_05.........................................................................101 Tabla32.ExplicacindecasodepruebaCP_U_06.........................................................................101 Tabla33.ExplicacindecasodepruebaCP_U_07.........................................................................102 Tabla34.ExplicacindecasodepruebaCP_U_08.........................................................................102 Tabla35.ExplicacindecasodepruebaCP_U_09.........................................................................103 Tabla36.ExplicacindecasodepruebaCP_U_10.........................................................................103 Tabla37.ExplicacindecasodepruebaCP_U_11.........................................................................103 Tabla38.ExplicacindecasodepruebaCP_U_12.........................................................................104 Tabla39.ExplicacindecasodepruebaCP_U_13.........................................................................104 Tabla40.ExplicacindecasodepruebaCP_U_14.........................................................................104 Tabla41.ExplicacindecasodepruebaCP_U_15.........................................................................105 Pgina7

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Tabla42.ExplicacindecasodepruebaCP_U_16.........................................................................105 Tabla43.ExplicacindecasodepruebaCP_U_17.........................................................................106 Tabla44.ExplicacindecasodepruebaCP_U_18.........................................................................106 Tabla45.ExplicacindecasodepruebaCP_U_19.........................................................................107 Tabla46.ExplicacindecasodepruebaCP_U_20.........................................................................107 Tabla47.ExplicacindecasodepruebaCP_U_21.........................................................................107 Tabla48.ExplicacindecasodepruebaCP_U_22.........................................................................108 Tabla49.ExplicacindecasodepruebaCP_U_23.........................................................................108 Tabla50.ExplicacindecasodepruebaCP_U_24.........................................................................109 Tabla51.ExplicacindecasodepruebaCP_U_25.........................................................................109 Tabla52.ExplicacindecasodepruebaCP_U_26.........................................................................110 Tabla53.ExplicacindecasodepruebaCP_U_27.........................................................................110 Tabla54.ExplicacindecasodepruebaCP_U_28.........................................................................111 Tabla55.ExplicacindecasodepruebaCP_U_29.........................................................................111 Tabla56.ExplicacindecasodepruebaCP_U_30.........................................................................111 Tabla57.Resultadodeevaluacindecasosdeprueba.................................................................112 Tabla58.Controldeversiones........................................................................................................123 Tabla59.Planificacininicial..........................................................................................................126 Tabla60.Planificacinfinal.............................................................................................................126

Pgina8

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Glosariodetrminos
ActionScript AJAX API LenguajedescriptutilizadoporAdobeFlash. Utilizacinconjuntadediversastecnologas,JavascriptyXML,para conseguirrealizarpeticionesasncronasalservidor. DelinglsApplicationProgrammingInterface,serefierealainterfaz externa que proporciona un determinado programa para ser invocadoporotros. Aplicacin informtica cuyo medio de presentacin es un navegadorweb. Algoquesellevaacabosinobligarasucreadoraesperarhastaque estetermine. Objeto Java de almacenamiento de informacin voltil en aplicacioneswebJ2EE. Se utiliza frecuentemente para referirse a aplicaciones web de ejemplo de incorporacin y uso de una determinada librera, de formaquecontienenelesqueletomnimo. Servidorwebcapazdemanejarelciclodevidadeservlets. Algo que mantiene su aspecto y funcionalidad de un navegador a otro. Separacionesfsicasrealizablesenunapginaweb,demaneraque unapginadivididaenmarcosreferenciaasuvezaunconjuntode pginas. Libreraoherramientaparafacilitareldesarrolloenunatecnologa oentornoconcreto. GNUGeneralPublicLicenseesuntipodelicenciaqueacompaaal software libre y especifica quel cdigo fuentede dicho software puedesercopiado,modificadoydistribuidolibremente. HyperTextMarkupLanguage,LenguajedeMarcadodeHipertexto. Esellenguajeenelqueseescribenlaspginasweb. Proceso por el cual se posibilita que un recurso sea accesible o visibleenvariosidiomas. ImpuestosobreelValorAadido,eselimpuestoquerecaesobreel consumoenEspaa. Java Enterprise Edition, es la versin de Java para implementar aplicacionesweb. LenguajedeprogramacindesarrolladoporSunMicrosystems. GeneradordeparsersescritoenJava. Lenguajedescriptqueutilizanlaspginasweb. JavaServer Faces, estndar de Sun Microsystems para la capa de presentacindelasaplicacioneswebJ2EE. JavaServer Pages, pginas web usadas en la capa de presentacin delasaplicacioneswebJ2EEqueincluyenprocesamientodecdigo Pgina9

Aplicacinweb Asncrono Bean Blank

Contenedordeservlets Crossbrowser Frames/Marcos

Framework/Marcode trabajo GPL

HTML Internacionalizacin IVA J2EE Java JavaCC JavaScript JSF JSP

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Kickstart Lgicadenegocio enlaparteservidora. Similarablank. Capadeunsistemaqueseencargaderealizarlastareasdenegocio, es decir, aquellas para las que el sistema fue desarrollado en primerainstancia. LeyOrgnicadeProteccindeDatosdecarcterpersonalaplicada en Espaa a todos los datos sensibles almacenados o tratados en soportesinformticos. Material de oficina no inventariable: papel, cartuchos para impresora,bolgrafos,clips,etc. Funcincriptogrficaderesumendedatos. ModeloVistaControlador,patrndediseoweb. Cdigoabierto,indicaqueelcdigofuentedeunaaplicacinpuede servistoporcualquiera. Aplicacinqueanalizaunlenguajecualquierayrealizaoperaciones conloselementosquesevanidentificandoyprocesando. Lenguaje de programacin para pginas web interpretado en la parteservidora. Salarioquerecibeuntrabajadordelaempresaenlaquetrabaja.A estesalariohanderestrselelosporcentajesquesellevaelEstado. Aplicacin especial instalada en un ordenador que permite que recibir y procesar peticiones de clientes remotos o locales de recursoslocales. Clase Java capaz de procesar una determinada peticin web y generarelresultadocorrespondiente. Patrndediseograciasalcualsloexisteunainstanciadelaclase queloimplementeentodoelsistema. StructuredQueryLanguage,LenguajeEstructuradeConsultas.Esel lenguajemsutilizado para realizarconsultasenclientes deBases deDatos. UnifiedModelingLanguage,LenguajedeModeladoUnificado.Esun lenguaje de modelado ampliamente utilizado para describir varios aspecto de una aplicacin, como puede ser funcional, de comportamiento,estructural,etc. Sistemadecodificacindecaracteres. WebARchive,ficherocomprimidoquecontieneunaaplicacinweb J2EE. EXtended HTML, lenguaje diseado para remplazar a HTML. Proporcionalasmismasfuncionalidadesyestructuraperoesmucho msestrictoaltenerestructuraXML. EXtensible Markup Language, lenguaje para transporte y almacenamientodedatos. XML Schema Definition, Definicin de Esquema XML. Describe la estructuradeunficheroXML.

LOPD

Materialfungible MD5 MVC Opensource Parser PHP Salariobruto Servidorweb

Servlet Singleton SQL

UML

UTF8 WAR XHTML

XML XSD

Pgina10

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Introduccin

ElpresentedocumentodescribeeltrabajoacometidodurantelarealizacindelProyectode FindeCarreraSistemaparalamaquetacindecomponentesJSF.Dichoproyectoseencuentra enmarcadoenelcontextodeldesarrollodeaplicacionesweb.Lafuncindeestamemoriaeslade explicarlaplanificacin,diseo,desarrolloyseguimientodelmismo. Este primer captulo pretende servir como introduccin al trabajo realizado, para lo cual se encuentra dividido en varias secciones. En primer lugar, se explicar el planteamiento del problema encontrado. A continuacin, se comentarn los objetivos que se desean conseguir. Despus, se discutir la metodologa seguida para llevar a cabo el proyecto. Por ltimo, se expondrlaestructuradelapresentememoria.

1.1

Planteamientodelproblema

Para poder explicar el planteamiento del problema es necesario aclarar en primer lugar el contexto del mismo. En el desarrollo de aplicaciones web se utilizan a menudo frameworks o marcos de trabajo para ayudar en la lgica de negocio, el acceso a datos, la presentacin de la informacin,etc.Aquellosmarcosquefacilitanlapresentacindelosdatossonconocidoscomo marcosparalavista,haciendoreferenciaalaparteconcretaqueresuelvendelpatrndediseo webMVC[14](ModeloVistaControlador).Unodelosframeworksmsutilizadoshoyendapara lavistaesJSF[4](JavaServerFaces),elcualestbasadoenelusodecomponentesparapresentar datosyfuncionalidadencapsuladaenlapartecliente.Enlaactualidad,existennumerosaslibreras de componentes JSF, cada una con su propio conjunto de componentes, su forma de configuracin y modos de uso. En este contexto, se pueden identificar una serie de inconvenientes, los cuales tienen como resultado un problema principal: la prdida de tiempo ocasionadaporelprocesodeaprendizajedeconfiguracinyusodelaslibrerasdecomponentes JSF. Estos inconvenientes seran, entre otros, la falta de documentacin, de centralizacin de catlogosdecomponentesydeaplicacionesenblancookickstartparaayudaraldesarrollo.

1.2

Objetivos

ElobjetivofinaldelproyectodesarrolladoeseldefacilitarlaelaboracindeunapginaJSF,es necesario que sea sencillo componer una pgina JSF con los componentes deseados. Como objetivossecundariosalproyectosedestacanlossiguientes:

Agilizarelprocesodeseleccin,inclusinyconfiguracindecomponentesJSF;para ello,senecesitafacilitaralmximoelmanejodedichoscomponentes. Permitirlaincorporacindelibrerasgenricasdecomponentesalconjuntoinicialde libreras incluidas. Se requerir la generalizacin absoluta en cuanto a las libreras quepuedenserimportadasdentrodelsistema.

Pgina11

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Ser accesible va web, Crossbrowser, portable y configurable: el acceso al sistema debeserrealizadoatravsdeunnavegadorweb,siendolaaplicacincompatiblecon los ms utilizados actualmente. Se necesita posibilitar su despliegue en diferentes servidores de aplicaciones, siendo completamente independiente del sistema operativo del mismo. Adems, ha de ser posible cambiar tanto la apariencia de la aplicacincomoelconjuntodelibrerasdisponiblesparalacomposicindelapgina JSF.

1.3

Metodologa

Unametodologaesunaforma,maneraomtododellevaracabounproceso.Enestecasoel procesoseralaelaboracindelproyectoSistemaparalamaquetacindecomponentesJSF.La formaomaneraderealizarlosera,grossomodo,laexpuestaenlaFigura1.

Estudiodel contexto

Planteamiento delproblema

Solucin

Evaluacin

Figura1.Etapasdelametodologaseguida.

Acontinuacin,sevaaprocederaexplicarenquconsisteyquseharealizadoencadauna delasetapasmostradasenlaFigura1.

Estudio del contexto: en esta fase se realiza un anlisis del contexto en el que se enmarca el proyecto. Se llev a cabo, por tanto, un estudio del desarrollo web, su historia y la tendencia que sigue. Se pas a investigar los marcos de trabajo relacionados con la parte de la vista del patrn de diseo MVC, haciendo especial hincapienJavaServerFacesyunamplioconjuntodelibrerasdecomponentespara l. Planteamiento del problema: es la etapa en la que se localiza un problema determinadoapartirdelcontextoestudiado.Enelcasodeesteproyecto,elproblema es la prdida de tiempo en el aprendizaje de la configuracin y uso de los componentesdeunalibreraJSFdada. Solucin: la solucin a desarrollar se determin en base al problema localizado. Se lleg a la conclusin de que implementar un metamaquetador (maquetador de componentes que utiliza estos mismos en su propia construccin) era la mejor opcin, de tal forma que se pudiese demostrar la potencia de JSF. En concreto, el metamaquetadorestdesarrolladocomounaaplicacinweb.Lasolucinideadase describeensutotalidadenelcaptulo4.

Pgina12

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Evaluacin:enestafasesepruebaquelasolucinpropuestaresuelvecorrectamente el problema planteado.Para estoseutilizan unaserie de mtodosyse analizanlos resultadosobtenidos.

1.4

Estructuradeltrabajo

Este trabajo se encuentra estructurado en 7 captulos y 4 anexos, los cuales son descritos a continuacin:

Captulo 1. Introduccin: en este presente captulo se ha tratado de mostrar una visingeneraldelproyecto,elproblemaqueloorigina,susobjetivos,metodologay estructura. Captulo2.Estudiodelproblema:enelsiguientecaptuloseexplicalasituacinactual enelentornodelproyecto.Sediscuteelestadodelacuestinysedefineelproblema localizado. Captulo 3. Gestin del proyecto software: en este captulo se discute todo lo relacionado con la gestin de este proyecto, desde el alcance del mismo hasta su evaluacin final, pasando por la gestin de riesgos, recursos, anlisis y diseo de la solucin,etc. Captulo 4. Solucin: se encarga de describir la solucin propuesta, cmo se ha llevadoacaboelprocesodedesarrolloyquhasidoobtenidoalfinal. Captulo 5. Evaluacin: se describe el proceso de evaluacin seguido para verificar quelasolucindesarrolladaresuelvesatisfactoriamenteelproblemaplanteadoyse realizaunanlisisdelosresultadosarrojadospordichaevaluacin. Captulo 6. Conclusin: este captulo ofrece una conclusin final sobre el proyecto realizado y la forma en la que resuelve el problema original. Tambin proporciona lneasfuturasdeampliacindelmismo. Captulo7.Bibliografa:aquseincluyentodaslasreferenciasencontradasalolargo delamemoria,conlainformacincorrespondientesobrelacitareseada. Anexos: se recoger como anexo la siguiente informacin: control de versiones (versiones de la presente memoria que fueron siendo generadas, revisadas y aprobadasorechazadas)yseguimientodelproyectodefindecarrera(planificacin seguidaalolargodetodoelproyecto).

Pgina13

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina14

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Estudiodelproblema

En este captulo se va a realizar el estudio del problema. El captulo tiene como objetivo analizarelentornoenelqueseenmarcaelpresenteproyecto,estudiarelcontextodelproblema y,finalmente,concretarelproblemadeinters.

2.1

Elcontextodelproblema

Elcontextoenelquesesitaelproblemaplanteadoy,portanto,elpresenteproyecto,esel deldesarrolloweb.Estetipodedesarrolloescomnmenteconfundidoconeltrminodiseoweb porloqueseproponendefinicionesparaambostrminos: Definicin1.Diseoweb. rea de la creacin de un sitio web en el que se disean las interfaces de usuario, estilos y demsaspectosdelapresentacindelmismo.Nosuponeprogramacindeningntiponien elclientenienelservidor. Definicin2.Desarrolloweb Creacin de un sitio web desde el punto de vista funcional: qu hace y cmo lo hace. Se encargadeproporcionartodalafuncionalidadaccesibledesdelapartecliente,ascomotodos los datos que requiere la parte de presentacin. Consiste casi en su totalidad en programacin,tantoenelclientecomoenelservidor. A fin de concretar el conocimiento sobre el desarrollo web, a continuacin se realizar un repasoalahistoriadelmismo.

Historiadeldesarrolloweb
El nacimiento del desarrollo webtal y como se ha introducido en la seccin anterior estuvo altamentecondicionadoporunamejorasignificativadelaparteservidordelossitiosweb.Sevaa introducir en esta seccin cmo eran estos sitios web en sus comienzos, de qu forma evolucionaroncuandodichamejoratuvolugaryhaciaquestnevolucionandohoyenda. Inicialmente, un servidor web slo contaba con la funcionalidad de devolver recursos estticos, esto es, pginas HTML, imgenes, etc. De esta forma, todos los contenidos proporcionadosporsitiowebtenanqueserintroducidosmanualmenteenelcdigomismodela pgina, con el consiguiente retraso en la actualizacin de los mismos y la necesidad de un webmaster para llevarlo a cabo. No es necesario decir que la calidad de presentacin de la informacinerarealmentelimitada,talycomoloeratambinlanavegacin.Posteriormente,la tecnologatantoenlaparteclientecomoenlaparteservidorfuemejorandoconsiderablemente, dando lugar a navegadores capaces de mostrar ms contenidos y a servidores web capaces de interpretar peticiones y realizar ejecucin de programas o procesamiento de lgica antes de

Pgina15

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID devolver los recursos solicitados al cliente. Es en este punto donde nace el desarrollo web tal y comosehaintroducido.Sevaaprocederaintroduciralgunasdeesasmejorasenambaspartes.

Cliente: o SunJavaapplets[15]:seintrodujeronanimacionesconunaciertalgicaquese poda ejecutar en la parte cliente. Esto supuso en su da un cambio revolucionario, pues podan realizarse animaciones ms complejas que simples GIFs en el navegador, as como introducir pequeos programas para que el usuariointeractuaseconellos.Sinembargo,estatecnologaestabaalgolimitada encuantoafuncionalidadesytampocoproporcionabademasiadapotencia. Macromedia Flash [16]: el avance revolucionario en la parte cliente fue la aparicin de las pelculas o animaciones Flash, las cuales imitaban en cierta manera a los applets Java pero gozaban de mayor velocidad, rendimiento y potencia.Consiste,bsicamente,enunconjuntodeframes,loscualescontienen grficosytextos,sobrelosquesepuedeirnavegandohaciadelanteyhaciaatrs, saltando en el tiempo, como si de una pelcula se tratase. Aunque inicialmente eraalgocomplejorealizarunaanimacincondicionalconestatecnologa,hoy endaunapelculaFlashpuedeconstituirunaaplicacinensmisma,debidoala potencia y posibilidades que ofrece en sus ltimas versiones, siendo capaz de comunicarse con otras pelculas, pginas, recursos, etc., al tiempo que proporciona su propio lenguaje de programacin (ActionScript) para el procesamientodetodalalgicanecesaria.Unadelaspocasdesventajasdeluso de esta tecnologa es la necesidad de instalar un plugin en el navegador para podervisualizarpelculasFlash.

Servidor: o CGI[17]:CommonGatewayInterface,InterfazdeEntradaComnenespaol,es unatecnologaqueposibilitlaejecucindeprogramasresidentesenelservidor web a partir de llamadas desde la parte cliente. Esto supuso un avance revolucionario,puestoqueahora loque devolvael servidornoerasiempre un recursoesttico,sinoquedependiendodeunaentradapreviagenerabalasalida correspondienteenfuncindesulgicainterna.Almismotiempo,seposibilitaba accesoabasesdedatosenelservidorydemsserviciosqueesteprestase.Sin embargo, estos programas suponan tremendos agujeros de seguridad para los sitiosweb,altiempoque,segnavanzabalahistoriadelaweb,noerancapaces deproporcionartodalafuncionalidadqueelmercadorequera. Servidoresdeaplicacionesweb:prontoseviolanecesidaddeproporcionaruna mejor gestin de la lgica de la parte servidor de un sitio web, por lo que surgieron los servidores de aplicaciones web. Estos programas viven en el servidoryrecibenreenviadaslaspeticioneshechasporelclientealservidorweb. En ese punto, el servidor web (independientemente de la tecnologa/lenguaje queutilice)realizaunaseriedeoperacionesparasaberquhacerconlapeticin recibida,aqurecursosaccederyquinformacindevolveralservidorweb,para Pgina16

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID queesteselapasealcliente.Conestegranavanceseconsiguedotaralossitios web de un tremendo poder sobre la navegacin, lgica de negocio, acceso a datos, etc.; todo ello resultando en una mejor y ms potente experiencia web paraelusuario.UnejemplodeestosservidoresdeaplicacioneswebseraApache Tomcat,uncontenedordeServlets(tecnologaservidordeSun),elcualposibilita todoloanteriormentecontandoutilizandocdigoJava.

Tendenciaactual
Porotraparte,sevanaintroducirahoravariasreashacialasquesedirigeeldesarrolloweb hoyenda.

Patronesdediseo[18]:laposibilidaddeutilizarcdigopropioenlaparteservidor utilizando servidores de aplicaciones web abre las puertas para la aplicacin de solucionescomnmenteaplicadasparaproblemasfrecuentes,solucionesquefueron diseadas y perfeccionadas por especialistas y que permiten a los programadores finalescontarconprocedimientosconfiablesenlosquebasarsusaplicaciones.Estas solucionessonlospatronesdediseo,loscualesyahansidoampliamenteaplicados enaplicacionesdeescritorio,pasandoahoraalcontextodelasaplicacionesweb.Es necesario comentar la importancia del patrn MVC sobre las aplicaciones web actuales.Estepatrnsuponelaevolucindesdeunavisinclsicadedichacreacin web en la que la pgina (HTML, PHP, etc.) se encargaba de controlar la lgica de negocio, la obtencin de los datos y su posterior presentacin, hasta una visin innovadoraenlaque esteprocesosesepara en sus partesconstituyentes: Modelo, VistayControlador.Laaparicindeestepatrnposibilitaengranmedidalaaparicin de marcos de trabajo y patrones modulares y diseados para resolver problemas concretosdecadapartedelpatrnMVC. Marcos de trabajo web: la siguiente evolucin de los patrones de diseo y de los problemasfrecuentesenlaweboriginalacreacindelosmarcosdetrabajoweb.Un marco de trabajo web representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodologadetrabajolacualextiendeoutilizalasaplicacionesdeldominio.Engloba eltrabajoperfeccionadoyrevisadodeunaseriedeprogramadores,enelcualsehan utilizadopatronesdediseo,otrosframeworksymuchotrabajopropio,dandolujara una caja negra, o no tan negra si se quiere, que encapsula un conjunto de herramientasylibrerasgraciasalascualessepuedelevantarunarobusta,completa ycomplejaaplicacinweb,sinnecesidaddededicarhorasyhorasasuprogramacin. Todo ello gracias a la reutilizacin de cdigo til y de calidad. Normalmente, los marcos de trabajo web proveen funcionalidades como acceso a base de datos, plantillas, manejo de sesiones, generacin de pginas, validacin de formularios, controldelgicadenegocio,localizacinderecursos,etc. AJAX[19]:significaAsynchronousJavascriptandXML,JavascriptyXMLasncronoen castellano. Es un grupo de tecnologas de desarrollo web que existan con Pgina17

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID anterioridadperousadasdemaneradiferente.EnelcasodeAJAX,JavascriptyXMLse utilizandeforma conjuntopararealizarunapeticinelservidorwebdesdelaparte cliente sin tener que actualizar toda la pgina mostrada en el servidor cuando la respuestallegue,sinoqueseactualizasloaquellapartedeseada.Estoconsigueabrir laspuertasaldesarrollodeaplicacioneswebmuchomsricas,capacesdeasemejarse a las clsicas aplicaciones de escritorio. Hoy en da multitud de sitios web estn incorporandoAJAXasusaplicacioneswebparaconseguirresultadosmsdinmicosy potentesyunamejorexperienciawebdelusuariofinal.

2.2

Elestadodelacuestin

En esta seccin se va a hacer un mayor hincapi en el contexto concreto de la cuestin a tratar: el desarrollo de aplicaciones web utilizando marcos de trabajo, en especial aquellos encargadosdelavistaenelmodeloMVC. Como ya se introdujo en la seccin anterior, el patrn de diseo MVC consiste en una separacindelasdiferentescapasbsicasqueconstituyentodaaplicacinweb.Enprimerlugarse puedeencontrarelModelo(M),encargadodeencapsularelaccesoadatosylalgicadenegocio de la aplicacin. En segundo lugar, se tiene la Vista (V), la cual se encarga de presentar correctamentelosdatosquerecibe,sinpreocuparsedecmoseconsiguenodedndeproceden. En ltimo lugar se tendra el Controlador (C), responsable de relacionar correctamente las peticionesdedatosdelavistaalmodelo,lanavegacinentrediferentesvistas,etc. Acontinuacinse vana describirlosmarcosdetrabajomsutilizados enla actualidad para implementar correctamente el patrn MVC. De cada uno de ellos se proporciona, de manera adicional, una captura de su sitio web. Tras la descripcin de estos marcos, se realizar una comparativadetodosellos.Estossonlosmarcos,separadossegnlapartedelpatrnMVCque resuelven:

MarcosencargadosdelaVista: o o o o Velocity:sistemadeplantillasbasadoenJava,alternativaaJSP. Tapestry:dividelaspginasdelaaplicacinenunaseriedereasycomponentes. StrutsTiles:sebasaenplantillasreutilizablesyaltamenteconfigurables. JavaServerFaces:secentraenelusodecomponentesparaformarunapgina.

MarcosencargadosdelControlador: o Struts: recomendado para aplicaciones mediasgrandes, sistema de navegacin basadoenacciones.

Pgina18

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID o Spring Framework: potente marco de trabajo que incluye Inversin de Control/InyeccindeDependencias. JBossSeam:permiteensamblarcomplejasaplicacionesutilizandosimplesPOJOs (PlainOldJavaObjects).Seintegraperfectamenteconmuchasotrastecnologas. Stripes: contina donde Struts termina, mejorando determinados aspectos y detallesdesupredecesor.

MarcosencargadosdelModelo: o Hibernate:potenteserviciodepersistenciaaltamenteconfigurableyorientadoa objetos. TopLink:integrapersistenciaytransformacinaobjetosmientrasqueconservala atencinprincipalenelproblemadedominio.

MarcosencargadosdelaVista
EncuantoalosmarcosdetrabajoutilizadosenlapartedelaVistadelmodeloanteriormente descrito, existen numerosas soluciones. Unas se basan en componentes para construir la vista final, mientras que otras recurren al uso de plantillas para generarla. A continuacin se van a introduciralgunosdelosmscomnmenteutilizados.

Velocity
Velocity[20]esunsistemadeplantillasbasadoenJava.Permiteusarunsimplelenguajede plantillas para referenciar objetos definidos en cdigo Java. Cuando se utiliza para el desarrollo web,VelocityseencargadedesempearlafuncindevistaenelpatrnMVC.Velocityseparael cdigo Java de las pginas web, haciendo el sitio web mucho ms sostenible durante todo su tiempodevidayproporcionandounaalternativaalosficherosJSP(JavaServerPages). Las capacidadesdeVelocityvanms alldesupotencialen laweb. Porejemplo,puedeser utilizado para generar cdigo SQL, PostScript y XML. Puede serusadotambin de forma aislada para generar cdigo fuente e informes o como componente integrado en otros sistemas. Proporciona, por ejemplo, un servicio de plantillas para el marco de desarrollo web Turbine, resultando juntos en un motor de vista que facilita el desarrollo web de aplicaciones que realmentesiguenelmodeloMVC. GraciasaVelocityToolssepuedenextenderlasfuncionalidadesdeVelocity.Inclusolapropia sintaxis de las plantillas puede ser cambiada y extendida, dado que es procesada en un parser generadoporJavaCC[21].

Pgina19

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura2.MarcodetrabajoVelocity.

Tapestry
Tapestry[22]esunmarcodedesarrollowebparacrearaplicacioneswebdinmicas,robustas yaltamenteescalables.ComplementaelAPIestndardeJavaServlety,porello,funcionasobre cualquiercontenedordeservletsquesigadichoestndar. Tapestrydivideunaaplicacinwebenunconjuntodepginas,cadaunaconstruidaapartirde componentes. Esto proporciona una estructura consistente, permitiendo al marco de desarrollo asumir la responsabilidad de aspectos clave como la construccin de URLs, localizacin/internacionalizacin e informe de excepciones. Desarrollar aplicaciones web con TapestryinvolucracrearplantillasHTMLconsimplecdigoHTMLycombinandodichasplantillas conpequeasporcionesdecdigoJava. La distribucin oficial incluye aproximadamente cincuenta componentes, incluyendo desde simplescomponentesdesalidadetextohastacomplejastablasdedatosynavegacinporrboles. Adems, Tapestry est pensado para ser completamente escalable, pudiendo enfrentarse a pequeas aplicaciones y a grandes proyectos formados por cientos pginas individuales desarrolladosporgrandesydiversosequipos.

Pgina20

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura3.MarcodetrabajoTapestry.

StrutsTiles
ElmarcodedesarrolloStrutsTiles[24]sebasaenunsistemadeplantillas.Estaspuedenser definidas de manera centralizada en un fichero XML, directamente en ficheros JSP o programticamente. Struts Tiles se integra dentro del ampliamente conocido marco de trabajo Struts, utilizado en la parte del Controlador. Es por esto por lo que las plantillas pueden ser programadasenlospropiosActionsdeStruts. LasplantillasdefinidasconStrutsTilessoncompletamentereutilizables,tantodentrodeuna aplicacin web concreta como entre diferentes aplicaciones. Adems, la ltima versin de Tiles (ApacheTiles2)consigueindependizarsedelmarcodetrabajoStruts,conloquelasposibilidades de reutilizacin de estas plantillas aumentan considerablemente al ser posible integrarlas con diferentesmarcosencargadosdelControlador.

Pgina21

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura4.MarcodetrabajoStrutsTiles.

JavaServerFaces
JavaServer Faces, JSF de ahora en adelante, es un estndar de Sun Microsystems que especificacmodebeserlapartedelaVistadeunaaplicacinweb,haciendoqueestbasadaen componentes.Derecientenacimiento,hasupuestoungranavanceenlamaneradeconcebirla presentacindelainformacinylainteraccinconelusuarioenlapartecliente. JSFsebasaenelusodecomponentes.Estoscomponentestienentantopartecliente,cdigo HTML resultante de su renderizado y cdigo JavaScript asociado, como parte cliente, beans manejadosquesirvenparaalmacenaryprocesarlainformacinrecogidaomostradapordichos componentes. Es necesario hacer hincapi en la estructura interna de JSF y los productos relacionados existentes en el mercado. JSF consta de dos partes principales: la implementacin mnima del estndardeSunyloscomponentesJSFlistosparausarquesepuedenincorporaralamisma.Por unlado,sepuedenencontrarimplementacionesdelestndarpertenecienteaSunMicrosystems, comopuedenserApacheMyFaces[26](Figura5)ylasuyapropia,SunJSFRI[27](Figura6).Por Pgina22

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID otrolado,esposiblehallarmarcosdetrabajoquesloincluyencomponentesJSFparaincorporar a una determina aplicacin web que ya utilice una determina implementacin del estndar. Ejemplos de este segundo caso seran JBoss RichFaces [28], IceSoft Technologies IceFaces [30], VedanaRichClientFaces[31],OracleADFFaces[32],ApacheMyFacesTomahawk[33],etc. Adems,JSFtambinpermitedefinirlanavegacinentrelasdiferentesvistasopginasdeque constaunaaplicacinweb,utilizandoparaelloetiquetasdenavegacin.

Figura5.MarcodetrabajoJavaServerFaces:implementacindeMyFaces.

Pgina23

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura6.MarcodetrabajoJavaServerFaces:implementacindeSun.

MarcosencargadosdelControlador
RespectoalosmarcosdetrabajoutilizadosenlapartedelControlador,seencuentranStruts, SpringFramework,JBossSeamyStripes,loscualessondescritosacontinuacin.

Struts
Struts[23]esunmarcodedesarrollowebaltamenteestablecidoenloqueaaplicacionesweb serefiere.Esunreferenteconsiderablealahoradecrearestetipodeaplicaciones.Estemarcode desarrollodeberaserlaeleccinpordefectoalahoradeacometerunproyectodeestetipo. SeencargadetodalaarquitecturadelpatrnMVC,sirviendoprincipalmentedecontrolador peroencargndosedemodeloyvista,sibienpuededelegarlasenotrosmarcosdedesarrollo.La configuracinbsicapasarporlaedicindelficherostruts.xmlparaagregarnuevosActionsalos quereferenciardesdelosficherosJSP. El marco de desarrollo web Struts est, principalmente, recomendado para aplicaciones mediasgrandes, dado que para las ms simples o pequeas exige un proceso de configuracin realmenteinnecesario. Pgina24

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura7.MarcodetrabajoStruts.

SpringFramework
ComograncompetidordeStrutsenlaactualidad,puedeencontrarseSpringFramework[34]. Su principal punto innovador y revolucionario es la Inversin de Control o Inyeccin de Dependencias,graciasalacualpuedereconfigurarseunaaplicacinmediagrande,inclusodesde el punto de vista de mapping o interconexin de componentes, simplemente editando sus numerosos ficheros de configuracin. Precisamente este es tambin uno de sus puntos dbiles, pues para poder sacar provecho de esta novedosa tcnica es necesario aprender una cantidad considerable de conocimientos sobre dichos ficheros de configuracin, lo que repercute directamenteenlacurvadeaprendizaje. Sin embargo, la Inversin de Control posibilita la interconexin de Spring con una gran multitud de marcos de desarrollo encargados de la vista o modelo, debido a la facilidad de reconfiguracininherenteaestaInyeccindeDependencias. Spring Framework tambin trata de facilitar la tarea del programador mediante la simplificacinde laprogramacindebeansyservlets. Suesfuerzose canaliza a travsdeclases singletonyunaclaraorientacinalusodeinterfacessobreeldeclases. Por tanto, Spring Framework, tras un periodo de aprendizaje, consigue una capacidad de integracinexcelenteydereconfiguracinmuybuena. Pgina25

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura8.MarcodetrabajoSpring.

JBossSeam
JBoss Seam [39] es un potente y novedoso marco de desarrollo web pensado para crear aplicacionesdenuevageneracin(Web2.0)unificandoeintegrandotecnologascomoAJAX,JSF, EJB3,JavaPortletsyBusinessProcessManagement. Seamhasidodiseadoparaeliminarlacomplejidadenlaarquitecturadeunaaplicacinweb. PosibilitaquelosdesarrolladoresensamblencomplejasaplicacioneswebconsimplesPOJOs(Plain OldJavaObjects),componentesdeinterfazdeusuarioyXML. Utiliza JavaServer Faces o cualquiera de sus variantes para renderizar la vista y puede integrarseconHibernateparacontrolarlapartedelmodelo.

Pgina26

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura9.MarcodetrabajoSeam.

Stripes
Stripes[40]esunaversindeStrutssimplificada.Conservapartedelaestructuradelsegundo perofacilitaunsinfndepequeastareasyerroresoformasnodemasiadocorrectasdehacerlas cosas que los desarrolladores de Struts no consideraron como tal. Entre otros, cabe citar problemasdevalidacin,necesidaddeexplicitarlosactionsenelficherodeconfiguracin,etc. Adems,Stripestambinaportaunconjuntonuevodefuncionalidadesbastanteinteresante: transparencia en la subida de ficheros, manejo de errores y excepciones, validacin, pruebas unitarias, manejo de estados y la posibilidad de integrar AJAX de forma sencilla en los componentesexistentesparalapartedelavista.

Pgina27

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura10.MarcodetrabajoStripes.

MarcosencargadosdelModelo
AcontinuacinsedescribenlosmarcosencargadosdelModeloseleccionados.

Hibernate
Hibernate[35]esunpotenteyaltamenteeficienteserviciodepersistenciaobjeto/relacionaly de consulta. Este marco de desarrollo permite desarrollar clases persistentes siguiendo una especificacinorientadaaobjectos,incluyendoasociacin,herencia,polimorfismo,composiciny colecciones.HibernatepermiteexpresarconsultastantoensupropioSQLportable(HQL)comoen SQLnativo. Alcontrarioqueotrassolucionesparalapersistencia,HibernatenoocultaelpoderdeSQLy garantiza que los conocimientos y esfuerzos previos del programador en tecnologa relacional seantanvlidoscomosiempre. Hibernate es un proyecto profesional y un componente crtico de la suite de productos de JBoss,unadivisindeRedHat. Pgina28

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura11.MarcodetrabajoHibernate.

TopLink
ConOracleTopLink[41],sepuedeintegrarlapersistenciaylatransformacindeobjetosen unaaplicacinweb,mientrasseconservalaatencinprincipalenelproblemadedominio.Gracias aestoseconsigueventajaeneficiencia,flexibilidadysolucionesprobadassobreelterreno. ElusodeTopLinkesapropiadoparaunampliorangodeaplicacionesJ2EEyarquitecturasJava. Se puede usar para disear, implementar, desplegar y optimizar una capa avanzada, con persistencia y transformacin de objetos que soporta una gran variedad de fuentes de datos y formatos, incluyendo relacional (JDBC), objetorelacional (Oracle Database), Sistema de InformacinEmpresarial(J2C)yXML. TopLink incluye soporte para aquellos contenedores con persistencia manejada por contenedor(CMP)deunavariedaddedistribuidores,comoOracleContainersforJ2EE(OC4J),IBM WebSphereapplicationServeryBEAWebLogicServer.

Pgina29

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura12.MarcodetrabajoTopLink.

Comparativademarcosdetrabajo
En esta seccin se van a comparar los marcos de trabajos que han sido introducidos. Esta comparativa es importante para entender la razn de que este proyecto utilice las tecnologas elegidasenlugardeutilizarotras. Loscriteriosdecomparacinsonlossiguientes:

Cantidaddedocumentacindisponible:incluyendorecursosexternosalmarcooasu equipo de desarrollo. Se mide en valores numricos del 1 al 5, siendo 1 poca documentaciny5mucha. Facilidad de aprendizaje: lo que cuesta aprender a utilizar el marco desde cero, sin conocimientos previos. Se mide en valores numricos del 1 al 5 tambin, siendo 1 pocafacilidad(muchadificultad)y5mucha. Facilidad de instalacin y configuracin: indica el nivel de facilidad a la hora de incorporarelmarcodetrabajoaunproyectodadoyconfigurarelmismo.Tambinse midedel1al5,siendo1pocafacilidad(muchadificultad)y5mucha. Pgina30

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Lacomparativadelosmarcosdetrabajoquedara,portanto,resumidaenlastablasTabla1, Tabla2yTabla3,queestnreferidas,respectivamente,alosmarcosencargadosdelaVista,del ControladorydelModelo: Velocity Tapestry StrutsTiles JavaServerFaces Cantidadde 1 4 4 5 documentacin Facilidadde 2 4 4 4 aprendizaje Facilidadde instalaciny 4 5 5 5 configuracin
Tabla1.ComparativademarcosdetrabajoparalaVista.

Cantidadde documentacin Facilidadde aprendizaje Facilidadde instalaciny configuracin Cantidadde documentacin Facilidadde aprendizaje Facilidadde instalaciny configuracin Hibernate 5 4 5 TopLink 4 3 3 Struts 5 4 5 Spring 5 4 4 Seam 3 3 3 Stripes 5 4 4

Tabla2.ComparativademarcosdetrabajoparaelControlador.

Tabla3.ComparativademarcosdetrabajoparaelModelo.

Pgina31

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

2.3

Ladefinicindelproblema

Unavezintroducidoselcontextodelproblemayelestadodelacuestinsepuedeprocedera la definicin del problema. El problema localizado viene dado por un uso frecuente y de nivel avanzado de diferentes libreras de componentes JSF. Este uso frecuente, junto al anlisis realizadoenlasseccionesanteriores,exponenelproblemaencuestin. Elproblemaencontradoeslaaltadificultaddeaprendizajeyusodelibrerasdecomponentes JSF. Esto se explica analizando el proceso de incorporacin de una librera dada, el cual se componedelasetapasmostradasenlaFigura13.

1.Documentacin sobrelibrera

3.Integracinen elproyecto

5.Usode componentes

2.Creacinde aplicacinen blanco

4.Documentacin sobre componentes

Figura13.EtapasdelaincorporacindeunalibreraJSF.

1. Documentacin sobre librera: en primer lugar es necesario documentarse sobre la libreraencuestin,estudiarsiescompatibleconlaconfiguracinactualdelproyecto real,analizarlasventajasdesuutilizacin,aprendercmoseconfiguraeinstala,etc. 2. Creacin de aplicacin en blanco: en segundo lugar es importante realizar la tpica aplicacinblankokickstart,queesaquellaqueestotalmentecarentedefuncionalidad pero que consigue demostrar que la configuracin mnima para utilizar la librera funcionacorrectamenteynoocasionaproblemasalserdesplegadalamisma. 3. Integracinenproyecto:unavezprobadaconlaaplicacinenblanco,seprocedeala integracindelalibreraenelproyecto.Paraestosetrasladalaconfiguracinmnima delaetapaanterioralaconfiguracinactualdelproyecto,tomandolasconsideraciones oportunas para evitar que dichas modificaciones dejen el proyecto en un estado no operativo. 4. Documentacin sobre componentes: el cuarto paso consiste en estudiar y analizar el conjuntodecomponentesdelalibreraquesedeseeincorporaralproyecto,prestando especialatencinalamaneradeconfigurarlos. 5. Usodecomponentes:elpasofinalesincorporarsatisfactoriamenteestoscomponentes seleccionados,conociendopreviamenteculessonsuspropiedades/atributosycmose debenincluirenelcdigofuentedelproyecto. Pgina32

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Esteprocesotienenumerososdefectosoefectosnegativoscausadosporlasetapassiguientes:

Documentacin: en primer lugar, se pierden horas y horas en documentarse apropiadamenteparapodercrearunaaplicacindepruebaoparasiquieraveralgn componente funcionando. Adems, no siempre existe toda la documentacin deseadaparaunalibreradeterminadanilosrecursosonlinerequeridos. Aplicacin en blanco: en segundo lugar, se pierde un valioso tiempo de desarrollo implementandolaaplicacinenblanco,dadoquehayquerecrearunnuevoentorno con condiciones ideales y simplificadas que nada se asemejar al entorno final del proyecto. Usodecomponentes:porltimo,todoeseprocesodedocumentacinycreacinde laaplicacinkickstartnoeximealosprogramadoresfinalesderecurriramtodosde ensayoyerrorparaevaluarlacompatibilidadoviabilidaddeusodeloscomponentes deseadosenelentornodelproyectoreal.

Por todo esto se considera que la tarea de agregar una librera de componentes JSF a un proyectoexistenteesbastanteineficienteydeberaseroptimizada.

Pgina33

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina34

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Gestindeproyectosoftware

La gestin de proyectos es una herramienta muy til a la hora de asegurar la correcta realizacindeunproyecto.SegnWikipedia[8]: Lagestindeproyectosesladisciplinadeorganizaryadministrarrecursosdemaneratalque sepuedaculminartodoeltrabajorequeridoenelproyectodentrodelalcance,eltiempo,ycoste definidos. Un proyecto es un esfuerzo temporal, nico y progresivo, emprendido para crear un productoounserviciotambinnico. Enelcasodelpresenteproyecto,seamplaelsignificadodeloscitadosrecursosparaenglobar tambinelconjuntodetareasenlasquesedescomponeunproyecto.Adicionalmente,seincluye en este captulo el anlisis de los riesgos que pueden producirse durante la realizacin del proyecto.

3.1

Alcancedelproyecto

Elalcancedelproyectoestdirectamenteligadoalosobjetivosmarcadosyalascondiciones impuestas.Enestaseccinsevanadelimitarestosobjetivosycondiciones,ascomolosrecursos necesariosparacumplirambos.

Definicindelproyecto
Este proyecto tiene como objetivo desarrollar una herramienta de maquetacin de componentes JSF. De esta forma, el usuario podr componer una pgina JavaServer Faces de manera visual utilizando componentes de libreras que no tiene necesidad de conocer y sin emplear para ello lnea alguna de cdigo. Dicha herramienta de maquetacin ser accesible va web, por lo que se facilita en gran manera el acceso a la misma, no siendo necesario ningn procesodeinstalacinenelequipodelusuario. La informacin de entrada al sistema ser el conjunto de libreras de componentes que el administradorconsidereoportunodejardisponiblesalusuariofinal.Asuvez,lasalidadelproceso demaquetacinrealizadoporesteltimoserunapginaJSFenlaqueseencuentrencodificadas lasetiquetascorrespondientesaloscomponentesdispuestosporelcitadousuario,ademsdelas librerasquehayansidoempleadasylosficherosdeconfiguracinpertinentes. Demaneraadicional,selepermitealusuariomodificarasueleccindeterminadoselementos delsistema,laslibrerasdisponibles,informacindesalida,etc. Este proceso de maquetacin asistida se hace necesario debido a los inconvenientes del modelo de aprendizaje de libreras JSF que se sigue hoy en da. Esto ha sido debidamente explicadoenlaseccin2.3,Ladefinicindelproblema.

Pgina35

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Estimacindetareasyrecursos
En este apartado se va a exponer la estimacin realizada en cuanto al coste del proceso completo de desarrollo de este proyecto. Los distintos tipos de gastos que se van a tener en cuentasonlossiguientes:

Personal:gastosrelativosalossueldosdelosdiversosempleadosnecesarios. Equipamiento:requisitoshardwareysoftwareparaeldesarrollodelproyecto. Material:referentealainfraestructurarequerida. Transporte:gastosrelacionadosconlosviajesasociadosareunionesconelcliente. Otros: conjunto de gastos que no que encajan en ninguna de las categoras anteriores.

Antes de comenzar con el desglose de cada categora es necesario definir varios valores imprescindiblesentodaplanificacindedesarrollo: Horaslaborablesalda 8 Daslaborablesalmes 22 Fechadeiniciodelproyecto 15/01/2009 Fechadefindelproyecto 04/05/2009 Duracindelproyecto 3,5meses
Tabla4.Definicindevaloresclaveparalaplanificacin.

Personal
Pararealizarelclculodelgastodeemplearlostrabajadoresnecesariosserequiereconocer susalarioanualylashorastrabajadasporcadauno,viniendoestedatodelaplanificacinquems adelanteseexpondr.Losrolesnecesariosson:

1Jefedeproyecto 1Analista 2Programadores

Portanto,esteeselresumendegastosporroldetrabajador: Pgina36

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Rol Jefede proyecto Analista Programador Salariobruto anual() 55.000 42.000 36.000 Salariobruto mensual(12 pagas)() 4.583,34 3.500 3.000 Costeporhora (/h) 26,05 19,89 17,05 Horas trabajadas (h) 219 534 552 Costetotal () 5.704,95 10.621,26 9.411,6

Tabla5.Costeporrol.

Acontinuacinsemuestraeldesglosedehorastrabajadasporcadaempleadoencadaunade lastareasquecomponeneldesarrollo: Jefede Horas Tareas Analista Programador1 Programador2 proyecto totales 34 Estudiopreliminar Planteamientodel problemayesbozo 12 6 0 0 18 delasolucin ElaboracindelPlan 16 0 0 0 16 deproyecto 85 Estadodelacuestin Estudiodelas tecnologas 10 30 0 0 40 disponibles Estudiodelas librerasde 10 35 0 0 45 componentesJSF 105 Anlisisdelsistema Definicinde 30 20 0 0 50 requisitos Especificacinde 35 20 0 0 55 requisitos 223 Diseo Diseodela 9 24 0 0 33 arquitectura Diseodelmodelo 4 15 0 0 19 dedatos 7 25 0 0 32 Diseodelainterfaz Diseodelagestin decomponentesJSF Diseodelalgica denegocio 28 20 45 46 0 0 0 0 73 66

Pgina37

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Tareas Desarrollodela interfaz Desarrollodel dominio Generacinde componentesJSF Gestindelibreras decomponentesJSF Desarrollodela lgicadenegocio Pruebasunitarias Pruebasde integracin Ejecucindepruebas Desplieguedel sistema Mantenimientodel sistema Documentacindel proyecto Totalhorasporrol Totalcosteporrol Jefede Horas Analista Programador1 Programador2 proyecto totales 1.135 Desarrollodelaaplicacin 0 0 0 0 0 3 4 42 15 20 23 37 Pruebas 9 8 126 80 77 83 133 16 5 7 0 126 80 77 83 133 16 5 7 0 294 175 174 189 303 96 44 22 30 20 20 65 25 25 65 94 0 552 9.411,6 0 552 9.411,6 94 1.857 35.149, 41

6 10 Desplieguedelaaplicacin 8 12 Mantenimiento 6 9 Documentacin 11 219 5.704,95 83 534 10.621,26

Tabla6.Desglosedehorastrabajadasporrolyportarea.

TalycomoseindicaalfinaldelaTabla6,elcostetotalporempleadosesde35.149,41euros.

Pgina38

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Equipamiento
Para que los anteriormente citados empleados puedan realizar su trabajo, es necesario que cuenten con un entorno de desarrollo apropiado. Una parte clave de l son los equipos informticosqueseponenasudisposicin.Dadoquetodoelsoftwareautilizareneldesarrolloes completamenteopensource(servidorApacheTomcatyframeworksconlicenciaGPL),elcostede steesnulo.Tambinseincluyeenestacategoraelmaterialfungibleutilizado(papel,cartuchos detinta,bolgrafos,etc.).Estesera,pues,elresumendegastosdeequipamiento: Amortizacin Descripcin Coste() Cantidad Costetotal() (aos) Ordenadorde sobremesade 1.000 4 2 500 gamaalta Servidorpropio 2.000 1 2 1.000 Software 0 4 0 Materialfungible 40 4 160 Total 1.660
Tabla7.Costedeequipamiento

Ntese que los equipos hardware se amortizan pasado un tiempo, de ah que el coste imputableporellosseamenorqueelcosteoriginal.

Material
Lainfraestructuranecesariaparaelequipodedesarrollodesignadoconstadeunaoficinapara realizarelmismo,conexintelefnicayaInternet,yserviciodelimpiezaymantenimientodelas instalaciones: Descripcin Coste(/mes) Cantidad(meses) Costetotal() Alquileroficina 1.500 3 4.500 Conexin telefnica y 40 3 120 aInternet Servicio de limpieza y 200 3 600 mantenimiento Total 5.220
Tabla8.Costedematerial.

Pgina39

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Transporte
Otroaspectoatenerencuentaenelcmputodelosgastosdelproyectosonlosrelacionados con el transporte. Ya sea por reuniones con el cliente o por sesiones de implantacin, los desplazamientosdelequipodedesarrollosoninevitables: Descripcin Costetotal() Transportepblicoyprivado 600
Tabla9.Costedetransporte.

Otros
Demaneraadicional,esnecesarioconsideraentodoproyectounacantidadextraparacubrir posiblesimprevistosduranteeldesarrollo: Descripcin Costetotal() Costesadicionales 200
Tabla10.Costesadicionales.

Presupuesto
Contodoslosgastoslistadosenlastablasanteriores,esteseraelcostetotaldelproyecto: Concepto Coste() Empleados 35.149,41 Equipamiento 1.660 Material 5.220 Transporte 600 Gastosadicionales 200 Total 42.829,41
Tabla11.Resumendegastos.

Ahora,conlosporcentajesderiesgos,beneficioeIVA,sepuedeelaborarelpresupuestofinal delarealizacindelproyecto: Concepto Coste() Gastostotales Riesgos(20%) Beneficio(20%) Total(sinIVA) IVA[11](16%) Total
Tabla12.Presupuestofinal.

42.829.41 8.565,88 8.565,88 59.961,17 9.593,79 69.554,96

Pgina40

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Por tanto, tal como establece la Tabla 12, el coste total de desarrollo del proyecto para la empresaencargada(sinIVA)esde59.961,17(Cincuentaynuevemilnovecientossesentayun eurosy17cntimosdeeuro). Lacantidadeconmicaadesembolsar(conIVA)porlaempresacontratanteserde69.554,96 (Sesentaynuevemilquinientoscincuentaycuatroeurosynoventayseiscntimosdeeuro).

3.2

Plandetrabajo

Unavezdetalladoelalcance,tiempototaldedesarrolloypresupuestodelproyecto,sevana identificar las tareas en las que se descompone dicho desarrollo. Adems, se va a incluir la planificacindelasmismaseneltiempoindicado.

Identificacindetareas
Paraconseguirafrontareldesarrollodeesteproyectodeformamsordenadayeficaz,seha divididoelmismoentareasmssimplesymanejables:

Estudiopreliminar: o Planteamiento del problema y esbozo de la solucin: en primer lugar, es necesarioespecificarelproblemaquesepretenderesolverconlarealizacinde esteproyectoyproporcionarunaprimeraimpresindelasolucinquesequiere alcanzar. Elaboracin del Plan de proyecto: en esta fase se elaborar la gestin del proyecto, detallando la planificacin, divisin de tareas y seguimiento del proyecto,ascomoelalcancedelmismoyelcostedesudesarrollo.

Estadodelacuestin: o Estudiodelastecnologasdisponibles:anlisisdelastecnologasenactualusoen elmbitodeldesarrollodeaplicacionesweb. Estudio de las libreras de componentes JSF: anlisis detallado de las distintas librerasdecomponentesdisponibleshoyendaparacomponerpginasJSF.

Anlisisdelsistema: o Definicin de requisitos: educcin de requisitos impuestos por el cliente y clasificacindelosmismosendiferentescategoras. Especificacin de requisitos: estudio ms detallado de las caractersticas asociadasacadarequisitodefinido.

Pgina41

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Diseo: dado el anlisis resultante de la fase anterior, se realiza el esbozo de la solucinadesarrollar.Paraello,estafasesedividedetalformaqueseafrontenlos principalesaspectosdetodaaplicacin,msaquellospropiosdelcontextoconcreto deesteproyecto: o Diseo de la arquitectura: se disear la arquitectura general de la aplicacin, estableciendoseparacionesengrandesmdulos. Diseodelmodelodedatos:seestablecerelmodelodedatosqueutilizartodo elsistema. Diseo de la interfaz: se disear la interfaz de usuario que utilizar el cliente final. DiseodelagestindecomponentesJSF:segenerareldiseodelmdulode gestindecomponentesJavaServerFaces. Diseo de la lgica de negocio: se disear la lgica de negocio central de la aplicacin.

Desarrollodelaaplicacin:estafaseserefierealdesarrollopropiamentedichodelos diferentesbloquesquecomponenlaaplicacin: o Desarrollo de la interfaz: se construir la interfaz de usuario con la que interactuarelusuariofinal. Desarrollodeldominio:sedesarrollar elcdigoque representa lainformacin delsistema. GeneracindecomponentesJSF:enestafasesecrearelcdigonecesariopara generaryorganizarcomponentesJavaServerFacesdemaneradinmica. Gestin de libreras de componentes JSF: se generar el cdigo encargado de gestionartodaslaslibrerasycomponentesdisponiblesenelsistema. Desarrollo de la lgica de negocio: se realizarn las clases encargadas de gestionarlaspeticionesoriginadasenlainterfazdeusuario.

Pruebas: o Pruebas unitarias:se disearnlas diferentespruebas unitarias arealizar.Estas pruebasconsistenenprobarelcorrectofuncionamientodeunmdulodecdigo dado. Pruebas de integracin: se planificarn las pruebas de integracin del sistema diseadas. Estas pruebas se centran en comprobar que los diferentes mdulos

Pgina42

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID que componen un subsistema se integran correctamente, con el consiguiente correctofuncionamientodelsubsistema. o Ejecucindepruebas:sellevaracabolaejecucindelaspruebasdiseadasy planificadas.

Desplieguedelaaplicacin.Desplieguedelsistema:elobjetivodeestafaseeselde implantarcorrectamentelasolucindesarrollada.Entreloscomponentesaimplantar, esnecesariotenerencuentalosficherosdeconfiguracinydecreacindelsistema. Mantenimiento.Mantenimientodelsistema:aqusecorregirnlosfallosyerroressin solucinenelsistemadesarrollado. Documentacin. Documentacin del proyecto: enesta fase se documentar todo el sistema, desde las tecnologas estudiadas para implementar hasta el manual de usuario de la aplicacin, pasando por el anlisis y diseo de las funcionalidades requeridas.

Planificacindetareas
De manera adicional al listado de tareas se va a mostrar la planificacin realizada de la duracindeestas.Estaplanificacinesestimada,porloquepuedesufrirmodificacionesdurante larealizacindelproyecto.LaFigura14muestraestaplanificacin. Se incluye tambin el Anexo II. Seguimiento de proyecto fin de carrera, el cual refleja esta planificacinestimadacomparadaconlaplanificacinrealdeldesarrollodelmismo.Esnecesario tenerpresentequelarealizacinfinaldelproyectohasidoresponsabilidaddelalumnoautorde este proyecto de fin de carrera, por lo que las condiciones de recursos, gastos y tiempos son completamentediferentes.Enesteanexosepuedecomprobareltiemporealempleado,frentela estimacininicial.

Pgina43

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura14.Planificacindelproyecto.

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

3.3

Gestinderecursos

Enestaseccinsevahablarenprofundidaddelosrecursosutilizadosenlarealizacindeeste proyecto,concretamentelosrecursoshumanos.Secomentarelperfildecadatipodeempleado ylaasignacindehorasquetieneacadatareadelasquecomponenelproyecto.

Especificacinderecursos
Losrecursoshumanosquesevanautilizarenelproyectosonrelativamenteescasosdadala pocaenvergaduraycomplejidaddelproyecto.Elequipodetrabajoconstadelossiguientescuatro miembros:

Jefedeproyecto:encargadodelaplanificacin,gestinyseguimientodelproyecto. Analista:centradoenelanlisisdelsistemaydiseodelasolucin. 2 programadores: encargados fundamentalmente del desarrollo del cdigo del proyecto,ascomodelafasedepruebasymantenimiento.

Losrequisitosqueestosmiembrosdelequipohandecumplirsonlossiguientes:

Jefedeproyecto: o Experiencia mnima de 3 aos gestionando proyectos de complejidad media y organizacinequiposde5a10personas. Experiencia en la planificacin de tareas y aprovechamiento de recursos humanos. Experienciaeneltratoconclientes. Experienciaenresolversituacionesdecrisisduranteeldesarrollodeproyectos.

o o

Analista: o Experiencia mnimade2 aosenlaeduccinderequisitosdadaslaspeticiones delcliente. Experienciaenelanlisis,evaluacinydiseodeaplicacionesweb. ExtensousoyconocimientodeUML[12],patronesdediseoypatronesJ2EE[13].

o o

Programador:

Pgina45

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID o o o Experienciamnimade2aosdesarrollandoaplicacioneswebJ2EE. ExtensousoyconocimientodeUML,patronesdediseoypatronesJ2EE. Extenso conocimiento de los principales marcos de trabajo J2EE actuales (JSF, Struts [23], Spring [34], Hibernate [35], etc), as como en los principales servidoresdeaplicaciones(JBoss[36],Tomcat[37],iPlanet[38],etc).

Asignacinderecursos
La asignacin de los diferentes recursos humanos a las fases del desarrollo, es decir, el desglosedelashorastrabajadasporcadaempleadoencadaunadelasdistintastareas,sepuede encontrarenlaTabla6.Desglosedehorastrabajadasporrolyportarea.

3.4

Gestinderiesgos

En todo proyecto, existe la posibilidad de que el desarrollo se vea retrasado o afectado de algunamanerapordiversosfactores.Dichosfactoresoimprevistosdebensertomadosencuenta, identificadosclaramentedesdeunprimermomentoyserconcienzudamenteanalizados.

Identificacinderiesgos
Los problemas que pueden llegar a suceder durante la realizacin del proyecto son de dos tipos:conocidosydesconocidos.Losdesconocidosnosepuedenprever,niidentificar,nianalizar, niprevenir.Sinembargo,aquellosquesonconocidosspuedenserconsideradosytratados.De esta forma, el equipo de desarrollo puede tenerlos en cuenta y estar preparado. De manera general,estossonlosprincipalesriesgosconocidosqueseconsideran: Identificador Descripcin Causas Consecuencias R01 Faltadetiempo Malaplanificacin. Retrasoenloshitos planificados. Faltadeexperiencia. R02 Clientenodisponible Agendadelcliente demasiadoapretada. Desvinculacindel proyectoporpartedel cliente. Enfermedad. Fallecimiento.

Malatomade requisitos. Discrepanciaentre peticindelclientey solucinalcanzada. Bsquedade reemplazo. Reparticindetareas

R03

Bajadeunmiembro delequipo

Pgina46

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Identificador

Descripcin

Causas

R04 Nuevosrequisitoso funcionalidades

Despido.

Consecuencias entreelrestodel equipo.

Nuevasolicitudpor partedelcliente

Replanificacindelas tareasafectadas. Ajustedetiempoy coste. Prdidade informacin. Responsabilidades legalessielproyecto trabajacondatos personales. Retrasoconsiderable. Prdidade informacin. Retrasoeneltiempo dedesarrollo. Prdidadelequipo informtico. Responsabilidades legales. Retrasoconsiderable. Anlisisdeviabilidad decontinuacindel proyecto.

R05

Problemasde hardwareosoftware

Equiposdefectuosos. Virusoataque informtico. Malaseguridad.

R06 Problemasde infraestructura

Terremotos, inundaciones,incendios.

Interrupcindelservicio deconexinaInternet. Problemaselectrnicos.

R07

Robofsicoo informtico

Hurtodeequipos informticos. Hurtodeinformacin relacionadaconel proyecto. Hurtodecdigo pertenecienteal proyecto.

R08

Pruebas insuficientes

Planificacindepruebas malacalidad. Notodoslosaspectos delaaplicacinse prueban.

Fallosoerroresno detectados. Productodecalidad inferioraladeseada. Incrementodelcoste

Pgina47

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Identificador

Descripcin

Causas

Consecuencias demantenimiento.

Tabla13.Identificacinderiesgos.

Anlisisderiesgos
UnavezidentificadoslosriesgosenlaTabla13,esnecesarioconsiderarsusconsecuenciasslo en trminos relativos al producto final y sus condiciones de generacin, es decir, el coste correspondiente a su desarrollo, la calidad alcanzada y el tiempo empleado. Para valorar el impactoencadaaspectocomentadodecadariesgoseutilizantresvalorescualitativosreferidosa laintensidaddedichoimpacto:alto,medioybajo.Estarelacinderiesgoseimpactopuedeverse enlaTabla14. Riesgo Impactoencoste Impactoentiempo Impactoencalidad R01 Bajo Alto Medio R02 Bajo Medio Alto R03 Bajo Alto Medio R04 Medio Alto Bajo R05 Alto Alto Bajo R06 Alto Alto Bajo R07 Alto Medio Bajo R08 Bajo Medio Alto
Tabla14.Anlisisdeimpactoderiesgos.

Pgina48

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Solucin

En este captulo se explica el procesodedesarrollo llevado a cabo para elaborar la solucin planteada,ascomoestasolucin.Enprimerlugar,seprocedeadescribirelprocesodedesarrollo delamisma,paracontinuarconlapresentacindelproductoobtenido.

4.1

Elprocesodedesarrollo

Enestadescripcindelprocesodedesarrolloseempiezarealizandoelanlisisdelsistemaa elaborar,comenzandoconunaeduccinderequisitosyterminandoconlaespecificacindeestos desdediferentespuntosdevista.Despus,sepasaaexplicareldiseoalquesehallegado,tanto a nivel de sistema como a nivel detallado. Posteriormente, se describen las tecnologas y herramientasutilizadasparalarealizarlaimplementacindelasolucin.Porltimo,seincluyen losresultadosdelaspruebasunitariasydesistemallevadasacaboenlaaplicacin. Elprocesodedesarrollosoftwaresedefinedelasiguienteforma[9]: Sedefinecomoproceso(dedesarrollosoftware)alconjuntoordenadodepasosaseguirpara llegaralasolucindeunproblemauobtencindeunproducto,enestecasoparticular,paralograr la obtencin de un producto software que resuelva un problema. () Cualquiera sea el proceso utilizadoyaplicadoenundesarrollodesoftware,ycasiindependientementedel,siempresedebe aplicarunModelodeCiclodeVida.()ElModelodeProcesooModelodeCiclodeVidautilizado para el desarrollo define el orden para las tareas o actividades involucradas, tambin definen la coordinacin entre ellas, enlace y realimentacin entre las mencionadas etapas. Entre los ms conocidossepuedemencionar:ModeloenCascadaosecuencial,ModeloEspiral,ModeloIterativo Incremental. De los antedichos hay a su vez algunas variantes o alternativas, ms o menos atractivassegnsealaaplicacinrequeridaysusrequisitos.. De acuerdo a esta definicin, para completar exitosamente el proceso de desarrollo del productosoftwarepropuestoenesteproyectoelprimerpasoesseleccionarunmodelodeciclo de vida que defina y orqueste las distintas fases del citado desarrollo. Para este proyecto se ha seleccionadoelmodelodeciclodevidaenespiral.Elmodeloespiraldeciclodevidaconsisteenla realizacindeiteracionessobreunconjuntodeactividades:

Educcinderequisitos:enestafasesededucenyrecolectanlosrequisitosquedebe cumplirelproductodesarrollado. Desarrollo:estafaseconsisteenlaimplementacindelafuncionalidadsolicitadaen lafaseanterior. Evaluacin:tratadeevaluarlasolucindesarrolladaenlafaseanterior,proponiendo solucionesparaproblemassurgidos,mejoras,ampliaciones,correcciones,etc. Pgina49

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID La idea principal de este ciclo de vida consiste en realizar un nmero finito de iteraciones sobreestasactividades,detalformaque,salvoenlaprimeraejecucindelmismo,lasalidao resultadodelaltimaactividad,ladeevaluacin,sirvecomoentradaparalaprimeradeellas,la derecoleccinderequisitos.Deesta forma,sevangenerandoprototiposincrementales,siendo cada uno mejor y ms formado que el anterior. Esto hace tambin posible la disposicin de prototiposactualizadosencualquiermomentodelprocesodedesarrollodelproductosoftware. ElflujodeesteciclodevidasepuedeobservarenlaFigura15:

Figura15.Ciclodevidaenespiral.

Una vez dispuesto el ciclo de vida a seguir, se procede con el contenido de este apartado. Como ya se comentaba al iniciar este captulo, este apartado consiste, en primer lugar, en el anlisisdelosrequisitosdelsistema.Acontinuacin,sedescribeeldiseodelasolucin.Despus, seexplicanlosdetallesdeimplementacindelamisma.Finalmente,seanalizanlosresultadosde laspruebasunitariasydesistema.

Anlisis
En esta fase se pretende obtener una especificacin detallada de las necesidades y condicionesdelasolucinadesarrollar.Esdevitalimportanciaporquesirvedebaseparatodoel diseoeimplementacinposteriores. Enprimerlugar,sevaaprocederaeducirlosrequisitosquehadecumplirelsistema.Despus, seprocederaespecificardeterminadosaspectosdelsistemaapartirdeesosrequisitos.

Pgina50

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Definicinderequisitos
Laprincipalfuncindeladefinicinderequisitosesladeanalizarlaspeticionesdelclientey obtener una serie de requisitos que debe cumplir el producto desarrollado. Este conjunto de requisitosdeberepresentarlomsfielmenteposiblelasnecesidadesdelcliente.Paraello,debe estarformadoporrequisitos(deusuario)dediferentestipos[10]:

Funcionales:losrequisitosfuncionalesdescriben: o o o Losserviciosqueproporcionaelsistema. Larespuestadelsistemaantedeterminadasentradas. Elcomportamientodelsistemaensituacionesparticulares.

No funcionales: los requisitos no funcionales son restricciones de los servicios o funcionesqueofreceelsistema,porejemplo,cotasdetiempo,procesodedesarrollo, rendimiento, etc. En funcin del tipo de restriccin se establecen subtipos de requisitosnofuncionales: o Operacionales: recogen el entorno fsico y tcnico en el que el sistema va a operar. Seguridad:definenlospermisosdeaccesoalaaplicacin. Normativos:estnrelacionadosconlosfactorespolticos,legalesyculturalesque afectanalsistema.

o o

De acuerdo a esta clasificacin, se pasa a listar los requisitos educidos. Para facilitar su trazabilidadalolargodeldesarrollo,selesasignanidentificadoresdelasiguienteforma:

Funcionales:RF_<nmeroderequisito> Nofuncionales:RNF_<tipo>_<nmeroderequisito>

Dondeelnmeroderequisitoesunnmerodedoscifrasparaidentificarrequisitosdentro delmismotipoyeltiposecorrespondeconelsubtipo(Oparaoperacional,SparaseguridadyN paranormativo)delrequisitoconcreto. Enprimerlugar,selistaelconjuntoderequisitosfuncionalesrecogidos: Idrequisito Descripcin Losrolesdelosquesecompondrelsistemasernelroldeadministradoryel RF_01 deusuario.

Pgina51

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Idrequisito RF_02 RF_03 RF_04 RF_05 RF_06 RF_07

RF_08

RF_09 RF_10 RF_11 RF_12 RF_13 RF_14 RF_15 RF_16 RF_17 RF_18 RF_19 RF_20 RF_21 RF_22

Descripcin Elsistemasergestionadoporunusuarioadministrador,creadodeantemano ysinposibilidaddeserdadodebaja. Unusuarionecesitariniciarsesinenelmismoparahacerusodelatravs desunombredeusuarioycontrasea. Elusuariosepodrdesconectarencualquiermomentoparafinalizarsuusodel sistemayasborrarsuinformacintemporalalmacenadaenelcliente. Elusuariopodrmodificarsusdatospersonalesydesistema. El usuario podr crear un nuevo nodo web para realizar el proceso de maquetacin. El usuario tendr la posibilidad de guardar, cargar y borrar nodos web en procesodemaquetacin. Durante el proceso de maquetacin de un nodo web dado, el usuario podr comenzardenuevoelmismooexportarelproductofinaldeesteproceso,que ser una pgina JSF completamente vlida y que incluye los componentes configurados. Este proceso de conversin de maqueta web a pgina JSF ser realizadoporelsistemademaneraautomtica. Para crear un nodo web el usuario tendr a su disposicin un conjunto de librerasomaestros,cadaunoconsuscomponentes,loscualespodrarrastrar haciaellienzoparacolocarlosenlaposicindeseada. Una vez insertado un componente concreto en un nodo, el usuario podr contraeroexpandirelmismo. Una vez insertado un componente concreto en un nodo, el usuario podr modificarsuspropiedades,esdecir,configurartodossusatributos. Una vez insertado un componente concreto en un nodo, el usuario podr reorganizarlo,esdecir,subirobajarsuposicinconrespectoalosdems. Una vez insertado un componente concreto en un nodo, el usuario podr borrarlosilodesea. Un mismo componente puede ser insertado en el nodo un nmero de veces ilimitado. Lacantidaddecomponentesquesepuedeninsertarenunnodoesilimitada. Eladministradorserelencargadodeborraromodificardatosdelosusuarios. Eladministradorpodrgestionarlosmaestrosdisponiblesenelsistema. El administrador podr agregar ms maestros de componentes al conjunto inicialproporcionadoporelsistema. Eladministradortendrlaposibilidaddeconfigurarcomponentesomaestros. El administrador podr deshabilitar el uso por parte de los usuarios de un componenteomaestroconcretos. El administrador podr modificar sus datos personales y su contrasea de accesoalsistema. El administrador podr cerrar sesin en cualquier momento para finalizar su usodelsistema.
Tabla15.Requisitosfuncionales.

Acontinuacin,ellistadoderequisitosnofuncionales,separadosporsubtipo: Pgina52

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Idrequisito RNF_O_01 RNF_O_02 RNF_O_03 Requisitosnofuncionalesoperacionales Descripcin La aplicacin web desarrollada ser portable, pudiendo ser desplegada en cualquierservidordeaplicacionescompatibleencualquierSistemaOperativoo plataforma (multiplataforma) y ser accesible desde los navegadores web ms usadoshoyenda,MozillaFirefox,peraeInternetExplorer(crossbrowser). Elidiomadelainterfazdelsistemaserelcastellano. De manera interna, los nodos web considerados en los requisitos funcionales sern transformados a pginas JSF, conteniendo estas componentes de las diferenteslibrerasomaestrosdisponibles.
Tabla16.Requisitosnofuncionalesoperacionales.

Idrequisito RNF_S_01 RNF_S_02 Requisitosnofuncionalesdeseguridad Descripcin Es necesario superar satisfactoriamente un proceso de autenticacin para poderaccederalsistema. El sistema garantiza la privacidad de las contraseas de los usuarios almacenando solamente el resultado de aplicar una funcin resumen a las mismas,esdecir,noguardandoenningncasolascontraseasenclaro.
Tabla17.Requisitosnofuncionalesdeseguridad.

Idrequisito RNF_N_01 Requisitosnofuncionalesnormativos Descripcin Losdatostratadosyalmacenadosporelsistemaseencuentranprotegidospor laLOPD,porloquesusderechosdebenserprotegidos.


Tabla18.Requisitosnofuncionalesnormativos.

Pgina53

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Especificacinderequisitos
Unavezrecogidoslosrequisitosqueelsistemadebecumpliresnecesarioespecificarlos.Esto consiste en detallarlos de tal forma que vayan modelando el aspecto final que debe tener el sistema.Parallevaresteprocesoacabo,sevaasepararendospartes:elmodelodedominioyel modelodesistema. Modelodecontexto El modelodecontexto tratadeplasmarla representacindelosconceptosyentidadesque participan en el proyecto, incluyendo su estructura y organizacin. Para definir este modelo de contextosevanautilizarunconjuntodediagramasUML.

Funcional:estapartedelmodelodecontextoespecificalafuncionalidadprincipalque realiza el sistema. Para representarlo, se utiliza un diagrama de actividad que representa el comportamiento de inclusin de un componente JSF en una pgina determinada:

Figura16.Diagramadeactividadparalainclusindeuncomponenteenunapgina.

EneldiagramamostradoenlaFigura16sepuedeobservarcmoelprocesodeincluir un nuevo componente en una pgina JSF se descompone en la agregacin de diferenteselementos: Pgina54

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID o o o o o Libreraalaaplicacinweb. Dependencias. Taglibsolibrerasdeetiquetasalapgina. Backingbeans. Configuracinnecesaria.

Estructural:secentraenlaestructuradelsistema,delosobjetosqueloconforman. Siendounsistemabasadoenobjetos,seutilizaundiagramadeclasesparamostrar las clases necesarias y las relaciones entre ellas. En la Figura 17 se expone la estructuradeestosobjetos,siendolosprincipales: o o o Usuario:usuarioquecrea/accedealsistema. Librera:contieneunaseriedecomponentes. Componente: representa una componente JSF que puede ser utilizado en cualquierpgina. Atributo:cadacomponenteseconfiguraatravsdeunconjuntodeatributos.

Figura17.Diagramadeclases.

Pgina55

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Comportamiento: en esta parte se muestran los aspectos dinmicos del sistema, especificando el flujo de llamadas entre los objetos del sistema y los mensajes que intercambian. Para realizar este anlisis se utilizan diagramas de secuencia, que permiten trazar estas llamadas y mensajes. La Figura 18 muestra el diagrama de secuenciaquerepresentaesteflujo,siendolosobjetosymensajeslossiguientes: o o Usuario:enprimerlugar,elusuariodesarrolladorcreaunaaplicacinweb. AplicacinWeb: despus, la aplicacin aade una librera al conjunto que ya posee. Librera:lainclusindelalibreraocasiona,generalmente,lamodificacindela unoomsficherosdeconfiguracin. AplicacinWeb:acontinuacin,laaplicacincreaunapginaJSF. PginaJSF: en la pgina creada se procede a incluir la etiqueta del componente deseado. Componente:lainclusindelcomponenteocasionala creacin,siesnecesario, deunoomsbeansmanejados.

o o

Pgina56

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura18.Diagramadesecuenciaparalainclusindeuncomponenteenunapgina.

Pgina57

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Modelodesistema El objetivo del modelo de sistema es representar las funcionalidades que necesita tener el futuro sistema, incluyendo tambin los objetos que formarn parte del mismo. Siendo este modelo realizado durante la fase de anlisis, carece de gran nivel de detalle, por lo que ser ampliadoenlafasedediseo.Laspartesdelmodelodesistemasondos:funcionalyestructural, diferenciadasporlaperspectivadelsistemaenelquesecentracadauna.

Funcional:estapartesecentraenlafuncionalidadquedebeproporcionarelsistema a desarrollar. Para ello, se utiliza diagramas de casos de uso, en los que se puede observarlarelacinentreactoresyaccionesarealizar,ascomolarelacinentrelos actoresmismos.EstosepuedeobservarenlasfigurasFigura19,Figura20,Figura21y Figura22.Asuvez,estaseraladescripcindecadafigura: o Figura 19. Casos de uso: actores. Representa la relacin entre los diferentes actores del sistema. El actor base sera el Usuario no autenticado, el cual extiendeelUsuario.Delamismamanera,elactorAdministradorextiendea esteltimo. Figura20.Casosdeuso:administracin.Enestafigurasemuestranlastareasde administracin que puede realizar el usuario administradoren el sistema. Estas sedescomponenendosgrupos: Gestin de usuarios: administra los usuarios que componen el sistema. Permitelistarusuarios,agregarnuevos,ymodificaroborrarexistentes. Gestin de libreras: administra las libreras contenidas en el sistema. Posibilita su listado, agregacin de nuevas, listado de componentes y habilitado/deshabilitadodecomponentes/libreras.

Figura21.Casosdeuso:accesoalsistema.Muestralasaccionesdisponiblespara el usuario no autenticado (registrarse e iniciar sesin) y el usuario autenticado (modificardatosycerrarsesin). Figura 22. Casos de uso: usuarios. Esta figura muestra el uso del sistema que puedehacerunusuarioautenticado.Esteusosedivideen: Gestindepginas:listado,creacin,edicinyborradodepginas. Creacin de pginas: listad de componentes agregados, agregar, mover, borrar, configurar, contraer y expandir componentes, borrar todos y exportarpgina.

Pgina58

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura19.Casosdeuso:actores.

Figura20.Casosdeuso:administracin.

Figura21.Casosdeuso:acceso alsistema.

Figura22.Casosdeuso:usuarios.

Pgina59

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Estructural:paradefinirlaestructuradelosobjetosdeldominioseutilizaeldiagrama Entidad/Relacin, el cual recoge los conceptos y reglas de relacin existentes en el sistema:

Figura23.DiagramadeEntidad/Relacin.

En la Figura 23 se puede observar el diagrama E/R citado. En l se ve que las entidadesprincipales(aquellasconatributos)son: o o o o Usuario:representaalusuarioquecrealaaplicacinweb. Librera:hacereferenciaaunalibreradecomponentes. Componente:representauncomponenteJSFpertenecienteaunalibrera. Atributo: se refiere a los atributos que permiten modificar la apariencia de un componentedado.

Pgina60

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Diseo
Lafasequesiguealanlisisdelsistemaadesarrollareslafasedediseo.Enella,sepretende construir un sistema que se ajuste a las necesidades requeridas (requisitos funcionales) y a las limitacionesimpuestas(requisitosnofuncionales).Enprimerlugar,sevaaofrecerundiseodel sistema visto desde arriba, es decir, centrado en la estructura general y exterior que tiene el producto a desarrollar. Despus, se proporciona un diseo ms detallado, en el que se puede observar como esa estructura general se ampla y concreta para definir con mayor precisin el diseo.Esenestediseodetalladofinaldondeloscasosdeusoseverncumplidos,ancuando noseespecifiqueclaramentequemduloosubsistemaseencargadecadauno.

Diseodesistema
En este apartado se expone la arquitectura del sistema y las tecnologas utilizadas para su desarrollo. La arquitectura sirve de estructura general del sistema, mientras que las tecnologas ayudanasufuncionamiento. Arquitectura LaarquitecturadelsistemaestbasadaenelyaintroducidopatrnModeloVistaControlador (MVC, apartado Tendencia actual). La principal caracterstica de este patrn es la clara separacinderesponsabilidades:

Modelo: se encarga de gestionar los datos recuperados de la capa de persistencia. Proporcionaaccesoyoperacionessobreestosdatos. Controlador: su funcin es gestionar las peticiones realizadas por la Vista, enlazndolasconelModelo. Vista: proporciona la presentacin final de los datos y resultados de operaciones devueltosporelModelo.

En este proyecto, la capa de persistencia es de especial relevancia, no por su tamao o extensin,sinoporsucomplejidad.Laestructuradelosdatosaalmacenarylainterpretacinde losmismosrequierenunaclaraseparacinentrelapartedelModelodelpatrnMVCyestacapa depersistencia,lacualsereflejaenlaFigura24.

Pgina61

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Controlador

Vista

Modelo
Figura24.Arquitecturadelaaplicacin.

Persistencia

Sevaaconcretarahoracadaunadelaspartesquecomponenestaarquitectura,aplicadasal presenteproyecto. Adems,secitarntecnologasqueposibilitansu funcionamiento,quesern explicadas en el prxima apartado (Tecnologas), y componentes que sern descritos en profundidadenlasiguienteseccin(Diseodetallado).LaFigura25ilustralacitadaarquitectura concretada:

Vista PginasJSF BeansJSF manejados BeansJSFde respaldo

Controlador Navegacin JSF

Modelo

Persistencia

POJOs BeansJSF manejados


Figura25.Arquitecturadelaaplicacinconcretada.

Objetos XML Castor

Ahorasevaadescribircadacomponentedelaarquitecturamostrada:

Vista: o Pginas JSF: representan la presentacin final de la informacin. Es lo ve el usuariofinaldelaaplicacin,aquelloconloqueinteracta. BeansJSFmanejados:sonbeansnormales(POJOs,PlainOldJavaObjects)quese utilizan para guardar temporalmente informacin relacionada con la presentacin de los datos y la naturaleza de los mismos, como pueden ser el usuario actual de la aplicacin, el valor de determinados campos de un formulario,etc.

Pgina62

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID o BeansJSFderespaldo:tambinsonPOJOsperoconunafuncinespecialidad:los datos que almacenan no son regulares, sino que contienen componentes JSF instanciados.

Controlador: o Navegacin JSF: para realizar la funcin principal de la parte del Controlador, toda implementacin del estndar de JSF utiliza las reglas de navegacin definidasenlosficherosdenavegacinpararedirigirelcontroldeunapginaa otra,enfuncindelapginainicialydelvalorderedireccinrecibido. BeansJSFmanejados:paradeterminarelvalorderedireccinquesetransmitea las reglas de navegacin, se suelen utilizar beans manejados (POJOs) que, ademsdealmacenarinformacintemporal,contienenmtodosquedevuelven valoresderedireccinenfuncindesuscondicionesyestadosinternos.

Modelo: o POJOS: la parte del Modelo se encuentra completamente formada por simples clases Java, que segn la peticin recibida del Controlador y los datos recuperados de la capa de Persistencia realizan una serie de operaciones y generanunosresultados.

Persistencia: o ObjetosXMLCastor:paraelalmacenamientopersistentededatossehadecidido utilizar ficheros XML. Estos sern gestionados, tratados y asociados a objetos, graciasalalibreraCastor,lacualserexplicadaenelapartadoTecnologas.

Tecnologas Enesteapartadosevanadescribirlasdiferentestecnologasutilizadasenesteproyectopara posibilitar la arquitectura y funcionalidades requeridas. Se va a explicar cada una de estas tecnologas tanto de manera general (qu hace y cmo lo hace) como de manera concreta aplicadaalaaplicacin(qutareaconcretadesempeaydnde). JavaServerFaces LatecnologaJSFfuedescritaenlassecciones2.2y2.3.Bsicamente,estableceunestndar eneldesarrollodelacapadepresentacinenlasaplicacioneswebJ2EE,queconsisteenelusode componentes para formar esta presentacin. Estos componentes son completamente independientes y pueden proceder de diferentes libreras de terceros. Adems, proporciona un motor de navegacin de reglas as como la gestin de beans manejados y de respaldo. A

Pgina63

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID continuacin se va a introducir la implementacin del estndar JSF que se utiliza, as como las librerasquelocomplementan.

Sun JSF RI: la implementacin del estndar que se utiliza en este proyecto es la desarrollada por Sun Microsystems. Contiene un nmero limitado y bsico de componentes,suficientesparaelaborarpginasrelativamentesencillas. JBossRichFaces:paraampliaresteconjuntodecomponentesydotardedinamismoal sistemadesarrolladoseutilizalalibreraRichFaces.Estalibreraesfrutodelaunin del trabajo de Red Hat y Exadel. Es completamente independiente de la implementacindeJSFqueseutiliceasquesepuedereutilizardeunproyectoaotro aunque se cambie la implementacin del estndar. Entre sus caractersticas cabe destacar: o o o o SoporteAJAXaniveldepgina,enlugardeaniveldecomponente. Posibilidaddepersonalizarelaspectodeloscomponentesconpieles. Validacindedatosdeentrada. Buensoporteygestindeeventos.

Adems,cuentaconunaampliagamadecomponentes,detodoslostipos: o o SoporteAJAX:formularioAJAX,AJAXlistener,reginAJAX. Iteracin de datos: rejilla de datos, tabla de datos, lista de datos, ordenado, filtradoynavegacinentablas. Mens:contextuales,desplegables,barrademen. rboles:simples,recursivos. Salidaenriquecida:panel,panelmodal,dilogo,separadores,pestaas,barrasde herramientas. Entradaenriquecida:calendario,subidadeficheros,cajadesugerencias. Varios:efectos,GoogleMaps,VirtualEarth.

o o o

o o

Esta tecnologa representa el pilar central de toda la aplicacin: convierte el proyecto desarrolladoenunametaaplicacin,esdecir,laherramientautilizaJSFparagenerarJSF.Suuso estgeneralizadoentodalaaplicacin,sirviendodebaseparalaspginasdelacapadeVistao presentacin,losbeansderespaldo,losbeansmanejados,lasreglasdenavegacin,etc.

Pgina64

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Debido a la potencia de la implementacin de JavaServer Faces unida a la librera de componentesRichFaces,noesnecesarioincluirningnmarcodetrabajomsparacomponerlas partesdeVistayControladordelaaplicacin. AJAX Como ya se explic en el apartado Tendencia actual, AJAX significa Asynchronous Javascript andXML,JavascriptyXMLasncronoencastellano,yconsisteenlautilizacindetecnologasque existanpreviamenteparadotardedinamismoalaspginasweb.Lalibreradescritaenelpunto anterior,JBossRichFaces,proporcionasoporteAJAXparatodossuscomponentes,siendoposible enviar y recuperar datos del servidor para refrescar slo aquellas secciones de la pgina que realmenteseveanafectadas. SehaceungranusodeestatecnologaenelprocesodemaquetacindeunapginaJSFconla aplicacin desarrollada. Toda la tarea de agregar componentes al lienzo, modificar sus propiedades, aspecto y posicionamiento se realiza de manera completamente asncrona, siendo sus cambios reflejados tanto en el cliente como en el servidor sin que el usuario final perciba retrasoalgunoensuexperienciadeuso. Facelets Facelets es un marco de de trabajo que se basa en el uso de plantillas para organizar componentesenpginasJSP(JavaServerPages).Permiteserutilizadosobreunagrancantidadde marcosdetrabajoquesesuperponensobreestaspginasJSP.Enconcreto,enesteproyectose utilizasobreloscomponentesJSF.EstassonlaspropiedadesmsinteresantesdeFacelets:

Trabajobasadoenplantillas. Fcilcomposicindecomponentes. Creacindeetiquetaslgicasamedida. Funcionesparaexpresiones. Desarrolloamigableparaeldiseadorgrfico. Creacindelibrerasdecomponentes.

Pgina65

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID CastorXML La librera Castor posibilita el acceso y gestin de ficheros XML de manera que sea lo ms simple posible: orientada a objetos. A partir del XSD (XML Schema Definition, Definicin de EsquemaXML)deunficheroXML,CastorXMLescapazdegenerartodaunaestructuradeclases pararepresentarlainformacinysuestructuracontenidaenesefichero.Deestaforma,unavez realizadoesteproceso,esteconjuntodeclasespuedetratarconcualquierficheroXMLquesigael esquema especificado inicialmente, obteniendo instancias de clases para acceder y recorrer los datosalmacenados. En este proyecto, Castor XML se utiliza para gestionar la capa de persistencia de la arquitecturadiseada.PermiteasociarentidadesdentrodeunficheroXMLaobjetosJava,conlo quejuegaunpapelesencialenelalmacenamientopersistentedelosdescriptoresdelibrerasde componentesincluidas,delosdatosdelosusuariosydelaspginasmaquetadas.

Pgina66

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Diseodetallado
Enesteapartadosevaadetallarcadaunodeloscomponentesdelaarquitecturaintroducida previamente en el apartado anterior (Figura 25. Arquitectura de la aplicacin concretada.). En primer lugar, se va a comenzar por la capa de persistencia, seguida de las partes de Modelo, ControladoryVista,eneseorden. Persistencia La capa de persistencia constituye los cimientos de la aplicacin: es la responsable del almacenamiento de toda la informacin persistente del sistema. Esta informacin se guarda en ficherosXML,loscualesseconstruyendeacuerdoalosesquemasXSDquesevanacomentarms adelante,yelformatodeestosdependedeltipodelamisma.Laeleccindeestetipodeformato viene dada, fundamentalmente, por la independencia que otorga respecto a soluciones que involucran bases de datos, teniendo que asegurar una configuracin externa a la aplicacin. La informacin que se va a almacenar viene dada por los requisitos iniciales y puede verse en las figuras Figura 23 y Figura 17, de forma que se obtienen los esquemas mostrados ms adelante. Estainformacinaalmacenares:

Datosdeusuario:sealmacenanlossiguientesdatos: o o Identificador:indicaelidentificadorglobaldelusuario. Contrasea:representalacontraseadeaccesoalsistema.Slosealmacenael resumenMD5delacontraseaoriginal,pormotivosdeseguridad. Email:direccindecorreoelectrnicodecontacto.

Datosdelibreradecomponentes: o o o Nombre:nombredelalibrera. Habilitada:indicasilalibreraseencuentrahabilitadaodeshabilitada. Componentes:paracadacomponentesealmacenalosiguiente: Identificador:identificadorglobaldelcomponente. Nombre:nombredelcomponente. Clase:claseJavaqueseutilizaparainstanciarelcomponente. Descripcin:descripcinquelalibreraguardadecadacomponente. Habilitado:indicasielcomponenteseencuentrahabilitadoodeshabilitado.

Pgina67

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Campos:uncomponentetieneunaseriedecampos.Paracadaunodeellos sealmacenalosiguiente: Nombre:nombredelcampo. Descripcin:descripcinqueguardaelcomponentedeestecampo. Obligatorio: indica si es obligatorio proporcionar un valor para este campodurantelainstanciacindelcomponente.

Datosdepginamaquetada: o o o o o o o Identificador:identificadorglobaldelapgina. Nombre:nombredelapgina. Descripcin:contieneladescripcindeestapgina. Propietario:identificadordelusuariocreador. Fecha:fechadecreacin. Hora:horadecreacin. Componentes: se almacena el conjunto de componentes que la forman, de maneraqueelordenenelficheroindicaelordenenlapgina: Identificador:identificadordelcomponenteusado. Campos:valoresdeloscamposusados: Nombre:nombredelcampo. Valor:valordelcampo.

Portanto,losesquemasXSDencargadosderepresentarestasestructurasdeinformacinson lossiguientes:

FicheroesquemaXSDdeusuarios:

<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dei.inf.uc3m.es" xmlns:tns="http://dei.inf.uc3m.es" elementFormDefault="qualified"> <complexType name="usuarioType"> <sequence> <element name="identificador" type="string"/>

Pgina68

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID
<element name="password" type="string"/> <element name="email" type="string"/> </sequence> </complexType> <element name="usuarios"> <complexType> <sequence> <element name="usuario" type="tns:usuarioType" maxOccurs="unbounded"/> </sequence> </complexType> </element> </schema>

FicheroesquemaXSDdelibreras:

<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dei.inf.uc3m.es" xmlns:tns="http://dei.inf.uc3m.es" elementFormDefault="qualified"> <complexType name="campoType"> <sequence> <element name="nombre" type="string"/> <element name="obligatorio" type="boolean"/> <element name="descripcion" type="string"/> </sequence> </complexType> <complexType name="camposType"> <sequence> <element name="campo" type="tns:campoType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="componenteType"> <sequence> <element name="identificador" type="string"/> <element name="nombre" type="string"/> <element name="clase" type="string"/> <element name="habilitado" type="boolean"/> <element name="descripcion" type="string"/> <element name="campos" type="tns:camposType"/> </sequence> </complexType> <complexType name="componentesType"> <sequence> <element name="componente" type="tns:componenteType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="libreriaType"> <sequence> <element name="nombre" type="string"/> <element name="habilitada" type="boolean"/>

Pgina69

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID
<element name="componentes" type="tns:componentesType"/> </sequence> </complexType> <element name="librerias"> <complexType> <sequence> <element name="libreria" type="tns:libreriaType" maxOccurs="unbounded"/> </sequence> </complexType> </element> </schema>

FicheroesquemaXSDdepginas:

<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dei.inf.uc3m.es" xmlns:tns="http://dei.inf.uc3m.es" elementFormDefault="qualified"> <complexType name="campoType"> <sequence> <element name="nombre" type="string"/> <element name="valor" type="string"/> </sequence> </complexType> <complexType name="camposType"> <sequence> <element name="campo" type="tns:campoType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="componenteType"> <sequence> <element name="identificador" type="string"/> <element name="campos" type="tns:camposType"/> </sequence> </complexType> <complexType name="componentesType"> <sequence> <element name="componente" type="tns:componenteType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="paginaType"> <sequence> <element name="identificador" type="string"/> <element name="nombre" type="string"/> <element name="descripcion" type="string"/> <element name="propietario" type="string"/> <element name="fecha" type="string"/> <element name="hora" type="string"/> <element name="componentes" type="tns:componentesType"/> </sequence>

Pgina70

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID
</complexType> <element name="paginas"> <complexType> <sequence> <element name="pagina" type="tns:paginaType" maxOccurs="unbounded"/> </sequence> </complexType> </element> </schema>

De esta forma, un conjunto de ficheros XML de ejemplo de la aplicacin podran ser los siguientes:

Ficherodeusuarios:

<?xml version="1.0" encoding="UTF-8"?> <usuarios> <usuario> <identificador>Usuario1</identificador> <password>d17b01bcbb7080b7c49ed41253926115<password> <email>usuario1@dominio.com</email> </usuario> <usuario> <identificador>Usuario2</identificador> <password>26f3aaafaaabd6456eb1d368756d2497<password> <email>usuario2@dominio.com</email> </usuario> </usuarios>

Ficherodelibreras:

<?xml version="1.0" encoding="UTF-8"?> <librerias> <libreria> <nombre>Librera 1</nombre> <habilitada>true</habilitada> <componentes> <componente> <identificador>1</identificador> <nombre>Componente 1</nombre> <clase>paquete.subpaquete.Clase1</clase> <habilitado>true</habilitado> <descripcion>Descripcin</descripcion> <campos> <campo> <nombre>Campo1</nombre> <obligatorio>true</obligatorio> <descripcion>Descripcin</descripcion> </campo> <campo> <nombre>Campo2</nombre> <obligatorio>true</obligatorio> <descripcion>Descripcin</descripcion> </campo>

Pgina71

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID
</campos> </componente> </componentes> </libreria> <librerias>

Ficherodepginas:

<?xml version="1.0" encoding="UTF-8"?> <paginas> <pagina> <identificador>1</identificador> <nombre>Pgina 1</nombre> <descripcion>Descripcin</descripcion> <propietario>Usuario1</propietario> <fecha>23/02/1985</fecha> <hora>14:23</hora> <componentes> <componente> <identificador>1</identificador> <campos> <campo> <nombre>Campo1</nombre> <valor>Valor</valor> </campo> </campos> </componente> <componente> <identificador>1</identificador> <campos> <campo> <nombre>Campo2</nombre> <valor>Valor</valor> </campo> </campos> </componente> </componentes> </pagina> </paginas>

Acontinuacinsevaamostrareldiagramadeclasesencargadasdelprocesodeserializacino marshalling (pasar de objetos Java, POJOs, a ficheros XML) y deserializacin o unmarshalling (pasardeficherosXMLaPOJOs),ascomodelaencapsulacindelaccesoaestosdatos,todoello separadodeacuerdoaltipodeficheroquetratan:

Pgina72

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura26.Diagramadeclasesdelacapadepersistencia:usuarios.

Pgina73

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura27.Diagramadeclasesdelacapadepersistencia:libreras.

Pgina74

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura28.Diagramadeclasesdelacapadepersistencia:pginas.

Pgina75

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura29.Diagramadeclasesparalacapadepersistencia.

Enesteltimodiagramasepuedeobservarlomsrelevantedetodalacapadepersistencia:la clase BBDD, que implementa el patrn Singleton (en el que slo va a existir una instancia de la clase para toda la aplicacin), encapsula todo el acceso a los datos almacenadosen la base de datos, siendo en este caso ficheros XML. Siendo comn para toda la aplicacin, slo se recuperarnlosdatosdelalmacenamientopersistentelaprimeravezqueseaaccedido,estando desde entonces disponibles para las siguientes llamadas. As mismo, se consigue que todos los objetos que intenten recuperar los usuarios, libreras o pginas obtengan siempre la misma referencia,detalformaqueseahorreenreservadememoria.

Pgina76

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Modelo La parte del Modelo es la que realmente lleva a cabo las funcionalidades solicitadas inicialmente. Se comunica con la capa de persistencia para recuperar los datos necesarios y, usando estos, responder a las peticiones realizadas por la parte de la Vista, redirigidas adecuadamente por el Controlador. Por tanto, estas seran las funcionalidades principales que debecumplirelModelo:

GenerarelcomponenteJSFcorrespondientealcomponenterepresentadoenlacapa depersistencia. Generarelpaneldeconfiguracindeloscamposoatributosdeuncomponentedado. Generar el gestor de componente para un componente dado, el cual est formado por el panel de configuracin correspondiente y la representacin final del componenteJSF. Generarlapaletadetodaslaslibrerasysuscomponentesdisponiblesenelsistema. ElaborarellienzoconloscomponentesseleccionadosquerepresentaunapginaJSF. Comprobarlosdatosdeaccesoalsistemaparaunusuariodeterminado. Gestionarusuarios,componentes,librerasypginas. Permitirlacargadeunanuevalibreradeformadinmica.

Parapoderrealizartodasestasfunciones,seelaboraelsiguienteconjuntodeclases:

Figura30.DiagramadeclasesparalapartedelModelo.

Pgina77

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID AunquenoseencuentranpropiamenteenelpaquetedelModelo,sonutilizadastambinlas siguientesclases:

Figura31.Diagramadeclasesdeutilidades.

LocalizadorRecursos: se encarga de encapsular la recuperacin de recursos internos delaaplicacinweb. AsignadorIds:generaidentificadoresdiferentesparacadallamadarealizada.

VistayControlador Debidoalarelacintan cercanaquetienen estasdospartes,el diseo detalladodeuna de ellas tiene mucho que ver con la otra, por lo que se van a explicar de manera conjunta. La estructuradeesteapartadoeslasiguiente: 1. DescripcindepginasdelaVista. 2. DescripcindebeansmanejadosutilizadosporVistayControlador. 3. ReglasdenavegacinentreelementosdelaVistausadasporelControlador. En primera lugar, se van a introducir las pginas JSF que conforman la Vista. Tienen la extensinxhtmlporquesongestionadasporelmarcodetrabajoFacelets: Nombredelapgina Descripcin Sirvedepuntodeentradaalaaplicacin.Muestraunformulario inicio.xhtml dondeintroduciridentificadordeusuarioycontraseaypermite laposibilidaddeiniciarsesinoregistrarseenelsistema. registro.xhtml Posibilitaelregistrodeunusuariocualquieraenelsistema. Representa el men de opciones disponibles para el usuario administradordelaaplicacin.Estasopcionesson:modificarsus indexAdmin.xhtml datos de usuario, administrar las libreras disponibles en el sistema,administrarlosusuariosregistradosycerrarsesin. modificarDatos.xhtml Sirveparamodificarlosdatosdelusuarioactualdelsistema. modificarUsuario.xhtml Permitelamodificacindelosdatosdeunusuariocualquiera. Pgina78

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Nombredelapgina adminLibrerias.xhtml adminUsuarios.xhtml indexUsuario.xhtml adminPaginas.xhtml Descripcin Permite realizar las siguientes operaciones con las libreras: cargarunanuevalibreara,listarlasexistentesydeshabilitary/o borrarcomponentesy/olibrerasenteras. Gestiona el conjunto de usuarios registros, pudiendo listar, agregar,borraromodificarlosmismos. Muestra las opciones disponibles para un usuario normal: administrarpginas,modificardatosycerrarsesin. Permite realizar las siguientes operaciones con las pginas: listarlas,crearunanueva,editarunaexistenteoborrarunadada. ProporcionalafuncionalidaddemaquetacindeunapginaJSF. Adems, proporciona las opciones de guardar el estado actual, eliminartodosloscomponentesagregadosalamisma,exportar elresultadooterminardeeditarla.
Tabla19.PginasdelaVista.

editarPagina.xhtml

A continuacin, se van a describir los beans manejados utilizados por la aplicacin. Aunque inicialmentesedise la arquitecturade forma quecada parte,VistayControlador, tuviesesus propiosbeansmanejados,sellegalaconclusindequeeramssencilloyeficienteconcentrarla funcionalidad de ambos tipos de beans en uno slo de ellos. Por tanto, los mismos beans que almacenanlosdatostemporalesdelaVistaduranteelaccesodeunusuariodejandisponiblesal mismo tiempo las funcionalidades ofrecidas por el Modelo. Adems, los beans de respaldo no existencomotales,esdecir,nosedefineninicialmenteconlaaplicacin,sinoquesondefinidosen tiempodeejecucin.Todoslosbeansseencuentranenelmismosubpaquetebeans.Conesto explicado,esteseraelconjuntodebeansmanejadosusados: Nombredelbean Descripcin Almacenalosdatosrelativosalregistrodeusuarios(identificador, DatosRegistro contrasea,email)ypermitellevarloacabo. Guarda los datos relativos al inicio de sesin (identificador, DatosInicio contrasea)yrealizalascomprobacionesoportunas. Almacena datos temporales sobre un usuario determinado DatosUsuario (identificador),dejandodisponiblestambinlasopcionesrelativas al(modificar,borrar). Contiene la informacin relativa a una librera dada (nombre, DatosLibreria componentes), as como las funciones correspondientes (modificar,borrar). Sirve de contenedor para los datos de una pgina (nombre, DatosPagina componentesinsertados),dejandodisponibleslasfuncionalidades relacionadas (guardar,borrar,exportar,etc.). ComponentesInsertados Contieneellistadodecomponentesinsertadosenlapginaactual. Guarda los datos de un componente insertado en una pgina ComponenteInsertado (identificador,valoresdecampos).
Tabla20.BeansmanejadosutilizadosporVistayControlador.

Pgina79

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Por ltimo, se muestra un diagrama de estados que ilustra las reglas de navegacin entre pginas, usando etiquetas o identificadores de accin, que utiliza el Controlador. Los estados representanpginasJSF(oXHTML)ylasentradasrepresentanidentificadoresdeaccin.

Figura32.ReglasdenavegacindelControlador.

Pgina80

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Implementacin
Durante la elaboracin del sistema planteado y diseado se han seguido unos detalles de implementacin determinados. En esta seccin se van a discutir algunos de ellos, como pueden serlasherramientasusadasduranteeldesarrolloylaorganizacininternadelaaplicacin.

Herramientas
Parapoderllevaracabolaimplementacindelsistemadesarrolladosehanecesitadoutilizar determinasherramientas.Estasherramientasoutilidadesvandesdeentornosdedesarrollohasta aplicacionesexternas,navegadoresoeditores:

Eclipse3.4.1:sehautilizadoEclipsecomoIDE(IntegratedDevelopmentEnvironment, EntornodeDesarrolloIntegrado)porlasventajasqueofreceencomparacinconsus competidores (Netbeans, JCreator, IntelliJ IDEA, Stylus Studio, etc). Entre estas, se puedencitarlassiguientes:menorcantidadderecursosnecesarios,disponibilidadde pluginsoconectoresparatodaslaslibrerasutilizadasenelproyectoysoporteparala mayorpartedeservidoresdeaplicacionesJ2EEexistentes.Evidentemente,elcdigo desarrollado puede ser llevado a cualquiera de los otros IDEs, por lo que tampoco limitalaeleccindelIDEengranmedida. JavaSE1.6/6.0:laversindeJavautilizadatantoparacompilarcomoparaejecutarla aplicacin (levantar el servidor de aplicaciones) es la 6.0. An pudiendo conservar compatibilidad utilizando las versiones 5.0 o 1.4.2, se ha decidido optar por esta debido a la potencia del lenguaje desde la 5.0 y la necesidad del servidor de aplicaciones, como se ver ms adelante, de utilizar la versin 6.0. Adems, esta versincontienetodaslasmejoradasincorporadashastalafecha,porloquepermite quelaejecucindelsistemasebeneficiedeello. ApacheTomcat6.0.18:comoservidordeaplicaciones/contenedorJ2EEsehaoptado porApacheTomcat,ensuversin6.0.18.SeeligiTomcatenprimerainstanciapor serunodelosservidoresdeaplicacionesopensourcemsutilizadohoyenda,fcil deconfiguraryconmayordocumentacinonline.Laversinutilizadasigueelmismo razonamiento que la versin de Java: utilizar la ltima versin ofrecida siempre significa beneficiarse de todas las mejoras que se hayan incorporado. La nica limitacindeestaversin,comoyasecomentantes,eslanecesariautilizacindel JDK6.0. Vim:comoeditordetextoparalosficherosdeesquemasXSDoficherosXMLseha usadolaherramientaVim,ensuversinparaWindows.Laeleccindeesteeditorde texto no puede ser argumentada en trminos de funcionalidades o capacidades, ya queescompletamentepersonal. Pgina81

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Navegadores: para las pruebas de funcionamiento durante el proceso de implementacin del sistema se utilizaron los navegadores Internet Explorer 6.0 y MozillaFirefox3.0,dadoquerepresentanalagranmayoradeusuarios.

Organizacin
La organizacin interna del cdigo del sistema depende en gran medida de la parte de la arquitectura diseada en la que se enmarque cada elemento, as como de la funcionalidad que desempea. La aplicacin se encuentra estructurada en un nico proyecto web de Eclipse, cuya jerarquadedirectoriospuedeobservarseenlaFigura33.Elnombreenclaveparaelsistemaha sido JSFComposer. Este nombre representa fielmente la principal funcionalidad requerida: componerpginasJSF.

Figura33.OrganizacinproyectoEclipse.

Apartirdeesteproyectoweb de Eclipse, la estructura de la aplicacinwebresultanteesla siguiente:

Pgina82

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura34.Organizacinaplicacinweb.

Ladescripcindecadadirectoriodela aplicacinweb,ascomodelosdiferentespaquetes, puedeverseenlastablasTabla21yTabla22: Directorio Descripcin Contienetodaslashojasdeestiloutilizadaspor css laspginasdelaaplicacin. Almacena todas aquellas imgenes que utilice img elsistema. Guarda el manifiesto descriptivo de la METAINF aplicacinweb. Contiene todas las pginas JSF/XHTML pages explicadasenlaTabla19. Almacena todos aquellos recursos accesibles sloporelservidordeaplicacionesyelpropio cdigodelaaplicacin. WEBINF Entre otros ficheros importantes, guarda aquellos XMLs que contienen las libreras, usuarios y pginas, as como la configuracin deJSFrespectoalasreglasdenavegacin. Guarda todas las libreras necesarias para el WEBINF\lib correcto despliegue y funcionamiento del sistema. Contiene el resultado de compilar todo el WEBINF\classes cdigofuentedelaaplicacin.
Tabla21.Descripcindedirectoriosdelaaplicacinweb.

Pgina83

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Paquete es.uc3m.inf.dei.jsfcomposer.beans es.uc3m.inf.dei.jsfcomposer.modelo es.uc3m.inf.dei.jsfcomposer.persistencia es.uc3m.inf.dei.jsfcomposer.utilidades Descripcin Este paquete contiene todos los beans manejadosdescritosenlaTabla20. En este paquete se almacenan las clases descritasenlaFigura30. Aqu se guardar todas las clases mostradas en las figuras Figura 26, Figura 27, Figura 28 y Figura29. Este paquete contiene las clases expuestas en laFigura31.

Tabla22.Descripcindepaquetesdecdigofuente.

4.2

Elproductodeldesarrollo

El sistema desarrollado sirve de herramienta para la composicin de pginas JSF. En esta seccin se va a describir brevemente este producto desarrollado, incluyendo capturas de prototiposdealtonivel.Adems,sevanaproporcionarlosdetallesnecesariosparaimplantarel sistemaimplementadoparadejarlofuncionandoydisponible.

Descripcinbreve
Eltipodeherramientadesarrolladaesunaaplicacinweb.Portanto,esnecesarioutilizarun navegador web para poder acceder a ella. El punto inicial de acceso al sistema es la pgina inicio.xhtml, tal como se indica en la Figura 32. A travs de ella se puede navegar por todo el sistema y realizar las funcionalidades requeridas inicialmente. Seguidamente, se muestra la estructurademensdisponiblesenlaaplicacin,enfuncindelroldecadausuario:

Inicio o o Registrodeusuario Iniciarsesin Mendedeadministrador Modificardatos Cerrarsesin Administrarusuarios o Crearusuario Pgina84

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID o o o Listarusuarios Editarusuario Borrarusuario

Administracinlibreras o o o o o o o Aadirlibrera Listarlibreras Listarcomponentes Deshabilitar/habilitarlibrera Deshabilitar/habilitarcomponente Eliminarlibrera Eliminarcomponente

Mendeusuario Modificardatos Cerrarsesin Administrarpginas o o o o Listarpginas Editarpgina Borrarpgina Crearpgina Agregarcomponente Eliminarcomponente Contraer/expandircomponente Reorganizarcomponente Guardarpgina

Pgina85

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID EsnecesarioaclararqueelproductofinaldelaimplementacindelsistemaesunficheroWAR quecontienelaestructuradescritaenlaFigura34yquepuedeserautomticamentedesplegado en un contenedor de aplicaciones J2EE compatible. Debido a que el nombre en clave de este proyectoparalosdetallesdeimplementacinhasidoJSFComposer,elficheroWARresultantede todoelprocesodeelaboracinsellamarJSFComposer.war. A continuacin, se va a proceder a explicar las diferentes pantallas que se le muestran al usuario,proporcionandodeestaformaunaguadereferenciasobrelosdistintosescenariosque sepuedeencontrar. Borrarcontenidopgina Exportarpgina

Accesoalaaplicacin
Lapginainicialalaqueaccedeelusuarionoautenticadoesinicio.xhtml(Figura35).Enella puedeobservarseladescripcingeneraldelsistemaacompaadadeunreaespecficaparainiciar sesin.Adems,puedehacerclicenelbotndeRegistroparacomenzarelprocesoderegistro enelsistema.

Figura35.Capturadeinicio.xhtml.

Registrodenuevousuario
El proceso de altade un nuevousuarioserealizaenlapgina registro.xhtml(Figura36). En esta pgina se le pregunta al usuario qu nombre, contrasea y direccin de email desea introducir como informacin personal. Se le pide que contrasea especifique la contrasea dos veces para asegurar que no se producen errores de tecleo al introducirla. Una vez termine de rellenar este formulario, pulsando el botn de Aceptar se proceder a finalizar su registro, mostrando un mensaje si ocurriese algn error o redirigiendo a la pgina inicio.xhtml si todo saliese bien. Tambin puede hacer clic en el botn Cancelar para volver a la pgina inicial sin finalizarelregistro. Pgina86

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Figura36.Capturaderegistro.xhtml.

MenprincipaldeAdministrador
Una vez ha iniciado sesin el usuario, si es el administrador se encontrar con la pgina indexAdmin.xhtml(Figura37).Selepresentanlassiguientesopciones:

Cerrarsesin:finalizalasesindeesteusuarioyvuelvealapginainicial. Modificardatos:permitecambiarlosdatospersonalesdelusuario. Administrarlibreras:permitegestionarlaslibrerasquecontieneelsistema. Administrarusuarios:posibilitalagestindelosusuariosregistrados.

Figura37.CapturadeindexAdmin.xhtml.

Pgina87

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Modificacindedatospropios
La opcin de Modificar datos de los mens de administrador y usuario llevan a la pgina modificarDatos.xhtml (Figura 38 y Figura 39). El aspecto de la misma cambia en funcin del rol, permitiendo modificar usuario, contrasea y email en el caso de un usuario normal y dejando cambiarslocontraseayemailenelcasodeladministrador.

Figura38.CapturademodificarDatos.xhtmldelAdministrador.

Figura39.CapturademodificarDatos.xhtmldelusuario.

Pgina88

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Administracindeusuarios
La opcin de administracin de usuarios del men del administrador lleva a la pgina adminUsuarios.xhtml (Figura 40). En esta es posible agregar un nuevo usuario, volver al men, editarunusuarioexistenteoborrarunodado.

Figura40.CapturadeadminUsuarios.xhtml.

Modificacindedatosajenos
La edicin de un usuario desde la pgina de administracin de usuarios lleva a modificarUsuario.xhtml (Figura 41). Aqu se permite cambiar los datos de la misma forma que cuandosehacesobreelusuarioactual,soloqueahorasehacesobreunodado.

Figura41.CapturademodificarUsuario.xhtml.

Pgina89

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Administracindelibreras
Laltimafuncionalidadquetieneeladministradoresladegestionarlaslibrerasincluidasen el sistema. sta se proporciona en la pgina adminLibrerias.xhtml (Figura 42). En ella es posible cargarunanuevalibrera,deshabilitarunadadaoalgunodesuscomponentesyborrarunalibrera oalgunodesuscomponentes.

Figura42.CapturadeadminLibrerias.xhtml.

Menprincipaldelusuario
El men principal del usuario se presenta en la pgina indexUsuario.xhtml (Figura 43). Las opcionesqueselemuestranson:

Cerrarsesin:finalizasusesin. Modificardatos:permitecambiarsusdatosdeusuario. Administrarpginas:gestindelaspginascreadasporelusuario.

Figura43.CapturadeindexUsuario.xhtml.

Pgina90

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Administracindepginas
LapginaadminPaginas.xhtml(Figura44)permitegestionarlaspginascreadasporelusuario. Selepermitecrearunanueva(loquelellevaalapginaeditarPagina.xhtml),editarunadada(que tambin lleva a la misma pgina pero con los componentes utilizados presentes) y borrar una pgina.

Figura44.CapturadeadminPaginas.xhtml.

Edicindepgina
Laltimafuncionalidadquetieneelusuarioesalmismotiempolamsimportante:laedicin deunapgina.EstaseproporcionaenlapginaeditarPagina.xhtml(Figura45).Enellaesposible agregarnuevoscomponentesalapginaenconstruccin,reorganizarlosyaexistentes,alterarsus propiedades, contraerlos/expandirlos e incluso eliminiarlos. Adems, se puede limpiar el lienzo actualporcompleto,guardarelprogresoalcanzadooexportarlapginacompuestaasuformato final:unapginaJSFvlidaquecontienelaslibrerasycomponentesconfiguradoscorrectamente.

Figura45.CapturadeeditarPagina.xhtml.

Pgina91

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Vistaprevia
Desde la ventana editarPagina.xhtml se permite la generacin de una vista preliminar de cmoquedaralapginaJSFqueseestmaquetando.Estavisinpreviarepresentafielmente elestadofinaldelapgina.PuedeverseunejemplodeestavisualizacinenlaFigura46:

Figura46.Capturadeunavistaprevia.

Exportacin
El resultado de la exportacin final de la pgina desarrollada es un fichero comprimido ZIP. Este fichero contiene por un lado la pgina JSF maquetada. Por otro lado, contiene tambin el conjunto de libreras (ficheros JAR) que incluyen los componentes utilizados en la pgina generada.

Pgina92

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Detallesdeimplantacin
Elprocesodeimplantacinconsisteenlainstalacindefinitivadelsistemadesarrolladoenel entorno final, sea este del tipo que sea. Esta instalacin se traduce en la copia de todos los ficheros necesarios de la aplicacin, as como de la copia y adaptacin de los ficheros de configuracin requeridos y la instalacin de herramientas externas, para el correcto funcionamientodelaaplicacin. En el caso del sistema desarrollado, gracias a la utilizacin de ficheros XML como almacenamiento persistente, se consigue un alto grado de independencia del entorno de implantacin.Portanto,sloesnecesariodesplegarelficheroWARmencionadoenelapartado anterior en un servidor de aplicaciones/contenedor J2EE compatible con el utilizado durante el desarrollo,ApacheTomcat6.0.18,ascomoposeerlaversin6.0delkitdedesarrolloJavadeSun instalada en el entorno final. Con todo esto, la aplicacin elaborada puede ser desplegada automticamente,quedandodisponibleenlasiguientedireccinURL: http://<direccin>:<puerto>/JSFComposer Donde direccin indica la direccin IP o nombre del servidor que contiene la aplicacin y puertoeselpuertoasociadoalservidordeaplicaciones,contenidoenelcitadoservidor,enel que se despliega la aplicacin desarrollada. Adems, los datos iniciales de acceso al sistema en modoadministradorson:

Usuario:admin Contrasea:admin*pass

Pgina93

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina94

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Evaluacin

Estecaptulotienecomofuncinprincipaldemostrarlavalidezdelasolucinelaborada.Para ello,enprimerlugar,sevaaintroducirelprocesodeevaluacinseguido,compuestoporlaforma deevaluacinyloscasosdeprueba.Despus,seprocederarealizarelanlisisdelosresultados obtenidosduranteesteprocesodeevaluacin.Deestosresultadosdependerlacalidadyvalidez delsistemaimplementadopararesolverelproblemaplanteadoinicialmente.

5.1

Procesodeevaluacin

Elprocesodeevaluacinseguidoparaanalizarlavalidezdelasolucindesarrolladasigueuna metodologa determinada. Esta metodologa o forma de evaluacin se va a explicar a continuacin,paradespusprocederadescribirloscasosdepruebaestablecidos.

Formadeevaluacin
Es importante seleccionar la forma de evaluacin adecuada a cada tipo de proyecto. Hay algunos en los que el flujo de ejecucin est muy definido y los resultados son completamente deterministas. En este tipo de proyectos pueden utilizarse una evaluacin basada en el uso de pruebasunitarias,lascualesrealizanoperacionesconelsistemadelasqueseconoceelresultado correctoconcompletaseguridad.Estaspruebasunitariasevaluaranelniveldeaciertoovalidez delosresultadosrealesquearrojaraelsistemacomparndolosconlosesperados. Otrotipodeproyectosnosiguenunalneaoflujodeejecucintandefinido,sinoqueporla interfazexternaqueproporcionanoporlanaturalezadelsistemaens,disponendeotramanera de ser utilizados. Esto provoca que la utilizacin del tipo de evaluacin introducido antes, el basadoenpruebasunitarias,genereunacantidadinmensadecasosdepruebay,loqueesms preocupante, que muchos de ellos sean redundantes o innecesarios. Adems, no garantiza la completituddelaspruebas.Untipodeaplicacinosistemaqueseajustaraaestadescripcines eldelasaplicacionesweb.Lanaturalezadeestesistemaposibilitaevaluardeterminadascapaso mdulosusandopruebasunitarias,peronotodoelsistema.Esporestoquesenecesitaunaforma mseficazyadecuadaparaevaluarestetipodesistemas. Laformadeevaluacindelasaplicacionesdeestaclasepuedeserrealizadabasndoseenlas funcionalidadesqueelsistemadeberaproporcionar(yevidentementecontrolandosuresultado) yenlosobjetivosmarcadosdurantesuconcepcin. Deestaforma,laevaluacindelsistemaelaboradosevaacentrarenelaspectofuncionaldel mismo, es decir, se va a analizar si la aplicacin desarrollada satisface los objetivos marcados inicialmenteysipermitellevaracabosatisfactoriamenteloscasosdeusodefinidosdurantelafase deanlisis. Pgina95

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Casosdeprueba
Talcomosehaexplicadoenelapartadoanterior,sevaaevaluarelproductoelaboradodesde un punto de vista funcional. Es por esto que los casos de prueba van a consistir en el correcto cumplimientodelosobjetivosmarcados(seccin1.2,Objetivos)yenlasatisfactoriarealizacinde loscasosdeusodefinidosenelanlisis(Modelodesistema).Deestaforma,distinguiramosdos tiposdepruebas:

Cumplimientodeobjetivo. Realizacindecasodeuso.

Siguiendo esta separacin, en las tablas que siguen se muestran los casos de prueba seleccionados para el sistema desarrollado. El identificador de caso de prueba sigue el formato CP_<tipo>_XX, donde tipo indica si es de cumplimiento de objetivo (O) o de realizacin de caso de uso(U) y XX es un nmero de dos cifras autoincrementativo. Al mismo tiempo, se va a describir la manera de implementar cada caso de prueba explicado: el/los recurso/s fsico/s en el/los que se realiza, la entrada esperada, el procesamiento intermedio realizado y la salida deseada: Casodeprueba CP_O_01 FacilitarlaelaboracindeunapginaJSFapartirdecomponentesdelibreras Descripcin desconocidas. adminPaginas.xhtml

Recursos involucrados

editarPagina.xhtml Beansmanejadosrelacionados. PaquetedelModelo. Componentesdesconocidosseleccionados. Elusuarioiniciasesin. Accedealaadministracindesuspginas Creaoeditaunapginayaexistente. Agregaunaseriedecomponentesalapginaconlosquenuncaantes habatrabajado. Exportalapginasatisfactoriamentesinpreocuparsedecmosehan insertadodichoscomponentes.

Entradarecibida

1. 2.

3. Procesamientoa 4. realizar 5.

Pgina96

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Salidaesperada

PginaJSFvlidaconloscomponentesseleccionadoscorrectamente agregadosyconfigurados,ascomoorganizadosenelordenutilizadoal maquetarlapgina.


Tabla23.ExplicacindecasodepruebaCP_O_01.

Casodeprueba Descripcin CP_O_02 Agilizarelprocesodeseleccin,inclusinyconfiguracindecomponentes JSF. adminPaginas.xhtml

Recursos involucrados

editarPagina.xhtml Beansmanejadosrelacionados. PaquetedelModelo. Componentesdesconocidosseleccionados. Configuracindeterminadaparadichoscomponentes. Elusuarioiniciasesin. Accedealaadministracindesuspginas Creaoeditaunapginayaexistente. Agregaunaseriedecomponentesalapginaconlosquenuncaantes habatrabajado. Personalizalaspropiedadesdeestoscomponentesasegnla configuracindeseada. PginaJSFguardadaconloscomponentesseleccionadosporelusuario, correctamenteconfigurados.
Tabla24.ExplicacindecasodepruebaCP_O_02.

Entradarecibida

1. 2.

3. Procesamientoa 4. realizar 5.

Salidaesperada

Casodeprueba Descripcin CP_O_03 Permitirlaincorporacindelibrerasgenricasdecomponentes. adminLibrerias.xhtml

Recursos involucrados

Beansmanejadosrelacionados PaquetedelModelo.

Pgina97

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Entradarecibida 1. Procesamientoa realizar 2. 3.

FicherosJARdelibrerasdecomponentesnoprobadasanteriormente conlaaplicacin. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. Seleccionalalibreraquedeseaincorporarylacargaenelsistema utilizandoelformulariocorrespondiente. Lalibreraaparecemostradacorrectamenteenlapginade administracindelibreras. Loscomponentesdelalibreraseencuentranlistadosjuntoaella.


Tabla25.ExplicacindecasodepruebaCP_O_03.

Salidaesperada

Casodeprueba Descripcin

CP_O_04 Seraccesiblevaweb,Crossbrowser(InternetExploreryMozillaFirefox nicamente),portableyconfigurable. ImplementacindelsistemacomoaplicacinwebJ2EEdesplegableen unservidordeaplicacionescompatibleconTomcat

Recursos involucrados

Compatibilidaddelaspginasdesarrolladasconlosnavegadoresms utilizados. FicheroWARdelaaplicacin. Diferentesmquinas(UbuntuLinuxyMicrosoftWindowsXP)con servidoresdeaplicaciones(ApacheTomcat)paraimplantarelsistema. Diferentesnavegadores(InternetExplorer6.0yMozillaFirefox2.0)en diferentessistemasoperativos(UbuntuLinuxyMicrosoftWindowsXP) pararealizarpruebasdeaccesoalsistema. Variasconfiguracionesdelibreras. DesplegarelficheroWARdelaaplicacinenlasdiferentesmquinas. Realizarlatotalidaddeloscasosdepruebalistadosenestaseccinen cadaunosdelosclientesaccediendoacadaunadelasmquinas, probandotambinconlasdiferentesconfiguracionesdelibreras. Elmismoresultadovisualydefuncionalidadencadaunodelosclientes yparacadaunadelasmquinas.
Tabla26.ExplicacindecasodepruebaCP_O_04.

Entradarecibida

1. Procesamientoa 2. realizar

Salidaesperada

Pgina98

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Casodeprueba Descripcin

CP_U_01 Registrodeusuarionoautenticado. inicio.xhtml

Recursos involucrados

registro.xhtml Beansasociados. Nombredeusuario. Contrasea(porduplicado). Direccindecorreoelectrnico. Unusuarionoautenticadoaccedealsistema. SeleccionalaopcindeRegistro. Introducesusdatosdeusuarioypresionaelbotndeaceptar. FicheroXMLdeusuariosmodificadodemaneraquesigaelesquema especificadoenlaseccinPersistenciayquecontengalosdatos introducidos.
Tabla27.ExplicacindecasodepruebaCP_U_01.

Entradarecibida


1.

Procesamientoa 2. realizar 3.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados CP_U_02 Iniciodesesindeusuarionoautenticado. inicio.xhtml

BeanDatosInicio. Nombredeusuario. Contraseadeacceso. Elusuarionoautenticadoaccedealsistema. Introducesusdatosenlascasillascorrespondientesypresionaelbotn deiniciodesesin. Accesoalapginaquecontieneelmendelusuarionormal (indexUsuario.xhtml).


Tabla28.ExplicacindecasodepruebaCP_U_02.

Entradarecibida

1.

Procesamientoa 2. realizar

Salidaesperada

Pgina99

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Casodeprueba Descripcin Recursos involucrados CP_U_03 Modificacindedatosdeusuarioautenticado. modificarDatos.xhtml

BeanDatosInicio. Datosdeaccesodelusuario. Nuevosvaloresparalosdatosamodificar. Elusuarionoautenticadoaccedealsistema. Introducesusdatosdeaccesoypresionaelbotndeiniciodesesin. SeleccionalaopcindeModificardatos. Introducelosnuevosvaloresenlascasillascorrespondientesypresiona elbotndeaceptar. ElficheroXMLdeusuariosmodificadodemaneraacorde.


Tabla29.ExplicacindecasodepruebaCP_U_03.

Entradarecibida

1. 2.

Procesamientoa 3. realizar 4.

Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_04 Cierredesesindeusuarioautenticado. indexAdmin.xhtml


1.

indexUsuario.xhtml Datosdeaccesodeusuario. Elusuarioiniciasesinenelsistema. Encualquiermomento,desdesumenprincipalutilizalaopcinde cerrarsesin. Cualquieraccesofuturoarecursosprivilegiados(pginasparalascuales senecesitaestarautenticado)redirigirnautomticamentealapgina deaccesoinicialalsistema.


Tabla30.ExplicacindecasodepruebaCP_U_04.

Procesamientoa 2. realizar

Salidaesperada

Pgina100

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_05 Listadodeusuariosdeusuarioadministrador. adminUsuarios.xhtml

1.

Datosdeaccesodeadministrador. Elusuarioadministradorseautenticaenelsistemaeiniciasesin. Desdesumenprincipal,accedealaopcindeadministracinde usuarios. ListadodetodoslosusuarioscontenidosenelficheroXMLdeusuarios, salvoeladministrador.


Tabla31.ExplicacindecasodepruebaCP_U_05.

Procesamientoa 2. realizar

Salidaesperada

Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_06 Agregacindeusuariodeusuarioadministrador. adminUsuarios.xhtml


1. 2. Procesamientoa realizar 3.

Datosdeaccesodeadministrador. Datosdeusuarioaagregar. Elusuarioadministradorseautenticaenelsistemaeiniciasesin. Desdesumenprincipal,accedealaopcindeadministracinde usuarios. Enestapginaintroducelosdatosdelnuevousuarioypresionaelbotn deagregar. FicheroXMLdeusuarioscorrectamentemodificado.


Tabla32.ExplicacindecasodepruebaCP_U_06.

Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_07 Modificacindeusuariodeusuarioadministrador. adminUsuarios.xhtml

Datosdeaccesodeadministrador. Nombreoidentificadordeusuarioamodificar.

Pgina101

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

1. 2. Procesamientoa 3. realizar 4.

Nuevosvaloresparalosdatosdelusuarioamodificar. Elusuarioadministradoraccedealsistema. Desdesumenprincipal,accedealaopcindeadministracinde usuarios. Buscaelusuarioconelnombredelquequieremodificarypulsaenel botndeedicin. Enlapginademodificacindedatosqueaparece,cambiasusvalores actualesporlosnuevos. FicheroXMLcorrectamenteactualizado.


Tabla33.ExplicacindecasodepruebaCP_U_07.

Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_08 Borradodeusuariodeusuarioadministrador. adminUsuarios.xhtml


1. 2. Procesamientoa realizar 3.

Datosdeaccesodeadministrador. Nombreoidentificadordeusuarioamodificar. Elusuarioadministradoraccedealsistema. Desdesumenprincipal,accedealaopcindeadministracinde usuarios. Buscaelusuarioconelnombredelquequieremodificarypulsaenel botndeborrar. Confirmaeldilogodeconfirmacinqueaparece. FicheroXMLcorrectamenteactualizado.


Tabla34.ExplicacindecasodepruebaCP_U_08.

4. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_09 Listadodelibrerasdeusuarioadministrador. adminLibrerias.xhtml

Datosdeaccesodeadministrador.

Pgina102

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 1. Procesamientoa 2. realizar Elusuarioadministradoraccedealsistema. Desdesumenprincipal,accedealaopcindeadministracinde libreras. Listadodetodaslaslibrerasysuscomponentescontenidosenelfichero XMLdelibreras.


Tabla35.ExplicacindecasodepruebaCP_U_09.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_10 Agregacindelibreradeusuarioadministrador. adminLibrerias.xhtml

1.

FicheroJARdelibreradecomponentes. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. Seleccionalalibreraquedeseaincorporarylacargaenelsistema utilizandoelformulariocorrespondiente. FicheroXMLdelibrerasactualizadocorrectamente.


Tabla36.ExplicacindecasodepruebaCP_U_10.

Procesamientoa realizar

2. 3.

Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_11 Deshabilitadodelibreradeusuarioadministrador. adminLibrerias.xhtml

1.

Nombredelibreraadeshabilitar. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. Buscalalibreradeseadaypulsaenelbotndedeshabilitar. FicheroXMLdelibrerascorrectamenteactualizado.


Tabla37.ExplicacindecasodepruebaCP_U_11.

Procesamientoa 2. realizar 3. Salidaesperada Casodeprueba Descripcin

CP_U_12 Borradodelibreradeusuarioadministrador.

Pgina103

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Recursos involucrados Entradarecibida


1.

adminLibrerias.xhtml Nombredelibreraaborrar. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. Buscalalibreradeseadaypulsaenelbotndeborrado. Confirmaeldilogodeconfirmacinqueaparece. FicheroXMLdelibrerascorrectamenteactualizado.


Tabla38.ExplicacindecasodepruebaCP_U_12.

2. Procesamientoa realizar 3. 4. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_13 Listadodecomponentesdeusuarioadministrador. adminLibrerias.xhtml

Datosdeaccesodeadministrador. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. ListadodetodosloscomponentesincluidosenelficheroXMLde libreras.


Tabla39.ExplicacindecasodepruebaCP_U_13.

1. Procesamientoa realizar 2.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_14 Deshabilitadodecomponentedeusuarioadministrador. adminLibrerias.xhtml

1.

Nombreoidentificadordecomponenteadeshabilitar. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. Buscaelcomponentedeseadoypulsaenlaopcindedeshabilitar. FicheroXMLdelibrerasactualizadocorrectamente.


Tabla40.ExplicacindecasodepruebaCP_U_14.

Procesamientoa 2. realizar 3. Salidaesperada

Pgina104

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_15 Borradodecomponentedeusuarioadministrador. adminLibrerias.xhtml

1.

Nombreoidentificadordecomponenteaborrar. Eladministradoriniciasesinenelsistema. Accedealapginadeadministracindelibreras. Buscaelcomponentedeseadoypulsaenlaopcindeborrado. FicheroXMLdelibrerasactualizadocorrectamente.


Tabla41.ExplicacindecasodepruebaCP_U_15.

Procesamientoa 2. realizar 3. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_16 Listadodepginasdeusuario. adminPaginas.xhtml

Datosdeaccesodeusuario. Elusuarioiniciasesinenelsistemautilizandosusdatos. Accedealapginadeadministracindepginas. Listadodelaspginascreadasporesteusuario,contenidasenelfichero XMLdepginas.


Tabla42.ExplicacindecasodepruebaCP_U_16.

1. Procesamientoa realizar 2.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados Creacindepginadeusuario. adminPaginas.xhtml CP_U_17

Entradarecibida

Datosdeaccesodeusuario. Nombredelapgina. Descripcindelapgina.

Pgina105

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 1. 2. Procesamientoa realizar 3. 4. Elusuarioiniciasesinenelsistemautilizandosusdatos. Accedealapginadeadministracindepginas. Pulsaenelbotndenuevapgina. Introduceelnombreyladescripcindelapginaeneldilogoque aparece. Comienzaaagregarcomponentesalamisma. FicheroXMLdepginascorrectamenteactualizado.
Tabla43.ExplicacindecasodepruebaCP_U_17.

5. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_18 Edicindepginadeusuario. editarPagina.xhtml


1. Procesamientoa 2. realizar 3. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

Datosdeaccesodeusuario. Nombreoidentificadordelapgina. Elusuarioaccedealsistemautilizandosusdatosdeacceso. Accedealapginadeadministracindepginas. Buscalapginadeseadaypulsaenlaopcindeedicin. Pginamostradaenelestadoenelqueseguard.


Tabla44.ExplicacindecasodepruebaCP_U_18.

CP_U_19 Borradodepginadeusuario. adminPaginas.xhtml


1. Procesamientoa 2. realizar 3.

Datosdeaccesodeusuario. Nombreoidentificadordelapgina. Elusuarioaccedealsistemautilizandosusdatosdeacceso. Accedealapginadeadministracindepginas. Buscalapginadeseadaypulsaenlaopcindeborrado.

Pgina106

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 4. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_20 Listadodecomponentesagregadosdeusuario. editarPagina.xhtml Confirmaeldilogodeconfirmacinqueaparece. FicheroXMLdepginascorrectamenteactualizado.
Tabla45.ExplicacindecasodepruebaCP_U_19.


1. Procesamientoa 2. realizar 3.

Datosdeaccesodeusuario. Nombreoidentificadordepgina. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Buscalapginadeseadaypulsaenelbotndeedicin. Listadodecomponentesagregadosalapginadadaenelmomentoen elqueseguard.


Tabla46.ExplicacindecasodepruebaCP_U_20.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_21 Agregacindecomponentedeusuario. editarPagina.xhtml

1.

Nombredelibreraycomponente. Elusuarioaccedealsistema. Accedealapginadeadministracindepginas. Editaunapginaexistenteocreaunanueva. Buscaelcomponentedeseadoyloagregaalapginaenedicin. FicheroXMLdepginasactualizadocorrectamente.


Tabla47.ExplicacindecasodepruebaCP_U_21.

2. Procesamientoa realizar 3. 4. Salidaesperada Casodeprueba Descripcin

CP_U_22 Borradodecomponentedeusuario.

Pgina107

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Recursos involucrados Entradarecibida


1. 2.

editarPagina.xhtml Nombredecomponente. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editaunapginaexistente. Buscaelcomponentequedeseaeliminardelapginaypulsaenelbotn deborrar. FicheroXMLdepginasactualizadocorrectamente.


Tabla48.ExplicacindecasodepruebaCP_U_22.

Procesamientoa 3. realizar 4.

Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_23 Movimientodecomponentedeusuario. editarPagina.xhtml

1.

Nombredecomponenteinsertado. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada. Buscaelcomponenteinsertadodeseadoyloreorganiza. FicheroXMLdepginasactualizadocorrectamente.


Tabla49.ExplicacindecasodepruebaCP_U_23.

2. Procesamientoa realizar 3. 4. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_24 Borradodecomponentesdeusuario. editarPagina.xhtml

Nombredepgina. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas.

1. Procesamientoa realizar 2.

Pgina108

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 3. 4. 5. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_25 Muestradepropiedadesdecomponentedeusuario. editarPagina.xhtml Editalapginadeseada. Pulsalaopcindeborrartodosloscomponentesinsertados. Confirmaeldilogodeconfirmacinqueaparece. FicheroXMLdepginascorrectamenteactualizado.
Tabla50.ExplicacindecasodepruebaCP_U_24.


1. 2. Procesamientoa realizar 3. 4.

Nombredepgina. Nombredecomponente. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada. Seleccionaelcomponentedeseadoymuestrasuspropiedades. Valoresdeconfiguracindelcomponentedadoalmacenadosenel ficheroXMLdepginas.


Tabla51.ExplicacindecasodepruebaCP_U_25.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados CP_U_26 Modificacindepropiedadesdecomponentedeusuario. editarPagina.xhtml

Entradarecibida

Nombredepgina. Nombredecomponente. Nuevosvaloresdeconfiguracinparaelcomponente. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada.


1.

Procesamientoa 2. realizar 3.

Pgina109

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 4. Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_27 Expansindecomponentedeusuario. editarPagina.xhtml Seleccionaelcomponentedeseadoymodificasuspropiedades. FicheroXMLdepginasactualizadocorrectamente.
Tabla52.ExplicacindecasodepruebaCP_U_26.


1. 2. Procesamientoa 3. realizar 4.

Nombrepgina. Nombredecomponente. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada. Seleccionaelcomponentedeseado(contradoinicialmente)yloexpande utilizandoelbotncorrespondiente. Representacinvisualdelcontenedordelcomponenteactualizada.


Tabla53.ExplicacindecasodepruebaCP_U_27.

Salidaesperada Casodeprueba Descripcin Recursos involucrados Entradarecibida

CP_U_28 Contraccindecomponentedeusuario. editarPagina.xhtml


1. 2. Procesamientoa 3. realizar 4.

Nombredepgina. Nombredecomponente. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada. Seleccionaelcomponentedeseado(expandidoinicialmente)ylocontrae utilizandoelbotncorrespondiente. Representacinvisualdelcontenedordelcomponenteactualizada.

Salidaesperada

Pgina110

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID
Tabla54.ExplicacindecasodepruebaCP_U_28.

Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_29 Exportacindepginadeusuario. editarPagina.xhtml

1.

Nombredepgina. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada. Pulsalaopcindeexportaryguardaelficheroresultante. FicheroJSFquecontienelapginamaquetada,contodoslos componentesinsertadosdebidamenteconfiguradosyordenados.


Tabla55.ExplicacindecasodepruebaCP_U_29.

2. Procesamientoa realizar 3. 4.

Salidaesperada

Casodeprueba Descripcin Recursos involucrados Entradarecibida CP_U_30 Guardadodepginadeusuario. editarPagina.xhtml

1.

Nombredepgina. Elusuarioiniciasesinenelsistema. Accedealapginadeadministracindepginas. Editalapginadeseada. Pulsalaopcindeguardar. FicheroXMLdepginascorrectamenteactualizado.


Tabla56.ExplicacindecasodepruebaCP_U_30.

2. Procesamientoa realizar 3. 4. Salidaesperada

Pgina111

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

5.2

Anlisisderesultados

Traslaejecucindeloscasosdepruebadescritosenlaseccinanterior,sehangeneradouna seriederesultados.EnlaTabla57semuestraeldesglosedelosmismos.Despus,seofreceruna justificacindelfracasodedeterminadoscasos. Casodeprueba Resultado CP_O_01 Exitoso CP_O_02 Exitoso CP_O_03 Exitoso CP_O_04 Exitoso CP_U_01 Exitoso CP_U_02 Exitoso CP_U_03 Exitoso CP_U_04 Exitoso CP_U_05 Exitoso CP_U_06 Exitoso CP_U_07 Exitoso CP_U_08 Exitoso CP_U_09 Exitoso CP_U_10 Exitoso CP_U_11 Exitoso CP_U_12 Exitoso CP_U_13 Exitoso CP_U_14 Exitoso CP_U_15 Exitoso CP_U_16 Exitoso CP_U_17 Exitoso CP_U_18 Exitoso CP_U_19 Exitoso CP_U_20 Exitoso CP_U_21 Fallido CP_U_22 Exitoso CP_U_23 Exitoso CP_U_24 Exitoso CP_U_25 Exitoso CP_U_26 Fallido CP_U_27 Exitoso CP_U_28 Exitoso CP_U_29 Exitoso
Tabla57.Resultadodeevaluacindecasosdeprueba.

Pgina112

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Como puede observarse en la Tabla 57, la ejecucin de los siguientes casos de prueba ha resultadoenfallo:

CP_U_21:determinadoscomponentesJSFrequierencomoconfiguracininicialunoo msbeansmanejadospresentesparapoderfuncionarencondiciones.Debidoaque esto no est contemplado por la aplicacin, el uso de este tipo de componentes provocaerroresentiempodeejecucin. CP_U_26: en determinados componentes, tales como los afectados en el caso de prueba CP_U_21, la modificacin de sus propiedades de manera errnea (no conteniendo un valor del formato necesario, no existiendo un bean manejado de respaldo,etc.)llevaaunestadoinestabledelaaplicacin.

Parasolucionarloscasosdepruebafallidosrecinmencionadossetomandosmedidas:

Limitacindeloscomponentesdisponiblesenlaversinimplantable:serestringeel uso de los componentes que causan problemas en los citados casos de prueba CP_U_21 y CP_U_26. Esto se realiza desde la propia aplicacin, deshabilitando los componentesconflictivos. Propuesta de trabajo futuro: como posible ampliacin futura se comentar la remodelacin o extensin del sistema desarrollado de forma que gestione correctamenteydsoporteaestetipodecomponentes.

Una vez tomadas estas medidas, todos los casos de prueba se ejecutaran con resultado satisfactorio, por lo que el producto desarrollado cumplira todos los objetivos y limitaciones marcadasyresolveracorrectamenteelproblemaplanteado.

Pgina113

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina114

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Conclusin

La descripcin del trabajo finaliza con una recapitulacin de los hitos alcanzados durante la realizacin del mismo. La recapitulacin se inicia con una visin sobre diferentes aspectos del trabajo realizado, como pueden ser aportaciones realizadas o trabajos futuros planteables. Su cometidoeseldepermitiralautorrealizarunaautoevaluacindeltrabajodesarrollado,ascomo plantearseposiblesmejorasoextensiones,todoellodesdeunpuntodevistapersonal.Adems,al final del captulo se ofrece la opinin de dicho autor, formada a lo largo del desarrollo del proyecto.

6.1

Aportacionesrealizadas

Alolargodeldesarrollodeesteproyectosehaexperimentadoconlastecnologasutilizadas (explicadasenelapartadoTecnologas)demaneraintensiva,inclusollevandoenocasioneshasta ellmitedesusfuncionalidadesconocidasamuchasdeellas.Comoejemplo,puedencitarsevarios casos:

Inclusindeuncomponenteenunapgina:normalmente,uncomponenteseagrega aunapginaenelpropiocdigodelapgina.Enelcasodeesteproyecto,lainclusin delcomponentenoslotenaqueserencdigoJava(programticamente)sinoque ademstenaqueposibilitarseesteprocesoparauncomponentegenrico,delcual slosedisponadelaclasequeloimplementaba. Estructura interna de libreras JSF: para el proceso de generacin de la base de datosinicialdelibreras,fuenecesarioestudiarlaestructurainternadelaslibreras de componentes JSF, consistentes en un fichero comprimido JAR que contiene el conjuntodeclasescorrespondientes,ascomoficherosdescriptores. AJAX: durante la realizacin de esta aplicacin se ha experimentado profusamente conAJAX,haciendoposiblelainclusinymodificacindecomponentesincluidosen una pgina de manera completamente asncrona y proporcionando una experiencia deusuariotodoloricaposible.

Todosestoscasosvienenaejemplificarlacantidadyvariedaddetecnologasyformasdeuso aprendidasdurantelaimplementacindeesteproyecto.

6.2

Trabajosfuturos

Encasitodoproyecto,apesardeelaborarunaplanificacinacordealosobjetivosmarcados, generalmente se quedan cosas en el tintero. Posibles mejoras, funcionalidades casi terminadas peroeliminadasaltimahorapormotivosdeestabilidad,ideasabandonadasenetapasprevias, Pgina115

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID etc. Este proyecto no iba a ser diferente. A continuacin, se van a introducir algunas de estas ideas:

Administracinde beans:cuando elusuariopersonalizauncomponente slopuede introducirtextoplanocomovalorparasusatributosocampos.Muchoscomponentes JSFsebenefician,sinolorequieren,delusodebeansmanejadoscomovalorespara estoscampos.Deestaforma,selepermitealusuarioprobarrealmentecomoluciran los componentes que est personalizando con datos dinmicos, incluso con estructuras enteras recuperadas de la base de datos. La introduccin de la funcionalidad de gestin y creacin de beans manejados en la aplicacin proporcionaraunaherramientamuchsimomscompleta,subsanandomuchasdelas complicaciones encontradas por el camino a la hora de renderizar componentes avanzados, componentes que requieren el uso de beans como medio de configuracin. Mejora de la organizacin de componentes: en el producto desarrollado, los componentes insertados en el lienzo se pueden ordenar verticalmente. Adems, aquellos componentes que son de tipo de contenedor, es decir, permiten albergar otros como hijos, slo permiten ser configurados de manera genrica, no como padres de otros. Por tanto, sera interesante la implementacin de una ordenacin basada en componentes compuestos, tanto verticales como horizontales, considerandotambinaquellosdetiporejillaydems.Estoconseguiraqueelusuario pudieserealmentemaquetarlapginaensutotalidadsinlanecesidadderetocarla disposicindeloscomponentesunavezexportadalapginacreada. Exportacin: actualmente, cuando se exporta el resultado de la creacin de una pgina, slo se obtiene un fichero con extensin XHTML que representa la pgina creada o fichero comprimido que proporcionan las libreras utilizadas, pero no los ficheros de configuracin necesarios para incorporar completamente el resultado a un proyecto dado. Una mejora evidente sera proporcionar un fichero comprimido comoproductofinalquecontuviesetodosestoselementos. Resolucin de los problemas encontrados en la evaluacin de los casos de prueba diseados: el problema de agregacin de componentes y modificacin de sus propiedades debido a la falta de beans manejados se ver resuelto con el primer puntodelostrabajosfuturospropuestos.

6.3

Problemasencontrados

Durantelarealizacindeesteproyectosehaencontradounaseriededificultades.Todasellas hansidosuperadasparapoderllegaralacorrectafinalizacindelmismo.Acontinuacin,sevana explicarestosproblemasencontrados:

Pgina116

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Viabilidad del proyecto: uno de los objetivos fundamentales y de obligado cumplimientoeraqueelsistemadesarrolladopermitieseincorporarnuevaslibreras encualquiermomentodesuvida.Estainclusinnodebaobligaraladministradora poseerconocimientoalgunosobrelamismaoloscomponentesquelaformaban.Esta meta se traduce en que, en todo momento, la aplicacin est trabajando con componentesgenricos,nosabesiestgestionandounaetiquetaounacajadetexto, un panel o un componente de Google Maps. Esta generalizacin acarrea gran cantidad de complicaciones, dado que los componentes se generan programticamente, es decir, en cdigo Java. Esto significa que en tiempo de ejecucin (es ms, durante una llamada AJAX) se le pide al sistema renderizar un componente del cual slo tiene almacenada la clase que implementa su tag o etiquetadecomponente.Esteprocesonoesnadatrivialyenunpuntoavanzadodel desarrolloinclusoseduddelaviabilidaddellevaracabosemejantetarea. EstndarJSF:aunquedemejorproblemticaqueelanteriorpunto,laespecificacin delestndardeJavaServerFacesylaformadeimplementarlodecadalibrerahasido una dificultad considerable, ya que ha sido necesario extraer las caractersticas comunes, por pocas que fuesen, que permitiesen desarrollar la funcionalidad principalmarcada,altiempoqueaparecannumerosasdiscrepancias.

6.4

Opinionespersonales

Personalmente, la realizacin de este proyecto de fin de carrera le ha proporcionado al proyectandoconocimientosavanzadossobreJSF,suciclodevida,laestructuracinygeneracin decomponentesydemscaractersticasavanzadasdelframework.Esto,sumadoalintensivouso deAJAX,suponeunagranformacinparacualquierdesarrollador/arquitectoJ2EE. Adems,larealizacindesdelosbocetosinicialeshastaelprototipodealtoniveldelproducto desarrollado y la elaboracin de la presente memoria le otorgan gran desenvolvimiento en el procesohabitualdedesarrollodeproductossoftware,facilitndoleengranmedidalainsercinen proyectosrealesdegrandesymedianasempresas.

Pgina117

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina118

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Bibliografa

1.Pressman,RogerS.(2005).SoftwareEngineering:APractitioner'sApproach.McGrawHill. 2.Jacobi,JonasyR.Fallows,John(2006).ProJSFandAjax:BuildingRichInternetComponents. Apress. 3.Dudney,Bill;Lehr,Jonathan;Willis,BillyMattinglyLeRoy(2004).MasteringJavaServerFaces. Wiley. 4.JavaServerFaces,http://java.sun.com/javaee/javaserverfaces,ltimoaccesoel2deMarzode 2009. 5.JavaServerFacesapplicationlifecycle,http://www.ibm.com/developerworks/library/j jsf2/index.html?ca=drsj1105,ltimoaccesoel3deMarzode2009. 6.JavaServerFacescomponentdevelopment,http://www.ibm.com/developerworks/library/jjsf4, ltimoaccesoel3deMarzode2009. 7.ComparativalibrerasJSFAJAX,http://www.jsfmatrix.net,ltimoaccesoel23deDiciembrede 2008. 8.Wikipedia:Gestindeproyectos,http://es.wikipedia.org/wiki/Gesti%C3%B3n_de_proyectos, ltimoaccesoel20deEnerode2009. 9.IEEEStd(1993).IEEESoftwareEngineeringStandard:GlossaryofSoftwareEngineering Terminology.IEEEComputerSocietyPress. 10.Wikipedia:Clasificacineidentificacinderequerimientos, http://es.wikipedia.org/wiki/Computer_software#Clasificaci.C3.B3n_e_identificaci.C3.B3n_de_req uerimientos,ltimoaccesoel20deEnerode2009. 11.IVAenEspaa,http://es.wikipedia.org/wiki/IVA,ltimoaccesoel21deEnerode2009. 12.UML,http://www.uml.org,ltimoaccesoel20deNoviembrede2008. 13.J2EE,http://java.sun.com/javaee,ltimoaccesoel19deOctubrede2008. 14.ModeloVistaControlador,http://www.proactivacalidad.com/java/patrones/mvc.html, ltimoaccesoel18deOctubrede2008. 15.SunJavaapplets,http://java.sun.com/applets,ltimoaccesoel25deJuliode2008. 16.Macromedia/AdobeFlash,http://www.adobe.com/products/flashplayer,ltimoaccesoel25 deJuliode2008. 17.CGI,http://hoohoo.ncsa.uiuc.edu/cgi,ltimoaccesoel25deJuliode2008. Pgina119

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 18.Patronesdediseo,http://www.ingenierosoftware.com/analisisydiseno/patronesdiseno.php, ltimoaccesoel26deJuliode2008. 19.AJAX,http://www.w3schools.com/Ajax/Default.Asp,ltimoaccesoel26deJuliode2008. 20.Velocity,http://velocity.apache.org,ltimoaccesoel2deEnerode2009. 21.JavaCC,https://javacc.dev.java.net,ltimoaccesoel2deEnerode2009. 22.Tapestry,http://tapestry.apache.org,ltimoaccesoel2deEnerode2009. 23.Struts,http://struts.apache.org/1.x/strutstiles,ltimoaccesoel2deEnerode2009. 24.StrutsTiles,http://struts.apache.org,ltimoaccesoel2deEnerode2009. 25.SunMicrosystems,http://es.sun.com,ltimoaccesoel23deFebrerode2009. 26.ApacheMyFaces,http://myfaces.apache.org,ltimoaccesoel4deDiciembrede2008. 27.SunJSFRI,https://javaserverfaces.dev.java.net,ltimoaccesoel5deDiciembrede2008. 28.JBossRichFaces,http://www.jboss.org/jbossrichfaces,ltimoaccesoel10deFebrerode2009. 29.JBossRichFacesshowcase,http://livedemo.exadel.com/richfacesdemo/index.jspltimo accesoel11deFebrerode2009. 30.IceSoftTechnologiesIceFaces,http://www.icefaces.org/main/home,ltimoaccesoel9de Enerode2009. 31.VedanaRichClientFaces,http://www.rcfaces.org/projectsummary.html,ltimoaccesoel9 deEnerode2009. 32.OracleADFFaces,http://www.oracle.com/technology/products/adf/adffaces/index.html, ltimoaccesoel9deEnerode2009. 33.ApacheMyFacesTomahawk,http://myfaces.apache.org/tomahawk/index.html,ltimoacceso el9deEnerode2009. 34.Spring,http://www.springsource.org,ltimoaccesoel10deEnerode2009. 35.Hibernate,http://www.hibernate.org,ltimoaccesoel10deEnerode2009. 36.JBoss,http://www.jboss.org,ltimoaccesoel21deFebrerode2009. 37.ApacheTomcat,http://tomcat.apache.org,ltimoaccesoel21deFebrerode2009. 38.SuniPlanet,http://docs.sun.com/app/docs/doc/8162670?l=es,ltimoaccesoel21deFebrero de2009. 39.JBossSeam,http://www.jboss.com/products/seam,ltimoaccesoel10deEnerode2009.

Pgina120

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID 40.Stripes,http://www.stripesframework.org/display/stripes/Home,ltimoaccesoel10deEnero de2009. 41.OracleTopLink,http://www.oracle.com/technology/products/ias/toplink/index.html,ltimo accesoel10deEnerode2009.

Pgina121

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina122

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

AnexoI.Controldeversiones
En este primer anexo se va a proporcionar un registro detallado de las versiones de este documento que han sido generadas a lo largo del desarrollo del mismo. Esta informacin es importante porque ayuda a entender la progresin que ha seguido el trabajo realizado, la frecuencia de versiones, etc. Para cada versin se indicar el identificador correspondiente, la fecha de entrega de la misma y una breve descripcin de su contenido. El formato de los identificadoresserelsiguiente: DOC_<nmero> Donde nmero es un entero de dos dgitos que se incrementa de versin en versin. El listadodeversionespuedeverseenlaTabla58. Identificador Fechadeentrega Contenido DOC_01 28/04/2008 Primerosprototiposdelsistema. Primera versin del documento como tal. Contiene DOC_02 05/08/2008 loscaptulos1y2completados. Reformulacin drstica de los dos primeros DOC_03 26/01/2009 captulosyprimeraversindeltercero. Captulos4y5terminadosyrealizadascorrecciones DOC_04 03/03/2009 eneltercero. Captulo 6, glosario de trminos y anexos DOC_05 05/03/2009 terminados. DOC_06 06/03/2009 Revisingeneraldetodalamemoria. Correcciones realizadas sobre toda la memoria y DOC_07 03/04/2009 captulo7. DOC_08 15/04/2009 Correccionesrealizadassobretodalamemoria. DOC_09 06/05/2009 Revisinfinaldetodalamemoria.
Tabla58.Controldeversiones.

Pgina123

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

Pgina124

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID

AnexoII.Seguimientodeproyectofindecarrera
Este anexo se encarga de exponer y detallar el seguimiento que se ha realizado de este proyectofindecarrera,esdecir,lamonitorizacindelestadodelmismodurantetodoeltiempo que ha durado su desarrollo. En primer lugar se va a explicar el procedimiento seguido para monitorizarelproyecto.Despus,sevaaproporcionarlaplanificacininicialqueseelaborpara el mismo. Por ltimo, se presentar la planificacin final de este, es decir, la programacin real quesehallevadoacabo.

Formadeseguimiento
La manera de monitorizar el estado de este proyecto ha consistido en reuniones virtuales entre tutor y proyectando en las que se evaluaban los avances realizados en la elaboracin del mismo,resultandodeestasreunionesunaseriedeaadidosy/omodificacionesqueaplicarala siguiente versin del documento. Asimismo, en la siguiente reunin se evaluaban tambin los cambiosoaadidossolicitados,demaneraquetodaalteracindeldocumentofueserevisadoen todomomentoporeltutordelproyecto. Deformaadicional,sehanidorecogiendohorasrealesdedesarrolloyfechasdecomienzoy findecadacaptulodeestamemoria,demaneraquesepudieseefectuarunaclaracomparacin entrelaplanificacininicialelaboradaylaplanificacinresultantetrasterminartodoelprocesode desarrollo.

Planificacininicial
Inicialmente,esteproyectodefindecarrerafueplanificadoparaserrealizadoentrelosaos 2006y2008,aosenlosqueelproyectandoancontabaconunagrancantidaddecrditospor superarensusestudios.Estehechoocasionquelamayorpartedeestetiempoplanificadofuese dedicado a estudiar la viabilidad del sistema planteado y a realizar prototipos de bajo y medio nivel(deahlaentregadeprimerosprototiposenAbrilde2008). Posteriormente, el proyecto fue replanificado para llevarse a cabo una vez el proyectando hubieseconcluidoloscitadoscrditos.Estaltimaplanificacineslaquerealmentesetomacomo inicial,yaquetieneunplanteamientomuchomsrealyasequible.PuedeobservarseenlaTabla 59.

Pgina125

SISTEMAPARALAMAQUETACINDECOMPONENTESJSF UNIVERSIDADCARLOSIIIDEMADRID Tarea Introduccin Estadodelacuestin Planteamientodelproblema Gestindelproyecto Solucin Evaluacin Conclusiones Anexos Fechadeinicio 20/07/2008 20/07/2008 01/08/2008 06/08/2008 15/08/2008 16/09/2008 27/09/2008 27/09/2008
Tabla59.Planificacininicial.

Fechadefin 22/07/2008 31/07/2008 05/08/2008 15/08/2008 15/09/2008 26/09/2008 30/09/2008 30/09/2008

Planificacinfinal
Siguiendolaplanificacininicial,seintentajustaralasfechasprogramadasparafinalizaren el tiempo previsto. Sin embargo, circunstancias laborales y personales del proyectando ocasionaronunligeroretrasoeneliniciodeldesarrolloyunamayorcantidaddetiempoasignado acadatarea,resultandolaplanificacinfinalrealquepuedeobservarseenlaTabla60.Asimismo, sereorganizaronyredefinieronalgunastareas,conelfindemejorarlaclaridaddeloscontenidos ysuestructura. Tarea Fechadeinicio Fechadefin Horasdedicadas Introduccin 27/10/2008 06/11/2008 15 Estudiodelproblema 08/11/2008 08/12/2008 38 Gestindelproyectosoftware 08/12/2008 25/01/2008 37 Solucin 26/01/2008 03/03/2009 58 Evaluacin 01/03/2009 03/03/2009 6 Conclusin 01/03/2009 04/03/2009 4 Anexos 01/03/2009 04/03/2009 7 Total 165
Tabla60.Planificacinfinal.

Pgina126