Faculdade de Engenharia da Universidade do Porto

Offline Web Applications

Enabling offline execution on the WOW! product

Jo˜aoGon¸calves da Costa

Relat´oriode Projecto realizado no Ambitoˆ do Mestrado Integrado em Engenharia Inform´aticae Computa¸c˜ao

Orientador: Teresa Galv˜aoDias (PhD.)

Julho de 2008 c Jo˜aoGon¸calves da Costa, 31 de Julho de 2008 Offline Web Applications

Jo˜aoGon¸calves da Costa

Relat´oriode Projecto realizado no Ambitoˆ do Mestrado Integrado em Engenharia Inform´aticae Computa¸c˜ao

Aprovado em provas p´ublicaspelo j´uri:

Presidente: Pedro Ferreira do Souto (PhD)

Arguente: Artur Pereira (PhD) Vogal: Teresa Galv˜aoDias (PhD)

27 de Julho de 2008

Resumo

Este projecto teve como objectivo o estudo das Offline Web Applications (OWAs) e da sua implementa¸c˜aoem web applications j´aexistentes. Neste ˆambito, foi feita uma avalia¸c˜aoda aplica¸c˜aodesta tecnologia no WOW!, uma plataforma integrada de gest˜aode ordens de trabalho, desenvolvida pela Critical S.A. ao longo dos ´ultimos6 anos, e implementada uma prova de conceito que permite a utiliza¸c˜ao de um conjunto de funcionalidades base desta , independentemente do estado da liga¸c˜ao`aInternet. O conceito das OWAs enquadra-se numa tecnologia de Internet que permite o acesso a um website atrav´esdo browser mesmo na ausˆenciade uma liga¸c˜ao`a rede global, e foi considerado pela revista Technology Review como uma das mais importantes tecnologias emergentes no final de 2007 [Nao08]. O estudo efectuado no WOW! pretende ser um primeiro passo na compreens˜aodos problemas associados `a sua implementa¸c˜aoe respectivas solu¸c˜oese tamb´emda avalia¸c˜aodos benef´ıciosda utiliza¸c˜aodesta tecnologia para os utilizadores finais. A evolu¸c˜aodas tecnologias associadas `aInternet, a que se assiste continua- mente, impulsionou tamb´em evolu¸c˜aoda forma como a informa¸c˜ao´eproduzida, distribu´ıdae armazenada. Surgiram novas web applications oferecendo funcionali- dades de cria¸c˜aoe edi¸c˜aode conte´udos,que trouxeram consigo a vantagem de tornar poss´ıvel o acesso `ainforma¸c˜aoa partir de qualquer lugar, mas tamb´ema desvan- tagem de tornar a liga¸c˜ao`aInternet uma condi¸c˜aonecess´ariapara que isto aconte¸ca. A prolifera¸c˜aodestas aplica¸c˜oes,a crescente utiliza¸c˜aoda Internet [Gro08] e a ades˜ao aos seus servi¸cosindiciam a existˆenciade uma dependˆenciacada vez maior de uma liga¸c˜ao,que nem sempre existe. As OWAs vˆemassim colmatar esta falha, colocando no lado do cliente parte da informa¸c˜aoque at´eagora vinha a ser armazenada no servidor e tornando n˜aos´o poss´ıvel a sua consulta offline, como tamb´emreduzindo a carga no servidor, uma vez que reduz as transferˆenciasde informa¸c˜ao. Pretende-se neste documento apresentar diferentes formas de como a utiliza¸c˜ao da tecnologia OWA pode beneficiar as web applications de hoje, melhorando o seu desempenho e dando-lhes novas possibilidades de execu¸c˜ao,aproximando-as do desk- top.

i ii Abstract

The main purpose of this project was to study the Offline Web Applications (OWAs) and its implementation in existent web applications. With this goal in mind, a study was conducted to use this technology in WOW!, an integrated platform for work orders and work flow management, developed by Critical Software over the last 6 years, and implemented a proof of concept, which enables the use of a base set of functionality for this application, regardless of the internet connection state. The concept of OWAs is connected with internet technology, and allows access to a website using the browser, even if a connection to the internet is not available. This concept was considered by Technology Review as one of the most important emerging technologies in the last quarter of 2007 [Nao08]. This study, conducted over the WOW! platform, is intended to aid in the comprehension of the problems and solutions associated to the use and implementation of OWA, as well as the benefits that it brings to the end user. The Internet and Internet technologies are changing the way in which informa- tion is produced, distributed and stored. New web applications appeared, with new content creation and edition functionalities, and with it, the advantage of infor- mation retrieval from any place and time became possible, but with the condition of Internet connection availability. With Internet use growing every year [Gro08], content creation is starting to move to this new platform. The adoption of web ap- plications for content creation and edition is becoming more popular, and it shows a dependency of a connection that is not always present. The OWAs are a way to solve this problem, putting on the client side part of the information that was traditionally stored on the server, and allows it to be seen and manipulated, and helps reducing the server load. This document intends to present different ways in which this technology can help web applications as we know them, improving the their overall performance and giving them the ability to run on a browser, regardless of the Internet connection availability

iii iv Agradecimentos

A realiza¸c˜aoe os objectivos alcan¸cados neste projecto n˜aoteriam sido poss´ıveis sem a colabora¸c˜aode in´umeraspessoas. Agrade¸coprofundamente a todos os que contribu´ıramdirecta ou indirectamente para o seu sucesso:

A` minha orientadora, Professora Teresa Galv˜aoDias, e ao Project Manager Engenheiro Marcus Neves, que me conduziram e acompanharam no desenvolvimento deste projecto,

A toda a equipa do WOW!, em especial o Pedro Maur´ıcioCosta e o F´abioMatos, que contribu´ırampara a minha a minha integra¸c˜aona Critical Software e que sempre souberam responder a todas as minhas quest˜oes,

A todos os que constituem a CSW Porto, pelo fant´asticoambiente de amizade que me proporcionaram,

Aos colegas de curso e a todos os que me auxiliaram na revis˜aodeste documento,

Os meus sinceros agradecimentos! Jo˜aoGon¸calves da Costa

v vi Conte´udo

1 Introdu¸c˜ao1 1.1 Enquadramento ...... 1 1.2 Motiva¸c˜ao ...... 2 1.3 Ambitoˆ ...... 3 1.4 Objectivos ...... 3 1.5 Estrutura do documento ...... 3

2 Enquadramento do Projecto5 2.1 Evolu¸c˜aodas arquitecturas de software ...... 5 2.1.1 Thin-clients ...... 5 2.1.2 Fat-clients ...... 6 2.1.3 Arquitecturas cliente-servidor ...... 7 2.2 Evolu¸c˜aona Internet ...... 8 2.2.1 P´aginas web est´aticas...... 9 2.2.2 P´aginas web interactivas e p´aginas web dinˆamicas ...... 9 2.2.3 Web 2.0 e Ajax ...... 11 2.3 Offline Web Applications ...... 13 2.4 Compara¸c˜ao...... 13

3 Estado da arte 17 3.1 ...... 17 3.1.1 Arquitectura ...... 17 3.1.2 Goggle Gears em dispositivos m´oveis ...... 20 3.2 Adobe AIR ...... 20 3.2.1 Seguran¸ca ...... 22 3.2.2 Assinatura do c´odigo ...... 22 3.3 Prism ...... 23 3.3.1 XML User Interface Language ...... 23 3.3.2 Prism ...... 25 3.4 HTML 5 ...... 25 3.5 Web applications que usam funcionalidades offline ...... 26 3.5.1 Google Reader e Google Docs ...... 26 3.5.2 Remember the Milk ...... 27 3.5.3 MySpace e WordPress.com ...... 27 3.6 Escolha da tecnologia ...... 28

vii CONTEUDO´

4 Desenvolvimento 33 4.1 Como ficar offline ...... 33 4.1.1 Funcionalidades dispon´ıveis em modo offline ...... 34 4.2 Modos de execu¸c˜ao ...... 35 4.2.1 Modo “utilizador decide” ...... 36 4.2.2 Modo aplica¸c˜aodecide ...... 36 4.2.3 Modo “aplica¸c˜aoassume o estado offline”...... 37 4.3 Sincroniza¸c˜aode dados ...... 38 4.3.1 Quando sincronizar? ...... 39 4.4 WOW!...... 40 4.5 Vis˜aogeral sobre a arquitectura do WOW! ...... 41 4.6 WOW! Offline ...... 42 4.6.1 Modo “aplica¸c˜aodecide” com detec¸c˜aoautom´aticada liga¸c˜ao 43 4.6.2 Implementa¸c˜aodo modo “utilizador decide” ...... 45 4.6.3 Especifica¸c˜aodo modo “aplica¸c˜aoassume o estado offline”.. 48

5 Resultados e Futuros Desenvolvimentos 51 5.1 Resultados Obtidos ...... 51 5.2 Trabalho Futuro ...... 52

6 Conclus˜oes 55 6.1 Conclus˜oes...... 55

Referˆencias 59

A Screenshots 61

viii Lista de Figuras

2.1 Arquitectura de um sistema thin-client em duas camadas (`aesquerda) e em trˆescamadas (`adireita). Note-se a inclus˜aodo servidor (main- frame) na defini¸c˜aodas camadas desta arquitectura, devido `aforte dependˆenciacliente-servidor...... 9 2.2 Arquitectura de um fat-client em duas camadas (`aesquerda) e em trˆescamadas (`adireita)...... 10 2.3 Compara¸c˜aodo modelo de web aplications s´ıncrono,p´aginas est´aticas e interactivas abordados nas sec¸c˜oes 2.2.1e 2.2.2, com o modelo de web applications Ajax (ass´ıncrono)abordado na sec¸c˜ao 2.2.3. Figura adaptada de http: // www. adaptivepath. com/ ...... 15

3.1 Esquema UML do processo efectuado pelos recursos do Gears do tipo ManagedResourceStore para a actualiza¸c˜aodos conte´udosdefinidos no ficheiro manifesto...... 29

4.1 Exemplo de uma arquitectura de uma web application sem uma ca- mada de abstrac¸c˜aode dados. Figura adaptada de http: // gears. google. com/ ...... 33 4.2 Exemplo de uma arquitectura de uma web application com uma ca- mada de abstrac¸c˜aode dados. Figura adaptada de http: // gears. google. com/ ...... 34 4.3 Exemplo de uma arquitectura de uma web application com uma ca- mada de abstrac¸c˜aode dados e um data switch. Figura adaptada de http: // gears. google. com/ ...... 35 4.4 Esquema gr´aficoilustrando uma OWA executando no browser uti- lizando um modo de execu¸c˜aodo tipo “aplica¸c˜aodecide”, com de- tec¸c˜aoautom´aticado estado da liga¸c˜aovia pedidos Ajax ass´ıncronos a cada cinco segundos...... 37 4.5 Detalhe de um conjunto poss´ıvel de estados e respectivas transi¸c˜oes para uma dada ordem de trabalho no WOW!, desde a sua submiss˜ao no sistema at´e`asua conclus˜aoem fecho ou cancelamento. Esta figura representa apenas um exemplo, j´aque o mapa de estados para uma ordem de trabalho ´edinˆamicoe pode ser alterado por um admin- istrador. Figura retirada de uma brochura promocional do WOW!, Critical Software S.A...... 41

ix LISTA DE FIGURAS

4.6 A p´aginainicial do WOW apresenta um resumo das ´ultimasordens de trabalho enviadas e recebidas. Na imagem pode-se observar a transi¸c˜aodo estado online para offline...... 44 4.7 Ilustra¸c˜aodo funcionamento do Gears numa web application que uti- liza um motor Ajax. Os pedidos HTTP ou HTTPS podem ser inter- ceptados e tratados localmente ou podem ser feitos a uma m´aquina remota, consoante se verificarem ou n˜aoas condi¸c˜oesexpressas no ponto 3.1.1. E´ representado um acesso a uma base de dados local (fornecida pelo Gears), mas a sua utiliza¸c˜ao´eopcional...... 45 4.8 Neste exemplo do modo “aplica¸c˜aodecide”, o teste da liga¸c˜ao´efeito ´efeito a cada cinco segundos. O resultado deste teste n˜aoreflecte sempre o estado real da aplica¸c˜ao,podendo levar a aplica¸c˜aoa ter comportamentos indesej´aveis. Na figura assinala-se um per´ıodo de tempo no qual a representa¸c˜aointerna do estado da liga¸c˜aon˜aocor- responde `arealidade...... 46 4.9 P´aginade visualiza¸c˜aodo detalhe de uma ordem de trabalho. . . . . 47 4.10 Esquema UML que expressa os casos de uso do WOW! Offline no modo “utilizador decide”...... 48 4.11 Esquema UML que expressa os casos de uso do WOW! Offline no modo “utilizador decide”...... 49 4.12 Esquema UML que expressa o acto de recolha de dados em modo online e offline, recorrendo ao servidor (modo online) e ao sistema de armazenamento de dados local fornecido pelo Gears (modo offline). 50 A.1 Di´alogoapresentado ao utilizador na primeira activa¸c˜aodas funcional- idades offline no Google Docs & Spreadsheets...... 61 A.2 Na activa¸c˜aodas funcionalidades offline ´etamb´emoferecida a possi- bilidade da cria¸c˜aode alguns atalhos, por exemplo, no ambiente de trabalho...... 62 A.3 O Google Docs mant´ema todo o momento a possibilidade de altera¸c˜ao destas defini¸c˜oes,ou da anula¸c˜aodos servi¸cosoffline para um dado computador...... 62 A.4 Ap´osa instala¸c˜aodo Gears qualquer visita ao Remember The Milk despoleta uma sincroniza¸c˜aoque ocorre automaticamente e sem ne- cessidade de interven¸c˜aopor parte do utilizador...... 63 A.5 Ap´oscompletar a sincroniza¸c˜aode dados, mesmo que a liga¸c˜ao`a Internet seja perdida o Remember the Milk continua dispon´ıvel no browser (com excep¸c˜aodas funcionalidades que pela sua natureza exigem uma liga¸c˜ao,como por exemplo: partilha de tarefas e envio de convites.) ...... 63

x Lista de Tabelas

2.1 Compara¸c˜aoentre thin-clients e fat-clients ...... 7 3.1 Compara¸c˜aodas funcionalidades oferecidas pelo Adobe AIR para as plataformas web e desktop ...... 30 3.2 Resumo da utiliza¸c˜aode tecnologias OWA em algumas web applica- tions consideradas na an´alisedo estado da arte...... 31

xi LISTA DE TABELAS

xii Gloss´ario

fat-client Cliente que n˜aodepende totalmente de um 6–8 servidor central para as suas actividades de processamento e possui frequentemente dispositivos de armazenamento de dados. thin-client Cliente que depende de um servidor central 5–8 para as suas actividades de processamento. web application Sistema web (servidor, rede HTTP, i, iii, browser) onde ac¸c˜oes do utilizador 1–3, (navega¸c˜ao e introdu¸c˜ao de informa¸c˜ao) 11–15, afectam o estado l´ogicoda aplica¸c˜ao. 17–19, 21–23, 27, 28, 33, 36–38, 42, 55, 56

API Application Programming Interface 10, 17, 18, 23, 26, 28 ASP Linguagem interpretada pelo servidor 11 que permite a cria¸c˜ao de p´aginas web dinˆamicas.Desenvolvida pela Microsoft.

BSD Berkeley Software Distribution 28

CSS Cascading Style Sheets 12, 20, 21, 23, 24, 46

DHTML Dynamic HyperText Transfer Protocol 24 DOM Document Object Model 10, 12, 20, 23, 24 DTD Document Type Definition 24

xiii Gloss´ario

ECMAScript Padr˜ao de linguagem de programa¸c˜ao 24 definido pela Ecma International que orig- inou o JavaScript e o JScript.

Flash Conte´udointeractivo de um ficheiro em 21 formato SWF. E´ desenvolvido pela Adobe e visualizado atrav´es do Player. Flex Framework baseada em XML e Action- 21 Script desenvolvida pela Adobe para a pro- grama¸c˜aode Rich Internet Applications (RIA)

GPL GNU General Public License 23

HTML HyperText Markup Language1, 10– 12, 21, 24–26, 49 HTTP HyperText Transfer Protocol2, 26

JMS E´ uma API em Java que permite a troca de 42 mensagens entre componentes de software. JSON JavaScript Object Notation, permite a 12, 18, troca de dados, codificados num formato 28, 34 de texto de simples leitura

LGPL GNU Lesser General Public License 23

Mozilla Prism Browser simplificado e “interpretador” de 25 eXtensible User Interface Language (XUL) (tamb´emdesignado por XULRunner) que acolhe web applications sem a interface gr´aficahabitual de um browser. MPL 23

OCA Occasionally Connected Application 39 OWA Offline Web Applicationi, iii, 2–5, 15, 17, 25, 26, 28, 31, 33, 36, 51, 52, 55, 56

PDF Portable Document Format 21

xiv Gloss´ario

PHP Linguagem interpretada pelo servidor 11 que permite a cria¸c˜ao de p´aginas web dinˆamicas,mas que pode tamb´emser in- vocada a partir da linha de comandos. p´agina web est´atica P´agina web que devolve sempre a mesma 5,9 resposta a todos os pedidos, para todos os utilizadores e em qualquer contexto.

RIA Rich Internet Applications web appli- 5, 15, cations que apresentam funcionalidades 20, 28 semelhantes ´as desktop applications, mas que mant´ema informa¸c˜aono lado do servi- dor RSS Really Simple Syndication 27

SLA Service Level Agreement 40 SQLite Segundo a defini¸c˜aooficial: SQLite is a 17 software library that implements a self- contained, serverless, zero-configuration, transactional SQL database engine.. SSB Site Specific Browser 25 SSL Secure Sockets Layer 22 SWF ShockWave Flash 21

URL Uniform Resource Locator 18

VPN Virtual Private Network 38

WOW! Work Orders Web. Plataforma de gest˜ao i, iii, de ordens de trabalho e do seu fluxo, de- 28, 33, senvolvida pela Critical Software S.A. 40–43, 45, 51–53, 56 WWW 11, 12, 14

XBL eXtensible Binding Language 24 XHTML eXtensible HyperText Markup Language 12 XML eXtensible Markup Language 11, 12, 23, 24, 28 XSLT eXtensible Stylesheet Language Transfor- 12 mation XUL eXtensible User Interface Language xiv, 23–25

xv Gloss´ario

xvi Cap´ıtulo1

Introdu¸c˜ao

Neste cap´ıtuloenquadra-se o tema do projecto, introduzindo alguns dos conceitos nos quais se baseia. Apresentam-se as motiva¸c˜oes,ˆambito, objectivos e a estrutura deste documento.

1.1 Enquadramento

A Internet foi originalmente concebida para ser um espa¸code partilha de in- forma¸c˜ao,onde pessoas (atrav´esde m´aquinas)pudessem comunicar. Na sua origem, as p´aginaseram est´aticas,constitu´ıdaspor texto formatado em HyperText Markup Language (HTML) e ligadas entre si [BL96]. Hoje encontramos conte´udos cada vez mais complexos e dinˆamicos,incluindo som, v´ıdeoou streams multim´edia[Loo06] e em 2005 foi introduzido por [O’R09] o termo Web 2.0. De acordo com [Greon] um website pode pertencer a uma ou v´ariasdas seguintes categorias:

• Documento – um website essencialmente est´atico,onde altera¸c˜oesa uma parte do conte´udon˜aotem implica¸c˜oesno seu comportamento.

• Base de dados – um direct´oriode informa¸c˜aoorganizada em categorias.

• Aplica¸c˜ao – um website dinˆamico,que utiliza uma linguagem executada ou interpretada do lado do servidor, e que processa as ac¸c˜oesou informa¸c˜aoin- troduzida pelo utilizador para fornecer um servi¸coou nova informa¸c˜ao.

A ´ultimadestas categorias constitui aquilo que ´enormalmente designado por web application. O conceito utilizado ao longo deste documento ´eo mesmo que o introduzido por Jim Coallen em [Con99], que define web application como um

1 Introdu¸c˜ao sistema web (servidor, rede HyperText Transfer Protocol (HTTP), browser) onde ac¸c˜oesdo utilizador (navega¸c˜aoe introdu¸c˜aode informa¸c˜ao)afectam o estado l´ogico da aplica¸c˜ao. A sua defini¸c˜aotenta estabelecer que uma web application ´eum sistema de software com estado de neg´ocio1, e que a sua interface de interac¸c˜aocom o utilizador ´edistribu´ıdoatrav´esde um sistema web.

1.2 Motiva¸c˜ao

A quantidade de informa¸c˜aoque ´eproduzida e armazenada com recurso a es- tas web applications dispon´ıveis online, tais como e-mail, blogues ou mesmo docu- menta¸c˜ao,tornam por vezes a disponibilidade de liga¸c˜aouma condi¸c˜aonecess´aria `aprodutividade e, como consequˆenciadesta barreira, muitos potenciais utilizadores op˜oem-se`aadop¸c˜aode produtos web em detrimento das tradicionais desktop appli- cations. Assegurar o acesso a uma liga¸c˜aode Internet ´ehoje muito mais f´acil.A Internet m´ovel ´ej´auma realidade e encontra-se amplamente divulgada, mas continuam a existir diversas situa¸c˜oesnas quais os utilizadores est˜aoprivados de uma liga¸c˜ao `aInternet, tais como uma viagem de metro ou de avi˜ao,ou quando se encontram deslocados do seu pa´ıs de origem e n˜aopossuem nenhum plano de subscri¸c˜ao. Uma OWA consiste numa web application que para al´emde manter todas as caracter´ısticasanteriores, se mant´emdispon´ıvel mesmo na ausˆenciade uma liga¸c˜ao `aInternet e surge como uma tentativa de estreitar as barreiras existentes entre a web e o desktop. Isto significa que dever´aexistir um mecanismo capaz de assegurar a manuten¸c˜aodo estado l´ogicoda aplica¸c˜aoquando a liga¸c˜aocom o servidor ´e quebrada, permitindo ao utilizador continuar a utilizar a aplica¸c˜ao,e que ser´acapaz de informar o servidor do estado em que a aplica¸c˜aose encontra quando a liga¸c˜aofor reposta. A principal vantagem que adv´emdesta possibilidade ´eevidente: eliminar a necessidade da existˆenciade uma liga¸c˜ao`aInternet para que a aplica¸c˜aopossa ser utilizada. Por outro lado, a vontade de integra¸c˜aode funcionalidades t´ıpicasdas desktop applications nas web applications foi um dos principais factores que impulsionou o desenvolvimento deste conceito, uma vez que obrigou a uma reflex˜ao“para al´em do browser” e a uma adapta¸c˜aodas arquitecturas existentes que permitisse ou o acesso a funcionalidades disponibilizadas pelo sistema operativo ou, pelo menos, a funcionalidades semelhantes. Pretende-se com esta aproxima¸c˜aotornar poss´ıveis interac¸c˜oesentre o desktop e o browser, tais como arrastar um ficheiro para um formul´ario web de upload de conte´udos,melhor suporte para o hist´oricodo clipboard ou ainda o acesso ao sistema de ficheiros local. Atingir estes objectivos reflecte-se

1NT. business state

2 Introdu¸c˜ao num novo paradigma, que re´uneas vantagens das web applications, tais como os updates instantˆaneosou o facto de n˜aoser necess´arianenhuma instala¸c˜ao,e das desktop applications, como por exemplo: persistˆenciano armazenamento de dados, acesso a funcionalidades do sistema operativo ou integra¸c˜aoe interac¸c˜aocom outras aplica¸c˜oes,sejam elas web applications ou desktop applications.

1.3 Ambitoˆ

Este projecto foi realizado na Critical Software S.A. no ˆambito do Mestrado Integrado em Engenharia Inform´aticae Computa¸c˜ao(MIEIC) da Faculdade de En- genharia da Universidade do Porto (FEUP) entre os meses de Fevereiro e Julho de 2008.

1.4 Objectivos

S˜aoobjectivos deste projecto: 1. Estudar e documentar o tema das OWAs acompanhando os ´ultimos desenvolvi- mentos nesta mat´eria.

2. Analisar o estado da arte, fazendo uma an´alise cr´ıtica e objectiva sobre as diversas metodologias existentes.

3. Implementar uma prova de conceito, que permita a execu¸c˜ao offline de uma web application, documentando todo o processo.

4. Estudar a possibilidade de permitir interac¸c˜aocom a aplica¸c˜ao(inser¸c˜oese altera¸c˜oesaos dados) em modo offline. Em resumo, o objectivo deste projecto foi estudar, documentar, e implementar uma prova de conceito relacionada com o tema Offline Web Applications (OWA). Este tema, embora n˜aoseja totalmente novo, ganhou destaque ao longo do ano de 2007 com o surgimento de diversas ferramentas que se destinam a aproximar web applications das desktop applications.

1.5 Estrutura do documento

Este documento est´aorganizado em diferentes sec¸c˜oes,apresentando o projecto numa sequˆencial´ogicaorganizada da seguinte forma:

No cap´ıtulo1 faz-se uma breve apresenta¸c˜aodo conceito OWAs e do contexto em que surge. Apresenta-se tamb´ema estrutura do documento e definem-se os termos e acr´onimosutilizados.

3 Introdu¸c˜ao

No cap´ıtulo2 faz-se uma descri¸c˜aoda evolu¸c˜aodas tecnologias que antecedem as OWAs e das vantagens e desvantagens de cada uma, como forma de enquadra- mento.

No cap´ıtulo3 analisa-se o estado da arte nesta mat´eria. Introduzem-se diversas tecnologias directamente relacionadas com o tema deste projecto, exemplos de aplica¸c˜oesque as usam e as raz˜oesque fundamentam as escolhas de tecnologias efectuadas.

O cap´ıtulo4 contem o desenvolvimento do projecto. Analisa-se a plataforma WOW! de gest˜aointegrada de ordens de trabalho, a tecnologia escolhida e a forma como foi utilizada para implementar a capacidade de execu¸c˜ao offline.

O cap´ıtulo5 descreve os resultado obtidos, comparando-os com as expectativas iniciais do projecto e apresenta desenvolvimentos futuros e possibilidades de continua¸c˜ao/aplica¸c˜aodo conhecimento adquirido.

No cap´ıtulo6 apresentam-se as conclus˜oes.

4 Cap´ıtulo2

Enquadramento do Projecto

Neste cap´ıtuloapresenta-se um breve resumo da evolu¸c˜aodas arquitecturas de software cliente-servidor e a forma como estas se comparam `aevolu¸c˜aoda Inter- net, procurando estabelecer uma analogia entre o percurso de ambas as tecnolo- gias. Compara-se o comportamento e arquitectura dos thin-clients `as p´aginas web est´aticas, a evolu¸c˜aodos fat-clients `asp´aginasinteractivas, Web 2.0 e Ajax, e defende-se que as OWA constituem um pr´oximopasso l´ogicoe evolutivo, aproxi- mando a web do desktop. Referem-se ainda os principais factores que justificam a importˆanciadas OWAs e a estreita rela¸c˜aoque tˆemcom as Rich Internet Application (RIA)s.

2.1 Evolu¸c˜aodas arquitecturas de software

Os termos thin-client e fat-client s˜aoutilizados quer para descrever arquitecturas l´ogicas(de software), quer para descrever arquitecturas f´ısicas(de hardware). Neste cap´ıtulo,excepto quando seja dada indica¸c˜aoem contr´ario,estes termos referem-se sempre a uma arquitectura l´ogica. Adicionalmente, quando se trata de arquitecturas cliente-servidor pode-se estu- dar a arquitectura desenvolvida do sistema como um todo, da arquitectura do servi- dor ou da arquitectura do cliente. Para evitar equ´ıvocos, em especial na sec¸c˜ao 2.1.3, especifica-se em cada caso qual o sistema estudado.

2.1.1 Thin-clients

Um thin-client ´eum computador cliente ou software cliente, que no contexto de uma arquitectura cliente-servidor, depende de um servidor central para as suas

5 Enquadramento do Projecto actividades de processamento e proporciona um canal de entrada e sa´ıda de in- forma¸c˜aoentre o utilizador e o servidor remoto. Este termo, quando aplicado a hardware, refere-se habitualmente a um computador que se destina a ser utilizado como cliente de rede, sem armazenamento local e com capacidade de processamento reduzida [Gro02b], mas o conceito que aqui se analisa refere-se a uma arquitectura de software que remonta ao in´ıciodas aplica¸c˜oescliente-servidor. No in´ıcioda hist´oriada computa¸c˜ao,terminais ligavam-se directamente a main- frames respons´aveis por todo o processamento. Nesta arquitectura, era necess´ario desenvolver duas aplica¸c˜oesdistintas: uma aplica¸c˜aocentral no servidor (main- frame), respons´avel pela gest˜ao de toda a informa¸c˜aoe por todas as opera¸c˜oes de comunica¸c˜ao,e uma aplica¸c˜aode visualiza¸c˜ao,instalada no cliente (terminal). O papel destes terminais era apenas disponibilizar ao utilizador um meio de comu- nica¸c˜ao(entrada e sa´ıda)e apresenta¸c˜aodos resultados do servidor. N˜aotinham um papel activo no c´alculonem na l´ogicade neg´ocioe frequentemente n˜aotinham tamb´emnenhum mecanismo de armazenamento de dados. Como vantagens, esta arquitectura apresenta uma reduzida necessidade de con- figura¸c˜aoe manuten¸c˜aodo lado do cliente. Uma vez que o centro do processamento e manipula¸c˜aode dados ocorre no servidor, existe tamb´emuma centraliza¸c˜aoda informa¸c˜ao[NJN00] que introduz um ponto cr´ıticode falha1. Actualiza¸c˜oese novas funcionalidades s˜aof´aceisde distribuir, uma vez que requerem apenas altera¸c˜oesno servidor [Gro02a].

2.1.2 Fat-clients

Contrastando com os thin-clients, nesta arquitectura os clientes implementam j´auma parte da l´ogicade neg´ocio e s˜aorespons´aveis pelo processamento de dados. Estes fat-clients vieram responder `anecessidade crescente de aplica¸c˜oescom um n´ıvel de interactividade e capacidade de configura¸c˜aomaior que as oferecidas pela arquitectura thin-client, descrita na sec¸c˜ao 2.1.1. Apesar de manterem a sua de- pendˆencia do servidor, podem tamb´emser executados sem uma conex˜aoactiva uma vez que disp˜oede armazenamento de dados local, o que lhes confere a capacidade de persistˆenciade dados e do estado de execu¸c˜aoentre cada sess˜ao. Foi disponibilizando este controlo sobre o estado da aplica¸c˜ao,bem como acesso a recursos locais (por exemplo, sistema de ficheiros e perif´ericos)que surgiram as primeiras verdadeiras desktop applications. No entanto, cada cliente tinha que ser separadamente instalado no computador pessoal de cada utilizador que pretendesse utilizar ou interagir com a aplica¸c˜aoe uma actualiza¸c˜aoao servidor implicava in- variavelmente uma actualiza¸c˜aomanual tamb´emno cliente. Uma vez que nem todos

1NT.: single point of failure

6 Enquadramento do Projecto

Thin-clients Fat-clients N˜aotoma parte no processamento de Participa activamente no processa- dados nem possui acesso ao sistema de mento de dados, recorrendo ao sis- ficheiros. tema de armazenamento local para ar- mazenamento de dados. N˜aomant´emregisto do estado l´ogico O acesso ao armazenamento local da aplica¸c˜aoentre duas sess˜oesde uti- permite-lhe manter registo do estado liza¸c˜ao. l´ogicoda aplica¸c˜aoentre duas sess˜oes. O thin-client n˜aonecessita de qualquer E´ geralmente necess´ario instalar a instala¸c˜ao,estando “pronto a utilizar”. aplica¸c˜aopara poder interagir com o servidor Qualquer update no servidor reflecte-se Embora a aplica¸c˜aocliente possa aler- imediatamente por todos os clientes. tar para existˆenciade novas vers˜oes, as actualiza¸c˜oestˆem que ser manualmente instalados pelo cliente. O software do cliente destina-se apenas Como o software do cliente toma parte `aapresenta¸c˜aode dados e comunica¸c˜ao activa no processamento de dados, com o servidor, sendo portanto, de sim- a sua implementa¸c˜aorequer cuidados ples implementa¸c˜ao. adicionais. Grande mobilidade, uma vez que toda Parte da informa¸c˜aopoder´aestar ape- a informa¸c˜ao´emantida no servidor nas do lado cliente, pelo que existem algumas restri¸c˜oes`asua mobilidade.

Tabela 2.1: Compara¸c˜aoentre thin-clients e fat-clients os utilizadores actualizam regularmente as suas aplica¸c˜oes,o servidor tem que estar preparado para lidar com vers˜oesantigas2, ou descontinuar os seus servi¸cosa uma parte da sua comunidade de utilizadores at´eque estes actualizem os seus sistemas. Como os utilizadores passam a utilizar os seus recursos locais para armazenamento de dados, as altera¸c˜oesque n˜aosejam sincronizadas com o servidor est˜aoapenas dispon´ıveis nos seus computadores pessoais, o que introduz uma restri¸c˜ao`amobili- dade. Pode-se afirmar que as vantagens dos thin-clients s˜aoas desvantagens dos fat- clients, e que as vantagens dos fat-clients s˜aoas vantagens dos thin-clients, tal como se ilustra na Tabela 2.1.

2.1.3 Arquitecturas cliente-servidor

Introduzidos os termos thin-client e fat-client, interessa reafirmar que ambos podem ser vistos como arquitecturas cliente-servidor. Um cliente define-se como um solicitador de servi¸cose um servidor como um prestador de servi¸cos,tal como definido por [Sch96] e [Sad97].

2NT. backward compatibility

7 Enquadramento do Projecto

As arquitecturas cliente-servidor s˜aocategorizadas pela modulariza¸c˜aocom que s˜aodesenhadas, sendo consideradas as seguintes camadas:

1. Interface gr´afica (front-end) atrav´esda qual os utilizadores interagem com a aplica¸c˜ao. Quando este m´odulo´eimplementado separadamente dos outros dois constitui uma aplica¸c˜ao thin-client por si s´o,uma vez que n˜aoimplementa regras de neg´ocio(embora possa definir valida¸c˜oesde formul´ariosde inser¸c˜aode dados, por exemplo). A informa¸c˜aointroduzida pelo utilizador ´eenviada para o servidor, que processa o seu pedido e retorna uma resposta. Este processo repete-se at´eque o utilizador atinja o seu objectivo ou se desligue do sistema;

2.A l´ogicade neg´ocio, tamb´emdesignada por camada interm´edia,que imple- menta as regras de aceita¸c˜aoe valida¸c˜aode todos os dados introduzidos pelo utilizador. E´ tamb´ema plataforma de comunica¸c˜aoque une a camada superior de visualiza¸c˜aocom a camada de acesso a dados;

3.A camada de dados inclui quer o sistema de persistˆenciade dados, onde s˜ao armazenados os dados relevantes, como tamb´emos mecanismos necess´arios para a sua pesquisa, selec¸c˜aoe altera¸c˜ao.

Os thin-clients, quando observados no seu conjunto de cliente e servidor, podem ser vistos quer como sistemas de duas camadas, quer como sistemas de trˆescamadas, dependendo apenas da forma como o servidor for implementado. No caso de, na implementa¸c˜aodo servidor n˜aose distinguir a camada de acesso a dados da camada da l´ogicade neg´ocio,s˜aodesignados por sistemas de duas camadas. Caso seja feita esta distin¸c˜ao,s˜aodesignados por sistemas de trˆescamadas. Ambos os casos s˜ao ilustrados na Figura 2.1. Historicamente, os fat-clients eram implementados numa arquitectura em duas camadas. Possu´ıamapenas um m´odulode visualiza¸c˜aode dados, designado por camada de interface, e um m´oduloque implementava toda a l´ogicade neg´ocioe regras de acesso `abase de dados. No entanto, com a introdu¸c˜aode liga¸c˜oesmais r´apidase de computadores pessoais com maior capacidade de processamento e so- bretudo devido `acomplexidade crescente das aplica¸c˜oes,a l´ogicade neg´ocio e a camada de acesso a dados tornaram-se independentes. Este modelo ´edesignado por arquitectura em trˆescamadas e ´eilustrado na Figura 2.2.

2.2 Evolu¸c˜aona Internet

Ao analisar a evolu¸c˜aodas arquitecturas das aplica¸c˜oesdesenvolvidas para a Internet, podemos encontrar um paralelismo com a hist´oriada arquitectura de soft- ware.

8 Enquadramento do Projecto

Figura 2.1: Arquitectura de um sistema thin-client em duas camadas (`aesquerda) e em trˆescamadas (`adireita). Note-se a inclus˜aodo servidor (mainframe) na defini¸c˜aodas camadas desta arquitectura, devido `aforte dependˆenciacliente-servidor.

2.2.1 P´aginas web est´aticas

Uma p´agina web est´atica devolve sempre a mesma resposta a todos os pedidos, para todos os utilizadores e em qualquer contexto, utilizando o hipertexto como forma de liga¸c˜aoentre diversas p´aginas est´aticas. A informa¸c˜ao´earmazenada num servidor, e o papel do cliente ´eapenas a apre- senta¸c˜aoda informa¸c˜ao.Esta forma de disponibiliza¸c˜aode informa¸c˜aopode assim ser comparada com os thin-clients descritos na sec¸c˜ao 2.1.1: o utilizador acede a um website est´aticopara visualizar informa¸c˜aosem que o cliente tome parte no processamento. A ´unicadiferen¸ca´eque no caso da web est´aticaa informa¸c˜aoap- resentada ´esempre a mesma, enquanto que nos thin-clients era frequente existir a possibilidade de inser¸c˜aode dados no cliente e ap´oso seu processamento servidor, nova informa¸c˜aopoderia ser apresentada. O hipertexto ´eutilizado para ligar as p´aginasentre si numa rede de conte´udosrelacionados, e a navega¸c˜aos´ıncronaera feita atrav´esde cliques do rato: a cada clique uma nova p´aginaera apresentada. Este modelo s´ıncrono´eilustrado na Figura 2.3.

2.2.2 P´aginas web interactivas e p´aginas web dinˆamicas

O JavaScript ´euma linguagem interpretada de scripting que tem os browsers como principal ambiente de acolhimento. Os browsers utilizam uma Application

9 Enquadramento do Projecto

Figura 2.2: Arquitectura de um fat-client em duas camadas (`aesquerda) e em trˆescamadas (`adireita).

Programming Interface (API) p´ublicapara criar “objectos” respons´aveis por reflectir e disponibilizar o Document Object Model (DOM) para o motor de JavaScript. A utiliza¸c˜aomais frequente desta linguagem ´ea escrita de fun¸c˜oesque s˜aoem- bebidas ou inclu´ıdasem p´aginasweb e que interagem com o DOM. Uma vez que o JavaScript ´eexecutado localmente (na m´aquina do cliente e n˜aono servidor) ´ecapaz de responder rapidamente a ac¸c˜oesdo utilizador, tornando a execu¸c˜aode aplica¸c˜oes no browser mais flu´ıdas;o JavaScript pode tamb´emdetectar ac¸c˜oesdo utilizador que o HTML n˜aopode, tal como o pressionar de uma tecla. Em Dezembro de 1995 a Communications adicionou suporte para o JavaScript no browser Netscape Navigator3, e em Agosto de 1996 o browser Internet Explorer4 da Microsoft passou a tamb´ema suportar uma vers˜aosemelhante desta linguagem (hoje, todos os principais browsers suportam esta tecnologia). Esta inova¸c˜aopermitiu tornar os websites mais interactivos, mas a sua utiliza¸c˜ao esteve confinada apenas a este prop´ositodurante um longo per´ıodo. As p´aginas passaram a responder activamente a ac¸c˜oesdo utilizador (sendo uma das utiliza¸c˜oes

3Netscape Communications – http://browser.netscape.com/ 4Microsoft Internet Explorer – http://www.microsoft.com/windows/products/winfamily/ie

10 Enquadramento do Projecto mais vulgares a valida¸c˜aode formul´arios)mas continuaram essencialmente est´aticas. O JavaScript ainda n˜aoera, nesta altura, utilizado para processar dados. Tamb´emnesta altura (1995–96) surgiram linguagens server-side como o PHP Hypertext Preprocessor (PHP)e Active Server Pages (ASP) e o servidor passou a ter um processamento de dados introduzidos pelo utilizador mais activo. Generalizaram- se as p´aginas dinˆamicas,capazes de responder a inser¸c˜aode dados ou outros pedidos determinados por ac¸c˜oesdo utilizador. As p´aginastornaram-se aplica¸c˜oes, web ap- plications. Uma defini¸c˜aotradicional de web application ´e: um conjunto de p´aginas web logicamente agrupadas e geridas por uma ´unicaentidade, que tˆemcomo pontos de entrada formul´ariosde inser¸c˜ao de dados (web forms). Uma web application n˜ao´e mais do que uma aplica¸c˜aoque ´eacedida atrav´esde um browser. Tˆemgeralmente uma arquitectura l´ogicaem trˆes(interface, l´ogicade neg´ocioe camada de dados) camadas e est˜aoarmazenadas num servidor. H´adois tipos de web applications:

• Orientadas `aapresenta¸c˜ao: S˜ao web applications que geram p´aginas web in- teractivas constitu´ıdas por v´arios tipos de linguagens de anota¸c˜ao(por exem- plo: HTML, eXtensible Markup Language (XML)) e que apresentam conte´udo dinˆamicocomo resposta a pedidos efectuados pelo utilizador.

• Orientadas aos servi¸cos: Uma web application orientada aos servi¸cosimple- menta o ponto de acesso para um ou mais de um web service. S˜aogeralmente clientes de service oriented web applications.

Uma vantagem significativa de implementar uma web application de forma a suportar as funcionalidades padr˜aodos browsers ´eque estas ter˜aoo mesmo com- portamento independentemente da plataforma e do browser a partir do qual ser˜ao acedidas. No entanto, diferentes implementa¸c˜oesde browsers, devido a diferentes interpreta¸c˜oesdos padr˜oesdefinidos, tornam por vezes esta tarefa um pouco mais complicada, existindo inclusivamente na web gui˜oesde compatibilidade para os difer- entes browsers como [Smi07].

2.2.3 Web 2.0 e Ajax

O termo web 2.0 descreve uma tendˆenciade utiliza¸c˜aoe de design observada na World Wide Web (WWW) com o objectivo de melhorar a criatividade, partilha de informa¸c˜aoe principalmente: a colabora¸c˜aoentre utilizadores. Estes conceitos levaram ao desenvolvimento e evolu¸c˜ao de comunidades online tais como redes so- ciais, wikis e blogues.

11 Enquadramento do Projecto

O termo tornou-se mais conhecido ap´osa primeira conferˆenciaO’Reilly Media Web 2.0 em 2004, e apesar de sugerir uma nova vers˜aoda WWW n˜aose refere a qualquer evolu¸c˜aotecnol´ogica,mas apenas a altera¸c˜oes`aforma como os utilizadores se servem da web. De acordo com Tim O’Reilly [O’R06]: “Web 2.0 ´euma revolu¸c˜ao na ind´ustriado software, causada pela adop¸c˜aoda web como uma plataforma e pela tentativa de entendimento das regras para o sucesso nesta nova plataforma”. O desenvolvimento da Web 2.0 serve-se muitas vezes de um outro conceito: Ajax. O conceito que hoje conhecemos como Ajax, muitas vezes incorrectamente de- scrito como uma tecnologia, foi originalmente criado para permitir o desenvolvimento de web applications que se assemelhassem ainda mais a aplica¸c˜oesde desktop. Este conceito foi melhor descrito por [Gar05] como um conjunto de v´ariastecnologias que podem ser utilizadas para melhorar a experiˆenciado utilizador de uma dada web application, introduzindo a capacidade ass´ıncronade envio de pedidos ou da recep¸c˜aoass´ıncronade respostas. As tecnologias mais frequentemente envolvidas s˜ao:

• eXtensible HyperText Markup Language (XHTML)e Cascading Style Sheets (CSS) padr˜aopara a apresenta¸c˜ao;

• interac¸c˜aodinˆamica atrav´esdo DOM;

• troca e manipula¸c˜aode dados utilizando XMLe eXtensible Stylesheet Lan- guage Transformation (XSLT) ou JavaScript Object Notation (JSON);

• pedidos ass´ıncronosutilizando XMLHttpRequest [vK08];

• JavaScript, utilizado para integrar todas estas tecnologias.

E´ importante frisar que o Ajax n˜ao´eum produto nem uma tecnologia. E´ um termo que descreve a utiliza¸c˜aode um conjunto de tecnologias para o desenvolvi- mento de web applications com um elevado grau de interactividade. Comparativa- mente `as web applications tradicionais, o Ajax introduz uma camada de visualiza¸c˜ao diferente em trˆesimportantes pontos:

1. Do lado do cliente existe um motor que serve de intermedi´arioentre a interface da aplica¸c˜aoe o servidor.

2. A actividade do utilizador despoleta chamadas JavaScript em vez de um pedido de p´aginadirectamente ao servidor.

3. Informa¸c˜aocodificada em XML, em vez de p´aginas HTML, ´etrocada entre o servidor e o cliente.

12 Enquadramento do Projecto

Isto significa que as p´aginasque utilizam Ajax contˆemum motor do lado do cliente, composto por um conjunto de fun¸c˜oesJavaScript, respons´avel pela comu- nica¸c˜aocom o servidor e por actualizar a interface com o resultado dessa mesma comunica¸c˜ao. Na Figura 2.3 ilustra-se a natureza ass´ıncronado Ajax quando comparada com as web applications tradicionais. Como se pode observar, adicionando um mecan- ismo Ajax a uma web application eliminam-se diversos tempos de espera associados a comunica¸c˜oescom o servidor uma vez que a interface n˜aofica “bloqueada” `aes- pera da resposta. Obt´em-seassim aplica¸c˜oescom um comportamento mais fluido, eliminando tempos de espera entre cada “clique” e melhorando a experiˆenciado utilizador.

2.3 Offline Web Applications

A informa¸c˜aogr´afica(bem como folhas de estilo e scripts), tais como as ima- gens que constituem o visual de uma web application, ´ej´atratada de forma especial pelos cada vez mais avan¸cadossistemas de cache (armazenamento tempor´ario)dos browsers. Mas estes n˜aos˜aoainda capazes de guardar conte´udocriado pelo uti- lizador, nem de apresentar informa¸c˜aoindependentemente do estado da liga¸c˜ao. Numa altura onde se fala de servi¸cosde Internet wireless municipalizados [Kha], comunica¸c˜oes3G e liga¸c˜oesde banda larga a alta velocidade, a liga¸c˜ao`arede global continua a n˜aoestar permanentemente dispon´ıvel para os utilizadores. Na WWW encontra-se uma importante parte da informa¸c˜aoe das aplica¸c˜oesutilizadas para criar e editar conte´udos. Por vezes, informa¸c˜aovital para a produtividade pode desaparecer subitamente do mapa de acesso de um utilizador, quando este entra no metro, num avi˜ao,ou mesmo quando se desloca para uma cidade ou pa´ısdiferente do habitual, onde n˜aosubscreve um plano de acesso que lhe garanta a liga¸c˜ao. Permitir o acesso offline a estes recursos assume assim a sua importˆancia,porque permitir´aestender o alcance da informa¸c˜aoa locais onde nunca esteve antes, e per- mitir´atamb´emmelhorar o desempenho das web applications, colocando informa¸c˜ao mais perto dos utilizadores, reduzindo a transferˆenciade dados apenas ao essencial.

2.4 Compara¸c˜ao

Nas evolu¸c˜oesdescritas neste cap´ıtulo2 pode-se observar que existe um par- alelismo entre a evolu¸c˜aodas arquitecturas tradicionais cliente-servidor e a evolu¸c˜ao a que se assiste na web. O comportamento e arquitectura dos thin-clients assemelha- se ao das p´aginasest´aticas,no sentido em que o browser n˜aotoma parte em qualquer

13 Enquadramento do Projecto processamento, e serve apenas como uma plataforma de interac¸c˜aocom o servidor; tal como os clientes descritos na sec¸c˜ao 2.1.1. A sua pr´oximaevolu¸c˜ao,os fat-clients, trouxeram parte da capacidade de pro- cessamento para o lado do cliente. Na web, foi tamb´emesta a inova¸c˜aotecnol´ogica a que se assistiu, com a evolu¸c˜aodas tecnologias que permitiram a cria¸c˜aode ver- dadeiras aplica¸c˜oes,e com a introdu¸c˜aodo Javascript no browser, dando ao cliente a capacidade de processamento de dados. A necessidade da separa¸c˜aodo c´odigo em camadas l´ogicasadv´emda crescente complexidade das web applications. Esta pr´aticapermite, entre outras coisas, melhorar o processo de desenvolvimento e a capacidade de manuten¸c˜aode uma aplica¸c˜ao. Os fat-clients tˆemtamb´ema capacidade de armazenamento de dados, o que permite a persistˆenciade informa¸c˜oesentre duas sess˜oese que algumas opera¸c˜oes sejam executadas sem a necessidade de comunica¸c˜aocom o servidor. Este facto pode tamb´emser uma realidade nas web applications com a adop¸c˜aodas tecnologias OWA. Neste momento assiste-se a uma utiliza¸c˜aocada vez maior da web como uma plataforma de desenvolvimento. A capacidade de coopera¸c˜aona edi¸c˜aode conte´udos, e a mobilidade proporcionada por esta plataforma s˜aoos principais factores que alimentam esta mudan¸ca,e pela primeira vez, as aplica¸c˜oestradicionais tˆemcom- peti¸c˜aovinda de web applications. A prova do reconhecimento da web como plataforma de desenvolvimento pode ser retirada da aposta de empresas como a Adobe e Mi- crosoft, que lan¸carampublicamente ferramentas web complementares a produtos seus, tradicionalmente associados ao desktop – Acrobat.com5 e Microsoft Office Live6. Dotar estas web applications da capacidade de execu¸c˜ao offline significa aproximar a web e o desktop reunindo “o melhor de dois mundos”. As vantagens da mobilidade poss´ıvel atrav´esda web a coopera¸c˜aona cria¸c˜aoe edi¸c˜aode conte´udose a possibilidade de utilizar aplica¸c˜oessempre actualizadas e sem necessidade de instala¸c˜aos˜aoalgumas das principais vantagens que promovem esta mudan¸ca, que devido `aspreocupa¸c˜oesassociadas `ausabilidade e experiˆenciado utilizador, est´afortemente associada ao desenvolvimento de Rich Internet Applica- tion (RIA)s.

5Adobe Acrobat.com http://www.acrobat.com 6Microsoft – http://smallbusiness.officelive.com

14 Enquadramento do Projecto

Figura 2.3: Compara¸c˜aodo modelo de web aplications s´ıncrono,p´aginasest´aticase in- teractivas abordados nas sec¸c˜oes 2.2.1e 2.2.2, com o modelo de web applications Ajax (ass´ıncrono)abordado na sec¸c˜ao 2.2.3. Figura adaptada de http: // www. adaptivepath. com/

15 Enquadramento do Projecto

16 Cap´ıtulo3

Estado da arte

Apesar de o conceito das OWAs n˜aoser absolutamente novo, as tecnologias que o suportam s˜aorecentes. Neste cap´ıtulodescrevem-se quatro tecnologias que foram tidas como principais candidatas para o desenvolvimento deste projecto. Descrevem- se ainda alguns exemplos de web applications que disponibilizam actualmente fun- cionalidades offline e o processo da escolha da tecnologia a utilizar neste projecto.

3.1 Gears

O Gears1 ´euma extens˜ao`asfuncionalidades do browser introduzido pelo Google que tem como principal objectivo tornar poss´ıvel a visualiza¸c˜aode p´aginasde Inter- net mesmo sem uma conex˜aodispon´ıvel. Encontra-se dispon´ıvel para as platafor- mas Windows, Macintosh e Linux e oferece uma API de Javascript que permite a scripts aceder a um mecanismo de armazenamento local baseado numa base de dados SQLite.

3.1.1 Arquitectura

Esta ferramenta ´econstitu´ıdapor trˆescomponentes principais:

• LocalServer — Intercepta pedidos de p´aginas web, e serve-as localmente;

• Database — Uma base de dados relacional constru´ıdasobre SQLite;

• WorkerPool — Permite executar opera¸c˜oesde computa¸c˜aode uma forma ass´ıncrona,sem afectar a capacidade de resposta e fluidez de execu¸c˜aoda web application. Assemelham-se a processos.

1Google Inc. – Mais informa¸c˜aoem http://gears.google.com/

17 Estado da arte

LocalServer

O m´odulo LocalServer ´euma cache de Uniform Resource Locators (URLs) controlada pela web application. Quando n˜aoexiste uma liga¸c˜ao`aInternet e ´e feito um pedido para um URL presente nesta cache, o LocalServer intercepta-o e responde ao pedido localmente, a partir do disco r´ıgidodo utilizador. A aplica¸c˜ao pode utilizar dois tipos diferentes de armazenamento local de URLs:

• ResourceStore – serve para capturar URLs utilizando exclusivamente a API de Javascript disponibilizada para o efeito. Uma aplica¸c˜aopoder´acriar e utilizar diversos ResourceStores simultaneamente para capturar ficheiros de dados que necessitam de ser endere¸cadospor um URL, tal como um ficheiro PDF ou uma imagem.

• ManagedResourceStore – serve para capturar um conjunto de URLs que est˜ao relacionados, e que s˜aodeclarado num ficheiro de manifesto (especificado em JSON) e que s˜aoautomaticamente actualizados. O ManagedResourceStore permite que o conjunto de recursos necess´ariospara correr uma web application seja capturado e mantido actualizado automaticamente.

A principal diferen¸caentre estes dois tipos de armazenamento de URLs ´ea forma como s˜aoactualizados os seus conte´udos.Os conte´udosde um ManagedResourceStore s˜aoactualizados sempre que a vers˜aocontida no ficheiro de manifesto for alterada, enquanto que os conte´udosde um ResourceStore nunca s˜aoactualizados automati- camente, mas apenas quando for explicitamente ordenado pela aplica¸c˜ao. O LocalServer ´ecapaz de interceptar e servir localmente pedidos de HTTP e HTTPS sempre que se re´unamas seguintes condi¸c˜oes:

1.O URL encontra-se armazenado num ResourceStore ou ManagedResourceStore,

2. O sistema de armazenamento local encontra-se activo (enabled = true). Se o sistema de armazenamento local tiver o atributo requiredCookie o pedido dever´aconter um cookie que lhe corresponda.

O LocalServer n˜aonecessita de monitorizar o estado da liga¸c˜aopara atender aos pedidos. Na verdade, sempre que as condi¸c˜oespreviamente enunciadas se verificarem o LocalServer interceptar´aos pedidos e, independentemente do estado da liga¸c˜ao `aInternet, servi-los-´aa partir do disco r´ıgidolocal. Caber´a`aaplica¸c˜aodefinir qual o modo em que pretende executar um pedido (online ou offline), definindo o valor de verdade da propriedade enabled.

18 Estado da arte

Database

O m´odulo Database permite guardar dados da web application assegurando a sua persistˆencia.Os dados s˜aoguardados de forma relacional no disco r´ıgidodo uti- lizador2 de acordo com o modelo de seguran¸caestabelecido pelo Gears3, significando que uma aplica¸c˜aon˜aopode aceder a conte´udosfora do seu dom´ınio.

WorkerPool

Nos web browsers uma opera¸c˜aopesada de computa¸c˜aopode tornar a interface lenta e tornar menos agrad´avel a experiˆenciado utilizador. O m´odulo WorkerPool permite correr opera¸c˜oesem background sem bloquear a interface com o utilizador. Os scripts executados numa WorkerPool n˜aoactivam os mecanismos de seguran¸ca do browser que mostram a mensagem “A script on this page may be busy, or may have stopped responding”. O WorkerPool comporta-se como um conjunto de processos em vez de threads. Os Workers n˜aopartilham qualquer estado de execu¸c˜ao,o que significa que uma altera¸c˜aoa uma vari´avel num Worker n˜aoafecta em nada a execu¸c˜aode outro Worker. Al´em disso, os Workers n˜aoherdam automaticamente nenhum c´odigodos seus pais. Cada Worker ´emembro de um WorkerPool, e os Workers podem in- teragir entre si enviando mensagens em formato de texto ou JSON. No entanto h´a tamb´emalgumas limita¸c˜oes:os Workers n˜aotem acesso ao DOM, e objectos como window ou document n˜aose encontram acess´ıveis. Isto ´econsequˆenciade os Workers n˜aopartilharem o estado de execu¸c˜ao.Mas tˆemacesso a todas as fun¸c˜oes built-in do Javascript. A maioria das funcionalidades do Gears pode tamb´em ser acedida atrav´esde uma vari´avel global especial definida como google.gears.factory. Para outras funcionalidades espec´ıficasos Workers podem “pedir” `ap´aginaprincipal para continuar a execu¸c˜aoatrav´esdo envio de mensagens.

Outras funcionalidades

• HttpRequest – Este m´oduloimplementa a especifica¸c˜aoW3C XmlHttpRe- quest, definida em [vK08], tornando-a dispon´ıvel para os workers e para a p´aginaprincipal.

• Timer – Este m´oduloimplementa a especifica¸c˜aode timers tal como descrito por [Hic08], e torna-os dispon´ıveis para os workers e para a p´aginaprincipal

2Consultar: http://code.google.com/apis/gears/api_database.html#directories 3Consultar: http://code.google.com/apis/gears/security.html

19 Estado da arte

• Factory – Esta classe ´eutilizada para instanciar todos os outros objectos da API do Gears atrav´esdo seu m´etodo create. Este m´etodo pode ser utilizado com os seguintes parˆametros:

– beta.database – beta.httprequest – beta.localserver – beta.timer – beta.workerpool

3.1.2 Goggle Gears em dispositivos m´oveis

O Gears est´atamb´emdispon´ıvel em dispositivos Windows Mobile 5 e 6. Os dispositivos m´oveis est˜ao,pela sua natureza, frequentemente desconectados da Internet. Mesmo quando possuem uma liga¸c˜aoas latˆenciasna transferˆenciade dados em redes m´oveis tornam as aplica¸c˜oespouco flu´ıdas,mas o Gears permite ultrapassar este obst´aculo. O Gears funciona exactamente da mesma forma em dispositivos m´oveis equipados com o Windows Mobile 5 e 6 como num computador comum. Se uma aplica¸c˜aotiver sido implementado com suporte para o Gears, ent˜aotamb´emestar´apreparada para ser executada num dispositivo m´ovel, mas as limita¸c˜oesdos browsers dispon´ıveis para dispositivos m´oveis tˆemque ser consideradas. Isto significa prever as condi¸c˜oes que permitam uma boa usabilidade devido aos pequenos ecr˜asdestes dispositivos, bem como o seu suporte limitado dos padr˜oesdo DOM, CSS e JavaScript.

3.2 Adobe AIR

O Adobe AIR4 ´eum runtime compat´ıvel com diversos browsers e sistemas opera- tivos, que pretende dar aos programadores a possibilidade de combinar diversas tec- nologias de produ¸c˜aode conte´udospara a Internet no desenvolvimento de Rich Inter- net Application (RIA)s. O Adobe AIR mant´emuma rela¸c˜aocom o browser, mas es- tende as suas capacidades e tecnologias, permitindo o desenvolvimento de aplica¸c˜oes tamb´empara o ambiente de trabalho, com janelas em tudo semelhantes `asdo sis- tema operativo. Segundo a Adobe, o objectivo ´ecomplementar o browser dando aos utilizadores (mas essencialmente aos programadores e equipas de desenvolvi- mento) a escolha sobre como distribuir as suas aplica¸c˜oes.Para este efeito o Adobe AIR tem uma aproxima¸c˜aodiferente do Gears. Em vez de “estender” o browser acrescentando-lhe funcionalidades, o AIR permite tamb´emo desenvolvimento de

4Adobe - http://www.adobe.com/products/air/

20 Estado da arte aplica¸c˜oesque se destinam a ser executadas fora do ambiente do browser, mas uti- lizando as tecnologias comuns da Internet (por exemplo: HTML, CSS, JavaScript, Flash, Flex)[CDGH08]. A utiliza¸c˜aodesta tecnologia permite utilizar o browser ou o pr´oprio runtime Adobe AIR, como plataforma de execu¸c˜aoda aplica¸c˜ao. Na Tabela 3.1 faz-se uma compara¸c˜aodas funcionalidades dispon´ıveis de acordo consoante se escolha o browser ou o desktop como plataforma base para a aplica¸c˜ao. Uma vez que as aplica¸c˜oesAdobe AIR na plataforma desktop tˆemum car´acter persistente (s˜aoinstaladas no computador do utilizador), o Adobe AIR tem um modelo de seguran¸caque se assemelha com o das tradicionais aplica¸c˜oes desktop [Ada08]. Este modelo ´eanalisado nas sec¸c˜oes 3.2.1e 3.2.2. O ambiente em que ´eexecutado o browser ´erestringido `aexecu¸c˜aode web applications que podem ser de v´ariasorigens (incluindo de origens an´onimasou sem confian¸ca). O Adobe AIR proporciona acesso a capacidades como acesso a ficheiros, que necessitam da confian¸cado utilizador.

• HTML – O desenvolvimento de aplica¸c˜oespara o Adobe AIR pode ser feito com recurso a tecnologias de HTML e Ajax comuns, utilizando as linguagens de markup existentes, distribu´ıdas como texto e interpretadas em execu¸c˜ao (runtime);

• Flash – Outra alternativa ser´aa utiliza¸c˜aoda linguagem Flash. Permite a renderiza¸c˜aode gr´aficosvectoriais e ´audio/v´ıdeocom suporte nativo. Utiliza ActionScript para adicionar maior interactividade com o utilizador;

• Flex – O Flex ´euma framework open source para o desenvolvimento de RIAs usando Flash. As aplica¸c˜oesFlex s˜aona realidade Flash, sendo a principal diferen¸cao ambiente de desenvolvimento.

Como resultado, uma aplica¸c˜aoAIR poder´aser implementada:

• Baseada em Flash ou Flex (aplica¸c˜oescujo conte´udobase ´eem ShockWave Flash (SWF));

• Baseada em Flash ou Flex, tamb´emcom HTML ou Portable Document Format (PDF). Aplica¸c˜oescujo conte´udode base ´eem Flash/Flex(SWF) com HTML (HTML, JavaScript, CSS) ou conte´udo PDF inclu´ıdo;

• Baseada em HTML. Aplica¸c˜oescujo conte´udobase ´eem HTML, Javascript, CSS;

• Baseada em HTML utilizando tamb´em Flash/Flex ou PDF.

21 Estado da arte

Os utilizadores interagem com uma aplica¸c˜aoAIR da mesma forma que interagem com outras aplica¸c˜oescom janelas nativas do seu sistema operativo. O runtime ´e instalado uma vez no computador do utilizador, e a partir desse momento, todas as aplica¸c˜oesAIR ter˜aoo mesmo aspecto que qualquer outra aplica¸c˜aopara o desktop.

3.2.1 Seguran¸ca

Permitir que uma web application aceda ao disco de armazenamento do utilizador pode comprometer seriamente a sua seguran¸ca. Neste sentido o Adobe AIR tem suporte para assinaturas digitais (Secure Sockets Layer (SSL)) que podem ser com- pradas pelas equipas de desenvolvimento que o desejem, e cujos certificados ser˜ao apresentados ao utilizador no momento da instala¸c˜ao. Um outro aspecto ainda relativo `aseguran¸ca´eo mecanismo de isolamento de cada ambiente (sandbox).

3.2.2 Assinatura do c´odigo

O runtime AIR exige que todas as aplica¸c˜oesestejam digitalmente assinadas. As assinaturas digitais de c´odigos˜aoum processo que visa garantir a integridade da aplica¸c˜aoe a identidade do seu autor, no momento da instala¸c˜ao. As equipas de desenvolvimento podem “assinar” uma aplica¸c˜aoutilizando um certificado atribu´ıdo por uma Entidade Certificadora (Certification Authority) ou atrav´esde um certifi- cado individual (self signed certificate). Neste momento o Adobe AIR suporta como entidades certificadoras a Verisign e a Thawte [Ado08]. O instalador apresenta o nome de quem publica a aplica¸c˜aoquando o c´odigotiver sido assinado com um certificado que apresente confian¸ca,ou que esteja encadeado com um certificado que tenha j´asido aceite no computador em que se est´aa instalar a aplica¸c˜ao. As equipas de desenvolvimento podem tamb´emassinar as aplica¸c˜oescom um certificado auto-atribu´ıdo(um certificado criado por elas pr´oprias),mas neste caso o instalador apresentar´aestas aplica¸c˜oescomo sendo de uma origem n˜aoverificada. O AIR utiliza a infraestrutura p´ublicade chaves [Ent07] suportada pelo arquivo local do sistema operativo. Para que a origem da aplica¸c˜ao seja reconhecida, o computador onde a aplica¸c˜aoAIR est´aa ser instalada tem que confiar directamente no certificado que foi utilizado para assinar a aplica¸c˜ao,ou confiar num certificado que esteja num encadeamento l´ogicode certificados confiados, e que se ligue desta forma ao certificado utilizado para assinar a aplica¸c˜ao. Todas as aplica¸c˜oesAIR tˆemcaracter´ısticasem comum, independentemente da tecnologia utilizada para o seu desenvolvimento (HTML/Flex/Flash). No ˆambito de uma aplica¸c˜aoAIR existem um conjunto de APIs que est˜aodispon´ıveis e que tornam poss´ıvel o acesso ao sistema local (leitura e escrita) e a recursos de rede que

22 Estado da arte de outra forma nunca estariam acess´ıveis a partir de uma web application comum. Cada aplica¸c˜aoAIR possui tamb´emdiferentes n´ıveis de isolamento, chamados secu- rity sandboxes, dependendo do tipo de conte´udoque est´aa ser carregado e do seu objectivo:

• Isolamento ao n´ıvel da aplica¸c˜ao5 – E´ a raiz de cada aplica¸c˜aoAIR. Este n´ıvel de isolamento permite o acesso a APIs privilegiadas e espec´ıficas do AIR. Em contrapartida, ´enegado o acesso a algumas APIs que poderiam ser facilmente utilizadas de forma maliciosa contra o utilizador final. Importa¸c˜ao dinˆamicade conte´udosremotos ´egeralmente proibido e as t´ecnicase mecan- ismos de gera¸c˜aodinˆamicade c´odigos˜aofortemente restringidas. Apenas conte´udocarregado directamente da directoria base da aplica¸c˜aopoder´aser colocado neste n´ıvel de isolamento.

• Isolamento n˜aoespec´ıficoda aplica¸c˜ao6 – cont´emtodo o outro conte´udo que n˜aotenha sido carregado directamente para o isolamento da aplica¸c˜ao. Isto inclui conte´udolocal e remoto. Este tipo de conte´udon˜aotem acesso directo `asAPIs do AIR e rege-se pelas mesmas regras tal como se tivesse sido carregado por um browser a partir da mesma localiza¸c˜ao(por exemplo, HTML carregado a partir de um dom´ınioremoto comporta-se da mesma forma que se fosse acedido a partir do browser).

3.3 Mozilla Prism

3.3.1 XML User Interface Language

O eXtensible User Interface Language (XUL), ´euma linguagem de anota¸c˜ao baseada em XML desenvolvida pela que opera em aplica¸c˜oes Mozilla multi plataforma, tal como o . O motor ´ea ´unicaimple- menta¸c˜aocompleta desta linguagem, que foi desenhada sobre padr˜oes web comuns, como CSS, JavaScript e o DOM, e permite o desenvolvimento de interfaces gr´aficas utilizando elementos pr´e-definidostais como window, box, page, textbox, radio button, entre outros . Infelizmente o XUL n˜aopossui qualquer especifica¸c˜aoformal ou implementa¸c˜oesde inter-operabilidade para outros motores que n˜aoo Gecko. No entanto a sua implementa¸c˜ao´elicenciada em c´odigoaberto, pelas licen¸cas GNU Gen- eral Public License (GPL), GNU Lesser General Public License (LGPL)e Mozilla Public License (MPL). Enunciam-se algumas caracter´ısticas desta linguagem:

5NT.: application sandbox 6NT.: non-application sandbox

23 Estado da arte

Liguagem de anota¸c˜aopoderosa baseada em componentes (widgets): O ob- jectivo do XUL ´epermitir a constru¸c˜aode aplica¸c˜oesmulti-plataforma, em claro contraste com o Dynamic HyperText Transfer Protocol (DHTML) que se destina ao desenvolvimento de p´aginas web. Por esta raz˜aoo XUL est´aorien- tado a componentes tais como janelas, bot˜oes,e etiquetas, em vez de p´aginas, cabe¸calhosde texto, e liga¸c˜oesde hipertexto. Investir tempo e esfor¸copara atingir este mesmo resultado em aplica¸c˜oesbaseadas em DHTML, compromete frequentemente a complexidade e desempenho da aplica¸c˜ao.

Baseado em padr˜oes O XUL ´eum dialecto XML baseado no padr˜aoW3C XML 1.0. As aplica¸c˜oesescritas em XUL s˜aotamb´embaseadas em especifica¸c˜oes W3C adicionais, como HTML 4.0, CSS, DOM n´ıvel 1 e 2; JavaScript 1.5, incluindo ECMA-262 Edition 3 (ECMAscript).

Portabilidade entre plataformas: Tal como HTML, o XUL foi desenhado para ser independente da plataforma em que ´eutilizado, tornando as aplica¸c˜oes facilmente port´aveis entre sistemas operativos nos quais o Mozilla ´esuportado. Uma vez que o XUL oferece um n´ıvel de abstrac¸c˜aodos componentes gr´aficos de interface que disponibiliza, implementa a premissa “um c´odigopara todas as plataformas”. A interface gr´aficade todos os produtos centrais Mozilla (browser, instant messenger, livro de endere¸cos),´eescrita em XUL, com um ´unicoc´odigobase que suporta todas as plataformas Mozilla.

Separa¸c˜aoentre o n´ıvel de apresenta¸c˜aoe a l´ogicade neg´ocio: Uma das maiores preocupa¸c˜oesno desenvolvimento para a Internet ´ea forte liga¸c˜ao entre estas duas camadas (interface e l´ogica). Isto constitui um problema sig- nificativo no desenvolvimento de grandes aplica¸c˜oes,especialmente quando o desenvolvimento ´efeito em ambientes de equipa, porque as capacidades de de- senvolvimento destas duas partes da aplica¸c˜aoest˜aomuitas vezes espalhadas por diferentes elementos. O XUL permite uma clara distin¸c˜aoentre a defini¸c˜ao da aplica¸c˜aocliente e da l´ogicade implementa¸c˜ao (XUL, eXtensible Binding Language (XBL) e JavaScript), apresenta¸c˜ao(CSS e imagens), internacional- iza¸c˜ao(Document Type Definitions (DTDs) e etiquetas de texto em l´ınguas espec´ıficas guardados em ficheiros .properties). O esquema gr´aficoe apre- senta¸c˜aode uma aplica¸c˜ao XUL pode ser alterado de forma independente da sua l´ogica ou implementa¸c˜ao,e a aplica¸c˜aopode ainda ser traduzida (interna- tionalization) de forma independente da sua l´ogica,implementa¸c˜aoou apre- senta¸c˜ao.Este grau de separa¸c˜aoresulta em aplica¸c˜oesque s˜aomais f´aceisde manter pelos programadores e facilmente adaptadas por designers e tradutores.

24 Estado da arte

F´aciladapta¸c˜ao Outro benef´ıcio que adv´emdo n´ıvel de separa¸c˜aoentre l´ogica de neg´ocioe apresenta¸c˜aooferecido pelo XUL ´ea facilidade com que se pode adaptar uma aplica¸c˜aopara diferentes clientes ou grupos de utilizadores. Um programador pode utilizar a mesma aplica¸c˜aobase e adapt´a-laconsoante as necessidades, atrav´esde diferentes temas (skins) e ficheiros de l´ınguas. Desta forma, uma aplica¸c˜aoescrita e desenvolvida em Inglˆespode ser rapidamente traduzida para Portuguˆese distribu´ıdacom outra aparˆencia mais apropriada ao cliente alvo.

3.3.2 Prism

O Mozilla Prism ´eum browser simplificado e “interpretador” de XUL (tamb´em designado por XULRunner) que acolhe web applications sem a interface gr´aficaha- bitual de um browser. Baseia-se num conceito designado por Site Specific Browser (SSB). Um SSB ´euma aplica¸c˜aocom um browser embebido, desenhado para exe- cutar apenas uma web application. N˜aopossui os menus e barras de ferramentas habituais. Um SSB tem uma integra¸c˜aocom o sistema operativo e com o desktop muito mais estreita do que uma web application acedida atrav´esde um browser, uma vez que ´eexecutado em janela pr´opria. O Prism resulta de uma experiˆenciada Mozilla e visa reduzir as diferen¸casentre as desktop applications tradicionais e as web applications. Um dos aspectos focados ´e a experiˆenciado utilizador. Numa apresenta¸c˜aooficial ´edito que “[o Prism] pretende ser uma ponte entre as diferen¸casque existem entre as aplica¸c˜oestradicionais de desktop e as web applications, explorando novos modelos de usabilidade, enquanto que a linha que as separa se continua a definir” [Lab07].

3.4 HTML 5

A especifica¸c˜aoHTML 5 [Hic08], que se encontra em fase de desenvolvimento pelo grupo WHATWG, pretende ser uma norma de substitui¸c˜aodos padr˜oesHTML 4, XHTML 1.x e do DOM2 HTML. Uma das propriedades que o distingue das tec- nologias que pretende substituir ´eprecisamente o suporte para OWA e armazena- mento de dados no cliente de uma forma relacional. N˜aosendo propriamente uma tecnologia –mas antes uma especifica¸c˜ao–´eaqui mencionada por ter servido como referˆenciaa diversas implementa¸c˜oesde funcionalidades offline, e por se considerar que venha a ter um impacto significativo nas implementa¸c˜oesde diversos browsers. Dion Almaer defendeu no seu blogue que o Gears era uma implementa¸c˜aodo HTML 5. No seu artigo “Gears as a bleeding-edge HTML 5 implementation”[Alm08] o autor diz que ambos –o Gears e o HTML 5 –pretendem dar `a web caracter´ısticas

25 Estado da arte semelhantes e n˜aoencontrar motivo de “competi¸c˜ao”entre as duas, mas que en- quanto o HTML 5 ´euma especifica¸c˜aoo Gears ´euma implementa¸c˜ao. No entanto, tamb´em´everdade que o HTML 5 cobre muitos outros pontos para al´emdas OWA que saem completamente fora do ˆambito do Gears. Se esta es- pecifica¸c˜aoatingir um estado de maturidade que possibilite a sua adop¸c˜aopelos principais browsers, tornando nativo do browser o suporte OWA, ent˜aodeixar´ade fazer sentido a existˆenciade uma extens˜aocomo o Gears. A especifica¸c˜ao HTML 5 disponibiliza duas APIs relevantes para o tema das OWA:

1. Uma base de dados baseada em SQL que permite o armazenamento de dados do lado do cliente.

2. Uma “cache” HTTP que garante a disponibilidade das aplica¸c˜oesmesmo quando o utilizador n˜aopossui uma liga¸c˜ao`aInternet.

Estas caracter´ısticass˜aoas bases da tecnologia das OWA e tˆemcorrespondˆencia com os pontos analisados nas sec¸c˜oes 3.1.1e 3.1.1

3.5 Web applications que usam funcionalidades offline

Nesta sec¸c˜aoapresentam-se algumas web applications que actualmente disponi- bilizam funcionalidades offline. Estas aplica¸c˜oesforam escolhidas para uma an´alise mais pormenorizada por utilizarem o Gears, que tal como descrito na sec¸c˜ao4, foi a tecnologia escolhida para o projecto.

3.5.1 Google Reader e Google Docs

O Google Reader7 ´eum leitor de feeds RSS. Permite gerir a subscri¸c˜aode v´arios sites simultaneamente que disponibilizem conte´udosneste formato e foi a primeira web application da Google com uma vers˜ao offline publicamente acess´ıvel (desde Junho de 2007). O Google Reader implementa o modo “utilizador decide”, oferecendo na sua interface um bot˜aoque permite alternar entre os modos online e offline. O Google Docs8 ´euma web application que permite a cria¸c˜aoe edi¸c˜aode doc- umentos de texto, folhas de c´alculoe apresenta¸c˜oes. Era j´ap´ublicodesde Janeiro de 2008 que o Google estava a desenvolver uma vers˜ao OWA desta aplica¸c˜ao, mas o acesso a uma vers˜aoexperimental s´ofoi poss´ıvel a partir de 31 de Maio de 2008.

7Google Reader - http://reader.google.com/ 8Google Docs - http://docs.google.com/

26 Estado da arte

A implementa¸c˜aodas funcionalidades offline nestas duas aplica¸c˜oesseguiu difer- entes aproxima¸c˜oes, principalmente porque o Google Reader apresenta ao utilizador informa¸c˜oesque s˜aofornecidas por fontes externas, enquanto que no Google Docs, a informa¸c˜ao´ecriada e editada pelo utilizador sobre a forma de documentos. A diferente origem da informa¸c˜aoimplica que no Google Reader seja necess´ario prever casos de excep¸c˜ao,tal como existirem demasiados itens que necessitam de ser transferidos para o cliente. N˜aoobservar este ponto causa um problema grave de usabilidade, e para evitar tempos de espera demasiado longos e uma interface com pouca capacidade de resposta `asac¸c˜oesdo utilizador o Google Reader apenas transfere para o cliente os dois mil itens mais recentes na transi¸c˜aopara o modo offline.

3.5.2 Remember the Milk

O Remember The Milk9 ´euma web application desenvolvida por uma equipa Australiana que proporciona funcionalidades de agenda, gest˜aode tempo e de tare- fas e foi uma das primeiras aplica¸c˜oesindependentes do Google a adoptar o Gears para acessos em modo offline. Permite que os seus utilizadores fa¸camuma gest˜ao de tarefas agrupando-as em listas, adicionando-lhes campos de informa¸c˜aoadicional ou dando-lhes informa¸c˜aogeogr´afica(recorrendo ao servi¸coGoogle Maps10). Entre a sua lista de funcionalidades encontra-se ainda a possibilidade de importar e ex- portar eventos no formato iCalendar (.ics), etiquetas (tags) em tarefas, publica¸c˜ao Really Simple Syndication (RSS) e partilha de categorias de tarefas de acordo com diferentes n´ıveis de permiss˜oesde acesso definidos pelo utilizador.

3.5.3 MySpace e WordPress.com

O MySpace, uma das maiores social networks na Internet, anunciou recente- mente que vai disponibilizar uma vers˜aodo seu cliente de e-mail que utiliza o Gears para acelerar o seu desempenho. Numa fase inicial estar´adispon´ıvel apenas para utilizadores que tenham cinco mil ou mais mensagens na sua caixa de correio, e permitir´aefectuar pesquisas muito mais r´apidoque a sua vers˜ao online. O servi¸code blogs Wordpress.com anunciou tamb´emo in´ıcioda utiliza¸c˜aodesta tecnologia com o fim de melhorar o desempenho. A vers˜aoque utiliza esta tecnologia descarrega e armazena no cliente um conjunto de imagens e scripts que passam a ter preferˆenciasobre os seus cong´eneres online, e que permitem acelerar o processo de carregamento da aplica¸c˜aoe visualiza¸c˜aode blogs.

9Remember The Milk – http://www.rememberthemilk.com/ 10Google Maps – http://maps.google.com

27 Estado da arte

O MySpace e o Wordpress.com s˜aodois exemplos da utiliza¸c˜aoda tecnologia OWA para optimiza¸c˜aode web application j´aexistentes. Sem pretenderem disponi- bilizar uma vers˜aoque seja totalmente offline fazem uso do Gears para armazenar no cliente parte dos recursos frequentemente acedidos na visualiza¸c˜aodas suas p´aginas.

3.6 Escolha da tecnologia

Ap´osa an´alisedas tecnologias apresentada nas sec¸c˜oes 3.1a 3.4, foi necess´arioes- tudar a adequa¸c˜aode cada uma delas ao projecto em quest˜ao.Desde logo ´eposs´ıvel observar que nem todas se dedicam apenas a OWA. Por exemplo, o Adobe AIR, apesar de ter suporte para OWA apenas disponibiliza algumas das funcionalidades identificadas como mais indicadas para a execu¸c˜aodo projecto quando utilizado na sua vertente desktop, tal como exposto na Tabela 3.1, mas a utiliza¸c˜aodesta vertente implicaria o desenvolvimento de novas interfaces e de novas formas de co- munica¸c˜ao(troca de mensagens XML ou JSON). A vertente web do Adobe AIR foca-se mais especificamente nas Rich Internet Applications e permite a reutiliza¸c˜ao do c´odigoj´aexistente (exigindo naturalmente a sua adapta¸c˜aoe a implementa¸c˜ao das funcionalidades pretendidas). A tecnologia escolhida para a realiza¸c˜aodeste trabalho foi o Gears, sendo que um dos principais factores a influenciar esta op¸c˜aofoi a liberdade introduzida pela sua licen¸ca Berkeley Software Distribution (BSD)11. Considerou-se o funcionamento desta ferramenta extremamente adequando `a aplica¸c˜aono WOW!, uma vez que o seu principal objectivo ´eprecisamente tornar poss´ıvel a execu¸c˜ao offline de uma p´agina web e por virtude deste facto o Gears tem uma API concisa e de simples aplica¸c˜aopr´atica,uma vez que n˜aopossui quaisquer outros elementos distractores. O funcionamento do seu ManagedResourceStore ex- emplificado na Figura 3.1, com a capacidade de actualiza¸c˜aode recursos definidos num ficheiro manifesto especificado em JSON pesou tamb´emnesta decis˜ao.

11Sobre a licen¸caBSD consultar: http://www.opensource.org/licenses/bsd-license.php e http: //www.linfo.org/bsdlicense.html

28 Estado da arte

Figura 3.1: Esquema UML do processo efectuado pelos recursos do Gears do tipo ManagedResourceStore para a actualiza¸c˜aodos conte´udosdefinidos no ficheiro manifesto.

29 Estado da arte

Funcionalidade RIAs no browser RIAs no desktop Disponibilidade As aplica¸c˜oespodem ser facil- As aplica¸c˜oesquando instal- da aplica¸c˜ao mente exploradas e utilizadas adas tˆemmaior grau de fun- cionalidades e persistˆencia Instala¸c˜ao N˜ao´enecess´arioqualquer tipo As aplica¸c˜oes s˜ao instaladas de instala¸c˜ao. atrav´esdo browser, ou descar- regadas e instaladas como uma aplica¸c˜aotradicional. Actualiza¸c˜oes Aplica¸c˜oes s˜ao actualizadas O AIR disponibiliza uma API carregando conte´udos para que permite que as aplica¸c˜oes um website. sejam actualizadas de uma forma Sistemas opera- As aplica¸c˜oespodem ser exe- As aplica¸c˜oes s˜ao multi- tivos suportados cutadas em diversos sistemas plataforma e podem ser operativos e browsers. instaladas e executadas em diversos sistemas operativos e browsers. Linguagens de Javascript ´e disponibilizado M´aquinas virtuais de programa¸c˜ao pelo browser e ActionScript Javascript e ActionScript ´edisponibilizado pelo Adobe compat´ıveis com o browser. Flash Player. Capacidade de As RIAs podem ser execu- As aplica¸c˜oespodem ser ex- execu¸c˜ao em tadas numa janela do browser. ecutadas em background e background disponibilizar notifica¸c˜oestal como uma aplica¸c˜ao tradi- cional. Persistˆencia A actividade est´alimitada `a As aplica¸c˜oess˜aoinstaladas e sess˜aodo browser. Quando o est˜aodispon´ıveis no desktop. browser ´eencerrado, toda a Podem armazenar informa¸c˜ao informa¸c˜ao´edescartada. localmente e est˜aodispon´ıveis offline. Integra¸c˜aocom o Integra¸c˜aocom o desktop lim- As aplica¸c˜oes podem aceder desktop itada devido a restri¸c˜oesim- ao sistema de ficheiro, ao clip- postas pelo browser. board, eventos, notifica¸c˜oes, etc. Controlo da inter- As aplica¸c˜oes s˜ao acedidas As aplica¸c˜oes tˆem um vi- face com o uti- atrav´es de uma janela do sual gr´aficopr´oprio, em janela lizador browser, que tem os seus pr´opria. pr´oprios controlos e visual gr´afico. Armazenamento As aplica¸c˜oestˆemarmazena- As aplica¸c˜oestˆemacesso `ato- de dados mento limitado, que pode ser talidade do espa¸codispon´ıvel reescrito pelo browser. localmente, e a uma base de dados com a possibilidade de encripta¸c˜ao.

Tabela 3.1: Compara¸c˜aodas funcionalidades oferecidas pelo Adobe AIR para as platafor- mas web e desktop

30 Estado da arte

Aplica¸c˜ao Modo de execu¸c˜aoutilizado Google Reader Utiliza o modo “utilizador decide”, disponibilizando ao utilizador um bot˜aopara alternar entre os modos online e offline. Como lida com informa¸c˜aorecol- hida de fontes externas, de natureza frequentemente ef´emera,o processo de sincroniza¸c˜aoapenas transfere os dois mil itens mais recentes quando passa ao es- tado offline. Neste modo s˜aoainda guardadas in- forma¸c˜oesde itens lidos e etiquetas atribu´ıdas que s˜aosincronizadas com o servidor quando o utilizador voltar a activar estado online. Google Docs Utiliza o modo “aplica¸c˜aodecide”, permitindo que o utilizador edite os conte´udosde documentos de texto, folhas de c´alculoe de apresenta¸c˜oesindependente- mente do estado da liga¸c˜ao,desde o momento em que as funcionalidades offline s˜aoactivadas. A aplica¸c˜ao faz pequenas sincroniza¸c˜oescom o servidor sempre que necess´ario. Remember the Milk Utiliza um modo h´ıbrido entre “aplica¸c˜aodecide” e “utilizador decide”. A aplica¸c˜aoencarrega-se da sin- croniza¸c˜aode dados, mas disponibiliza um controlo na sua interface que permite despoletar manualmente este processo, para situa¸c˜oesem que o utilizador fez al- tera¸c˜oesrecentes e pretende usufruir das capacidades offline imediatamente. MySpace O MySpace anunciou a utiliza¸c˜aode mecanismos de armazenamento de dados no cliente com recurso a tecnologias OWA, para melhorar o desempenho do seu cliente web de correio electr´onico,nomeadamente no que diz respeito a opera¸c˜oesde pesquisa e or- dena¸c˜ao.Inicialmente esta funcionalidade estar´aape- nas dispon´ıvel para utilizadores com cinco mil ou mais mensagens na sua caixa de correio, mas n˜ao´eainda claro se ser´adisponibilizada uma vers˜aototalmente offline.

Tabela 3.2: Resumo da utiliza¸c˜aode tecnologias OWA em algumas web applications con- sideradas na an´alise do estado da arte.

31 Estado da arte

32 Cap´ıtulo4

Desenvolvimento

Neste cap´ıtulointroduz-se a aplica¸c˜ao WOW! e apresenta-se o estudo que foi feito da adequa¸c˜aode cada tecnologia para a implementa¸c˜aoda funcionalidade of- fline nesta plataforma. Fazem-se diversas considera¸c˜oessobre op¸c˜oesa tomar na concep¸c˜aode OWAs e problemas comuns na sua implementa¸c˜ao,bem como sug- est˜oespara os resolver. O WOW! ´euma aplica¸c˜aoj´aexistente, de gest˜aode ordens de trabalho e do fluxo de tarefas numa empresa ou organiza¸c˜ao.

4.1 Como ficar offline

Na maior parte das web applications de hoje n˜aoexiste uma camada de dados real. A aplica¸c˜aoexemplificada na Figura 4.1, ao longo da sua execu¸c˜ao, acede directamente `asua ´unicafonte de dados (o servidor) atrav´es de chamadas Ajax sem que exista uma separa¸c˜aoclara destas duas camadas. Para que uma web application seja capaz de ser executada sem uma liga¸c˜ao activa `aInternet e mantenha o seu caracter dinˆamico, torna-se necess´arioincluir

Figura 4.1: Exemplo de uma arquitectura de uma web application sem uma camada de abstrac¸c˜aode dados. Figura adaptada de http: // gears. google. com/

33 Desenvolvimento

Figura 4.2: Exemplo de uma arquitectura de uma web application com uma camada de abstrac¸c˜aode dados. Figura adaptada de http: // gears. google. com/ um mecanismo de armazenamento de dados local, seja uma base de dados ou a capacidade de acesso ao disco. No entanto, este mecanismo introduz dois problemas:

1. Qual das fontes de dados utilizar quando um utilizador faz um pedido de informa¸c˜ao?

2. A necessidade de implementar uma camada de acesso a dados que seja coerente quer se use o servidor remoto ou local.

Por exemplo, em vez de a aplica¸c˜aoAjax fazer um pedido relativo `ascontas de todos os utilizadores em formato JSON directamente ao servidor remoto, poder´aao inv´esfazer o pedido a um objecto interm´edioda camada de dados. Este objecto, demonstrado na Figura 4.2, ser´arespons´avel por implementar uma interface de acesso `abase de dados e retornar um objecto JavaScript com uma representa¸c˜aoda resposta do servidor. Mas a existˆenciade uma segunda fonte de dados torna recomend´avel tamb´em a implementa¸c˜aode uma camada de data switching, que em fun¸c˜aoda existˆencia de conex˜ao`aInternet e da necessidade de actualiza¸c˜aodos dados, decide se faz o pedido ao servidor remoto ou se fornece os dados presentes localmente. Este objecto, apresentado na Figura 4.3, decidir´ade forma transparente para o utilizador se lˆeou escreve os dados localmente ou se os envia/pede ao servidor remoto, e pode tamb´em iniciar o processo de convergˆenciade dados e de resolu¸c˜aode conflitos.

4.1.1 Funcionalidades dispon´ıveis em modo offline

Por raz˜oespr´aticas,´eprov´avel que nem todas as funcionalidades da aplica¸c˜ao possam ser disponibilizadas em modo offline. E´ necess´arioescolher quais as fun- cionalidades a disponibilizar no modo offline da aplica¸c˜aoe implementar a l´ogica que decide quando utilizar a base de dados local ou o servidor remoto. Apesar do acesso `abase de dados local ser muito mais r´apidodo que aceder ao servidor, o acesso local nem sempre ´epreferido. H´av´ariasraz˜oesque podem tornar necess´ario escolher o acesso ao servidor em vez do acesso local.

34 Desenvolvimento

Figura 4.3: Exemplo de uma arquitectura de uma web application com uma camada de abstrac¸c˜aode dados e um data switch. Figura adaptada de http: // gears. google. com/

1. A informa¸c˜aopode ter uma natureza ef´emerae n˜aofazer sentido guard´a-la localmente. Exemplo: dados em tempo real da bolsa de valores de Lisboa.

2. Algumas aplica¸c˜oeslidam com informa¸c˜aoque s´ofaz sentido na presen¸cade uma liga¸c˜ao.Exemplo: Instant Messaging

3. A aplica¸c˜aopoder´aescolher apenas guardar a informa¸c˜aoacedida mais fre- quentemente. Exemplo: para o utilizador poder alterar a l´ıngua de apre- senta¸c˜aoda aplica¸c˜ao, os conte´udoster˜aoque ser guardados em todas as l´ınguasdisponibilizadas pela aplica¸c˜ao. O custo de implementa¸c˜aode algu- mas funcionalidades pode n˜aocompensar o benef´ıcio.

4. A capacidade de processamento ou de armazenamento de dados pode inviabi- lizar algumas funcionalidades offline. Exemplo, se uma dada funcionalidade necessita de uma capacidade de armazenamento de dados para al´emdo razo´avel de um computador pessoal para ser ´util(visualizador de mapas).

4.2 Modos de execu¸c˜ao

Um aspecto que ´enecess´arioestudar para qualquer web application que se deseje disponibilizar offline prende-se com trˆesmodos de execu¸c˜aoque devem ser consid- erados:

1. Utilizador decide o modo de execu¸c˜ao: A aplica¸c˜aotem modos distintos de execu¸c˜aopara os estados online e offline, geralmente indicados na interface com o utilizador. O utilizador ´einformado do estado da liga¸c˜aoe participa na altera¸c˜aode estado de execu¸c˜aoda aplica¸c˜aointeragindo com a sua interface,

2. Aplica¸c˜aodecide o modo de execu¸c˜ao: Pode ser implementado na pr´opria aplica¸c˜aoum mecanismo de detec¸c˜aodo estado da liga¸c˜ao(por exemplo, atrav´es

35 Desenvolvimento

de chamadas Ajax peri´odicas),transitando de estado e sincronizando automati- camente. Desta forma o utilizador n˜aoprecisa de participar na altera¸c˜aode estado, a menos que exista um conflito de dados que requeira a sua aten¸c˜ao.

3. Aplica¸c˜aoassume sempre o estado offline: Outra hip´oteseser´aimple- mentar uma web application que assume sempre estar na ausˆenciade uma liga¸c˜aoao servidor de dados. Esta aplica¸c˜aoresponde aos pedidos do uti- lizador efectuando pedidos de informa¸c˜ao ao servidor, mas n˜aodependendo de uma resposta v´alidapara mostrar a informa¸c˜aoque j´atinha dispon´ıvel an- teriormente. A sincroniza¸c˜aode dados com o servidor ´etentada sempre que existam dados para submeter e uma ac¸c˜aodo utilizador.

4.2.1 Modo “utilizador decide”

Neste modo de execu¸c˜ao,quando a aplica¸c˜aoest´a online comunica com o servidor remoto; quando est´a offline comunica com a base de dados local. A informa¸c˜aotem que ser sincronizada sempre que se muda de modo. A principal vantagem desta op¸c˜ao ´eque ´ea mais simples de implementar mesmo para uma aplica¸c˜aoj´aexistente, e portanto uma forma expedita de disponibilizar uma OWA. No entanto tem tamb´em algumas desvantagens que devem ser consideradas:

1. O utilizador tem que se lembrar de fazer a altera¸c˜aode estado de execu¸c˜ao. Caso contr´ariopoder´aestar a trabalhar inadvertidamente numa vers˜ao offline com dados antigos, ou n˜aoter a informa¸c˜aonecess´ariase perder subitamente a liga¸c˜ao.

2. Se a liga¸c˜aofor intermitente, o utilizador ter´aou que escolher um dos modos de execu¸c˜ao,ou estar constantemente a trocar.

3. Uma vez que a base de dados n˜aoest´asempre actualizada, n˜aopoder´aser utilizada para melhorar a rapidez de execu¸c˜aoda aplica¸c˜aoquando em modo online.

4.2.2 Modo aplica¸c˜aodecide

A detec¸c˜aodo estado da liga¸c˜aopode ser implementada atrav´esde um pedido ass´ıncronoao servidor tal como ilustrado na Figura 4.4. O resultado deste pedido definir´ao estado online (em caso de sucesso) ou offline (em caso de falha). A sincroniza¸c˜aode dados poder´aser feita sempre que ocorra uma transi¸c˜aodo es- tado offline para o estado online. No entanto este m´etodo n˜aose revela eficiente

36 Desenvolvimento

Figura 4.4: Esquema gr´aficoilustrando uma OWA executando no browser utilizando um modo de execu¸c˜aodo tipo “aplica¸c˜aodecide”, com detec¸c˜aoautom´aticado estado da liga¸c˜aovia pedidos Ajax ass´ıncronosa cada cinco segundos. para grandes aplica¸c˜oes,uma vez que requer a troca de mensagens demasiado fre- quentes com o servidor, que se destinam exclusivamente `amonitoriza¸c˜aodo estado da liga¸c˜ao.

4.2.3 Modo “aplica¸c˜aoassume o estado offline”

Uma aplica¸c˜aotransparente funciona assumindo sempre que est´aem modo of- fline, ou pelo menos que pode perder a liga¸c˜aoa qualquer momento. Neste modo, tira-se o m´aximopartido do armazenamento local, e fazem-se pequenas mas cont´ınuas sincroniza¸c˜oescom o servidor sempre que este esteja dispon´ıvel. A sincroniza¸c˜aode dados tamb´em´efeita sempre que se volta ao estado online. As vantagens de uma web application transparente s˜aoas seguintes:

• Uma melhor experiˆenciapara o utilizador, uma vez que este n˜ao tem que se preocupar com o estado da liga¸c˜aoou com a transi¸c˜aode estados.

• A aplica¸c˜aofunciona de forma coerente, mesmo que a liga¸c˜aoseja intermitente.

• Uma vez que o armazenamento local ´emantido actualizado, pode ser utilizado para melhorar o desempenho da aplica¸c˜ao.

Foram identificadas as seguintes desvantagens:

• E´ mais dif´ıcilde implementar e a sincroniza¸c˜aoacarreta cuidados especiais.

• E´ necess´arioum cuidado adicional para evitar que as opera¸c˜oesde sincroniza¸c˜ao frequentes que ocorrem automaticamente n˜aoafectem os tempos de resposta da aplica¸c˜ao.

• Os testes `aaplica¸c˜aos˜aomais complexos uma vez que a sincroniza¸c˜aode dados n˜aoocorre em resposta a uma ac¸c˜aodo utilizador.

37 Desenvolvimento

4.3 Sincroniza¸c˜aode dados

A sincroniza¸c˜aode dados consiste na capacidade de identificar e transferir pe- riodicamente a vers˜aomais actual dos dados, entre o cliente e o(s) servidor(es). Independentemente do modo de execu¸c˜aoescolhido e mesmo do estado da liga¸c˜ao do utilizador, a informa¸c˜aoarmazenada localmente e a informa¸c˜aoarmazenada no servidor estar˜aopor vezes dessincronizadas. Isto poder´aacontecer sempre que, por exemplo:

• O utilizador faz altera¸c˜oesem modo offline.

• A informa¸c˜ao´epartilhada e pode ser alterada por uma entidade externa.

• A informa¸c˜ao´efornecida por uma entidade externa.

Resolver estas diferen¸casde forma a que a informa¸c˜aolocal e remota encontrem a igualdade chama-se sincroniza¸c˜aode dados. H´av´ariasaproxima¸c˜oesposs´ıveis para este efeito que dependem da natureza da aplica¸c˜ao,cada uma com vantagens e desvantagens. A capacidade de suportar a mobilidade dos utilizadores torna-se cada vez um ponto mais importante de uma web application. Para uma organiza¸c˜aode dimens˜ao global, ´evital garantir que os seus colaboradores tˆemacesso `amesma informa¸c˜ao que tˆemdispon´ıvel nos seus postos de trabalho mesmo quando est˜aofora. Na maior parte dos casos, estes colaboradores ter˜aoacesso a um computador port´atil,um desktop, Smartphone ou PDA, e atrav´esdestes poder˜aoter acesso `asua informa¸c˜ao directamente atrav´esde liga¸c˜oesencriptadas Virtual Private Network (VPN), de um servidor web, ou de outro mecanismo de rede. Esta solu¸c˜ao´esimples de implementar, mas infelizmente, para a maioria dos colaboradores com grande factor de mobilidade, n˜ao´esatisfat´oria. As principais desvantagens s˜aoas seguintes:

• Requisitos de liga¸c˜ao: Para permitir que os utilizadores acedam `asua in- forma¸c˜ao,´enecess´ariogarantir a capacidade constante de comunica¸c˜ao,pelo menos durante o tempo necess´ario que assegure a sua transferˆencia.

• Velocidade de liga¸c˜ao: sem persistˆenciade dados e em liga¸c˜oesde fraca qualidade, a usabilidade por vezes torna-se inaceit´avel.

• Ponto cr´ıticode falha: Com este tipo de solu¸c˜ao,todos os utilizadores de- pendem da base de dados que armazena informa¸c˜aovital para o funcionamento do cliente.

38 Desenvolvimento

• Scalability do servidor: A´ medida que novos utilizadores s˜aoadicionados ao sistema o desempenho do servidor ´eafectado, levando `anecessidade de maior capacidade de armazenamento e/ou processamento.

De acordo com a documenta¸c˜aoda Microsoft Sync Framework [Mic08], uma solu¸c˜aoalternativa consiste em implementar uma Occasionally Connected Appli- cation (OCA). Uma OCA permite a um utilizador remoto continuar a aceder `a sua informa¸c˜aomesmo depois de perder a liga¸c˜ao,mas em vez de recorrer a um servidor, recorre a informa¸c˜aoarmazenada no seu dispositivo local. Para preencher localmente a informa¸c˜aoque o utilizador necessita, uma OCA possui mecanismos de sincroniza¸c˜aode dados que s˜aooferecidos por esta framework.

4.3.1 Quando sincronizar?

Uma das solu¸c˜oesmais simples de implementar passa por disponibilizar um mecanismo manual que despoleta a sincroniza¸c˜ao. Diz-se manual porque ´eo uti- lizador que escolhe quando sincronizar, e pode ser implementada simplesmente fazendo o upload de toda a informa¸c˜aopara o servidor e depois fazendo o download da c´opiamais recente da informa¸c˜aoantes de voltar a ficar offline. Para que esta seja uma op¸c˜aovi´avel ´enecess´arioque:

• O volume de dados seja suficientemente pequeno para que possa ser transferido do servidor para o cliente num espa¸code tempo aceit´avel,

• Que o utilizador indique explicitamente que quer mudar para o estado offline, ou online pressionando um bot˜aoda interface.

Contudo, podem ser identificados alguns problemas relacionados com esta abor- dagem:

• Os utilizadores nem sempre podem prever o estado das suas liga¸c˜oes. A liga¸c˜ao pode-se perder subitamente ou ter um car´acterintermitente.

• O utilizador pode esquecer-se de efectuar a sincroniza¸c˜ao.

Outra op¸c˜aoser´aconjugar a sincroniza¸c˜aode dados com o modo de execu¸c˜ao transparente. A sincroniza¸c˜aoocorre automaticamente em background, de forma n˜aointrusiva para o utilizador. A aplica¸c˜aocomunica com o servidor regularmente efectuando pequenas trocas de dados, com o objectivo de manter o sincronismo da informa¸c˜aolocal e remota. Esta abordagem pode ser implementada com pedidos Ajax ass´ıncronos e regulares ao servidor, o que permite manter a interac¸c˜aocom a interface flu´ıda,evitando bloqueios. Estes pedidos s˜aofeitos prevendo as situa¸c˜oes

39 Desenvolvimento de disponibilidade ou indisponibilidade (timeout) do servidor. Uma outra op¸c˜ao ser´apermitir que o servidor comunique essas altera¸c˜oesutilizando Comet1 tal como descrito em [Wil06] e [Rus06]. As vantagens destas aproxima¸c˜oes s˜ao:

• A informa¸c˜aoest´adispon´ıvel a qualquer altura que o utilizador decida ficar offline ou que a liga¸c˜aoseja acidentalmente perdida.

• O desempenho da aplica¸c˜aopode ser melhorado quando se estiver a utilizar uma liga¸c˜ao`aInternet lenta, uma vez que o acesso a dados locais ´emais eficiente do que a consulta de dados ao servidor.

4.4 WOW!

O WOW! ´euma plataforma integrada de gest˜aode ordens de trabalho, j´aex- istente e desenvolvida pela Critical Software S.A., `aqual se pretende adicionar a capacidade de execu¸c˜ao offline. Esta aplica¸c˜ao´eextremamente dinˆamicae con- figur´avel, com um conjunto extremamente rico de funcionalidades, das quais se destacam:

• Gest˜aode Ordens de Trabalho – suportando a gest˜aodos pedidos desde a sua cria¸c˜aoat´eao seu fecho, tomando em conta os diferentes tipos de pedidos (ordens de trabalho, pedidos de informa¸c˜ao,melhorias, resolu¸c˜aode problemas, etc.), e diferentes tipos de ac¸c˜oesposs´ıveis para cada um (Figura 4.5);

• Monitoriza¸c˜aode altera¸c˜oes– Hist´oricode mudan¸cas,anexos e estados, criando relat´oriosde altera¸c˜aoautomaticamente (o quˆe,por quem e quando);

• Uso de Service Level Agreements (SLAs)– E´ poss´ıvel associar a um pedido um SLA que define qual o per´ıodo de tempo atribu´ıdo`aresolu¸c˜aode um pedido, controlando e agilizando a resolu¸c˜aodo mesmo;

• Utiliza¸c˜aode queries de utilizador configur´aveis que permitem acesso r´apido a determinadas ordens de trabalho de acordo com o filtro configurado (por exemplo, “Para mim”, “Para o Grupo”, “Pelo Grupo”).

• Gest˜aodo relacionamento entre pedidos;

• Pesquisa e filtragem de ordens de trabalho;

• Exporta¸c˜aode dados em formatos padr˜ao(PDF, DOC ou XLS);

• Integr´avel com solu¸c˜oesexternas.

40 Desenvolvimento

Figura 4.5: Detalhe de um conjunto poss´ıvel de estados e respectivas transi¸c˜oespara uma dada ordem de trabalho no WOW!, desde a sua submiss˜aono sistema at´e`asua conclus˜ao em fecho ou cancelamento. Esta figura representa apenas um exemplo, j´aque o mapa de estados para uma ordem de trabalho ´edinˆamicoe pode ser alterado por um administrador. Figura retirada de uma brochura promocional do WOW!, Critical Software S.A.

A utiliza¸c˜aode uma ferramenta deste tipo, por parte de uma empresa ou orga- niza¸c˜ao,oferece vantagens quer `agest˜aode topo quer aos colaboradores individuais: para os colaboradores individuais, o WOW! ´euma aplica¸c˜aoonde est˜aoregistadas todas as tarefas, contribuindo activamente para o desenvolvimento em ambientes multi-tarefa e para a organiza¸c˜aopessoal das tarefas de acordo com prioridades. Para a gest˜aode topo, esta ferramenta permite obter uma vis˜aoglobal do estado da organiza¸c˜aoem termos de tempo gasto por tarefa executada, sendo uma mais valia para a previs˜aoe gest˜ao/aloca¸c˜aode recursos.

4.5 Vis˜aogeral sobre a arquitectura do WOW!

O WOW! ´einteressante n˜aos´odo ponto de vista de produto como tamb´emdo ponto de vista de plataforma. Existem diversos plug-ins que estendem as funcional- idades do WOW!, e existem at´eprojectos que pretendem usar a arquitectura do WOW! para criar produtos com fins diferentes do inicial (por exemplo o WOW- Storm – um sistema de registo e classifica¸c˜aosocial de ideias). De modo a conseguir ter essa expansibilidade, a plataforma WOW! assenta sob uma arquitectura distribu´ıda,modular e expans´ıvel, com uma componente central – o core – estruturado em camadas l´ogicas. E´ no core que se situam todas as

1O Comet ´eum conceito semelhante ao Ajax introduzido por Alex Russel, mas no qual ´eo servidor que toma a iniciativa de “enviar” os dados ao browser sem que este tenha que efectuar um pedido. Tamb´em´e conhecido por Ajax Push, Reverse Ajax ou HTTP Streaming

41 Desenvolvimento funcionalidades base da aplica¸c˜ao,quer a n´ıvel l´ogico,funcional e de apresenta¸c˜ao, quer a n´ıvel de gest˜aoe configura¸c˜ao. E´ poss´ıvel a execu¸c˜aode v´ariasinstˆancias do core simultaneamente, em servidores distintos, o que permite a alta escalabilidade e disponibilidade desta aplica¸c˜ao. A consistˆenciados dados fica sempre garantida atrav´esda partilha da base de dados e pelo balanceamento dos pedidos, uma vez que cada um ´eencaminhado para uma ´unicainstˆancia. O WOW! apresenta tamb´ema vantagem de ser uma plataforma extens´ıvel. E´ poss´ıvel adicionar novas caracter´ısticas`aplataforma atrav´esde componentes que se podem ser divididos em duas categorias: plugins e connectors. Os plugins s˜aocomponentes que se encontram no mesmo n´of´ısicoque a aplica¸c˜ao, partilhando do mesmo contexto de execu¸c˜aodo core. S˜aoassim uma forma mais directa de obter informa¸c˜aoda plataforma, visto que n˜aopossuem restri¸c˜oesde acesso aos dados nem dependˆenciasexternas. A arquitectura deste componente ter´a assim que permitir v´ariasexecu¸c˜oesinstanciadas, cada uma associada a um core. Por outro lado, os connectors s˜aocomponentes que se encontram distribu´ıdos, comunicando externamente com o core. Quer a sua execu¸c˜ao,quer a obten¸c˜ao dos dados est˜aoassim dependentes de interfaces de comunica¸c˜aoexternas que a plataforma disponibiliza. Estes componentes, ao contr´ariodos plugins, s˜aoinstan- ciados unicamente e recorrem ao protocolo de comunica¸c˜ao Java Messaging Service (JMS) para comunicar com o core.

4.6 WOW! Offline

Para al´em das op¸c˜oestomadas relativamente `atecnologia a utilizar, surgiu tamb´ema necessidade de optar por um dos modos de execu¸c˜aoapresentados na sec¸c˜ao 4.2. Das trˆesop¸c˜oesposs´ıveis, foi o modo “aplica¸c˜aoassume o estado offline”, descrito na sec¸c˜ao 4.2.3, que mereceu a maior aten¸c˜ao,uma vez que re´uneas vantagens de uma experiˆenciamais positiva para o utilizador (uma vez que este n˜aotem que participar activamente na altera¸c˜aodo modo execu¸c˜aocomo descrito na sec¸c˜ao 4.2.1) e n˜aoconstitui uma sobrecarga excessiva para servidor (como o modo abordado na sec¸c˜ao 4.2.2). No entanto esta op¸c˜aocomprometia a complexidade da implementa¸c˜aopara al´em dos objectivos propostos para este projecto, e para cumprir o prazo dado foi tomada a decis˜aode implementar o modo “utilizador decide”, especificando apenas de forma te´oricao modo “aplica¸c˜aoassume o estado offline”. As caracter´ısticas do Gears foram j´adescritas na sec¸c˜ao 3.1. Na Figura 4.7 mostra-se a sua forma de funcionamento quando integrado numa web application.

42 Desenvolvimento

Nesta figura representa-se o m´odulo LocalServer do Gears como um ponto de de- cis˜ao.Aqui s˜aotestadas as condi¸c˜oesque determinam se o pedido ser´ainterceptado e servido localmente ou se prossegue para uma m´aquinaremota. E´ tamb´emrepresen- tada uma base de dados, que corresponde ao m´odulo Database, mas que poder´an˜ao ser utilizada. Este m´odulo,tal como o m´odulo Workerpool, tem car´acteropcional e s˜aoutilizados consoante os requisitos da aplica¸c˜ao. A plataforma WOW! lida com mais dados do que ´enecess´ariopassar para o lado do cliente. Em conformidade com o j´aexposto na sec¸c˜ao 4.1.1, volta-se a frisar que n˜aose pretende recriar toda a l´ogicade neg´ocio,nem os conte´udosda base de dados no cliente, pela sua complexidade e volume de dados. Pretende-se, pelo contr´ario,permitir que os utilizadores tirem partido da capacidade de poder consultar as suas ordens de trabalho quando n˜aodisp˜oede uma liga¸c˜ao,transferindo apenas o essencial para isto seja poss´ıvel. A p´aginainicial do WOW! apresenta um resumo das ordens de trabalho abertas – enviadas e recebidas – que se pretende permitir visualizar offline (ver Figura 4.6). Como prova de conceito foi efectuada uma abordagem pragm´aticadas v´ariaspossi- bilidades descritas na sec¸c˜ao 4.2.

4.6.1 Modo “aplica¸c˜aodecide” com detec¸c˜aoautom´aticada liga¸c˜ao

A primeira abordagem estudada para a disponibiliza¸c˜aodas funcionalidades of- fline foi o modo “aplica¸c˜aodecide” com detec¸c˜aoautom´aticade liga¸c˜ao,apresentado na sec¸c˜ao 4.2.2. Para que isto seja poss´ıvel foi implementado um mecanismo de ver- ifica¸c˜aoperi´odicado estado da liga¸c˜aoatrav´esde chamadas Ajax ass´ıncronas. O resultado destes pedidos determina o estado da aplica¸c˜ao,executando as tarefas de sincroniza¸c˜aode dados sempre que pertinente. Este m´etodo, embora imediato e simples de implementar depressa se revelou inadequado para o projecto, devido ao elevado consumo de recursos do servidor que a utiliza¸c˜aointensiva faz esperar: a comunidade da plataforma WOW! no principal cliente excede os 7000 utilizadores. Foi estimado que para uma utiliza¸c˜aode fluidez aceit´avel o estado da liga¸c˜aodeveria ser testado a cada cinco segundos. Assumindo uma ades˜ao(previs˜aopessimista) de 1% aos servi¸cos offline assistir-se-ia a cerca de 840 pedidos adicionais por minuto. Mas o principal problema desta aproxima¸c˜aoprende-se com o facto de a ver- ifica¸c˜aoser feita em intervalos de tempo discretos, levando `apossibilidade de a aplica¸c˜aopoder ter em dado momento, uma representa¸c˜aoerrada do seu estado real da liga¸c˜ao. Este problema ´eilustrado na Figura 4.8 onde se vˆeclaramente a discrepˆanciaentre o estado real da liga¸c˜aoe a representa¸c˜ao interna que esta tem. Note-se que nesta janela de tempo, qualquer ac¸c˜aodo utilizador que exija uma resposta s´ıncronado utilizador lev´a-lo-´apara um “beco sem sa´ıda” onde n˜aoter´a

43 Desenvolvimento

Figura 4.6: A p´aginainicial do WOW apresenta um resumo das ´ultimasordens de trabalho enviadas e recebidas. Na imagem pode-se observar a transi¸c˜aodo estado online para offline.

acesso `avers˜ao offline porque a aplica¸c˜aon˜aofez a transi¸c˜aoautom´atica,nem acesso `avers˜ao online, porque na verdade, n˜aopossui uma liga¸c˜ao.O que acontecer´anesta situa¸c˜aoser´auma tentativa de acesso ao servidor por parte da aplica¸c˜ao,numa altura em que este se encontra indispon´ıvel, e o resultado ser´auma mensagem de “pedido excedeu o tempo” apresentado pelo browser. Este ´eum estado sem retorno porque ap´oso browser apresentar esta mensagem todos os recursos JavaScript ficam indispon´ıveis, tornando imposs´ıvel o regresso ao estado anterior ou o tratamento do erro de qualquer outra forma. No entanto, as chamadas Ajax podem ser tratadas de forma especial para a eventualidade de falha, e portanto, n˜aoconstituem problema.

44 Desenvolvimento

Figura 4.7: Ilustra¸c˜aodo funcionamento do Gears numa web application que utiliza um motor Ajax. Os pedidos HTTP ou HTTPS podem ser interceptados e tratados localmente ou podem ser feitos a uma m´aquina remota, consoante se verificarem ou n˜aoas condi¸c˜oes expressas no ponto 3.1.1. E´ representado um acesso a uma base de dados local (fornecida pelo Gears), mas a sua utiliza¸c˜ao´eopcional.

4.6.2 Implementa¸c˜aodo modo “utilizador decide”

Este modo de execu¸c˜aofoi j´adescrito na sec¸c˜ao 4.2.1 e a sua principal carac- ter´ıstica´eser o utilizador a decidir se a aplica¸c˜aodeve utilizar um servidor remoto ou a m´aquinalocal como fornecedor de dados. Relativamente ao WOW!, o WOW! Offline na vertente “utilizador decide” vem alterar os seus casos de uso, dando ao utilizador a possibilidade de alterar o estado de execu¸c˜aoda aplica¸c˜ao(entre online e offline). Resta dizer que no modo online se mantˆemtodas as funcionalidades anteriores, e que no modo offline torna-se poss´ıvel visualizar os conte´udosda p´aginaprincipal do WOW! (Figura 4.6) e os detalhes das ordens de trabalho (Figura 4.9), tal como expressa a Figura 4.10 Esta aproxima¸c˜aofoi utilizada na prova de conceito do WOW! adicionando um controlo `ainterface desta aplica¸c˜aoque permite ao utilizador alternar entre os esta- dos online e offline. Na transi¸c˜aode online para offline s˜aodescarregados os recursos necess´ariospara a execu¸c˜aodesta aplica¸c˜aosem recorrer `aInternet. Para o fazer

45 Desenvolvimento

Figura 4.8: Neste exemplo do modo “aplica¸c˜aodecide”, o teste da liga¸c˜ao´efeito ´efeito a cada cinco segundos. O resultado deste teste n˜aoreflecte sempre o estado real da aplica¸c˜ao, podendo levar a aplica¸c˜aoa ter comportamentos indesej´aveis. Na figura assinala-se um per´ıodo de tempo no qual a representa¸c˜aointerna do estado da liga¸c˜aon˜aocorresponde `a realidade.

´eutilizado um recurso ResourceStore e um ManagedResourceStore (introduzidos em 3.1.1). O primeiro ´eutilizado para armazenar a p´aginaprincipal do WOW! – do- ravante designada por home.jsp – e o segundo ´eutilizado para armazenar imagens, folhas de estilo CSSe scripts JavaScript. Para a implementa¸c˜aodeste modo de execu¸c˜aoforam identificadas as seguintes tarefas:

1. Guardar informa¸c˜aoque permita a recria¸c˜aodas p´aginasque se pretende disponibilizar offline (utilizando o Gears).

2. Disponibilizar um controlo que permita alterar o estado de execu¸c˜aoatrav´es da interac¸c˜aocom a p´agina principal.

3. Durante a sincroniza¸c˜aode dados, apresentar o progresso da transferˆenciade dados.

O primeiro passo consistiu na identifica¸c˜aode todos os conte´udosque s˜aonecess´arios transferir para a execu¸c˜ao offline. Foi utilizado um recurso do Gears do tipo ManagedResourceStore, que recorre a um ficheiro manifesto para identificar to- dos os ficheiros que deve transferir. Este recurso ´egerido automaticamente pelo Gears, transferindo para o cliente a vers˜aomais recente sempre que ´enecess´ario, isto ´e,sempre que exista um ficheiro manifesto com uma identifica¸c˜aode vers˜aoque seja diferente da actualmente dispon´ıvel no cliente. Uma vez identificados todos ficheiros necess´ariospara a execu¸c˜ao offline num (ou mais) ficheiros manifesto o Gears encarrega-se da sua actualiza¸c˜ao,mas o preenchimento destes ficheiros man- ifesto ´emanual, o que se traduz num cuidado extra na manuten¸c˜aoda aplica¸c˜ao. A forma como esta informa¸c˜ao´eguardada deve tamb´emser cuidadosamente estudada. A op¸c˜aomais flex´ıvel passa por utilizar o m´odulo Database apresentado na sec¸c˜ao 3.1.1 e guardar a informa¸c˜aode uma forma relacional. Para a recria¸c˜ao das p´aginaspode ser disponibilizada uma vers˜aoHTML da p´aginaque funciona

46 Desenvolvimento

Figura 4.9: P´aginade visualiza¸c˜aodo detalhe de uma ordem de trabalho.

como template, n˜aopossui quaisquer dados e ´eutilizada apenas em modo offline. E´ preenchida para cada pedido retirando os dados relevantes da base de dados. O modelo de dados do WOW! torna esta op¸c˜aoextremamente trabalhosa, uma vez que as entidades envolvidas na gera¸c˜aode cada p´aginade informa¸c˜ao,sobre cada ordem de trabalho, tˆemrela¸c˜oesde dependˆenciacomplexas, seguindo padr˜oes muito vari´aveis. Por exemplo: em cada ordem de trabalho existe um formul´arioque permite a sua progress˜aode estado, com diversos campos opcionais e obrigat´orios; este formul´ario´edefinido pelo administrador e est´arelacionado n˜aoapenas com o tipo de ordem de trabalho, mas tamb´emcom o estado actual em que esta se encontra e a ac¸c˜aoque se pretende realizar. O elevado n´umerode combina¸c˜oesde tipos de ordem de trabalho, estados e ac¸c˜oesque existem num dado momento, juntamente com a sua possibilidade de altera¸c˜ao,obrigariam `aimplementa¸c˜aode uma l´ogicade neg´ociocomplexa, o que est´afora do ˆambito deste projecto.

47 Desenvolvimento

Figura 4.10: Esquema UML que expressa os casos de uso do WOW! Offline no modo “utilizador decide”.

4.6.3 Especifica¸c˜aodo modo “aplica¸c˜aoassume o estado offline”

A aproxima¸c˜aopara o modo “aplica¸c˜aoassume o estado offline” foi tamb´em dividida em v´ariastarefas:

1. Guardar informa¸c˜aoque permita a recria¸c˜aoda p´aginaprincipal do lado do cliente no estado offline (utilizando o Gears)

2. Dotar a aplica¸c˜aodo cliente de um mecanismo de detec¸c˜aoda liga¸c˜ao.

3. Identificar os “momentos chave” em que dever´aocorrer sincroniza¸c˜aode dados

4. Implementar a sincroniza¸c˜aode dados.

A sincroniza¸c˜aode dados deve ser feita em ambas as transi¸c˜oes online-offline e offline-online, quer para transferir novos dados do servidor (os pedidos podem ser alterados por outros utilizadores) quando se transita do estado quer para comunicar eventuais altera¸c˜oesfeitas em modo offline. Relativamente ao WOW!, o WOW! Offline na vertente “aplica¸c˜aoassume o es- tado offline” vem alterar os seus casos de uso, dando ao utilizador a possibilidade de activar esta funcionalidade. A partir do momento que a funcionalidade est´aac- tivada o utilizador deve tamb´emter a possibilidade de gerir algumas preferˆencias relacionadas com privacidade de dados. Dever´ater a hip´otesede desactivar o ar- mazenamento local e de remover todos os dados j´aarmazenados tal como descrito na Figura 4.11.

48 Desenvolvimento

Figura 4.11: Esquema UML que expressa os casos de uso do WOW! Offline no modo “utilizador decide”.

A primeira vez que o WOW! Offline ´eacedido por um cliente, e caso seja detec- tada a presen¸cado Gears, todos os recursos necess´arios`asua execu¸c˜aos˜aotrans- feridos. Todos os acessos posteriores ser˜aofeitos a estes recursos locais (recorda-se que o Gears pode ser utilizado para os manter actualizados recorrendo ao Managed- ResourceStore 3.1.1). Atrav´esdo JavaScript ´eposs´ıvel interceptar os eventos de load e unload da p´agina,que s˜aodespoletados sempre que ocorre um re-acesso da mesma (incluindo a ac¸c˜ao refresh comum dos browsers) sempre que esta ´eabandonada ou ainda ou ainda se a janela for encerrada. Tal como sugerido na sec¸c˜ao 4.6.2 a camada de interface desta aplica¸c˜ao(cada p´aginaindividual em HTML) dever´aser implementada como sendo um template para apresenta¸c˜ao de dados, sendo totalmente preenchida atrav´esde fun¸c˜oesem JavaScript. O objectivo deste ponto ´ecriar um padr˜aode dados que permita ao JavaScript preencher os dados em cada p´agina (template) independentemente de qual seja a fonte – o servidor remoto ou a m´aquinalocal tal como exemplificado no diagrama da Figura 4.12. Na figura a aplica¸c˜aorecorre ao servidor remoto para obter os dados pretendidos quando se encontra na presen¸cade uma liga¸c˜ao,mas para dados que exijam uma carga de processamento pelo servidor este acto pode ser

49 Desenvolvimento

Figura 4.12: Esquema UML que expressa o acto de recolha de dados em modo online e offline, recorrendo ao servidor (modo online) e ao sistema de armazenamento de dados local fornecido pelo Gears (modo offline). substitu´ıdopelo envio de um campo de controlo que se destina a aferir se os dados locais se encontram actualizados. No caso de estarem actualizados a comunica¸c˜ao com o servidor pode ser substitu´ıdapor uma query `abase de dados local.

50 Cap´ıtulo5

Resultados e Futuros Desenvolvimentos

Todo o estudo feito sobre o tema OWA foi j´aabordado ao longo do documento. Neste cap´ıtuloapresentam-se os resultados obtidos na implementa¸c˜aoda prova de conceito, que visava compreender a melhor forma de disponibilizar uma vers˜aoof- fline no WOW!, uma plataforma de gest˜aode ordens de trabalho j´aexistente, de- senvolvida pela Critical Software S.A.

5.1 Resultados Obtidos

Os resultados obtidos neste projecto s˜aoextremamente satisfat´orios, uma vez que o estudo do tema OWA e a implementa¸c˜aode uma prova de conceito que o ilustrasse foi conseguido com sucesso. A funcionalidade offline foi adicionada ao produto WOW! da Critical Software S.A., permitindo a visualiza¸c˜aode ordens de trabalho, e dos seus detalhes, mesmo na ausˆenciade uma conex˜aoactiva `aInternet. Embora para a solu¸c˜aoimplementada tenha sido utilizada uma abordagem do tipo “utilizador decide”, pretende-se que esta seja convertida para “aplica¸c˜aodecide”, ou mesmo para uma aproxima¸c˜aoh´ıbrida, semelhante `autilizada pelas aplica¸c˜oes estudadas nas sec¸c˜oes 3.5.1e 3.5.2. Para a sua implementa¸c˜ao,descrita no cap´ıtulo4, foram tomadas decis˜oesde or- dem pr´aticaque permitissem tornar o trabalho exequ´ıvel nos prazos dados. Tentou- se sempre que estas decis˜oesafectassem o m´ınimoem termos de desempenho e de experiˆenciapara o utilizador. Considera-se que a implementa¸c˜aodo modo offline com uma transi¸c˜aoentre modos do tipo “utilizador decide” (ver sec¸c˜ao 4.2) reflecte o compromisso entre o desempenho pretendido e os recursos dispon´ıveis, e para al´em

51 Resultados e Futuros Desenvolvimentos de ser um exemplo eficaz das possibilidades que as OWA podem trazer `aaplica¸c˜ao WOW! desenvolvida pela Critical Software, ´etamb´emum estudo que pode ser uti- lizado para analisar a implementa¸c˜aodesta tecnologia noutros produtos da mesma empresa. Note-se que o principal objectivo do trabalho era ganhar familiaridade com este tema, entender as suas vantagens e desvantagens, e compreender as suas limita¸c˜oes. Tudo indica que existam v´ariaspossibilidades de implementa¸c˜aodeste paradigma noutros produtos da Critical Software, que pela sua natureza, podem tamb´emtirar partido da execu¸c˜ao offline.

5.2 Trabalho Futuro

O desenvolvimento do conceito e formas de implementa¸c˜aode OWA continua em forte desenvolvimento, no entanto a sua adop¸c˜aoainda n˜ao´egeneralizada. A dificuldade da sua implementa¸c˜aoem web applications j´aexistentes ´eo principal obst´aculo`asua maior divulga¸c˜ao. H´atamb´emum factor que deve ser tido em considera¸c˜ao: a manuten¸c˜aode c´odigo. A implementa¸c˜aode uma vers˜ao offline de uma web application requer a implementa¸c˜aodas mesmas regras de neg´ocio(ou de uma vers˜aosimplificada) utilizadas no servidor. Para que isto seja poss´ıvel ´enecess´arioter em conta: a capacidade de processamento do cliente e o factor de duplica¸c˜aode c´odigo, que tornar´aa aplica¸c˜aomais dif´ıcilde manter, uma vez que uma altera¸c˜ao`al´ogicade neg´ociodo servidor implica tamb´emuma altera¸c˜ao`asua vers˜ao offline. A prova de conceito implementada permite j´aa visualiza¸c˜ao offline dos pedidos abertos (enviados e recebidos) que constam na p´aginaprincipal (este n´umero´e fixo e pode ser alterado pelo administrador). Uma funcionalidade desej´avel seria a possibilidade de interac¸c˜aocom a aplica¸c˜aoem modo offline e sincroniza¸c˜aocom o servidor quando existisse uma liga¸c˜aodispon´ıvel. Foi estudada a utiliza¸c˜aodo modo de execu¸c˜ao“aplica¸c˜aoassume o estado of- fline”, descrito em 4.2.3, e esta seria a forma desej´avel para o WOW! Offline, no entanto, para que esta op¸c˜aoseja vi´avel, ser´anecess´ariaa implementa¸c˜aode uma forma eficiente de sincroniza¸c˜aoe armazenamento de dados de uma forma relacional. Para atingir este objectivo poder´aser seguida uma pol´ıticade automa¸c˜aodo pro- cesso, no qual a vers˜ao online da aplica¸c˜aogera scripts de cria¸c˜aopara as tabelas necess´ariasna base de dados da vers˜ao offline (n˜aoexiste nenhuma ferramenta para o fazer, portanto seria necess´ariaa sua implementa¸c˜ao),e no qual as p´aginasHTML disponibilizadas pelo servidor aos clientes web (browser) servem como templates de apresenta¸c˜aode informa¸c˜aoe s˜aopreenchidas de forma semelhante pelo servidor – quando a aplica¸c˜aoestiver online – ou pelo cliente, atrav´esde fun¸c˜oesem JavaScript

52 Resultados e Futuros Desenvolvimentos

– quando a aplica¸c˜aoestiver offline. No entanto no WOW!, devido `aquantidade de informa¸c˜aotratada e devido `ascomplexas rela¸c˜oesentre as diferentes entidades, ´e de esperar que a complexidade da implementa¸c˜aode um mecanismo deste tipo torne esta aproxima¸c˜aodemasiado custosa. O HTML 5, embora um forte candidato, ainda n˜aoest´asuficientemente desen- volvido. A sua especifica¸c˜aoainda tem o car´acterde Draft (rascunho) e est´asujeita a modifica¸c˜oese `aaceita¸c˜aoe implementa¸c˜aopor parte dos browsers, e portanto de momento, foi desconsiderado. No entanto no futuro, se esta especifica¸c˜aoatingir um estado de maturidade que permita a sua adop¸c˜ao,dever´aser considerada como um poss´ıvel caminho a seguir.

53 Resultados e Futuros Desenvolvimentos

54 Cap´ıtulo6

Conclus˜oes

Neste cap´ıtulos˜aoapresentadas as conclus˜oesdo projecto e considera¸c˜oesfinais relativamente `atecnologia estudada.

6.1 Conclus˜oes

O r´apidodesenvolvimento tecnol´ogico faz prever que a disponibilidade de liga¸c˜ao `aInternet seja cada vez mais f´acil e mais r´apido,mas v˜aocontinuar a existir lugares onde o acesso ´elimitado e onde as OWA podem desempenhar um papel de relevo. Por outro lado, esta tecnologia pode tamb´emser utilizada para melhorar o desem- penho de p´aginas web com uma necessidade elevada de imagens ou outros recursos dispendiosos em termos de espa¸coe foram at´eestudados dois exemplos da utiliza¸c˜ao desta vertente desta tecnologia em 3.5.3. Acredita-se que as OWAs vˆemresponder a uma necessidade real por parte das web applications actuais, e que a evolu¸c˜ao que representam se compara `aque se assistiu dos thin-clients para os fat-clients, em termos de autonomia do servidor. A capacidade de oferecer conte´udosdinˆamicosno browser independentemente da existˆenciade uma liga¸c˜aore´uneas vantagens t´ıpicasdas web applications, como ausˆenciade instala¸c˜aoe actualiza¸c˜oesinstantˆaneas,com as vantagens das aplica¸c˜oes de desktop em capacidade de processamento e armazenamento de dados na m´aquina local. As tecnologias dispon´ıveis at´e`adata, estudadas no ˆambito deste projecto, que permitem o desenvolvimento de OWAs e que apresentam maior maturidade s˜aoo Gears e o Adobe AIR. Ambas se apresentam sobre a forma de plugins que necessitam de uma instala¸c˜aoextra para poderem ser utilizadas. Apesar de esta instala¸c˜aoser

55 Conclus˜oes apenas necess´ariauma vez, poder´aconstituir um factor de desencorajamento `asua adop¸c˜ao. O HTML 5, uma especifica¸c˜aoabordada neste documento na sec¸c˜ao 3.4, poder´a ser uma alternativa que oferece funcionalidades offline a uma web application sem a necessidade de qualquer instala¸c˜ao,no entanto esta especifica¸c˜aoainda n˜aofoi aceite pelos principais browsers – o documento que define o HTML 5 ainda tem o estatuto de Draft – e ainda n˜ao´eposs´ıvel antecipar quando ´eque isto poder´aacontecer. Um dos problemas que surge frequentemente na implementa¸c˜aode uma vers˜ao offline para uma web application ´ea necessidade de sincroniza¸c˜aode dados. Quando a informa¸c˜aopode ser alterada por v´ariosutilizadores simultaneamente, ´enecess´ario prever os conflitos que da´ıpodem surgir e dotar a aplica¸c˜aode uma forma de os resolver ou alertar o utilizador para a necessidade de altera¸c˜ao dos dados. Em conclus˜ao,todos os objectivos propostos para este projecto foram atingidos. A prova de conceito implementada reflecte de forma clara as possibilidades oferecidas pela tecnologia OWA e ser´autilizado no futuro para compreender a melhor forma de o implementar de forma definitiva no WOW!.

56 Referˆencias

[Ada08] Lucas Adamski. Introducing Adobe AIR security model, Fevereiro de 2008. Dispon´ıvel em http://www.adobe.com/devnet/air/articles/ introduction_to_air_security.html, acedido em Mar¸code 2008.

[Ado08] Adobe. Adobe AIR 1.0 Security White Paper, 2008. Dispon´ıvel em http://download.macromedia.com/pub/air/documentation/1/air_ security.pdf, acedido em Mar¸code 2008.

[Alm08] Dion Almaer. Gears as a bleeding-edge html 5 implementa- tion, March, 2008. Dispon´ıvel em http://almaer.com/blog/ gears-as-a-bleeding-edge-html-5-implementation, acedido em Mar¸code 2008.

[BL96] Tim Berners-Lee. The world wide web: Past, present and future. Agosto de 1996. Dispon´ıvel em http://www.w3.org/People/Berners-Lee/ 1996/ppf.html, acedido em Abril de 2008.

[CDGH08] Mike Chambers, Daniel Dura, Dragos Georgita, and Kevin Hoyt. Adobe AIR for JavaScript Developers. O’Reilly Media, 2008. Dispon´ıvel em http://onair.adobe.com/files/AIRforJSDevPocketGuide.pdf, ace- dido em Abril de 2008.

[Con99] Jim Conallen. Modeling Web Application Architectures with UML, Junho 1999. Dispon´ıvel em http://www.uml.org.cn/UMLApplication/pdf/ webapps.pdf, acedido em Maio de 2008.

[Ent07] Entrust. What is a public key information?, 2007. Dispon´ıvel em http: //www.entrust.com/pki.htm, acedido em Junho de 2008.

[Gar05] Jesse James Garret. Ajax: A new approach to web applications. February 2005. Dispon´ıvel em http://www.adaptivepath.com/ideas/ essays/archives/000385.php, acedido em Mar¸code 2008.

[Greon] Philip Greenspun. Philip and Alex’s Guide to Web Publishing. 2003 (last revision). Dispon´ıvel em http://philip.greenspun.com/panda/, acedido em Junho de 2008.

[Gro02a] App Design Group. Thick vs. thin client comparison, 2002. Dispon´ıvel em http://www.donjacobsvw.com/images/weekendspecials/ Thick-vs-Thin.pdf, acedido em Junho de 2008.

57 REFERENCIASˆ

[Gro02b] Technical Research Group. Thin Client Tecnhology - White Paper, 2002. Dispon´ıvel em http://www.picktrg.com/pubs/ thinclientwhitepaper.pdf, acedido em Junho de 2008. [Gro08] Miniwatts Marketing Group. World internet usage, March 2008. Dispon´ıvel em http://www.internetworldstats.com/stats.htm, ace- dido em Abril de 2008. [Hic08] Ian Hickson. HTML 5 Draft Recommendation, 2008. Dispon´ıvel em http://www.whatwg.org/specs/web-apps/current-work/, ace- dido em Mar¸code 2008. [Kha] Olga Kharif. Top 10 municipal wifi plans. Dispon´ıvel em http:// images.businessweek.com/ss/06/08/muni_wifi/index_01.htm, ace- dido em Mar¸code 2008. [Lab07] Mozilla Labs. Prism, Outubro 2007. Dispon´ıvel em http://labs. mozilla.com/2007/10/prism/, acedido em Mar¸code 2008. [Loo06] Chris Loosley. Rich Internet Applications:Design, Measurement,and Management Challenges, 2006. Dispon´ıvel em http://www.keynote. com/docs/whitepapers/RichInternet_5.pdf, acedido em Maio de 2008. [Mic08] Microsoft. Introduction to Occasionally Connected Applications us- ing Sync Services for ADO.NET, 2008. Dispon´ıvel em http://msdn. microsoft.com/en-us/sync/bb887608.aspx, acedido em Junho de 2008. [Nao08] Erica Naone. Offline web applications, Abril 2008. Dispon´ıvel em http://www.technologyreview.com/read_article.aspx?ch= specialsections{\&%}sc=emerging08{\&}id=20245, acedido em Abril de 2008. [NJN00] Jason Nieh, Yang S. Jae, and Naomi Novik. A comparison of thin-client computing architectures. 2000. Dispon´ıvel em http://www.ncl.cs. columbia.edu/publications/cucs-022-00.pdf, acedido em Maio de 2008. [O’R06] Tim O’Reilly. Web 2.0 compact definition: Trying again, Dezembro 2006. Dispon´ıvel em http://radar.oreilly.com/archives/2006/12/ web-20-compact-definition-tryi.html, acedido em Mar¸code 2008. [O’R09] Tim O’Reilly. What is Web 2.0: Design patterns and business models for the Next Generation of Software, 2005/30/09. Dispon´ıvel em http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/ 30/what-is-web-20.html, acedido em Mar¸code 2008. [Rus06] Alex Russel. Comet: Low latency data for the browser, March Mar¸co 2006. Dispon´ıvel em http://alex.dojotoolkit.org/?p=545, acedido em Mar¸code 2008.

58 REFERENCIASˆ

[Sad97] Darleen Sadoski. Client/server software architectures–an overview. Agosto 1997. Dispon´ıvel em http://www.sei.cmu.edu/str/ descriptions/clientserver_body.html, acedido em Junho de 2008. [Sch96] George Schussel. Client/server past, present, and future. 1996. [Smi07] Kevin C. Smith. Css filters - will the browser apply the rule?, July 2007. Dispon´ıvel em http://centricle.com/ref/css/filters/, acedido em Mar¸code 2008. [vK08] Anne van Kesteren. The XMLHttpRequest Object W3C Work- ing Draft, 15 Abril 2008. Dispon´ıvel em http://www.w3.org/TR/ XMLHttpRequest/, acedido em Abril de 2008. [Wil06] Greg Wilkins. Why ajax comet?, July Julho 2006. Dispon´ıvel em http://www.webtide.com/downloads/whitePaperWhyAjax.html, ace- dido em Abril de 2008.

59 REFERENCIASˆ

60 Anexo A

Screenshots

Algumas imagens de aplica¸c˜oesque utilizam funcionalidades offline ilustrativas da tecnologia abordada neste documento.

Figura A.1: Di´alogoapresentado ao utilizador na primeira activa¸c˜aodas funcionalidades offline no Google Docs & Spreadsheets.

61 Screenshots

Figura A.2: Na activa¸c˜aodas funcionalidades offline ´etamb´emoferecida a possibilidade da cria¸c˜aode alguns atalhos, por exemplo, no ambiente de trabalho.

Figura A.3: O Google Docs mant´ema todo o momento a possibilidade de altera¸c˜aodestas defini¸c˜oes,ou da anula¸c˜aodos servi¸cosoffline para um dado computador.

62 Screenshots

Figura A.4: Ap´osa instala¸c˜aodo Gears qualquer visita ao Remember The Milk despoleta uma sincroniza¸c˜aoque ocorre automaticamente e sem necessidade de interven¸c˜aopor parte do utilizador.

Figura A.5: Ap´oscompletar a sincroniza¸c˜aode dados, mesmo que a liga¸c˜ao`aInternet seja perdida o Remember the Milk continua dispon´ıvel no browser (com excep¸c˜aodas funcionalidades que pela sua natureza exigem uma liga¸c˜ao,como por exemplo: partilha de tarefas e envio de convites.)

63