Professional Documents
Culture Documents
TFG Javier Espinosa Alfonso 2012
TFG Javier Espinosa Alfonso 2012
Autor: Tutor:
Ttulo: Frame(or) de desarrollo de aplicaciones (e$ m*ltiplataforma Autor: Javier Espinosa Alfonso Tutor: Francisco Javier Garca Blas
EL TRIBUNAL
+residente,
-ocal,
.ecretario,
Reali/ado el acto de defensa 0 lect*ra del Tra$a1o de Fin de Grado el da 22 de 2222222 de %&'% en egan!s" en la Esc*ela +olit!cnica .*perior de la 3niversidad 4arlos III de 5adrid" ac*erda otorgarle la 4A IFI4A4I6N de
ndice General
'7 Introd*cci8n77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777779
'7' 5otivaci8n777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777779 '7% O$1etivos77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: '7; Estr*ct*ra de la memoria7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: '7< Glosario de t!rminos777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777=
;7 Anlisis77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777%A
;7' Descripci8n general77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777%9 ;7% Definici8n de reD*isitos7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777%:
;7%7' ReD*isitos f*ncionales777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %= ;7%7% ReD*isitos no f*ncionales777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ;% ;7%7; ReD*isitos de restricci8n77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ;;
#7 Eval*aci8n 0 res*ltados777777777777777777777777777777777777777777777777777777777777777777777777777777<'
#7' Entorno de eval*aci8n777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777<'
#7'7' Tests de +>+3nit777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 <' #7'7% 3so de la aplicaci8n77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 <%
#7% Res*ltados777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777<;
97' +lanificaci8n777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777A&
97'7' Diagrama de Gantt777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A'
97% +res*p*esto777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777A%
97%7' 4ostes de personal777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A% 97%7% 4ostes de Card(are77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A; 97%7; 4ostes de soft(are777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A< 97%7< 4oste total777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A#
=7 Bi$liografa7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777A:
+gina < de A=
ndic d t!"l!#
'7 Ta$la, +lataformas m8viles D*e soporta +ConeGap 77777777777777777777777777777777777777777777777777777777777%% %7 Ta$la, ReD*isito f*ncional RF3F&&&'77777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %= ;7 Ta$la, ReD*isito f*ncional RF3F&&&%77777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %= <7 Ta$la, ReD*isito f*ncional RF3F&&&;77777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %= #7 Ta$la, ReD*isito f*ncional RF3F&&&<77777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ;& A7 Ta$la, ReD*isito f*ncional RF3F&&� ;& 97 Ta$la, ReD*isito f*ncional RF3F&&&A77777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ;& :7 Ta$la, ReD*isito f*ncional RF3F&&&977777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ;' =7 Ta$la, ReD*isito f*ncional RF3F&&&A77777777777777777777777777777777777777777777777777777777777777777777777777777777777777 ;' '&7 Ta$la, ReD*isito no f*ncional RNFF&&&'777777777777777777777777777777777777777777777777777777777777777777777777777777;% ''7 Ta$la, ReD*isito no f*ncional RNFF&&&%777777777777777777777777777777777777777777777777777777777777777777777777777777;% '%7 Ta$la, ReD*isito no f*ncional RNFF&&&;777777777777777777777777777777777777777777777777777777777777777777777777777777;% ';7 Ta$la, ReD*isito no f*ncional RNFF&&&<777777777777777777777777777777777777777777777777777777777777777777777777777777;; '<7 Ta$la, ReD*isito de restricci8n RREF&&&'7777777777777777777777777777777777777777777777777777777777777777777777777777;; '#7 Ta$la, ReD*isito de restricci8n RREF&&&%7777777777777777777777777777777777777777777777777777777777777777777777777777;; 'A7 Ta$la, ReD*isito de restricci8n RREF&&&;7777777777777777777777777777777777777777777777777777777777777777777777777777;< '97 Ta$la, +lanificaci8n del tra$a1o por actividades777777777777777777777777777777777777777777777777777777777777777777A& ':7 Ta$la, 4ostes de personal7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A% '=7 Ta$la, 4ostes de Card(are777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A; %&7 Ta$la, 4ostes de soft(are7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A< %'7 Ta$la, 4oste total7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 A#
+gina # de A=
ndic d $i%ur!#
'7 Il*straci8n, ogo >T5 #777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 '' %7 Il*straci8n, ogo +>+77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 '% ;7 Il*straci8n, ogo 50.? 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 '; <7 Il*straci8n, ogo de 1?*er07777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 'A #7 Il*straci8n, ogo de 1?*er0 5o$ile77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 '9 A7 Il*straci8n, 4onstr*cci8n de *n J.ON o$1ect777777777777777777777777777777777777777777777777777777777777777777777777': 97 Il*straci8n, 4onstr*cci8n de *n J.ON arra0777777777777777777777777777777777777777777777777777777777777777777777777777': :7 Il*straci8n, Formaci8n de *n string en J.ON777777777777777777777777777777777777777777777777777777777777777777777777'= =7 Il*straci8n, Opciones vlidas para la formaci8n de *n val*e en J.ON77777777777777777777777777777%& '&7 Il*straci8n, Formato de *n n*m$er en J.ON7777777777777777777777777777777777777777777777777777777777777777777777%& ''7 Il*straci8n, ogo de +ConeGap7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %' '%7 Il*straci8n, Desarrollo aplicaci8n +ConeGap77777777777777777777777777777777777777777777777777777777777777777777777%' ';7 Il*straci8n, +lataformas soportadas7777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %% '<7 Il*straci8n, ogo de .mart07777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 %; '#7 Il*straci8n, Estr*ct*ra principal del sistema77777777777777777777777777777777777777777777777777777777777777777777777%9 'A7 Il*straci8n, Estr*ct*ra detallada del sistema7777777777777777777777777777777777777777777777777777777777777777777777;A '97 Il*straci8n, Diagrama de fl*1o de *na petici8n >TT+777777777777777777777777777777777777777777777777777777777;= ':7 Il*straci8n, +antalla de inicio77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 <# '=7 Il*straci8n, +antalla de menG principal77777777777777777777777777777777777777777777777777777777777777777777777777777777<A %&7 Il*straci8n, +antalla de form*lario H+ide t* pres*p*estoH77777777777777777777777777777777777777777777777<9 %'7 Il*straci8n, +antalla con teclado n*m!rico77777777777777777777777777777777777777777777777777777777777777777777777777<: %%7 Il*straci8n, Bot8n de opciones7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 <= %;7 Il*straci8n, Bot8n de opciones IIIJ77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 <= %<7 Il*straci8n, Bot8n de opciones IIIIJ7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 #& %#7 Il*straci8n, +antalla con teclado de correo electr8nico7777777777777777777777777777777777777777777777777777#' %A7 Il*straci8n, +antalla de opciones H ocal/ateH77777777777777777777777777777777777777777777777777777777777777777777#% %97 Il*straci8n, +antalla de preferencias777777777777777777777777777777777777777777777777777777777777777777777777777777777777 #; %:7 Il*straci8n, +antalla de preferencias IIIJ7777777777777777777777777777777777777777777777777777777777777777777777777777777#; %=7 Il*straci8n, +antalla de preferencias II-J77777777777777777777777777777777777777777777777777777777777777777777777777777#< ;&7 Il*straci8n, +antalla de preferencias IIIIJ777777777777777777777777777777777777777777777777777777777777777777777777777777#< ;'7 Il*straci8n, +antalla HForm*lario no vlidoH777777777777777777777777777777777777777777777777777777777777777777777777## ;%7 Il*straci8n, 3so de K3sar mis preferenciasL7777777777777777777777777777777777777777777777777777777777777777777777777## ;;7 Il*straci8n, BGsD*eda de categora777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 #A ;<7 Il*straci8n, +antalla HB*scar por categoraH777777777777777777777777777777777777777777777777777777777777777777777777#A ;#7 Il*straci8n, +antalla de form*lario de H5*dan/asH777777777777777777777777777777777777777777777777777777777777#9 ;A7 Il*straci8n, Form*lario con campo de fecCa777777777777777777777777777777777777777777777777777777777777777777777777#: ;97 Il*straci8n, Form*lario con campo de fecCa IIIJ777777777777777777777777777777777777777777777777777777777777777777#: ;:7 Il*straci8n, +antalla de !Mito77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 #=
+gina A de A=
&' Introducci(n
El o$1etivo de este apartado es presentar el pro0ecto de fin de grado 0 descri$ir de forma $reve c*les Can sido los motivos por los D*e se Ca reali/ado el pro0ecto" los o$1etivos planteados 0 *na estr*ct*ra de la memoria D*e se Ca llevado a ca$o para descri$ir el pro0ecto7 Adicionalmente se aEade *n glosario de t!rminos7
&'& Moti)!ci(n
El principal motivo de la reali/aci8n de este pro0ecto es $*scar de manera gil *n frame(or) de desarrollo de aplicaciones (e$ compati$le con el mMimo nGmero de dispositivos7 Esto incl*0e dispositivos tradicionales como el ordenador personal disponi$le en la ma0ora de Cogares desde Cace aEos 0 dispositivos m8viles con acceso a Internet con gran a*ge en los Gltimos aEos7 El pro$lema s*rge a la Cora de desarrollar para dispositivos m8viles7 4ada *no de ellos necesita *na aplicaci8n con *n entorno de desarrollo distinto" *n leng*a1e de programaci8n distinto" etc7 Esto o$liga a derivar ese desarrollo a *na empresa especiali/ada o a Cacer *na gran inversi8n de aprendi/a1e de cada *na de las tecnologas para a$arcar el ma0or nGmero de dispositivos m8viles7 Gracias al pro0ecto" no se necesita desarrollar en cada dispositivo m8vil7 3n Gnico desarrollo es s*ficiente para todos los dispositivos7 N lo ms venta1oso de todo, se sig*en *tili/ando los mismos leng*a1es de programaci8n D*e en los dispositivos tradicionales7
+gina 9 de A=
4on lo c*al la c*rva de aprendi/a1e es mnima para desarrollar en estos dispositivos7 +or tanto" la necesidad de ser compati$le con el ma0or nGmero de dispositivos 0 conseg*ir D*e la c*rva de aprendi/a1e sea mnima para D*e esto sea posi$le" son los dos grandes motivos por los c*ales se Ca llevado a ca$o el tra$a1o de fin de grado D*e descri$e el presente doc*mento7
En el capt*lo #" E)!lu!ci(n 1 r #ult!do#" se m*estra detalladamente la $atera de pr*e$as reali/ada al sistema en s* totalidad 0 D*e permitir validar los reD*isitos identificados en la fase de anlisis" 0 concl*ir el tra$a1o con !Mito7 En el capt*lo A" E+ -0lo d u#o" se enseEar la aplicaci8n m8vil de e1emplo" mostrando grficamente todas las opciones disponi$les D*e se Can aplicado" 0 eMplicando c8mo Ca0 D*e solicitar *n pres*p*esto de manera satisfactoria en el sistema7 En el capt*lo 9" Pl!ni$ic!ci(n 1 0r #u0u #to" se eMpondr la planificaci8n detallada D*e se seg*ir en el desarrollo del tra$a1o" as como el pres*p*esto" D*e se eMplicar por partes" 1*stificando los costes de personal" Card(are 0 soft(are" e informando del coste total del tra$a1o" incl*0endo $eneficios 0 margen de riesgo7 En el capt*lo :" Conclu#ion # 0 lneas f*t*ras" se recogern las concl*siones posteriores a la reali/aci8n del tra$a1o" as como *na lista de posi$les aspectos amplia$les en versiones posteriores" o lneas de investigaci8n en las D*e se p*ede tra$a1ar para la me1ora constante de la aplicaci8n7 Finalmente" en el capt*lo =" Bi"lio%r!$!" se mostrarn todas las f*entes de informaci8n cons*ltadas d*rante el proceso de desarrollo del tra$a1o7
+gina = de A=
Este protocolo va a ser importante para la aplicaci8n (e$ a la Cora de com*nicarse" 0 para ello ser necesario implementar el frame(or) para D*e permita Cacer peticiones >TT+7 .e trata de *n reD*isito imprescindi$le" 0a D*e el cliente para la aplicaci8n (e$ o$tiene toda la informaci8n a trav!s de Internet" 0 todas las acciones D*e se p*eden reali/ar desde la interfa/ reD*ieren llamadas al servidor7 EMisten dos tipos de peticiones necesarias, 3ET, petici8n de la representaci8n de *n rec*rso concreto7 El servidor D*e va a reci$ir las peticiones del dispositivo c*enta con *n A+I por 3R " 0 en las peticiones de
+gina '& de A=
este tipo se enc*entran pares claveFvalor separados por B D*e contienen los parmetros7 a ma0or parte de las peticiones de la aplicaci8n se reali/arn con este sistema7 POST, al ig*al D*e con GET" con este tipo de petici8n se p*eden pedir rec*rsos" pero tiene otras f*nciones7 as peticiones +O.T se s*elen emplear para enviar los res*ltados de *n form*lario" 0a D*e no tiene la limitaci8n del tamaEo mMimo por arg*mento D*e tiene GET I%#A caracteresJ 0 adems as no se m*estran en la 3R los datos enviados" 0a D*e van incl*idos en el c*erpo del mensa1e7
*'* 5TML6
>T5 # I>0perTeMt 5ar)*p ang*age" versi8n #J es la D*inta revisi8n importante del leng*a1e $sico de la @orld @ide @e$" >T5 7 >T5 # especifica dos variantes de sintaMis para >T5 , *n QclsicoR >T5 IteMtPCtmlJ" la variante conocida como >T5 # 0 *na variante O>T5 conocida como sintaMis O>T5 # D*e de$er ser servida como O5 IO>T5 J IapplicationPMCtmlSMmlJ7 Esta es la primera ve/ D*e >T5 0 O>T5 se Can desarrollado en paralelo7 Todava se enc*entra en modo eMperimental" lo c*al indica la misma @;4T a*nD*e 0a es *sado por mGltiples desarrolladores (e$ por s*s avances" me1oras 0 venta1as7 '7 Il*straci8n, ogo >T5 # Al no ser reconocido en vie1as versiones de navegadores por s*s n*evas etiD*etas" se le recomienda al *s*ario comGn act*ali/ar a la versi8n ms n*eva" para poder disfr*tar de todo el potencial D*e provee >T5 #7 El desarrollo de este leng*a1e de marcado es reg*lado por el 4onsorcio @;47 Nu )o# l - nto# >T5 # esta$lece *na serie de n*evos elementos 0 atri$*tos D*e refle1an el *so tpico de los sitios (e$ modernos7 Alg*nos de ellos son t!cnicamente similares a las etiD*etas UdivV 0 UspanV" pero tienen *n significado semntico" como por e1emplo UnavV I$loD*e de navegaci8n del sitio (e$J 0 UfooterV7 Otros elementos proporcionan n*evas f*ncionalidades a trav!s de *na interfa/ estandari/ada" como los elementos Ua*dioV 0 UvideoV7 5e1oras en el elemento UcanvasV" capa/ de renderi/ar en los navegadores ms importantes I5o/illa" 4Crome" Opera" .afari e IEJ elementos ;D7 Alg*nos elementos de >T5 <7&' Can D*edado o$soletos" incl*0endo elementos p*ramente de presentaci8n" como UfontV 0 UcenterV" c*0os efectos son mane1ados por el 4..7 Tam$i!n Ca0 *n renovado !nfasis en la importancia del scripting DO5 para el comportamiento de la (e$7 as novedades frente a >T5 <7&' son las sig*ientes, Incorpora etiD*etas Icanvas %D 0 ;D" a*dio" videoJ con codecs para mostrar los contenidos m*ltimedia7 Act*almente Ca0 *na l*cCa entre imponer codecs li$res I@e$5 S -+:J o privados I>7%A<P5+EGF< A-4J7
+gina '' de A=
EtiD*etas para mane1ar grandes con1*ntos de datos, Datagrid" Details" 5en* 0 4ommand7 +ermiten generar ta$las dinmicas D*e p*eden filtrar" ordenar 0 oc*ltar contenido en cliente7 5e1oras en los form*larios7 N*evos tipos de datos Ie5ail" n*m$er" *rl" datetime WJ 0 facilidades para validar el contenido sin Javascript7 -isores, 5atC5 If8rm*las matemticasJ 0 .-G Igrficos vectorialesJ7 En general se de1a a$ierto a poder interpretar otros leng*a1es O5 7 Drag B Drop7 N*eva f*ncionalidad para arrastrar o$1etos como imgenes7
*', P5P
+>+ I+>+ >0perteMt +reFprocessorJ es *n leng*a1e de programaci8n interpretado" diseEado en '==< para la creaci8n de pginas (e$ dinmicas7 .iendo m*ltiplataforma 0 teniendo *n gran parecido con los leng*a1es ms com*nes de programaci8n estr*ct*rada permiten D*e el aprendi/a1e sea m*0 corto7 Todo esto 1*nto con la facilidad de instalaci8n Ci/o D*e +>+ cogiera fama m*0 rpidamente7 %7 Il*straci8n, ogo +>+ 4*ando el cliente reali/a *na petici8n al servidor para D*e le enve *na pgina (e$" el servidor e1ec*ta el int!rprete de +>+ procesando el script solicitado 0 generando el contenido de manera dinmica7 as caractersticas ms importantes D*e Cacen D*e +>+ destaD*e entre todas ellas son, eng*a1e m*ltiplataforma7 Orientado al desarrollo de (e$ dinmicas con acceso a informaci8n de $ase de datos7 .oporte con diferentes tipos de servidores de $ases de datos" como por e1emplo 50.? 7 Integraci8n con li$reras eMternas Cace D*e la f*ncionalidad a*mente $astante7 48digo invisi$le al *s*ario D*e lo solicita" programaci8n seg*ra 0 confia$le7 +ermite aplicar t!cnicas de programaci8n orientada a o$1etos7 No reD*iere definici8n de tipos" sino D*e decide en periodo de e1ec*ci8n7 5ane1o de eMcepciones7 3so li$re7
+or todo esto se Ca elegido s* *so como leng*a1e para la programaci8n de las distintas f*nciones 0 procedimientos7 .e Can eMplotado al mMimo las posi$ilidades de este leng*a1e creando *na programaci8n orientada a o$1etos para la gesti8n de la $ase de datos7 De cara al pro0ecto +>+ ser el encargado de e1ec*tar toda la l8gica del programa" siendo el controlador D*e medie entre las vistas 0 el modelo de $ases de datos7
+gina '% de A=
*'2 M1S7L
50.? es *n sistema de gesti8n relacional" m*ltiCilo 0 m*lti*s*ario con ms de seis millones de instalaciones7 El o$1etivo de la empresa en el momento de s* creaci8n en '==# f*e seg*ir con el estndar SQL" sin sacrificar la velocidad" fia$ilidad o *sa$ilidad7 A lo largo de los aEos Ca ido convirti!ndose en el gestor ms pop*lar del m*ndo por s* rendimiento" eficiencia 0 facilidad de *so7 .*s caractersticas ms importantes son, Implementaci8n m*ltiCilo7 .oporte en el tipo de datos7 +orta$ilidad entre sistemas7 B*en nivel de seg*ridad7
.* p*nto f*erte es *na gran aceptaci8n" de$ido a la c*al eMisten infinidad de li$reras para *na gran cantidad de leng*a1es de programaci8n7 En c*anto a la licencia" 50.? es de *so li$re 0 c8digo a$ierto pero Oracle tiene el cop0rigCt so$re ese c8digo7 >a0 varios tipos de gesti8n dentro del propio 50.? " entre los D*e destacan dos" 50I.A5 0 InnoDB7 En el caso de 50I.A5" tecnologa *sada por defecto" se da *na rpida lect*ra al *tili/ar el motor no transaccional 0a D*e no tiene D*e Cacer compro$aciones de integridad referencial ni $loD*ear las ta$las por a*sencia de atomicidad" pero p*ede provocar pro$lemas de integridad en entornos de alta conc*rrencia en la modificaci8n7 En seg*ndo caso" InnoDB" es la tecnologa op*esta" soporta las transacciones tipo A4ID 0 $loD*eo de registros 1*nto con la integridad referencial" ofreciendo *na fia$ilidad 0 consistencia a cam$io de *n rendimiento menor7
+gina '; de A=
+gina '< de A=
R cur#o# 3n concepto importante en RE.T es la eMistencia de rec*rsos Ielementos de informaci8nJ" D*e p*eden ser accedidos *tili/ando *n identificador glo$al I*n Identificador 3niforme de Rec*rso o 3RI" de s*s siglas en ingl!sJ7 +ara manip*lar estos rec*rsos" los componentes de la red Iclientes 0 servidoresJ se com*nican a trav!s de *na interfa/ estndar I>TT+J e intercam$ian representaciones de estos rec*rsos Ilos ficCeros D*e se descargan 0 se envanJ7 a petici8n p*ede ser tramitada por c*alD*ier nGmero de conectores Ipor e1emplo clientes" servidores" cacC!s" tGneles" etc7J pero cada *no lo Cace sin Hver ms allH de s* propia petici8n Ilo D*e se conoce como separaci8n en capas" otra restricci8n de RE.T" D*e es *n principio comGn con m*cCas otras partes de la arD*itect*ra de redes 0 de la informaci8nJ7 As" *na aplicaci8n p*ede interact*ar con *n rec*rso conociendo el identificador del rec*rso 0 la acci8n reD*erida" no necesitando conocer si eMisten cacC!s" proM0s" cortaf*egos" tGneles o c*alD*ier otra cosa entre ella 0 el servidor D*e g*arda la informaci8n7 a aplicaci8n" sin em$argo" de$e comprender el formato de la informaci8n dev*elta Ila representaci8nJ" D*e es por lo general *n doc*mento >T5 o O5 " a*nD*e tam$i!n p*ede ser *na imagen o c*alD*ier otro contenido7
+gina '# de A=
+gina 'A de A=
+7u r1 Mo"il 1?*er0 5o$ile es *na li$rera de Javascript optimi/ada para (e$ en m8viles D*e act*almente est siendo desarrollada por el eD*ipo del pro0ecto 1?*er07 El desarrollo se centra en crear *n frame(or) compati$le con el ma0or nGmero de smartpCones o #7 Il*straci8n, ogo de 1?*er0 5o$ile ta$lets de$ido a la gran Ceterogeneidad D*e Ca0 en el mercado de estos dispositivos m8viles7 Es compati$le con otros frame(or)s de aplicaciones para m8vil como +ConeGap" @or)ligCt 0 otros7 .*s caractersticas ms importantes son, 4ompati$le con la ma0ora de las plataformas m8viles como la ma0ora de los navegadores, iO." Android" Blac)$err0" @e$O." .0m$ian" @indo(s +Cone 9" 0 ms7 4onstr*ido so$re el nGcleo 1?*er0" para D*e la c*rva de aprendi/a1e sea mnima para desarrolladores familiari/ados con la sintaMis de 1?*er07 3n frame(or) de temas D*e permite personali/ar *no rpidamente7 Dependencias limitadas 0 ligero D*e optimi/an s* velocidad77 El mismo c8digo de $ase escalar el tamaEo a*tomticamente a c*alD*ier pantalla7 +osi$ilidad de navegaci8n entre pginas por AJAO con animaciones en las transiciones de pgina 3I (idgets optimi/ados para tctil 0 para D*ien descono/ca la plataforma7
+gina '9 de A=
*': ;SON
J.ON se corresponde con las siglas JavaScript Object Notation 0 es *n formato ligero para el intercam$io de datos entre distintas partes7 Es *n leng*a1e m*0 sencillo de leer 0 escri$ir por las personas" 0 fcil de ser anali/ado sintcticamente 0 ser generado por mD*inas7 A*nD*e es *n s*$con1*nto de la notaci8n de Java.cript" J.ON es *n formato de teMto completamente independiente de Java.cript o c*alD*ier otro leng*a1e de programaci8n7 os mensa1es J.ON se constr*0en sig*iendo dos estr*ct*ras, 3na colecci8n de pares nom$rePvalor7 En varios leng*a1es" esto eD*ivale a *n object" record" struct" dictionary" hash table" keyed list o associative array7 3na lista de valores ordenados7 En m*cCos leng*a1es" eD*ivale a *n array" vector" list o sequence7
En J.ON" los mensa1es toman la forma de object 0 array respectivamente" 0 se descri$en del sig*iente modo, 3n object es *n con1*nto no ordenado de pares nom$rePvalor7 3n object comien/a con X Illave i/D*ierdaJ 0 termina con Y Illave derecCaJ7 4ada nom$re es seg*ido por , Idos p*ntosJ 0 el par nom$rePvalor separados por " IcomaJ7
A7 Il*straci8n, 4onstr*cci8n de *n J.ON o$1ect 3n array es *na colecci8n ordenada de valores7 3n array empie/a con el carcter Z IcorcCete i/D*ierdoJ 0 termina con [ IcorcCete derecCoJ7 os valores estn separados entre s por " IcomaJ7
+gina ': de A=
os objects 0 arrays necesitan de strings 0 values para contener informaci8n Gtil7 .e forman del sig*iente modo,
3n string es *na colecci8n de cero o ms caracteres 3nicode" env*eltos entre H Icomillas do$lesJ7 3n string de J.ON es m*0 similar a *no de 4 o Java" p*di!ndose *tili/ar escapes de $arra invertida I\J7
+gina '= de A=
3n value p*ede ser *n string entre H Icomillas do$lesJ" *n number" true o false o null" *n object o *n array7 Estas estr*ct*ras p*eden anidarse7
=7 Il*straci8n, Opciones vlidas para la formaci8n de *n val*e en J.ON 3n number es m*0 similar a *n nGmero de Java o 4" eMcept*ando D*e el formato octal 0 CeMadecimal no se *tili/an7
+gina %& de A=
+gina %' de A=
Pl!t!$or-!# #o0ort!d!#
';7 Il*straci8n, +lataformas soportadas +ConeGap act*almente soporta para desarrollar en sistemas operativos como Apple iO." Google Android" >+ (e$O." 5icrosoft @indo(s +Cone" No)ia .0m$ian O. RI5 Blac)Berr07 .oporta versiones recientes como Blac)Berr0 # 0 A 0 @indo(s +Cone 9" para la c*al est siendo implementado act*almente7 Bada Iel sistema operativo *sado por .ams*ng @ave .:#&&&J tendr soporte m*0 pronto7 a sig*iente ta$la m*estra las caractersticas D*e soporta en cada *no de los sistemas operativos Ilos ms importantesJ,
C!r!ct r#tic!# Aceler8metro 4mara BrG1*la 4ontactos ArcCivo Geolocali/aci8n 5edia Red ;G P @iFi Notificaci8n de alerta Notificaci8n de sonido Notificaci8n de vi$raci8n Almacenamiento Escner Barcode
iP=on ,3S> . . . . . . . . . . . . .
Android &'?> . . . . . . . . . . . . .
+gina %% de A=
*'E S-!rt1 ,
.mart0 es *n motor de plantillas para +>+" es decir" separa el c8digo +>+" como l8gica de negocios" del c8digo >T5 " como l8gica de presentaci8n" 0 genera contenidos (e$ mediante la colocaci8n de etiD*etas .mart0 en *n doc*mento7 .e enc*entra $a1o '<7 Il*straci8n, ogo de .mart0 la icencia +G$lica General Red*cida de GN37 Es comGn D*e en grandes pro0ectos el rol de diseEador grfico 0 el de programador sean c*$iertos por personas distintas" sin em$argo la programaci8n en +>+ tiene la tendencia de com$inar estas dos la$ores en *na persona 0 dentro del mismo c8digo" lo D*e trae consigo grandes dific*ltades a la Cora de cam$iar alg*na parte del diseEo de la pgina" p*es se tiene D*e escar$ar entre los scripts para modificar la presentaci8n del contenido" .mart0 tiene como o$1etivo sol*cionar este pro$lema7 .*s caractersticas principales son, EMpresiones reg*lares B*cles foreacC" (Cile .entencias condicionales if" elseif" else 5odificadores de varia$les Ipor e1emplo, X]varia$le^nl%$rYJ F*nciones creadas por el *s*ario Eval*aci8n de eMpresiones matemticas en la plantilla
EMisten ms sistemas de plantillas para +>+" pero !ste es de los ms avan/ados 0 con ms frec*encia de desarrollo7 Tam$i!n Ca0 detractores de estas t!cnicas D*e alegan D*e las mismas Cacen en cierta medida *n grado ms comple1o el desarrollo (e$" por la necesidad de aprender *n Ipse*doJ leng*a1e ms7 os detractores de esta idea se $asan en el CecCo de D*e" precisamente" el leng*a1e +>+ naci8 como *n leng*a1e rpido para Cacer desarrollos (e$ a peD*eEa escala7 A medida van s*rgiendo sistemas de separaci8n en capas D*e intentan disciplinar *n poco las metodologas de programaci8n env*eltas en el desarrollo con +>+" pero D*e no Cacen otra cosa D*e acercarse ms 0 ms a otras Cerramientas 0a eMistentes en otros entornos de desarrollo ms comple1os 0 pensados desde s*s orgenes para pro0ectos ms grandes" como p*eden ser J%EE IJavaJ" 7NET I4_J o D1ango I+0tConJ7
+gina %; de A=
+gina %< de A=
4omo motor de plantillas para +>+ se eligi8 S-!rt1 ," el c*al es de los ms *sados 0 de los ms veteranos7 ?*i/ no es el motor ms rpido de todos" pero en esta ocasi8n se Ca valorado ms s* esta$ilidad 0 s* veterana frente a velocidad de proceso7 Adems" s* sintaMis es m*0 familiar a >T5 o +>+" lo c*al la c*rva de aprendi/a1e es mnima 0 tiene m*cCsimas ms f*nciones 0a definidas" a diferencia de otros motores de plantillas como .avant7
+gina %# de A=
,' An.li#i#
A la Cora de reali/ar *n tra$a1o de fin de grado Ca0 D*e tener m*0 presente c*al es el fin de este" as como Ca$er prof*ndi/ado en el dominio so$re el D*e versa7 Estos dos factores son los D*e generan los reD*isitos del sistema" D*e son el comien/o de todo pro0ecto7 +ara comen/ar se presentar *na descripci8n general de la aplicaci8n (e$ diseEada e implementada en este Tra$a1o de Fin de Grado" en la c*al" 0a se esta$lecen los reD*isitos $sicos de la misma" para seg*ir con *na ms detallada7 Estas descripciones son el res*ltado del est*dio reali/ado so$re el dominio e incl*0e las primeras decisiones" restricciones 0 limitaciones tomadas" todas ellas con el fin de definir distintos reD*isitos" lo ms detallados posi$le7 A contin*aci8n se descri$irn de manera formal los reD*isitos de la aplicaci8n" sin olvidar D*e estos 1*egan *n papel m*0 importante en el desarrollo del resto del tra$a1o" p*esto D*e son el p*nto de referencia para alcan/ar de la forma ms satisfactoria posi$le el res*ltado deseado7 Finalmente mencionar D*e en el desarrollo del presente tra$a1o se Ca go/ado de *na gran li$ertad" por lo D*e ciertos reD*erimientos Can s*rgido d*rante fases ms avan/adas del desarrollo del tra$a1o" as como otros se Can visto modificados o Can sido adaptados7
+gina %A de A=
+gina %9 de A=
+gina %: de A=
+gina %= de A=
RF3F&&&< El frame(or) de$e implementar dilogos de confirmaci8n en dispositivo m8vil 0 en navegador (e$7 Esencial 5edia .in cam$ios Al*mno #7 Ta$la, ReD*isito f*ncional RF3F&&&<
RF3F&&&# El frame(or) de$e permitir crear form*larios adaptados a dispositivos m8viles de forma gil7 Esencial Alta .in cam$ios Empresa A7 Ta$la, ReD*isito f*ncional RF3F&&&#
ID Descripci8n
RF3F&&&A El frame(or) de$e implementar validaci8n de datos en los form*larios IteMto" tel!fono" c8digo postal" etc7J a trav!s de la f*ncionalidad del estndar >T5 # 0 Java.cript7 Tam$i!n se validarn estos datos en el servidor7 Esencial Alta .in cam$ios Empresa 97 Ta$la, ReD*isito f*ncional RF3F&&&A
+gina ;& de A=
ID Descripci8n
RF3F&&&9 El frame(or) de$e permitir almacenamiento interno en los dispositivos" para g*ardar informaci8n del tipo claveFvalor7 E1emplo, correo electr8nico" nGmero de tel!fono" *$icaci8n777 Esencial Alta .in cam$ios Empresa :7 Ta$la, ReD*isito f*ncional RF3F&&&9
RF3F&&&: a aplicaci8n m8vil podr mostrar form*larios de todas las secciones Esencial 5edia .in cam$ios Empresa =7 Ta$la, ReD*isito f*ncional RF3F&&&A
+gina ;' de A=
+gina ;% de A=
ID Descripci8n
RNFF&&&< a aplicaci8n m8vil minimi/ar la inserci8n de informaci8n 0a eMistente en el sistema por parte del *s*ario7 4argando las preferencias introd*cidas" rellenando campos con geolocali/aci8n" etc7 Esencial Alta .in cam$ios Empresa ';7 Ta$la, ReD*isito no f*ncional RNFF&&&<
+gina ;; de A=
ID Descripci8n
RREF&&&; a aplicaci8n (e$ ser f*ncional en los sig*ientes navegadores, Internet EMplorer '&S" Google 4Crome '&S" FirefoM <S" .afari #S 0 Opera ''S7 Esencial 5edia .in cam$ios Empresa 'A7 Ta$la, ReD*isito de restricci8n RREF&&&;
+gina ;< de A=
2' Di# /o
i-0l - nt!ci(n
+gina ;# de A=
'A7 Il*straci8n, Estr*ct*ra detallada del sistema 4omo se aprecia en la estr*ct*ra" se divide en las sig*ientes partes, PC Bn!) %!dor @ "DH iP=on H AndroidH Bl!cAB rr1 Dispositivos controlados por los *s*arios D*e acceden al sistema 0 reali/an *na petici8n7 Dependiendo de D*! plataforma realice la petici8n" tendr *na resp*esta adaptada a s* dispositivo de forma transparente" de tal forma D*e el *s*ario no tenga D*e informar al sistema c8mo accede al sistema7 En el caso de los dispotivos m8viles" a trav!s del frame(or) +ConeGap" se instala *na aplicaci8n la c*al solicita *n primer contenido al servidor dependiendo de d8nde se localice el *s*ario7 Fr!- @orA El nGcleo del frame(or) D*e tramita la com*nicaci8n con esa petici8n al sistema e instancia los servicios necesarios para poder reali/ar *na resp*esta adec*ada al dispositivo7
+gina ;A de A=
No solo se encarga de *na resp*esta adec*ada sino D*e tam$i!n reali/a compro$aciones de seg*ridad" como por e1emplo" D*e el *s*ario tenga permisos para acceder a *n rec*rso concreto o *na acci8n concreta7 En caso de D*e la petici8n sea incorrecta o D*e el *s*ario no disponga de los permisos necesarios" es el frame(or) el encargado de procesar *na resp*esta concreta segGn el error al dispositivo7 +ara este tipo de resp*estas se respeta el estndar >TT+ con los c8digos de resp*esta, ;OO, Redirecciones7 Oc*rre c*ando *na pgina Ca sido movida a otra direcci8n7 +*ede ser de forma temporal Ic8digo ;&%J o de forma permanente Ic8digo ;&'J <OO, Errores del cliente7 Oc*rre c*ando *na pgina no eMiste Ic8digo <&<J" *n m!todo no est permitido 0a D*e se reali/a *n GET a *n rec*rso D*e s8lo permite +O.T Ic8digo <&#JT o D*e al rec*rso en concreto el *s*ario no tenga permisos para acceder Ic8digo <&; 0 <&'J7 #OO, Errores del servidor7 Oc*rre c*ando el servidor tiene *n error interno Ie1, *n error fatal de +>+J7 El frame(or) est programado en leng*a1e +>+7 Control!dor Responde a los eventos 0 a las acciones de los *s*arios" e invoca las peticiones al modelo 0 a la vista7 +ara cada rec*rso o acci8n del sistema Ca0 *n controlador7 El controlador enva la informaci8n necesaria D*e necesita la KvistaL para poder generar *na interfa/ al *s*ario7 Es D*ien decide desde D*! dispositivo se solicita la petici8n" 0 por tanto" c8mo se generar el contenido adec*ado al dispositivo7 Mod lo Representaci8n de la informaci8n del sistema7 .e compone de m*cCos patrones de diseEo, 5odelo, Define las propiedades 0 acciones propias de *n o$1eto en concreto en s7 Factor0, Instancia n*evos o$1etos de *n modelo concreto7 Adems" se Can aEadido m!todos D*e no son estrictamente de creaci8n de o$1etos" como encontrar *n o$1eto mediante s* id Gnico o por e1emplo *na colecci8n de o$1etos D*e c*mplan *nas propiedades concretas7 +ersistence, 4apa de persistencia D*e reali/a las cons*ltas a la $ase de datos7 Na sea para cargar los datos de *n o$1eto concreto" para modificarlo" para crear *no n*evo o para eliminarlo7
+gina ;9 de A=
>elper, 4olecci8n de m!todos D*e tienen *na relaci8n directa con el modelo pero no es propio de *na instancia concreta7 +or e1emplo" para cam$iar *n estado de *na colecci8n de o$1etos7
Todos estos patrones de diseEo estn programados en leng*a1e +>+7 B!# d d!to# Donde se almacena la informaci8n de cada o$1eto7 4omo Ca0 m*cCas entidades 0 m*cCa informaci8n almacenada en la aplicaci8n (e$ es necesario disponer de varias $ases de datos para tener *na organi/aci8n 8ptima de todos los datos7 a $ase de datos est $a1o 50.? 7 T #t Na D*e Ca0 m*cCos modelos de o$1etos 0 m*cCas acciones so$re ellos" 0 adems" entre ellos interactGan modificndose *na 0 otra ve/ es importante tener *n entorno de test para poder reali/ar pr*e$as7 Este entorno se compone de pr*e$as *nitarias 0 f*ncionales" donde se evalGa cada m!todo del modelo Iincl*0endo cada patr8n de diseEo como >elper" Factor0" +ersistence" etcJ" cada m!todo del frame(or)" cada controlador 0 cada cons*lta a la $ase de datos7 as pr*e$as f*ncionales estn $asadas en la e1ec*ci8n" revisi8n 0 retroalimentaci8n de las f*ncionalidades previamente diseEadas para el modelo7 as pr*e$as f*ncionales se Cacen mediante el diseEo de pr*e$a D*e $*scan eval*ar cada *na de las opciones con las D*e c*enta el o$1eto7 +or otro lado" las pr*e$as *nitarias son *na forma de pro$ar el correcto f*ncionamiento de *n m!todo de c8digo en concreto7 Esto sirve para aseg*rar D*e cada *no de los m!todos f*ncionen correctamente por separado7 Al estar todo en leng*a1e +>+ se Can reali/ado estos test so$re el frame(or) +>+ 3nit7 Ii#t! 5*estra *na resp*esta en f*nci8n del dispositivo D*e la solicita" 0a sea dispositivo m8vil o *n ordenador personal7 4omo s* nom$re indica" es lo D*e se ve7 Reci$e los datos del controlador 0 KpintaL segGn !stos7 En el caso de *n dispositivo m8vil" pintar el contenido gracias al frame(or) 1?*er0 5o$ile 3I 0 en el caso de *n ordenador personal simplemente ser >T5 7 A*nD*e para am$os casos" se apo0ar en el motor de plantillas .mart0 ;7 En el caso de los form*larios (e$ se Ca diseEado *na plantilla de .mart0 gen!rica para D*e se p*eda o$tener *n form*lario con los elementos necesarios Icampos de teMto" opciones" tipo radio" $otones777J de forma rpida 0 sencilla para minimi/ar el coste
+gina ;: de A=
'97 Il*straci8n, Diagrama de fl*1o de *na petici8n >TT+ '7 El *s*ario desde s* dispositivo reali/a *na petici8n >TT+" la c*al la procesa 0 la enr*ta el frame(or) al controlador correspondiente" llamando al rec*rso 0 acci8n concreta7 %7 El controlador procesa la acci8n solicitada instanciando los o$1etos necesarios a trav!s del modelo" 0 *na ve/ reali/ada la acci8n" enva la informaci8n a la vista para D*e este la m*estre al *s*ario7 ;7 El modelo reali/a *na cons*lta a la $ase de datos para instanciar el o$1eto
+gina ;= de A=
concreto pedido" 0 si no es el caso" instancia *no n*evo7 <7 El controlador dev*elve al frame(or) la vista 0a generada 0 es !ste D*ien se la dev*elve al *s*ario final como resp*esta >TT+7
+gina <& de A=
6'& Entorno d
)!lu!ci(n
os dos entornos en los D*e se Ca tra$a1ado de eval*aci8n del tra$a1o son los sig*ientes, tests de +>+ 3nit 0 *so de la aplicaci8n7
se Can CecCo las modificaciones correctamente" como ig*aldades de propiedades de o$1etos a *n valor concreto7 as pr*e$as f*ncionales tienen la venta1a de D*e todo lo D*e evalGas es del sistema" no s*pones ningGn valor ni se falsea ning*na otra f*ncionalidad7 .on las pr*e$as ms complicadas de programar 0a D*e se evalGa *n proceso comple1o 0 se tiene D*e tener $ien claro el p*nto de partida 0 el res*ltado D*e se Ca de o$tener7 En el caso de las pr*e$as *nitarias se $*sca eval*ar *n m!todo concreto de *n o$1eto7 +ara ello" gracias a la Cerramienta +>+3nit 0 s*s o$1etos K5oc)L se esperan llamadas a o$1etos Kmoc)eadosL7 3n o$1eto Kmoc)eadoL es *n o$1eto D*e interviene en el m!todo I0a sea como arg*mento o noJ 0 se esperan *na serie de llamadas so$re !l7 K5oc)eandoL el o$1eto se consig*e Cacer eMpectaciones so$re m!todos D*e se e1ec*ten so$re s mismo 0 devolver res*ltados for/ados7 De esta forma" evalGas Gnicamente el m!todo D*e se est pro$ando 0 no otros m!todos D*e se s*pone estn pro$ados en otro test" no *na f*ncionalidad completa7 Al ig*al D*e en el las pr*e$as f*ncionales" se p*eden comparar tam$i!n los res*ltados de la pr*e$a con los esperados7 En am$os casos se p*eden reali/ar pr*e$as donde se f*erce *n error7 4omo por e1emplo D*e *n o$1eto no p*eda cam$iar *na propiedad en *n momento dado7 .on casos D*e n*nca de$en oc*rrir en prod*cci8n pero D*e tam$i!n se pr*e$a D*e los errores Ca0an saltado correctamente 0 Ca0an sido Kca/adosL adec*adamente" 0 lo ms importante" no se Ca reali/ado los cam$ios en la propiedad D*e por definici8n no est permitido por s* estado7 De esta forma de eval*aci8n" c*ando se cam$ia algGn modelo de o$1eto la ma0ora de tests D*e tienen relaci8n con este o$1eto Can de ser adaptados al n*evo concepto de modelo7 As" en todo momento" el sistema adD*iere *na seg*ridad ante cam$ios f*t*ros7
Adoptando *n rol de *s*ario 0 mediante Cerramientas de desarrollo (e$ a$iertas Iconsola Javascript en el navegador" inspector de elementos >T5 del DO5 de la pgina" anali/ador de trfico >TT+" etc7J como la consola de Google 4Crome o el pl*gFin Fire$*g de FirefoM se Ca podido eval*ar D*e todo f*ncionara correctamente7 En el caso de la aplicaci8n m8vil se vea el comportamiento de la aplicaci8n se Caca a trav!s de la Cerramienta ogcat D*e proporciona Android .Da en Eclipse 0 se Ca compro$ado D*e el comportamiento del sistema sea el esperado7
+gina <% de A=
6'* R #ult!do#
+>+3nit reali/a las pr*e$as *na a *na 0 m*estra en c*les Ca ido correctamente los tests" as Casta ms de ;&&& pr*e$as distintas7 En el caso de las pr*e$as f*ncionales" mostrara algGn error de res*ltados inesperados" en cam$io" en las pr*e$as *nitarias mostraras errores de res*ltados inesperados e incl*so de m!todos D*e Can e1ec*tado 0 no se Can esperado" o 1*sto al contrario" m!todos D*e espera$an ser llamados 0 no se Ca dado el caso7 >asta la fecCa" todas las pr*e$as se reali/an con !Mito7 os res*ltados tras el *so de la aplicaci8n Can sido satisfactorios 0 los res*ltados o$tenidos 0 f*ncionamiento del sistema Ca sido el esperado en todo momento7
+gina <; de A=
+gina << de A=
':7 Il*straci8n, +antalla de inicio En primer l*gar aparece esta pantalla Iil*straci8n anteriorJ para preg*ntar al *s*ario desde D*! pas se conecta7 Esta pgina es provisional 0a D*e es la D*e determina a D*! servidor conectarse" si al de KDesarrolloL" al servidor de KEspaEaL o al servidor de K3nited .tatesL7 En este caso" elegimos el servidor de desarrollo7
+gina <# de A=
'=7 Il*straci8n, +antalla de menG principal a il*straci8n anterior m*estra c8mo es el menG principal de la aplicaci8n donde se p*ede elegir entre dos opciones, K+ide t* pres*p*estoL D*e sirve para pedir *n pres*p*esto directamente se trate del sector o categora D*e sea7 KB*sca por categorasL D*e sirve para $*scar entre alg*na categora o sector 0 definir con ms detalle D*! es lo D*e necesita el *s*ario7
Arri$a a la derecCa Ca0 *n $ot8n de KOpcionesL" pantalla la c*al se mostrar ms Cacia delante" 0a D*e" es *n $ot8n D*e aparece d*rante casi toda la aplicaci8n para poder editarlas c*ando el *s*ario as lo dese!7
+gina <A de A=
%&7 Il*straci8n, +antalla de form*lario H+ide t* pres*p*estoH 4omo se p*ede o$servar en la il*straci8n anterior se pide al *s*ario *na serie de datos para D*e solicite s* pres*p*esto7 Arri$a dispone de dos opciones" o locali/arse mediante s* posici8n de geolocali/aci8n del dispositivo 0 as rellenar varios datos del form*lario o ir Cacia atrs" a la pantalla de inicio7
+gina <9 de A=
%'7 Il*straci8n, +antalla con teclado n*m!rico 4ada campo del form*lario es de *n tipo7 En el caso de los campos de tipo n*m!ricos" se ofrece ma0or comodidad al *s*ario mostrando *n teclado n*m!rico7 De esta forma" como se m*estra en la il*straci8n" es ms sencillo 0 fcil insertar *n c8digo postal7
+gina <: de A=
+gina <= de A=
%<7 Il*straci8n, Bot8n de opciones IIIIJ 4*ando se eli1a *na provincia" a*tomticamente el dispositivo Car *na cons*lta al servidor 0 cargar las reas correspondientes a esa provincia en el sig*iente $ot8n7 El res*ltado se p*ede o$servar en la anterior il*straci8n7
+gina #& de A=
%#7 Il*straci8n, +antalla con teclado de correo electr8nico En el campo KEFmailL Icorreo electr8nicoJ el teclado se adapta poniendo ms accesi$le el carcter bcb" como se p*ede o$servar en la il*straci8n anterior7
+gina #' de A=
.i el *s*ario p*lsa la opci8n K ocal/ateL anteriormente mostrada" aparece este dilogo D*e se ve en la il*straci8n anterior con las tres opciones, K3sar mis preferenciasL" la c*al carga en el form*lario los datos almacenados en las preferencias de la aplicaci8n" KGeolocali/ar aCoraL" directamente geolocali/a al *s*ario 0 KIr a preferenciasL" el c*al es *n enlace a la pgina de preferencias7
+gina #% de A=
.iendo el s*p*esto D*e el *s*ario Ca p*lsado KIr a preferenciasL aparece la sig*iente pantalla,
En ella" p*ede g*ardar s* correo electr8nico personal donde D*iera reci$ir los pres*p*estos" s* nGmero de tel!fono 0 s* *$icaci8n por defecto" para as" no tener D*e geolocali/ar en todo momento el dispositivo I0a D*e es *n proceso algo lentoJ7
+gina #; de A=
.e geolocali/a al *s*ario con s*mo detalle 0 se le preg*nta si esa es s* posici8n7 En caso afirmativo rellena el form*lario de las preferencias" en caso negativo desecCa la geolocali/aci8n7 .i el *s*ario desear g*ardar s*s preferencias p*lsa el $ot8n KG*ardarL 0 se le redirige a la pgina de donde procede7
+gina #< de A=
.i en ve/ de ir a las preferencias" el *s*ario C*$iera p*lsado K3sar mis preferenciasL los campos del form*lario como la locali/aci8n" el tel!fono 0 el correo se C*$ieran rellenado a*tomticamente Icomo se p*ede o$servar en la il*straci8n sig*iente de la i/D*ierdaJ, F
Al p*lsar KEnviarL se validan los datos introd*cidos 0 se compr*e$a D*e no falte algGn campo o$ligatorio por rellenar7 En caso de D*e algGn campo no se Ca0a rellenado correctamente o algGn campo o$ligatorio no se Ca0a completado" aparece el aviso de la il*straci8n anterior de la derecCa 0 el dispositivo m8vil vi$ra7
+gina ## de A=
.i se elige la opci8n del menG de inicio KB*scar por categoraL aparecera *na lista de sectores donde el *s*ario podra elegir para solicitar pres*p*esto,
a lista de categoras tiene ms de :& elementos" por tanto tiene *n $*scador Kal v*eloL para D*e sea m*cCo ms c8moda la elecci8n" como se p*ede apreciar en la il*straci8n anterior de la derecCa7
+gina #A de A=
.i el *s*ario elige la opci8n K5*dan/asL aparece el sig*iente form*lario con campos m*cCo ms especficos para la categora" facilitando el servicio posterior a la Cora de reci$ir el pres*p*esto,
+gina #9 de A=
+ara los campos de fecCa" se m*estra *n $ot8n D*e a0*da al *s*ario a introd*cir *na fecCa en concreto" como se p*ede o$servar en las il*straciones sig*ientes,
+gina #: de A=
+or Gltimo" tras p*lsar KEnviarL I0 D*e los datos sean correctosJ se reci$e el form*lario en el servidor 0 m*estra *na pgina de !Mito como esta,
+gina #= de A=
& * , 2 6 8 : < E
&: ;U &< ;U &E ;U *? ;U *& ;U ** ;U *, ;U *2 ;U *6 ;U *8 ;U *: ;U *< ;U *E ;U ,? ;U ,& ;U ?& A3
& * , 2 6 8 : < E
?* A3 ?, A3 ?2 A3 ?6 A3 ?8 A3 ?: A3 ?< A3 ?E A3 &? A3 && A3 &* A3 &, A3 &2 A3 &6 A3 &8 A3 &: A3
& * , 2 6 8 : < E
&< A3 &E A3 *? A3 *& A3 ** A3 *, A3 *2 A3 *6 A3 *8 A3 *: A3 *< A3 *E A3 ,? A3 ,& A3 ?& SE ?* SE
& * , 2 6 8 : < E
+gina A' de A=
+gina A% de A=
a ta$la de costes de Card(are D*eda as, 4oncepto >T4 Desire . Ordenador Acer e5acCines +antalla Acer '=L 5ini rat8n Acer 8ptico Teclado Acer Aspire i+Cone ;G. :GB Apple 5acBoo) +ro .ervidor dedicado O-> TOTAL '=7 Ta$la, 4ostes de Card(are 4oste sin I-A ;#& e %#& e 9& e 9e <& e %;& e =#& e %'& e g *so +erodo de 4oste Dedicaci8n dedicado depreciaci8n imp*ta$le '&& g '&& g '&& g '&& g '&& g #& g %& g '&& g % meses % meses % meses % meses % meses ' mes ' mes % meses <: meses <: meses <: meses '% meses '% meses <: meses <: meses ; meses '<"#: e '&"<' e %"=' e '"'A e A"AA e %";= e ;"=# e '<& e &<*H?8 J
+gina A; de A=
4oncepto icencia de 3$*nt* '%7&< icencia de ApacCe .oft(are icencia de +ConeGap icencia de Eclipse icencia de .mart0 ; icencia de +>+ 3nit icencia iO. Developer +rogram icencia Google +la0 5ar)et TOTAL %&7 Ta$la, 4ostes de soft(are
4oste &"&& e &"&& e &"&& e &"&& e &"&& e &"&& e AA"=# e %'"%& e <<H&6 J
+gina A< de A=
+gina A# de A=
<'& Conclu#ion #
En el primer apartado de este doc*mento se descri$en *na serie de o$1etivos D*e se plantearon para la reali/aci8n del tra$a1o de fin de grado" por tanto" a contin*aci8n se eMponen las concl*siones so$re el c*mplimiento de dicCos o$1etivos, .e Ca conseg*ido D*e el desarrollo de *na aplicaci8n (e$ sea gil" 0 D*e no se dediD*e el mnimo de tiempo en las etapas de inicio de *na n*eva aplicaci8n7 Adems" se Ca conseg*ido D*e la ampliaci8n con n*evas pginas o f*ncionalidades de *na aplicaci8n (e$ 0a creada sea tam$i!n desarrollado de forma gil 0 sin afectar a lo anterior 0a desarrollado7 .e Ca conseg*ido D*e las aplicaciones (e$ creadas con el frame(or) del tra$a1o sean compati$le con la ma0ora de dispositivos m8viles desarrollo Gnico para cada *no de ellos7 Adems" las aplicaciones (e$ son compati$les con la ma0ora de
+gina AA de A=
navegadores (e$ en los ordenadores personales7 .e Ca conseg*ido llevar a ca$o todos los o$1etivos planteados mediante el *so de tecnologas dominantes en el mercado la$oral7 Facilitando de esta forma el desarrollo de las aplicaciones (e$7 +or Gltimo" gracias a los anteriores o$1etivos planteados 0 al *so de tecnologas dominantes" se consig*e D*e mediante este frame(or) el desarrollo de aprendi/a1e sea gil 0 sencillo" red*ciendo as la c*rva de aprendi/a1e al mnimo7
Tras Ca$er c*mplido los o$1etivos principales planteados en *n principio" se p*ede llegar a la concl*si8n de D*e se Ca alcan/ado satisfactoriamente los o$1etivos del tra$a1o de fin de grado7 Desde *n p*nto de vista personal" el a*tor de este mismo doc*mento Ca podido compro$ar c8mo el tra$a1o Ca llegado a $*en reca*do 0 se va a dar *n *so real en *n f*t*ro m*0 pr8Mimo" sentando *nas $ases importantes de desarrollo para aplicaciones (e$ f*t*ras sin distinci8n de dispositivos7 Tratndose de *n tra$a1o reali/ado dentro de *n entorno empresarial ser posi$le poder ampliar alg*na f*ncionalidad al sistema e incl*so me1orar alg*na de ellas7 Teniendo por tanto la gratit*d de D*e no es *n tra$a1o D*e D*ede en el olvido7 .e o$tendrn fr*tos en *n periodo $reve de tiempo" 0a sean $eneficios econ8micos como $eneficios a la Cora de desarrollar n*evas aplicaciones7
<'* Ln !# $utur!#
En este apartado se van a presentar posi$les lneas de f*t*ro para el tra$a1o" las c*ales con gran pro$a$ilidad sern est*diadas 0 planteadas para desarrollarse7 4oneMi8n seg*ra por .. 7 En el desarrollo para aplicaciones de dispositivo m8vil no se Ca tenido en c*enta el acceso mediante coneMi8n seg*ra .. al servidor7 Almacenamiento seg*ro7 En el desarrollo para aplicaciones (e$ de dispositivo m8vil el almacenamiento no se reali/a de forma seg*ra 0 la informaci8n va en claro7 En *n principio" la informaci8n D*e se almacena act*almente no se considera m*0 sensi$le si llega a ser desc*$ierta" pero s sera importante en *n f*t*ra solventar esta carencia7 5e1ora de la interfa/ grfica7 a act*al interfa/ grfica D*e proporciona el frame(or) para el dispositivo m8vil carece de personalidad 0 es algo complicado desarollar para me1orarla7 +or tanto" me1orando el frame(or) en este aspecto" se podra conseg*ir *na interfa/ ms fleMi$le para s* desarrollo7 .esiones de *s*ario7 +ermitir D*e en las aplicaciones (e$ para dispositivos m8viles se p*eda mantener *na sesi8n de *s*ario con el servidor7 De tal forma D*e p*eda gestionar s* c*enta 0 reali/ar *na serie de acciones en el sistema dependiendo de s*s permisos7 Todo ello" o$viamente" de *na forma seg*ra7
+gina A9 de A=
E' Bi"lio%r!$!
'7 J.ON7 Java.cript O$1ect Notation" %&&:, Cttp,PP(((71son7orgP %7 5o.0nc" %&'%, Cttp,PP(((7mos0nc7comP ;7 .encCa To*cC" %&'%, Cttp,PP(((7sencCa7comPprod*ctsPto*cC <7 .avant" %&'%, Cttp,PP(((7pCpsavant7comP #7 +>+ 3nit7 5ain page" %&'%, Cttp,PP(((7pCp*nit7deP A7 +>+ 3nit7 5oc) O$1ects" %&'&, Cttp,PP(((7pCp*nit7dePman*alP;7&PenPmoc)Fo$1ects7Ctml 97 >T5 # Roc)s" %&'%, Cttp,PP(((7Ctml#roc)s7comPenP :7 +>+ Doc*mentation" %&'%,
+gina A: de A=
Cttp,PP(((7pCp7netPman*alPenP =7 50.? 7 TCe (orldbs most pop*lar open so*rce data$ase" %&'%, Cttp,PP(((7m0sDl7com '&7 RE.T7 Representational .tate Transfer" septiem$re %&'%, Cttp,PPen7(i)ipedia7orgP(i)iPRepresentational2.tate2Transfer ''7 RE.T7 >o( I eMplained RE.T to m0 (ife" diciem$re %&&<, Cttp,PPtoma0)o7comP(ritingsPrestFtoFm0F(ife '%7 +ConeGap7 ApacCe 4ordova Doc*mentation" agosto %&'%, Cttp,PPdocs7pConegap7comPenP%7&7&PindeM7Ctml ';7 .mart0 ;7 Doc*mentation" agosto %&'%, Cttp,PP(((7smart07netPdocsPenP '<7 >TT+7 ist of >TT+ stat*s codes" agosto %&'%, Cttp,PPen7(i)ipedia7orgP(i)iP ist2of2>TT+2stat*s2codes '#7 1?*er07 Doc*mentation" %&'%, Cttp,PPdocs71D*er07comP5ain2+age 'A7 1?*er0 5o$ile7 Doc*mentation" %&'%, Cttp,PP1D*er0mo$ile7comPdemosP'7'7'P '97 1?*er0 5o$ile7 TCeme Roller" %&'%, Cttp,PP1D*er0mo$ile7comPtCemerollerPindeM7pCp ':7 1?*er0 5o$ile7 And0 5attCe(s7 4reating and *sing c*stom icons" %&'', Cttp,PP(((7and0mattCe(s7netPreadP%&''P&%P';P4reatingFandF*singFc*stomF iconsFinF1?*er0F5o$ile '=7 1?*er0 5o$ile7 DateBoM" %&'%, Cttp,PPdev71tsage7comP1?5FDateBoMP %&7 1?*er07 4*stom Inp*t -alidation Error 5essages" %&'%, Cttps,PPgitC*$7comP1avespiPcivemF1D*er0Fpl*gin %'7 K+ro Javascript TecCniD*es7 RealF(orld Javascript tecCniD*es for tCe modern" professional (e$ developerL7 JoCn Resig" Apress" %&&A %%7 K+ro Javascript Design +atterns7 TCe essentials of o$1ectForiented Javascript programmingL Ross >armes and D*stin Dia/" Apress" %&&:
+gina A= de A=