• No results found

RESULTATER FENTANYL

servic¸o tem de estar contido numa pasta do apache (por defeito ou configurada para tal) que servir´a de servidor web. No caso de m´aquinas windows pode ser utilizado Xampp um emulador de ambiente Apache [121].

Como visto anteriormente o tipo RESTful necessita de configurac¸˜ao especial para servic¸os URI para tal, o apache tem de ser configurado para aceitar tais pedidos e ainda tem de ser criado um ficheiro com nome .htaccess, sendo este o respons´avel por redirecionar pedidos realizados na pagina web (utilizando url) para a o web service (ficheiros reais) [121].

O pr ´oximo passo ´e a criac¸˜ao de uma classe RESTfull que serve de base ao servic¸o. ´E aqui tamb´em que se definem alguns m´etodos a ser utilizados pelos service handlers. Por exemplo m´etodos para conter diferentes estados do pedido HTTP (200 representa “OK”, 202representa “Accepted”) [121].

Por ´ultimo ´e ent˜ao criada a classe que vai processar pedidos, ´e aqui que no caso deste projeto o OCI8 ´e necess´ario criando assim uma ponte entre aplicac¸˜ao e a base de dados.

3.6 f r a m e w o r k s e l i n g ua g e n s d e d e s e n v o lv i m e n t o w e b

Uma web framework ou web application framework ´e pensada para o desenvolvimento de aplicac¸ ˜oes web incluindo web services, web resources e web APIs. A sua func¸˜ao prende-se essencialmente com retirar alguma carga de trabalho e simplificar as atividades a ser de- senvolvidas, nomeadamente a relac¸˜ao pedido/resposta quando se executa um pedido no formatoHTTP[122].

Nesta secc¸˜ao ´e assim abordada uma framework que tem ganho bastantes adeptos nos ´ultimos anos e ainda a principal linguagem sobre qual esta assenta.

3.6.1 Angulhar JS

Angularjs ´e uma superheroic framework em JavaScript gratuita atualmente mantida pela Google, que faz sucesso no campo das single-page applications [123]. Data do ano 2010, atual- mente encontra-se na segunda vers˜ao, mas aquela que ainda ´e mais utilizada ´e a 1.3 visto apresentar mais informac¸˜ao online e maior estabilidade que as demais [124].

Desde o lanc¸amento doHTMLem 1990 por Tim Berners-Lee sucederam-se quase em ca- tadupa os desenvolvimentos nesta ´area. Nos ´ultimos anos o desenvolvimento do JavaScript,

HTMLe CSS intensificou-se proporcionado novos n´ıveis de experiencia ao utilizador. Angu- larjs est´a inserido nessa nova vaga de librarias e frameworks capazes de produzir aplicac¸ ˜oes web mais apelativas e flex´ıveis com maior facilidade [125].

Permite o desenvolvimento de grande aplicac¸ ˜oes sem grande esforc¸o apenas sabendo

HTML e JavaScript. A estrutura da aplicac¸˜ao fica a cargo do Angularjs que assenta tanto no principio MVVM , ou seja, model-view-view-model como em MVC (Model-View-Controller).

Este ´ultimo modelo pode ainda ser adaptado para um mais recente MVW (Model-View- Whatever) [123].O mais importante ´e que existe uma clara separac¸˜ao entre componentes promovendo a modularidade, flexibilidade e operac¸ ˜oes de teste [125].

Abordando agora um pouco do MVC, visto ser a base dos demais, este define trˆes papeis principais [123,124]:

• O modelo, grande motor de toda a aplicac¸˜ao,ou seja, os dados por detr´as de aplicac¸˜ao com provenientes de servidores;

• A vista representa a interface com o utilizador. Deve ser dinˆamica e com base no estado atual do modelo;

• O controlador ´e aquele que desenvolve toda a business logic e a camada de apresentac¸˜ao. ´E tamb´em respons´avel pela partilha de dados entre modelo.

Pela pequena lista ´e poss´ıvel concluir que cada componente est´a focado apenas num tipo de func¸˜ao muito espec´ıfico. Na figura 8 ´e poss´ıvel observar o modelo simples pelo qual

este esquema se rege.

Figura 8.: Representac¸˜ao t´ıpica modelo MVC

Data Binding ´e o nome atribu´ıdo ao processo de sincronizac¸˜ao entre o modelo e compo- nentes da vista, quando o primeiro ´e alterado o segundo modifica-se de imediato, o mesmo acontecendo ao em sentido oposto [126]. Embora na figura8 a seta que faz a ligac¸˜ao entre

modelo e vista seja unidirecional, o fluxo de dados ´e bidirecional. Enquanto em siste- mas cl´assicos a partilha de informac¸˜ao acontecia apenas num ´unico sentido, n˜ao refletindo mudanc¸as posteriores ao primeiro carregamento. O programador teria ent˜ao de escrever

3.6. Frameworks e Linguagens de Desenvolvimento Web 59

c ´odigo que realiza-se a sincronizac¸˜ao num espac¸o temporal. O caso do Angularjs ´e dife- rente, primeiro o template (HTML) ´e compilado, existindo uma natural extens˜ao aoHTML

normal, no browser produzindo assim uma vista. Qualquer mudanc¸a nesta ´e imediatamente refletida no modelo e vice-versa. O controlador neste caso n˜ao sabe que existe uma vista (independente), facilitando em muito o processo de teste, porque n˜ao existe DOM/browser dependency [126]. A partilha de informac¸˜ao utiliza ent˜ao um objeto partilhado de seu nome scope. A acc¸˜ao deste pode ser equiparada ao de uma “cola” que junta o modelo com a vista permitindo assim a partilha eficaz de dados.

Angularjs apresenta alguns objectivos/beneficios sobre quais deve ser feita uma breve referencia [126,125]:

• O teste ´e t˜ao importante como a aplicac¸˜ao normal; • Utilizar o menor n ´umero de linhas de c ´odigo poss´ıvel;

• Quase todo o c ´odigo escrito, acontece no controlador, embora nada tenha a ver com quest ˜oes ligadas `a estrutura MVC. Isso fica a cargo do Angularjs;

• Tentar implementar uma abstrac¸˜ao entre o lado do cliente e do servidor sendo o processo de implementac¸˜ao realizado em paralelo;

• Existir sempre um acompanhamento em todo o processo de codificac¸˜ao;

• A integrac¸˜ao com CSS e BootStrap ´e uma realidade sem necessidade de codificac¸˜ao em JavaScript adicional;

• Integrac¸˜ao simples com livrarias provenientes de outras fontes como jQuery e BootS- trap.

Um ponto importante ´e ent˜ao a injec¸˜ao de dependˆencias resultando na passagem de servic¸os do lado do servidor para o lado do cliente, como ´e o caso dos controladores redu- zindo bastante o consumo de recursos na parte do servidor [126].

Algumas das directivas mais importantes desta framework que permitem realizar a ex- tens˜ao ao html s˜ao por exemplo:

• ng-app, faz do elemento html onde se insere a raiz da aplicac¸˜ao;

• ng-model, permite uma ligac¸˜ao bidirecional direta entre vista e scope da aplicac¸˜ao. • ng-controller, especifica um controlador JavaScript para determinado html;

JavaScript ´e uma linguagem interpretativa, orientada a objetos embora de uma forma muito rudimentar que apresenta baixo consumo de recursos [127]. Utilizada geralmente a pensar em newtwork-centric applications, ou seja inserida em p´aginas web.

A linguagem foi primeiramente apresentada como LiveScript pela empresa criadora Nets- cape corria o ano de 1995 [127]. Ao n´ıvel da sintaxe apresenta semelhanc¸as com C, C++ e Java utilizando construtores como if ou while. Uma diferenc¸a ´e o facto de nesta linguagem n˜ao ser necess´ario declarar qual o tipo de uma determinada vari´avel [127]. Os objetos nesta linguagem pouco ou nada tˆem a ver com aqueles vistos em Java, assemelhando-se mais ao Perl onde ´e implementado um associative array.

Sendo muito utilizada dentro das p´aginas html leva a p´aginas web bastante dinˆamicas e com baixo consumo de recursos uma vez que ´e puramente interpretativa n˜ao sendo compi- lada como C ou Java [127].

Muito mais poderia ser abordado neste cap´ıtulo sobre Angularjs, mas apenas se realizou uma contextualizac¸˜ao te ´orica sobre as principais caracter´ısticas desta framework.

3.7 d e s e n v o lv i m e n t o d e a p l i c a c¸ ˜oes m ´oveis

A importˆancia das aplicac¸ ˜oes m ´oveis no mundo atual ´e inolvid´avel sendo milhares as pessoas que fazem do seu trabalho desenvolver aplicac¸ ˜oes para sistema operativo Android. Existem assim diversas ferramentas que possibilitam e facilitam a programac¸˜ao como por exemplo Ionic ou Xamarim. Optou-se no entanto por utilizar as ferramentas fornecidas pela Google, nomeadamente o seu Android Software Development Kit (SDK). Ao longo da secc¸˜ao ser˜ao abordadas as principais caracter´ısticas deste software e quais as ferramentas de programado que mais se enquadram com o presente projeto.

3.7.1 Android

Android ´e um sistema operativo com n ´ucleo em Linux lanc¸ado no ano de 2008 e atual- mente gerido pela Google [128]. Embora o seu foco principal seja smartphones e tablets, pode tamb´em ser encontrado em televis ˜oes, rel ´ogios e at´e carros. Embora a licenc¸a seja aberta a maior parte dos dispositivos apresenta um h´ıbrido entre livre disponibilizado pela Google e o privado geralmente adicionado pela companhias que fabricam o dispositivo.

Programar para dispositivos m ´oveis ´e completamente diferente de programar para um computador, motivado em grande parte por restric¸ ˜oes bastante especificas deste tipo de dispositivos. V´arios factores devem ent˜ao ser tidos em considerac¸˜ao [128]:

• Recursos Limitados, embora bastante poderosos os dispositivos m ´oveis continuam a ser limitados quando comparados com um computador. Nomeadamente mem ´oria RAM, processador e capacidade da bateria;