Escolar Documentos
Profissional Documentos
Cultura Documentos
Aluno: Alexandre Murakami NUSP: 300954 Prof. Orientador: Fabio Kon 2o semestre de 2003
ndice
1 Natureza da organizao e da atividade...............................................................................4 2 Objetivos do trabalho...........................................................................................................5 3 Estimativa inicial de prazos.................................................................................................6 4 Ferramentas e tcnicas utilizadas.........................................................................................7 4.1 Celulares........................................................................................................................7 4.1.1 Mensagens..............................................................................................................7 4.1.2 WAP e i-mode........................................................................................................8 4.1.3 Symbian e Brew.....................................................................................................8 4.2 PDAs............................................................................................................................9 4.3 Tablet PC.....................................................................................................................11 4.4 WiFi e Bluetooth.........................................................................................................12 4.5 XML............................................................................................................................13 4.6 J2ME...........................................................................................................................14 4.6.1 Exemplo de aplicao MIDP...............................................................................15 4.6.2 Plataformas compatveis com MIDP...................................................................16 4.6.3 ME4SE.................................................................................................................17 4.6.4 Diferenas entre MIDP 1.0 e MIDP 2.0...............................................................17 4.6.5 Bouncy Castle......................................................................................................17 4.6.6 Ofuscador.............................................................................................................18 4.6.7 Parsers XML para MIDP.....................................................................................18 4.6.8 Waba e SuperWaba..............................................................................................19 4.6.9 Impresses finais sobre o J2ME...........................................................................19 4.7 Java Servlets................................................................................................................20 4.8 Java Server Pages (JSP) e JavaBeans..........................................................................21 4.8.1 JavaBeans.............................................................................................................22 4.9 JavaServerFaces e Struts.............................................................................................23 4.9.1 Arquiteturas de sites.............................................................................................23 4.9.2 JavaServer Faces..................................................................................................24 4.9.3 Struts....................................................................................................................25 4.9.4 Impresses sobre o JavaServer Faces e o Struts..................................................26 4.10 Web Services.............................................................................................................27
Pgina 2 de 42
4.10.1 SOAP..................................................................................................................27 4.10.2 WSDL................................................................................................................27 4.10.3 UDDI..................................................................................................................27 4.10.4 A arquitetura Java para Web Services................................................................28 4.10.5 Tipos de dados usados em Web Service............................................................29 5 Arquitetura MobMed.........................................................................................................30 5.1 Viso geral da arquitetura...........................................................................................30 5.2 Arquitetura do Broker.................................................................................................30 5.3 Sistema de identificao de dispositivos.....................................................................32 5.4 Sistema de comunicao.............................................................................................35 5.5 Prximos passos para o projeto...................................................................................36 6 Relacionando a experincia obtida no trabalho com o BCC..............................................38 6.1 Desafios e frustraes encontrados.............................................................................38 6.2 Disciplinas cursadas no BCC mais relevantes para o projeto.....................................38 6.3 Interao com membros da equipe que tenham agido como mentores do trabalho....38 6.4 Diferenas notadas entre a forma de cooperao com colegas do BCC nas tarefas em grupo das disciplinas e a forma de trabalho conjunto na empresa....................................38 6.5 Observaes sobre a aplicao de conceitos estudados nos cursos no contexto prtico de aplicaes reais.............................................................................................................39 6.6 Se o aluno fosse continuar atuando na rea em que exerceu o estgio, que passos tomaria para aprimorar os conhecimentos tcnicos/metodolgicos/comerciais/cientficos/etc relevantes para esta atividade? ........39 7 Fontes.................................................................................................................................40 7.1 Computao mvel aplicada a medicina.....................................................................40 7.2 Celulares......................................................................................................................40 7.3 PDAs..........................................................................................................................40 7.4 Tablet PC.....................................................................................................................40 7.5 J2ME...........................................................................................................................41 7.6 Java (Servlets, JSP, JSF, Struts e Web Services)........................................................41 7.7 Outros..........................................................................................................................42
Pgina 3 de 42
Pgina 4 de 42
2 Objetivos do trabalho
Atuei como aluno de iniciao cientfica em um projeto de pesquisa do Servio de Informtica (Unidade de Pesquisa e Desenvolvimento) do Instituto do Corao. O projeto chamado de MobMed - Inovando a Prtica Mdica Atravs de Sistemas Mveis de Informao e tem financiamento do CNPq. O Instituto do Corao (InCor) desenvolveu, em projetos anteriores, o Pronturio Eletrnico do Paciente (PEP). O PEP armazena, de maneira eletrnica, todos os dados dos pacientes do hospital. Ele disponibiliza informaes textuais (laudos, histrico clnico, diagnsticos), permite a execuo de ordens mdicas (prescrio eletrnica, pedidos de exames etc.) e controles de enfermagem (medicamentos, procedimentos etc.). Alm disso, possui um visualizador de imagens mdicas estticas e dinmicas (tomografia, ultra-som etc.) e um visualizador de sinais vitais (permite obter, em tempo real, os sinais vitais de um paciente da UTI). O PEP pode ser acessado pela Intranet do InCor. O objetivo do projeto MobMed permitir o acesso ao PEP atravs de dispositivos portteis. Ser criada uma rede sem fio (WiFi) dentro do hospital. Essa rede ser acessada atravs de computadores portteis, como handhelds e tablet PC's. O acesso tambm ser disponibilizado via celular. O projeto deve usar ferramentas de arquiteturas abertas e padres bem definidos de interfaceamento (XML, DICOM, HL7). A minha funo no projeto auxiliar o desenvolvimento de uma soluo no lado do dispositivo (cliente). Essa soluo deve permitir, num primeiro momento, a visualizao de dados textuais. O sistema deve, de maneira transparente ao usurio, identificar o dispositivo sendo utilizado para que as informaes sejam mostradas da melhor maneira possvel. importante tambm que haja uma preocupao com a segurana e o sigilo dos dados, especialmente por se tratar de um ambiente de comunicao sem fio. Tambm faz parte do meu trabalho auxiliar no projeto e implementao do software do servidor que faz o interfaceamento com os dispositivos (chamado, neste projeto de broker). Ele deve receber os dados vindos de outros aplicativos (que fazem consultas a bancos de dados, por exemplo) e convert-los para um formato adequado ao dispositivo cliente.
Pgina 5 de 42
As atividades previstas esto atrasadas em relao ao cronograma estipulado. Foi definida uma arquitetura do sistema, bem como o modelo lgico do broker. Entretanto, alteraes podem se tornar necessrias nessas duas partes ainda. As interfaces internas e a interface com o usurio ainda no foram definidas. O prottipo est em fase inicial de implementao. Parte dos equipamentos para teste foram adquiridos e esto em funcionamento. Detalhes sobre o trabalho desenvolvido e os planos para o futuro sero apresentados posteriormente, em Arquitetura MobMed.
Pgina 6 de 42
4.1 Celulares
Os celulares so divididos segundo o protocolo de comunicao utilizado. A primeira gerao de celulares (1G) possua comunicao analgica e no permitia a transmisso de dados digitais. uma tecnologia em desuso. A segunda gerao de celulares (2G) usa comunicao digital e atualmente a tecnologia mais usada no pas. Celulares 2G permitem, alm da comunicao por voz, transmisso de dados digitais a baixa velocidade (14,4 Kbps), acesso a internet (WAP) e envio de mensagens SMS. Os protocolos mais utilizados so o TDMA (Time Divison Multiple Access), CDMA (Code-Division Multiple Access) e GSM. Esses protocolos permitem uma taxa de transmisso de cerca de 10 Kbps. Algumas extenses desses protocolos permitem taxas de transmisso da ordem de algumas dezenas de Kbps. o caso do CDMA 1xRTT, com taxa de transmisso de 144 kbps (adotada, por exemplo, pela Vivo), e do GPRS, extenso do GSM, com conexo permanente e taxa de transmisso da ordem de 50 kbps (adotada pela TIM). Esses protocolos so conhecidos como gerao 2,5G e esto comeando a ser implantados no pas. H ainda uma terceira gerao de celulares (3G), com taxas de transmisso ainda maiores, da ordem de centenas de kbps. O protocolo mais famoso o EDGE, a terceira gerao do GSM. Entretanto, ainda no h previses sobre quando essa tecnologia vai ser implantada no pas.
4.1.1 Mensagens
SMS (Short Message Service) um servio disponvel em celulares que permite o envio e recebimento de mensagens curtas de texto (at 160 caracteres). A maioria dos celulares modernos dispe desse recurso, embora ele no seja muito difundido no pas. Atualmente, dois novos padres tm sido adotados nos celulares mais modernos. So o EMS (Enhanced Message Service) e o MMS (Multimedia Message Service). Alm do envio de mensagens de texto, eles permitem o uso de imagens, som e vdeo nas mensagens.
Pgina 7 de 42
32 bits multitarefa; robusto; interface grfica flexvel; baixo consumo de memria e processamento; suporte a vrias tecnologias de comunicao celular: CDMA e suas extenses (cdma200 1x e WCDMA), GSM (GPRS, EDGE, EDGE RGPRS etc.) e outros;
suporte a vrios protocolos de comunicao (TCP/IP, Ethernet etc.)
navegao pela internet (WAP e HTML); mensagens (SMS, EMS, email etc.); suporte a multimdia (sons, imagens e vdeo); desenvolvimento de aplicativos em C++ e Java (Personal Java, JavaPhone e MIDP); sincronizao de dados (over-the-air usando SyncML, com PC usando porta serial, Bluetooth, infravermelho etc.) segurana (suporte a protocolos de criptografia).
Por enquanto, existem pouqussimos celulares no mundo que adotaram o padro Symbian. Brew tambm um sistema operacional, desenvolvido pela Qualcomm. Semelhante ao Symbian, tambm possui suporte a vrias tecnologias de comunicao celular, WAP, mensagens, C++ e Java (MIDP 1.0) entre outros. Sua principal caracterstica
Pgina 8 de 42
disponibilizar um sistema para download de aplicativos OTA. A Vivo anunciou uma parceria com a Qualcom para disponibilizar celulares Brew, mas o sistema ainda no entrou em operao.
4.2 PDAs
O PDA (Personal Digital Assistant), tambm conhecido como handheld ou palmtop, um computador porttil de pequenas dimenses (um pouco maior que uma calculadora). A maioria dos PDAs possui uma tela de cristal lquido sensvel ao toque e uma caneta para entrada de dados. Alguns PDAs possuem um pequeno teclado. Os PDAs possuem baixo poder de processamento e pouca memria quando comparados a um micro de mesa. Podemos dividir os PDAs em trs grupos, segundo o sistema operacional adotado: PDAs com sistema Palm OS PDAs com sistema Windows CE ou Pocket PC PDAs com sistema operacional prprio
O sistema Palm OS foi desenvolvido pela Palm Computing, empresa fabricante de PDAs, para ser usado em seus produtos. Algumas outras empresas, como a Sony, adotaram o sistema Palm OS em seu PDAs. Os computadores Palm, baratos e populares, dominam cerca de 70% do mercado nacional de PDAs. Atualmente ele est em sua verso 5.0. Alguns PDAs que utilizam o sistema Palm OS: Palm, HandSpring, Sony Cli.
J o sistema Windows CE o sistema desenvolvido pela Microsoft para uso em PDAs. O Windows CE possui uma interface semelhante ao Windows para micros de mesa e roda verses reduzidas dos programas mais populares da Microsoft (Office, Internet Explorer, Media Player etc.). Atualmente ele est na sua verso 3.0 (a Microsoft j divulga em seu site informaes sobre a nova verso 4.2). PDAs com Windows CE so, em geral, mais poderosos e mais caros que os PDAs da Palm. Os processadores mais comuns para esse tipo de PDA so o SH3 da Hitachi, o MIPS e o StrongArm da DEC. Algumas verses do Windows CE so conhecidas como Pocket PC (em geral, rodam sobre o novo processador Strong Arm). Alguns PDAs que rodam Windows CE: iPaq da Compaq, Cassiopeia da Casio,
Pgina 9 de 42
A maioria dos PDAs possui mdulos de expanso, permitindo a instalao de cartes de memria, modems, conexes de rede sem fio, etc. Alguns modelos mais novos possuem conexo wireless (BlueTooth) embutida. interessante notar que existem browsers para internet tanto para Palm OS quanto para Windows CE. Para efeito ilustrativo, seguem os dados tcnicos do PDA iPaq srie H3900 (adaptado do site da PalmLand, preo obtido no site da HP do Brasil):
Compaq iPAQ H3900 Processador
Software na ROM
Tela
Display TFT colorido (16 bits, 65.536 cores) - 5,74cm larg. e 7,67cm alt.
Pgina 10 de 42
Escrita
H3950 com 64 MB de memria RAM e 32 MB de memria Flash ROM; H3970 com 64 MB de memria RAM e 48 MB de memria Flash ROM
Memria
Slots de expanso
Som
Drive de memrias MMC/SD Expanso para cartes CompactFlash via jaqueta opcional USB Porta serial ( RS2323C ) 115 kbps (Opcional) IrDA , 115 kbps ( Infra vermelho ) Entrada de fonte de alimentao MP3 , WMA estreos
Portas externas
Bateria
Conectividade
Dimenses x Peso
Preo:
4.3 Tablet PC
O tablet PC um computador porttil, semelhante a uma prancheta, dotado de uma tela de cristal lquido e uma caneta para entrada de dados. Os tablet PCs atuais possuem uma configurao semelhante a de um notebook, um pouco mais leve e, em geral acrescenta ao notebook os seguintes recursos: caneta ativa sensvel presso; reconhecimento de escrita; reconhecimento de voz; conexo WiFi embutida.
H dois tipos de Tablet PCs. O primeiro tipo, chamado de conversvel, possui um design muito semelhante ao de um notebook. Entretanto, quando aberto, permite que a tela seja rodada em 180o e fechada, tomando a forma de uma prancheta. O segundo tipo, menos comum, possui um teclado destacvel.
Pgina 11 de 42
Praticamente todos os Tablet PCs atualmente produzidos utilizam o sistema operacional Windows XP Tablet Edition. Trata-se do sistema operacional Windows XP acrescido de softwares para uso de caneta digital, reconhecimento de escrita, voz e outros recursos. Portanto, qualquer sistema desenvolvido para PCs de mesa roda sem problemas em um tablet PC.
Como exemplo de configurao, podemos citar o micro Compaq Tablet PC TC1000. Ele possui um processador Transmeta Crusoe TM5800 de 1 GHz, sistema operacional Windows XP Tablet PC Edition, 256Mb a 768Mb de memria, 30Gb a 60Gb de disco rgido, tela TFT de 10,4 polegadas, bateria com autonomia para 4 horas de uso, transmissor e antena para redes sem fio padro 802.11b e portas USB 2.0. O preo no Brasil varia entre R$ 10.500 (256Mb, 30Gb) e R$ 13.000 (512Mb, 60Gb).
Pgina 12 de 42
J o padro WiFi, conhecido tambm como 802.11, foi desenvolvido pela IEEE (Institute of Electrical and Electronics Engineers). Ele usa sinais de rdio de curto alcance para conexo entre computadores numa rede sem fio. H dois padres: 802.11a e 802.11b. O 802.11a opera a 54Mbps com alcance de 50 metros, enquanto que o padro 802.11b opera a 1 Mbps com um alcance de at 300 metros (100 metros em ambiente fechado). Os padres Bluetooth e Wifi tm objetivos diferentes. O Bluetooth serve, por exemplo, para sincronizar um PDA com um computador de mesa sem o uso de cabos. J o Wifi mais adequado para a montagem de uma rede sem fio, formada por computadores de mesa e computadores mveis.
4.5 XML
XML (eXtensible Markup Language) uma linguagem de markup, como HTML. O objetivo da linugagem XML de armazenar informaes. A seguir, apresentado um trecho de arquivo XML:
<bilhete> <remetente>Joo</remetente> <destinatrio>Cludia</destinatrio> <mensagem>Vamos nos encontrar para o almoo s 12:30.</mensagem> </bilhete>
Como se pode ver, um arquivo XML muito semelhante a um arquivo HTML. Entretanto, ele possui algumas diferenas bsicas como, por exemplo: XML no possui um conjunto de tags definidas pela linguagem. As tags so criadas de acordo com a aplicao. Todo documento XML possui uma tag raiz. No caso do exemplo anterior, a raiz a tag <bilhete>. Alm disso, no so permitidas tags mal formadas, isto , todas as tags devem ser fechadas e no deve haver violaes na hierarquia das tags.
Podem ser definidas gramticas XML para uma determinada aplicao. Por exemplo, suponhamos que um programa de mensagens troque mensagens XML semelhantes ao exemplo anterior. Podemos ento definir um tipo de mensagem padro que todas as mensagens devem seguir. Os dois padres mais usados para definir uma gramtica XML so o XML Schema e o DTD (Document Type Definition). Mensagens XML podem ser transformadas de uma gramtica para outra automaticamente. Para isso, existe a tecnologia XSL (eXtensible Style sheet Language). Um sistema XSL formado basicamente de um arquivo XML descrevendo a transformao a ser efetuada e um programa interpretador. A tecnologia XML tornou-se rapidamente um padro para troca de informaes via internet, devido sua simplicidade de uso e implementao. Atualmente existem bibliotecas para manipulao de XML disponvel para as principais linguagens de programao, alm de diversos produtos e ferramentas. No caso especfico de Java para XML, h dois tipos de bibliotecas bastante utilizadas: SAX e DOM. Um parser SAX uma classe Java que l um arquivo XML e executa comandos conforme as tags so encontradas. Para cada tipo de tag, h um cdigo associado. J um parser DOM l um arquivo XML e converte-o para uma rvore de objetos Java, que podem ser facilmente manipulados.
Pgina 13 de 42
4.6 J2ME
A plataforma Java definida pela Sun Microsystems atualmente dividida em quatro grandes grupos (veja a figura). J2SE (Java 2 Standard Edition) o grupo principal, destinado a computadores pessoais domsticos (end-user). J2EE (Java 2 Enterprise Edition) mais abrangente que a J2SE, sendo destinada a aplicaes do lado do servidor. J2ME (Java 2 Micro Edition) tem o objetivo de disponibilizar aplicativos Java em dispositivos portteis, como PDAs, pagers e celulares. Finalmente, JavaCard uma tecnologia destinada a rodar em smart-cards e outros dispositivos extremamente limitados.
A J2ME dividida em configuraes e perfis. So especificadas duas especificaes, CDC e CLDC. CDC (Connected Device Configuration) lida com dispositivos com mais memria e poder de processamento do que a CLCD. Ela feita para dispositivos com conexo de rede permanente e um mnimo de 2Mb de memria disponvel para as aplicaes Java (usualmente PDAs com maior poder de processamento). J a CLDC (Connected Limited Device Configuration) feita para dispositivos com menos de 512 kb de memria disponvel para aplicaes Java e uma conexo de rede limitada e no-permanente (PDAs com menor poder de processamento, pagers e celulares). Ela define uma mquina virtual Java reduzida, chamada de KVM, e um conjunto reduzido de APIs.
Pgina 14 de 42
Cada uma das configuraes citadas dividida em perfis, de acordo com o tipo de equipamento e aplicao desejados. Somente alguns perfis foram implementados at o momento. O MIDP (Mobile Information Device Profile) foi o primeiro perfil implementado e j est na sua verso 2.0. Ela roda sobre a configurao CLDC e especifica algumas APIs para interface, conexo de rede e armazenamento de dados. Outra especificao importante a Personal Profile, em fase final de desenvolvimento. Ela deve rodar sobre a configurao CDC, substituindo a antiga tecnologia Personal Java. Personal Java uma verso reduzida da J2SE, destinada a rodar em dispositivos de pouca memria e baixo poder de processamento. Atualmente, ela no recebe mais o suporte da Sun. importante observar que a CLDC est includa na CDC, isto , qualquer aplicao baseada na CLDC pode rodar sobre uma plataforma CDC sem nenhuma adaptao. Alguns dos recursos do MIDP so: Criao de conexes de vrios tipos: serial, sockets, HTTP, HTTP segura (somente na verso 2.0). Exibio de arquivos de imagens, vdeo e som (Media Profile) Gravao local de dados.
importante ressaltar que a MIDP no possui suporte a Bluetooth. Esse suporte feito, dentro do J2ME, atravs de um pacote opcional (Bluetooth API). A especificao desse pacote foi concluda. Entretanto, no foi encontrada nenhuma implementao da Bluetooth API para PC ou para algum PDA. Talvez a nica implementao dessa API existente at o momento a existente no Symbian 7.0.
Pgina 15 de 42
mMainForm.append(new StringItem(null, "Hello, MIDP!")); mMainForm.addCommand(new Command("Exit", Command.EXIT, 0)); mMainForm.setCommandListener(this); } public void startApp() { Display.getDisplay(this).setCurrent(mMainForm); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} public void commandAction(Command c, Displayable s) { notifyDestroyed(); } }
Todos os midlets so derivados da classe MIDlet e implementam quatro mtodos, alm do construtor: startApp(), pauseApp() e destroyApp(). O mtodo startApp() executado no incio da execuo do programa. O mtodo pauseApp() chamado quando o programa entra em modo de pausa (os midlets podem ter trs estados possveis: modo de inicializao, modo de execuo e modo de pausa). O mtodo destroyApp() executado no final do programa. O construtor do programa cria um formulrio mMainForm. Os formulrios so as telas dos midlets. Depois, o construtor adiciona uma string ao formulrio. Podem ser adicionados vrios tipos de itens aos formulrios: strings, caixas de texto, listas de opes, choice groups, figuras (formato PNG), entre outros. Em especial, no possvel definir botes no MIDP. Ao final do construtor, adicionado um comando ao formulrio. Cada comando geralmente associado a um boto do dispositivo em questo (por exemplo, aos botes Yes e No de um celular). A execuo de um comando feita por um objeto CommandListener associado a ele. No caso, a prpria classe HelloMIDlet. O CommandListener deve implementar o mtodo commandAction(), que processa o comando. A figura a seguir mostra o midlet HelloMIDlet rodando no simulador do J2ME Wireless Toolkit:
Pgina 16 de 42
A Sun disponibiliza gratuitamente uma mquina virtual MIDP (verso 1.0) para o Palm OS. Essa mquina virtual foi testada sobre um emulador de Palm OS rodando sobre Windows 2000. No foi constatado nenhum problema. O nico incoveniente foi o fato do MIDP no ser da ltima verso disponvel (verso 2.0). Por razes de estratgia de mercado, a Sun no produziu uma mquina virtual MIDP para o sistema Windows CE. Algumas empresas criaram mquinas virtuais prprias, mas no so softwares gratuitos (ex: J9 da IBM, Kada, MicroJBlend).
4.6.3 ME4SE
Como opo para rodar J2ME no Windows CE, pode-se usar o ME4SE sobre o Personal Java. Como foi citado anteriormente, Personal Java era uma antiga tecnologia para computadores pequenos, a ser substituda pelo Personal Profile do J2ME. A Sun produzia mquinas virtuais Personal Java para Windows CE, a ltima verso foi para Windows CE 2.1. Essa verso do Personal Java compatvel com PDAs com processadores MIPS e SH3 e ainda roda nas verses mais atuais do Windows CE. No existe uma verso para PDAs com processadores StrongArm (que utilizado nos PDAs mais modernos). Neste caso, pode-se usar a mquina virtual Jeode, compatvel com Personal Java, apesar de no ser um software gratuito. Os PDAs iPaq da Compaq (que usam processador StrongArm) j vm com o Jeode para ser instalado. O ME4SE uma biblioteca open-source que permite rodar programas MIDP sobre o Personal Java ou sobre o J2SE. O ME4SE foi testado em um PC com J2SE e funcionou sem problemas. Tambm foi testado sobre um emulador de Personal Java para PC. Para rodar um programa MIDP no ME4SE, deve-se incluir o arquivo me4se.zip e a biblioteca sixlegs png no classpath da mquina virtual java. Depois, deve-se usar a seguinte linha de comando: java org.me4se.MIDletRunner seuMIDlet A biblioteca ME4SE, somada com a biblioteca sixlegs png, ocupam 283 kB, o que um tamanho razovel para um dispositivo rodando Personal Java. O nico problema do ME4SE que a verso suportada do MIDP a 1.0.
Como se pode notar, seria muito adequado que o padro MIDP 2.0 pudesse ser adotado. Entretanto, praticamente ainda no existem devices com suporte para esse padro. Esperase que implementaes do MIDP 2.0 surjam nos prximos anos.
Pgina 17 de 42
MIT). H tambm uma verso do Bouncy Castle que roda em MIDP 1.0 (verso lightweight). O Bouncy Castle apresenta o problema de ser muito grande (350 kB na verso lightweight) para um dispositivo MIDP. Uma opo reduzir o tamanho do MIDlet usando um ofuscador. At o momento, no pude testar o Bouncy Castle. Entretanto, ele fica como uma opo possvel para uma implementao de esquemas de segurana no MIDP 1.0.
4.6.6 Ofuscador
Os arquivos de classe Java contm muitas informaes sobre o cdigo fonte original. Um programa Java compilado pode ser facilmente descompilado, tornando o cdigo fonte acessvel a qualquer pessoa. O ofuscador um utilitrio cujo objetivo evitar o acesso ao cdigo fonte a partir do programa compilado. O ofuscador reescreve o cdigo de mquina do programa, tornando-o impossvel de ser descompilado. Um bom ofuscador produz um cdigo to eficiente quanto o cdigo original. O ofuscador tambm remove do cdigo todas as classes, interfaces, propriedades e mtodos no utilizados pelo programa. Isso reduz bastante o tamanho em bytes do programa. Por isso, os ofuscadores so muito utilizados para a produo de MIDlets, onde h severas restries quanto ao tamanho do cdigo. O ofuscador mais utilizado na atualidade o RetroGuard, da RetroLogic. O RetroGuard distribudo como open source (licena GNU). Para teste, foi compilado um programa MIDP (um parser XML) que utilizava a biblioteca kXML. O arquivo JAR original possua cerca de 40 kb. Usando o ofuscador, o programa passou a ter 36 kB, sem perdas aparentes de eficincia.
...
try { Reader r = .....; XmlParser parser = new XmlParser( r );
Pgina 18 de 42
... boolean keepParsing = true; while( keepParsing ){ ParseEvent event = parser.read(); switch( event.getType() ){ case Xml.START_TAG: ..... // handle start of an XML tag break; case Xml.END_TAG: ..... // handle end of an XML tag break; case Xml.TEXT: ..... // handle text within a tag break; case Xml.END_DOCUMENT: ..... // end of document; keepParsing = false; break; } } } catch( java.io.IOException e ){ // handle exception.... }
Pgina 19 de 42
at agora (embora existam alguns outros perfis, como o Personal Profile, com a especificao completada pela Sun). Pode-se dizer, com algumas restries, que o J2ME to somente o MIDP. O MIDP foi implementado em alguns poucos (e caros) modelos de celulares. A usabilidade de um programa Java em um celular discutvel, j que a tela pequena e o teclado dos celulares atuais tornam a interface do celular muito pouco amigvel. No Japo, excepcionalmente, h vrios modelos de celular com suporte para MIDP (j que este foi o padro adotado para o i-Mode). H uma mquina virtual MIDP implementada para Palm OS. Entretanto, o desenvolvimento de aplicaes MIDP para Palm discutvel, j que a interface do MIDP foi desenvolvida para celulares, e utiliza muito pouco da capacidade do PDA. J para Windows CE, por motivos de estratgia de mercado, nem h suporte para MIDP. O Personal Java, padro considerado obsoleto pela Sun, ainda a nica opo de Java para Windows CE. O Personal Profile, que prometeu ser o seu sucessor, ainda est s no papel.
Pgina 20 de 42
public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n" + "<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); } }
O cdigo JSP permite o uso de vrios tipos diferentes de tags (como foi mostrado no exemplo acima). Alm disso, permitida a criao de bibliotecas de tags prprias. So as
Pgina 21 de 42
chamadas taglibs. A Sun padronizou uma taglib padro chamada STL (Standard TagLib). A implementao mais implortante dessa taglib a da Apache.
4.8.1 JavaBeans
Para fazer a separao entre interface e programa, complementando as pginas JSP, usada a tecnologia de JavaBeans. Um JavaBean nada mais do que uma classe Java que segue uma definio especial. Num JavaBean, existe o conceito de propriedade. Uma propriedade equivalente a uma varivel interna da classe. A propriedade pode ou no estar associada a uma varivel Toda propriedade deve possuir dois mtodos de acesso, set() e get(). O nome do mtodo composto pela palavra set (ou get) seguida do nome da propriedade. O mtodo set() deve possuir um nico parmetro (o novo valor do parmetro), e no deve retornar nenhum valor. O mtodo get() no recebe parmetros e retorna o valor da propriedade. A seguir, apresentado um exemplo de JavaBean.
package meu; public class MeuBean { protected int numVisitas; public MeuBean() { numVisitas = 0; } public int getNumVisitas() { return (++numVisitas); } public void setNumVisitas (int numVisitas) { this.numVisitas = numVisitas; } }
Um JavaBean pode ser referenciado em uma pgina JSP. Dessa forma, pode-se separar a interface do programa. A pgina JSP fica responsvel pela gerao da interface, enquanto que a funcionalidade do programa passada para o JavaBean. A pgina a seguir trabalha em conjunto com o JavaBean apresentado anteriormente:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>Contador JSP</TITLE> </HEAD> <BODY> <h1>Contador JSP</h1> <jsp:useBean id="bean" class="meu.MeuBean" scope="session" /> Esta pgina foi acessada <jsp:getProperty name="bean" property="numVisitas" /> vez(es).<p> </BODY> </HTML>
Pgina 22 de 42
O Modelo 1, apesar de apropriado para pequenas aplicaes, mostrou-se bastante inadequado para aplicaes maiores. A adoo de tal modelo leva a uma grande quantidade de cdigo Java inserido dentro das pginas JSP. Esse cdigo necessrio para o processamento inicial dos dados enviados pelas requisies de pgina. Alm disso, as pginas JSP precisavam fazer todo o controle do fluxo do programa. Uma segunda arquitetura, chamada de Modelo 2, passou a ser adotada. Nela, Servlets recebem as requisies de pgina e fazem todo o processamento inicial, controlando o fluxo da aplicao Web. O processamento de informaes continua sendo feito por JavaBeans. Ao final do processamento, o Servlet passa o controle para uma pgina JSP, que monta a pgina HTML de sada. Essa arquitetura conhecida como MVC (Model View Controller).
Pgina 23 de 42
No JSF, essa associao pode ser feita em separado, no arquivo de configurao da aplicao (em XML). Veja o exemplo:
<managed-bean> <managed-bean-name> CurrentOptionServer </managed-bean-name> <managed-bean-class> cardemo.CurrentOptionServer </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> <managed-property> <property-name>carImage</property-name> <value>current.gif</value> </managed-property> </managed-bean>
A associao entre pgina JSP e JavaBean no mais feita dentro da pgina JSP. Ela feita no arquivo de configurao da aplicao. No JSF, os formulrios so definidos utilizando-se tags JSP, e no atravs de cdigo HTML. O exemplo abaixo mostra uma pgina JSP assim escrita (retirado do Java Web Services Tutorial da Sun):
<HTML> <HEAD> <title>Hello</title> </HEAD> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <body bgcolor="white"> <h:graphic_image id="wave_img" url="/wave.med.gif" /> <h2>Hi. My name is Duke.
Pgina 24 de 42
I'm thinking of a number from 0 to 10. Can you guess it?</h2> <f:use_faces> <h:form id="helloForm" formName="helloForm" > <h:graphic_image id="wave_img" url="/wave.med.gif" /> <h:input_number id="userNo" numberStyle="NUMBER" valueRef="UserNumberBean.userNumber"> <f:validate_longrange minimum="0" maximum="10" /> </h:input_number> <h:command_button id="submit" action="success" label="Submit" commandName="submit" /><p> <h:output_errors id="errors1" for="userNo"/> </h:form> </f:use_faces>
Cada item do formulrio pode ser associado a um JavaBean. No exemplo acima, a caixa de texto userNo associada propriedade UserNumberBean.userNumber. Assim, quando o usurio entra com um nmero nessa caixa de texto, o JavaBean associado automaticamente atualizado. A validao dos dados do formulrio tambm pode ser feita automaticamente. A tag <f:validate_longrange> especifica os limites do nmero a ser digitado na caixa userNo. Mensagens de erro produzidas por entradas invlidas so mostradas pela tag <f:output_errors>. Outro recurso importante a associao de command listeners aos itens de formulrio, de maneira semelhante aos elementos de uma janela Swing. Pode-se, por exemplo, associar um boto a um mtodo JavaBean que vai avaliar o sucesso ou fracasso de uma operao de login. As tags de formulrio (chamados de componentes no JSF) so transformadas em cdigo HTML durante a gerao da pgina. Essa transformao feita por um objeto RenderKit. O RenderKit para converso em HTML j vem pronto no JSF, na forma de uma taglib. Para produzir outros formatos de pgina (WML, por exemplo), preciso escrever um RenderKit prprio ou, ento, componentes prprios. Em pginas JSP (assim como em qualquer pgina HTML), os links so definidos dentro da pgina. No JSF, os links so definidos em um arquivo XML em separado. Cada link associado a um evento. Na ocorrncia de um certo evento, o link associado acionado. No exemplo mostrado, o boto do formulrio gera o evento sucess, o que vai ocasionar a mudana de pgina. Outra possibilidade associar um boto a uma propriedade JavaBean. O JavaBean vai fazer o processamento adequado e gerar um ou outro evento conforme o resultado. Dessa forma, pode-se criar vrios destinos para uma mesma pgina. Por exemplo, suponhamos que um usurio aperte um boto Ok aps digitar seu login e senha. Esse boto vai chamar um mtodo em um JavaBean, que vai avaliar o acesso do usurio. De acordo com o resultado, O JavaBean gera um evento sucess ou um evento error, selecionando a pgina destino.
4.9.3 Struts
Semelhante ao JavaServer Faces, o Struts tambm uma tecnologia que adota o Modelo 2. O Struts foi desenvolvido pelo projeto Apache (a mesma organizao que criou o servidor TomCat). O projeto Struts mais antigo que o JSF e possui uma verso estvel.
Pgina 25 de 42
De maneira semelhante ao JSF, o Struts utiliza pginas JSP e JavaBeans. Tambm possui um servlet (chamado de ActionServlet) que faz o controle do site. O servlet possui um arquivo de configurao XML, com funes muito semelhantes ao arquivo de configurao do JSF. Os eventos no Struts so chamados de actions e esto associadas a classes Action definidas pelo usurio. A grande diferena entre o Struts e o JavaServer Faces est na criao da interface. Tanto no Struts quanto no JSF, as interfaces so produzidas em pginas JSP, utilizando tags especiais (definidas atravs de taglibs). No JSF, associadas s tags, h classes do tipo RenderKit que fazem a converso da tag em HTML. No caso do Struts, essa converso feita dentro da prpria taglib. Dessa maneira, o JSF permite a converso de uma mesma pgina JSP em diferentes formatos, bastando trocar o RenderKit. J no Struts, isso no possvel. Cada taglib possui associado um tipo especfico de sada. O Struts possui uma taglib padro para gerao de pginas HTML. Alm disso, h taglibs (produzidas por grupos independentes) para gerao de pginas WAP e outros formatos XML.
maior, o uso de JSF pode ser bem interessante. A arquitetura JSF traz uma srie de vantagens sobre os mtodos atuais e espera-se que, em alguns anos, tenhamos uma verso mais madura e definitiva do produto. O Struts um projeto mais antigo que o JSF e est em sua segunda verso estvel. Alm disso, existem algumas ferramentas de desenvolvimento para o Struts, embora sejam escassas (patches para Netbeans e Eclipse). A grande desvantagem do Struts em relao ao JSF o seu fraco suporte gerao de pginas no HTML. H taglibs para o Struts que permitem a gerao de pginas HTML e WAP. H tambm algumas ferramentas para a gerao de pginas XML e uso de XSL. Entretanto, essas ferramentas ainda no esto totalmente maduras.
4.10.1
SOAP
SOAP (Simple Object Access Protocol) um protocolo para troca de informaes em um sistema distribudo. Cada mensagem SOAP formada por um texto XML e consiste em trs partes: um envelope descrevendo o que a mensagem contm e como process-la, um conjunto de regras para expressar tipos de dados definidos em uma aplicao e uma conveno para representar chamadas remotas de procedimento (e suas respostas). Mensagens SOAP so transmitidas via HTTP (requisies GET e POST). Graas sua simplicidade, SOAP (e Web Services, consequentemente) vem se tornando um padro popular de computao distribuda. Seu sucesso deve-se principalmente simplicidade de implementao, quando comparado a seus antecessores, como DCE e COBRA. J existe um grande nmero de plataformas de desenvolvimento compatveis com Web Services, destacando-se a plataforma Java, da Sun, e a .NET, da Microsoft. Essas plataformas tornam as operaes de comunicao transparentes ao desenvolvedor.
4.10.2
WSDL
WSDL (Web Services Description Language) basicamente um arquivo XML disponibilizado por um servidor de Web Services. Esse arquivo segue um padro para descrio dos servios disponveis pelo servidor e como acess-los. Entre outras informaes, pode-se saber qual o formato e contedo das mensagens, o endereo onde o servio est disponvel, e o protocolo de comunicao utilizado. Em geral, as ferramentas de desenvolvimento criam automaticamente os arquivos WSDL, restando pouco trabalho ao desenvolvedor quanto a este aspecto.
4.10.3
UDDI
O UDDI (Universal Description, Discovery and Integration) um protocolo que permite que Web Services disponveis na Internet sejam facilmente encontrados e utilizados. uma espcie de pginas amarelas. Toda vez que se deseja disponibilizar um Web Service pblico, pode-se cadastr-lo no UDDI. O UDDI basicamente formado de arquivos XML contendo uma descrio da empresa e do servio que ela disponibiliza. Evidentemente, o
Pgina 27 de 42
cadastro no UDDI no obrigatrio. Entretanto, quando se deseja tornar pblico um Web Service, o UDDI a melhor maneira de divulg-lo.
4.10.4
A Sun criou um conjunto de APIs Java para desenvolvimento de Web Services e aplicaes Web. Este conjunto conhecido como Java Web Services Development Pack (JWSDP). O JWSDP composto por APIs, por exemplo, para processamento de XML, criao de Web Services, manipulao de mensagens SOAP, criao de Servlets, pginas JSP e JavaServer Faces. Alm disso, traz integrado um servidor Tomcat. A principal API para criao de Web Services chamada de JAX-RPC (Java API for XML Remote Procedure Call). Ela permite, segundo a Sun, a construo de servidores e clientes de Web Services de maneira simples e rpida. Para construir um servidor de Web Services, preciso criar uma interface (estendendo a interface javax.xml.rpc.Remote) do servio. Cada uma das funes traduzida para um mtodo Java. A seguir, mostrado um exemplo retirado do Tutorial Web Services da Sun:
package helloservice; import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloIF extends Remote { public String sayHello(String s) throws RemoteException; }
Depois, basta fazer uma implementao dessa interface numa classe Java:
package helloservice; public class HelloImpl implements HelloIF { public String message ="Hello"; public String sayHello(String s) { return message + s; } }
A compilao de um Web Service no feita atravs de um comando javac. So usados programas parte, chamados de wscompile e wsdeploy. Esses programas criam automaticamente uma srie de outras classes, contendo toda a implementao do sistema de baixo nvel (montagem do WSDL, criao de mensagens SOAP, comunicao etc.) do servio. Dessa forma, boa parte dos detalhes da implementao de um Web Services tornase transparente ao desenvolvedor. A implementao de um cliente pode ser feita de trs maneiras diferentes. H dois mtodos estticos e um mtodo dinmico. Nos mtodos estticos (static stub e dinamic proxy), os programas so compilados atravs do wscompile. Durante a compilao, o servio acessado para a obteno de suas caractersticas (seu WSDL). Essas caractersticas so usadas para a criao automtica das classes de baixo nvel. No mtodo dinmico (dii client), a compilao normal (no usado o wscompile e o servio no acessado). Os mtodos estticos so mais simples de serem implementados. Entretanto, qualquer mudana na interface do Web Service torna necessria a recompilao de todo o sistema. O mtodo
Pgina 28 de 42
dinmico no tem esse problema, mas ele mais difcil de ser implementado (a configurao do sistema de comunicao deve ser feita pelo desenvolvedor).
4.10.5
A W3C (World Wide Web Consortium organizao que regulamenta os padres na Internet) especifica vrios tipos de dados que podem ser usados em mensagens SOAP. Basicamente, so os tipos de dados primitivos (nmeros inteiros, reais, strings etc.) e vetores de tipos primitivos. Num primeiro momento, esses tipos de dados so suficientes para o sistema MobMed, j que o objetivo aqui a visualizao de dados textuais. Entretanto, para outras etapas do projeto, pretende-se implantar a transmisso de imagens e vdeo. A W3C no especifica um padro para transmisso de dados no textuais (j que as mensagens SOAP seguem um padro XML). Surgiram ento algumas solues para tentar contornar esse problema. As solues mais usadas so as seguintes: Codificao de dados usando base-64: A base-64 um conjunto de 64 letras, nmeros e smbolos usados para codificar dados. Esse formato permite que dados no textuais sejam transmitidos via texto (na forma de uma string). Mensagem SOAP com anexos: A plataforma Java da Sun utiliza mensagens SOAP com arquivos anexados. Esses arquivos anexados seguem a mesma codificao usada para anexos em email (formato MIME). Formato DIME: A plataforma .Net da Microsoft lanou um formato de arquivo anexado chamado de DIME, muito semelhante ao formato MIME.
Pgina 29 de 42
5 Arquitetura MobMed
5.1 Viso geral da arquitetura
O sistema MobMed foi dividido em trs grandes partes. A primeira parte composta pelos clientes, os diversos dispositivos que vo acessar o sistema. A segunda parte so os aplicativos, composto, entre outros, por bancos de dados do Pronturio Eletrnico e sistemas de interfaceamento com equipamentos mdicos. A terceira parte, denominada Broker, integrar as duas partes citadas acima. Ela receber requisies feitas pelos diversos dispositivos, encaminhando-as para os aplicativos. Da mesma maneira, o broker receber os resultados dos aplicativos e converter os dados para um formato adequado para cada dispositivo. A figura a seguir mostra um esquema simplificado do sistema.
BD
aplicativo
aplicativo
Dispositivo externo
Broker
celular
PDA
Tablet PC
desktop
A minha parte do projeto consiste principalmente no projeto e implementao do broker, alm da definio e criao das interfaces com os dispositivos.
Pgina 30 de 42
aplicativos
XML Identificao de dispositivos Sistema de comunicao
JavaBean
JavaBean
JavaBean
JavaBean
JSP ou Servlet
JSP (WML?)
JSP (HTML)
WML? J2ME/XML?
HTML
telefone
celular
PDA
PC tablet PC notebook
O broker est sendo implementado usando-se Struts. O servlet do Struts, que no mostrado na figura, far o controle da navegao entre as pginas e a administrao dos JavaBeans. A interface com os dispositivos ser feita atravs de pginas JSP, podendo, em alguns casos, serem usados servlets. Sero usadas pginas HTML onde for possvel. Como no h grandes diferenas entre o acesso por um desktop, um tablet ou um notebook, esses dispositivos iro acessar o mesmo conjunto de pginas HTML. Eventualmente, podem ser feitos pequenos ajustes nas pginas (tipos de letra, presena ou no de figuras, layout etc.) de acordo com o dispositivo. Os PDAs tambm usaro pginas HTML como interface. Entretanto, como a tela e a capacidade de um PDA so bem inferiores s dos outros dispositivos, os PDAs acessaro um conjunto prprio de pginas HTML. Ainda no foi definida uma interface para celulares. Uma alternativa possvel o uso de pginas WAP. Pginas WAP (WML) so simples de fazer. Alm disso, grande parte dos celulares existentes no mercado possui um browser Wap. Entretanto, pginas WAP tm recursos bastante limitados. Outra alternativa a criao de um programa cliente em J2ME (seria uma espcie de browser). O programa cliente receberia pginas num cdigo XML prprio e se comunicaria com o broker via HTTP. Entretanto, h o trabalho extra de se criar o programa cliente J2ME. Alm dos dispositivos citados, faz parte do projeto MobMed o uso de um sistema de VoiceXML. Um sistema VoiceXML faz a converso de comandos de voz (recebidos por
Pgina 31 de 42
telefone) em dados XML. Alm disso, tambm converte dados XML em voz sintetizada. Dessa maneira, os dados do pronturio eletrnico podem ser acessados atravs de um telefone comum. Esta parte do projeto, entretanto, est sendo desenvolvida por outras pessoas. O processamento do broker ser feito dentro de diversos JavaBeans. Os JavaBeans recebero as requisies vindas dos dispositivos, encaminhando-as para o aplicativo adequado, atravs de um sistema de comunicao. Os JavaBeans tambm recebero as respostas dos aplicativos, disponibilizando os dados para as pginas JSP de resposta. H ainda um sistema de identificao de dispositivos e um sistema de comunicao com os aplicativos. Descreverei estas duas partes a seguir.
Pgina 32 de 42
O cookie encontrado e o javascript no funciona. Neste caso, o dispositivo registrado no cookie aceito e o usurio redirecionado para a pgina inicial do dispositivo. O cookie no encontrado e o javascript funciona. Neste caso, as caractersticas obtidas pelo javascript so usadas para tentar encontrar, na lista de dispositivos cadastrados, um dispositivo compatvel. Se for encontrado tal dispositivo, apresentada uma tela informando sobre o dispositivo detectado e pedindo a confirmao do usurio. O usurio pode aceitar o dispositivo identificado, selecionar outro dispositivo j registrado ou registrar um novo tipo de dispositivo. O cookie no encontrado e o javascript no funciona. Neste caso, uma mensagem de erro ser exibida. O usurio poder selecionar manualmente um dos dispositivos registrados ou registrar um novo tipo de dispositivo.
A partir do IDDeviceAction, h, portanto, trs destinos possveis, conforme foi citado anteriormente: O dispositivo foi devidamente identificado pelo cookie. Nesse caso, feito o redirecionamento para o action DeviceConfirmadoAction. Este action grava o cookie no browser do dispositivo e faz o redirecionamento para a pgina inicial do dispositivo. No foi identificado nenhum dispositivo. Nesse caso, feito o redirecionamento para a pgina deviceNaoEncontrado.jsp. Essa pgina permite que o usurio utilize um dos tipos de device j cadastrados ou que o usurio cadastre um novo tipo de device. Se o usurio utilizar um tipo j cadastrado, feito o redirecionamento para o action DeviceConfirmadoAction. Caso contrrio, feito o redirecionamento para a pgina novoDevice.jsp. Essa ltima permite o cadastro de um novo tipo de device. Um dispositivo foi automaticamente identificado pelo javascript. Nesse caso, feito o redirecionamento para a pgina confirmaDevice.jsp. Essa pgina mostra ao usurio qual o dispositivo identificado pelo javascript e pede uma confirmao do usurio. Se for feita a confirmao, feito o redirecionamento para o action DeviceConfirmadoAction. Caso contrrio, feito o redirecionamento para a pgina de dispositivo no identificado (deviceNaoEncontrado.jsp).
Pgina 33 de 42
confirmaDevi ce.jsp
Um dispositivo foi identificado por JavaScript. Pede confirmao do usurio.
Index.jsp
Identifica caractersticas do dispositivo usando JavaScript.
IDDeviceAct ion
Tenta identificar o dispositivo atravs das informaes JavaScript e do cookie.
deviceNaoEn contrado.jsp
Usurio escolhe um dos dispositivos cadastrados ou cadastra um novo dispositivo.
novoDe vice.jsp
Cadastra um novo dispositivo
O programa javascript usa, por enquanto, as seguintes caractersticas para identificar o dispositivo: resoluo da tela; nmero de cores; se o dispositivo possui suporte a javascript.
Alguns problemas podem ocorrer com o uso dessas caractersticas. Se o usurio mudar a resoluo da tela, o dispositivo no ser automaticamente identificado no seu prximo acesso. Isso em geral, no constitui um problema grave, j que dificilmente mudada a resoluo do computador. No caso do Tablet, entretanto, isso pode ocorrer. O Tablet possui duas posies de trabalho: tela deitada e em p. Em cada uma das posies, ele usa uma resoluo de trabalho diferente. Mesmo assim, acredito que esse fato no v prejudicar em muito a usabilidade do sistema. Como todo dispositivo diferente deve ter um cadastro diferente, pode acontecer da lista de dispositivos ficar muito grande, o que dificultaria o uso do sistema. Entretanto, testes adicionais devem ser feitos para que se possa chegar a alguma concluso. Outro fato que deve ser notado quanto segurana no sistema. Nesta primeira verso, no houve ainda nenhuma preocupao com a segurana. O arquivo XML com a lista dos dispositivos no pode ser acessado de fora do servidor (ele est na pasta WEB-INF do
Pgina 34 de 42
aplicativo). Entretanto, da maneira como o sistema foi criado, qualquer pessoa pode cadastrar um dispositivo, o que pode no ser a melhor soluo. Em verses posteriores, esta lista pode ser transferida para um aplicativo fora do broker, aumentando a segurana e simplificando o cdigo do broker.
Pgina 35 de 42
Servio (mtodo)
Lista de Object
Servidor
WSService
Mensagem SOAP (contendo string XML)
WSCall
String XML
WSClient
Lista de Object
Cliente
Cliente
Figura 12 - Sistema de comunicao
O sistema de comunicao foi implementado de maneira que sua utilizao seja simples para o programador. No lado do cliente, basta criar uma instncia da class WSClient e invocar o mtodo call(), passando como parmetros a URL onde o servio est disponvel, o nome do servio e uma lista Object de parmetros do servio. No lado do servidor, basta seguir o mesmo mtodo usado na construo de um servio JAX-RPC comum. Entretanto, deve-se estender a classe de interface e a classe de implementao das classes WSServiceInterface e WSService, respectivamente. Automaticamente, criado um mtodo remoto receive() que faz a converso das strings XML em listas de Object. A existncia desse mtodo relativamente transparente ao programador. Alm disso, os mtodos remotos criados pelo programador tambm ficam disponveis como servios Web Services comuns. O sistema suporta os seguintes tipos de dados: tipos primitivos, vetores e JavaBeans. Para que o cliente possa receber como resultado da chamada um JavaBean, preciso especificar de antemo qual o tipo de dado a ser retornado. Se o usurio no souber o tipo de retorno, a converso automtica de tipo pode no ser possvel. Nesse caso, o usurio ainda pode ter acesso string XML retornada pela chamada remota.
modificaes. H ainda muitos problemas pendentes, alguns deles so apresentados a seguir: O Struts, ferramenta utilizada na construo do projeto, permite a criao de pginas HTML e WAP. Aparentemente, h meios de produzir outros formatos de pginas, usando-se transformaes XSL em conjunto com o Struts. Entretanto, isso ainda no est bem definido no projeto. Falta definir uma soluo de interface com o celular (WAP ou J2ME?). O sistema est sendo desenvolvido para aplicaes on-line. Entretanto, essa pode no ser a melhor soluo, especialmente para PDAs e celulares. Talvez, em verses mais maduras, seja necessrio o desenvolvimento de uma soluo off-line, com sincronizao de dados. A necessidade de tal sistema ser avaliada futuramente, aps a implementao de um primeiro prottipo. No houve nenhuma preocupao com segurana nessa primeira verso do MobMed. Entretanto, num sistema que lida com informaes mdicas, esse um fator crucial. Solues mais seguras devero ser desenvolvidas em verses posteriores.
Pgina 37 de 42
6.3 Interao com membros da equipe que tenham agido como mentores do trabalho
Durante o meu projeto, estive sob a orientao do Dr. Srgio S. Furuie, diretor da Unidade de Pesquisa e Desenvolvimento do Servio de Informtica do InCor. Tambm trabalhei junto ao aluno de mestrado Luiz Kobayashi, da Escola Politcnica. Ambos mantiveram-se sempre disponveis para tirar dvidas e discutir os assuntos do projeto.
6.4 Diferenas notadas entre a forma de cooperao com colegas do BCC nas tarefas em grupo das disciplinas e a forma de trabalho conjunto na empresa
interessante notar que o trabalho no departamento onde atuei , de certa forma, bastante individual. Cada pessoa trabalha de maneira mais ou menos independente em um projeto.
Pgina 38 de 42
Quando h projetos que envolvem diversas pessoas, a comunicao entre os membros da equipe feita atravs de reunies ocasionais ou conversas entre os membros da equipe. Entretanto, cada membro da equipe trabalha de maneira mais ou menos independente em uma parte do projeto. No BCC, havia basicamente trs tipos de trabalho: individuais, em dupla ou em grupos de quatro ou cinco pessoas. Nos trabalhos individuais, cada aluno trabalhava de maneira independente, obviamente. Nos trabalhos em dupla, era comum a prtica de programao pareada, pouco comum nas empresas. Em alguns trabalhos em grupo, cada aluno produzia uma parte do projeto; em outros trabalhos, o projeto era desenvolvido pelo grupo como um todo, em reunies.
6.5 Observaes sobre a aplicao de conceitos estudados nos cursos no contexto prtico de aplicaes reais
Durante o desenvolvimento do meu projeto, os conceitos mais utilizados foram aqueles relacionados a programao e desenvolvimento de software. Outros conceitos estudados no foram diretamente utilizados, embora os considere bastante importantes para a minha formao geral. Vale notar que o BCC tem como objetivo dar uma formao terica sobre computao, enquanto que o meu projeto tem carter prtico. Ele seria mais um trabalho de Engenharia do que de Cincia da Computao. No caso, considero a definio de Cincia da Computao como o estudo e desenvolvimento das reas de conhecimento relacionadas Computao e, para Engenharia, como a aplicao desse conhecimento em aplicaes prticas.
6.6 Se o aluno fosse continuar atuando na rea em que exerceu o estgio, que passos tomaria para aprimorar os conhecimentos tcnicos/metodolgicos/comerciais/cientficos/etc relevantes para esta atividade?
Pretendo continuar desenvolvendo o meu projeto no InCor, agora como aluno de mestrado. Acredito que seria importante uma melhor definio da metodologia de desenvolvimento do trabalho. A aplicao de algumas tcnicas de desenvolvimento de software, como testes automatizados e uma definio mais cuidadosa de requisitos, arquitetura do sistema etc., poderia auxiliar no andamento do projeto. Entretanto, no acredito na aplicao direta de um mtodo terico de trabalho, como mtodo de cascata ou mtodo de espiral. O desenvolvimento de um projeto envolve muitos fatores no previstos na teoria de engenharia de software. Tambm considero importante um melhor conhecimento e envolvimento com outras atividades desenvolvidas no departamento. Acredito que isso v ocorrer aos poucos, com o tempo.
Pgina 39 de 42
7 Fontes
A principal fonte de informao deste trabalho foi a internet. A seguir, apresentada uma lista de sites utilizados como fonte de informao:
7.2 Celulares
operadora Vivo: www.vivo.com.br operadora Tim: www.timbrasil.com.br WirelessBR (artigos diversos sobre tecnologias de comunicao sem fio): http://wirelessbr.sites.uol.com.br/index.html I-mode: http://www.nttdocomo.com/ Symbian: www.symbian.com Descrio da ltima verso do Symbian (7.0): http://www.symbian.com/technology/symbos-v7s-det.html Brew: http://www.qualcomm.com/brew Texto sobre monitoramento de pacientes em UTI usando WAP: http://helyr.sites.uol.com.br/monitor_uti/monitor_uti.html
7.3 PDAs
Palm Computing: http://www.palm.com Microsoft Windows CE 4.2 .NET: http://www.microsoft.com/windows/embedded/ce.net/ Compaq do Brasil: http://www.compaq.com.br Emulador de Palm OS: http://www.palmos.com/dev/tools/
7.4 Tablet PC
Microsoft Windows XP Tablet Edition: http://www.microsoft.com/windowsxp/tabletpc/
Pgina 40 de 42
IDGNow: http://idgnow.terra.com.br/idgnow/pcnews/2003/01/0071 um texto de Dan Bricklin, criador do VisiCalc, sobre suas impresses sobre o tablet PC: http://danbricklin.com/log/tabletpc.htm Acer: http://global.acer.com/products/tablet_pc/tmc110.htm Compaq: http://h18000.www1.hp.com/products/tabletpc/tc1000.html
7.5 J2ME
site oficial Java: http://java.sun.com/j2me tutorial MIDP da Sun: http://wireless.java.sun.com/midp/articles/wtoolkit/ Diferenas entre MIDP 1.0 e MIDP 2.0: http://wireless.java.sun.com/midp/articles/midp20/ Especificao da Bluetooth API: http://www.jcp.org/en/jsr/detail?id=82 Bill Days J2ME Archives (contm diversos programas MIDP, textos e links sobre o assunto): http://billday.com/j2me/ ME4SE: http://me4se.org Plataformas disponveis para MIDP: http://www.javamobiles.com/jvm.html Artigos sobre segurana em MIDP: http://wireless.java.sun.com/midp/articles/security4 Bouncy Castle (pacote de criptografia para J2ME): http://www.bouncycastle.org/ RetroGuard (ofuscador Java): http://www.retrologic.com/retroguard-main.html kXML (parser XML para J2ME): http://kxml.enhydra.org/ (at verso 1.21) e http://www.kxml.org (kXML 2). NanoXML (parser XML para J2ME): http://web.wanadoo.be/cyberelf/nanoxml/ kNanoXML (parser NanoXML para J2ME): http://www.ericgiguere.com/nanoxml/ site oficial Waba: http://www.wabasoft.com site oficial SuperWaba: http://www.superwaba.com.br/
Pgina 41 de 42
Tutorial JavaServer Faces (contm um preview do futuro livro Core JavaServer Faces, por David Geary e Cay S. Horstmann): http://horstmann.com/corejsf/ Site oficial do Struts: http://jakarta.apache.org/struts
7.7 Outros
licenas open source: http://www.opensource.org Tutoriais diversos: http://www.w3schools.org
Pgina 42 de 42