UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA BEATRIZ FRANCO MARTINS SOTAC MOBILE – UMA FERRAMENTA DE TELEFONIA MÓVEL PARA COMUNICAÇÃO COM DEFICIENTES AUDITIVOS VITÓRIA OUTUBRO DE 2012 BEATRIZ FRANCO MARTINS SOTAC MOBILE – UMA FERRAMENTA DE TELEFONIA MÓVEL PARA COMUNICAÇÃO COM DEFICIENTES AUDITIVOS Monografia apresentada à Universidade Federal do Espírito Santo como requisito parcial para obtenção do título de Bacharel em Ciência da Computação, na área de Inteligência Artificial, sob orientação do Prof. Dr. Orivaldo de Lira Tavares. VITÓRIA NOVEMBRO DE 2012 BEATRIZ FRANCO MARTINS SOTAC MOBILE – UMA FERRAMENTA DE TELEFONIA MÓVEL PARA COMUNICAÇÃO COM DEFICIENTES AUDITIVOS COMISSÃO EXAMINADORA Prof. Orivaldo de Lira Tavares D.Sc. Universidade Federal do Espírito Santo Orientador Prof. Jadir Eduardo Souza Lucas M.Sc. Universidade Federal do Espírito Santo Prof. Luis Cláudius Coradine D.Sc. Universidade Federal de Alagoas Prof. Wesley Lucas Breda M.Sc. Faculdade Católica Salesiana do Espírito Santo Vitória 12 de novembro de 2012 Agradeço a Deus. Postumamente a minha querida madrinha Belinha. A meus pais pelo incentivo de uma vida toda. A meu esposo Paulo Sérgio pela compreensão, apoio e ajuda. E a meus mestres da UFES. Declaração dos Universal dos Direitos Humanos Artigo 1º Todos os seres humanos nascem livres e iguais em dignidade e em direitos. Dotados de razão e de consciência, devem agir para uns com os outros em espírito de fraternidade. Artigo 2º Todos os seres humanos podem invocar os direitos e as liberdades proclamados na presente Declaração, sem distinção alguma, nomeadamente de raça, de cor, de sexo, de língua, de religião, de opinião política, de origem nacional ou social, de fortuna, de nascimento ou de qualquer outra situação. RESUMO As novas tecnologias de telefonia celular, que a partir da mudança de paradigma iniciada pela Apple na criação do iPhone, deram início a criação de uma infinidade de smartphones e outros recursos, tais quais estão disponíveis à população em geral a um custo bastante acessível de tal forma que hoje, no Brasil, há mais celulares que pessoas, de acordo com dados do IBGE. Porém, para os deficientes auditivos (DA), a realidade do celular limita-se a comunicação por meio dos popularmente conhecidos torpedos ou por e-mail para aqueles que possuem internet móvel, já que sua condição especial não os permite usar todo o potencial das novas tecnologias da telefonia móvel atual. Este trabalho visa abrir uma nova porta para a comunicação dos DA na sociedade, permitindo-lhes usar um dispositivo móvel para fazer traduções automáticas de português para LIBRAS como sendo uma evolução, baseada no Sistema SOTAC, criado na Universidade Federal do Espírito Santo por Wesley Lucas Breda e pelo Prof. Dr. Orivaldo Lira Tavares, que teve sua origem em uma evolução do sistema FALIBRAS-MT. SUMÁRIO CAPÍTULO 1 ............................................................................................................................................14 INTRODUÇÃO .........................................................................................................................................14 1.1 Objetivos ..................................................................................................................................15 1.1.1 Objetivos gerais ......................................................................................................................................... 15 1.1.2 Objetivos específicos ................................................................................................................................. 15 1.2 Justificativa ..............................................................................................................................16 1.3 Metodologia............................................................................................................................. 17 1.4 Estrutura da monografia ..........................................................................................................17 1.5 Observações a respeito do texto dissertativo ............................................................................18 CAPÍTULO 2 ............................................................................................................................................19 TECNOLOGIA APLICADA E TRABALHOS CORRELATOS .........................................................................................19 2.1 Tradução Automática ...............................................................................................................19 2.2 FALIBRAS (CORADINE et al., 2002) ............................................................................................ 20 2.3 FALIBRAS-MT(TAVARES; CORADINE; BREDA, 2005) ..................................................................21 2.4 FALIBRAS-TS (CORADINE, 2006) ................................................................................................22 2.5 SOTAC (TAVARES; BREDA, 2008) ...............................................................................................23 2.6 FALIBRAS-WEB (FRANCO; SILVA; BRITO, 2010) .........................................................................24 2.7 Player Rybená ..........................................................................................................................25 2.8 Torpedo Rybená .......................................................................................................................25 2.9 Rybená TV ................................................................................................................................26 CAPÍTULO 3 ............................................................................................................................................28 TECNOLOGIA MÓVEL ................................................................................................................................28 3.1 Breve Histórico .........................................................................................................................28 3.2 Conceitos da telefonia móvel celular ........................................................................................ 31 3.3 Telefonia móvel analógica ........................................................................................................32 3.3.1 Primeira geração (1G) ............................................................................................................................... 32 3.4 Telefonia móvel digital .............................................................................................................33 3.4.1 Segunda geração (2G) ............................................................................................................................... 34 3.4.2 Segunda geração e meio (2,5G) ................................................................................................................ 35 3.4.3 Terceira geração (3G) ................................................................................................................................ 36 3.4.4 Quarta geração (4G) .................................................................................................................................. 37 3.5 Sistemas operacionais para DM ...............................................................................................38 3.5.1 EPOC OS ..................................................................................................................................................... 42 3.5.2 Palm OS ...................................................................................................................................................... 43 3.5.3 Windows Mobile ....................................................................................................................................... 43 3.5.4 Symbian...................................................................................................................................................... 44 3.5.5 Android ...................................................................................................................................................... 45 3.5.6 iOS .............................................................................................................................................................. 46 3.5.7 BlackBarry OS............................................................................................................................................. 47 3.5.8 Bada ........................................................................................................................................................... 48 3.5.9 Meego ........................................................................................................................................................ 48 3.6 Desenvolvimento de Software para DM....................................................................................49 3.6.1 Limitações .................................................................................................................................................. 49 3.6.2 Linguagens de programação ..................................................................................................................... 52 3.6.3 Bancos de dados ........................................................................................................................................ 54 3.6.4 Internet ...................................................................................................................................................... 55 3.7 O futuro da telefonia móvel ......................................................................................................57 CAPÍTULO 4 ............................................................................................................................................59 O SISTEMA SOTAC-MOBILE .....................................................................................................................59 4.1 Requisitos .................................................................................................................................59 4.1.1 Requisitos funcionais ................................................................................................................................. 59 4.1.2 Requisitos técnicos .................................................................................................................................... 60 4.2 Tecnologias avaliadas ..............................................................................................................60 4.2.1 Plataforma Java ......................................................................................................................................... 60 4.2.2 J2EE ............................................................................................................................................................ 63 4.2.3 J2ME ........................................................................................................................................................... 64 4.2.4 Dispositivos série S60 com Symbian ......................................................................................................... 66 4.2.5 Apache Tomcat .......................................................................................................................................... 67 4.2.6 Computação distribuída – RMI ................................................................................................................. 67 4.2.7 Arcademis / RME ....................................................................................................................................... 69 4.2.8 Streaming ................................................................................................................................................... 70 4.2.9 IDE NetBeans ............................................................................................................................................. 71 4.2.10 Astah ........................................................................................................................................................ 71 4.3 Modelagem ..............................................................................................................................72 4.3.1 Arquitetura do SOTAC–Mobile ................................................................................................................. 72 4.3.2 Casos de Uso .............................................................................................................................................. 74 4.3.3 Configurações ............................................................................................................................................ 80 4.3.4 UML ............................................................................................................................................................ 82 4.3.5 Recursos ..................................................................................................................................................... 84 4.4 Implementação ........................................................................................................................ 86 4.4.1 Versões das ferramentas .......................................................................................................................... 86 4.4.2 Plataformas de desenvolvimento ............................................................................................................. 86 4.4.3 Definição das camadas do sistema ........................................................................................................... 88 4.4.4 Streaming e formato dos arquivos de vídeo ............................................................................................ 89 4.4.5 Portabilidade ............................................................................................................................................. 90 4.4.6 Interface ..................................................................................................................................................... 91 4.4.7 Fluxo de desenvolvimento ........................................................................................................................ 95 4.4.8 Codificação................................................................................................................................................. 96 4.4.9 Resultados alcançados ............................................................................................................................ 105 CAPÍTULO 5 .......................................................................................................................................... 106 CONSIDERAÇÕES FINAIS .......................................................................................................................... 106 5.1 Análise de portabilidade ......................................................................................................... 106 5.1.1 Portablidade para dispositivos móveis compativeis com plataforma J2ME ......................................... 106 5.1.2 Portabilidade para dispositivos móveis com Android............................................................................ 107 5.1.3 Portabilidade para dispositivos móveis com Windows Mobile ou Windows Phone ........................... 109 5.1.4 Portablidade para dispositivos móveis BlackBerry ................................................................................ 109 5.1.5 Portabilidade para dispositivos Apple .................................................................................................... 110 5.1.6 Portabilidade para dispositivos de outras plataformas ......................................................................... 110 5.2 Análise de escalabilidade ........................................................................................................ 111 5.2.1 Expansão do SOTAC de forma completa para a web ............................................................................. 111 5.2.2 Melhoramento do SOTAC-Mobile no processo de seleção das Memórias de Tradução ..................... 112 5.2.3 Futura utilização de SOA. ........................................................................................................................ 113 5.2.4 Integração do SOTAC-Mobile com soluções de animação 2D ou 3D .................................................... 114 5.2.5 Futura migração do sistema para HTML5 e WAP .................................................................................. 115 5.3 Conclusão ............................................................................................................................... 116 REFERÊNCIAS ....................................................................................................................................... 117 ANEXO A .............................................................................................................................................. 123 LEI LIBRAS ......................................................................................................................................... 123 LEI Nº 10.436, DE 24 DE ABRIL DE 2002. ................................................................................... 123 ANEXO B .............................................................................................................................................. 125 SISTEMA MÓVEL CELULAR NO BRASIL ........................................................................................................ 125 ANEXO C .............................................................................................................................................. 128 ACESSO AO PROTÓTIPO .......................................................................................................................... 128 ÍNDICE DE FIGURAS FIGURA 2.1 – PROPOSTA INICIAL DO PROJETO FALIBRAS ....................................................................................21 FIGURA 2.2 - MÓDULO DE TRADUÇÃO DO FALIBRAS-MT (BREDA, 2005, PÁG. 25) ...............................................22 FIGURA 2.3 – MÓDULO DE AUTORIA DE TRADUTORES DO FALIBRAS-MT (BREDA, 2005, PÁG. 26) ...........................22 FIGURA 2.4 – ARQUITETURA DO FALIBRAS-TS.................................................................................................22 FIGURA 2.5 – TRADUTOR DE TEXTOS PARA USUÁRIO PADRÃO SOTAC (BREDA, 2008 PÁG. 75) ..................................23 FIGURA 2.6 - MÓDULO DE INFERÊNCIA GRAMATICAL DO SOTAC (BREDA, 2008, PÁG. 64) .......................................23 FIGURA 2.7 – ARQUITETURA DO FALIBRAS-WEB. ............................................................................................ 24 FIGURA 2.8 – TELA PRINCIPAL DO PLAYER RYBENÁ.............................................................................................. 25 FIGURA 2.9 – TELA DE LOGIN DO TORPEDO RYBENÁ............................................................................................25 FIGURA 2.10 – TELA DA CAIXA DE ENTRADA DO TORPEDO RYBENÁ. ........................................................................26 FIGURA 2.11 – TELAS DE MENSAGEM DO TORPEDO RYBENÁ. ................................................................................26 FIGURA 2.12 – TELA DA PRINCIPAL DO RYBENÁ TV. ............................................................................................ 27 FIGURA 2.13 – TELA DE EXECUÇÃO DO RYBENÁ TV............................................................................................. 27 FIGURA 3.1 – DYNATAC 8000X DA MOTOROLA EM 1983. .................................................................................28 FIGURA 3.2 – EVOLUÇÃO DA TECNOLOGIA DE TELEFONIA MÓVEL NO BRASIL. ............................................................ 30 FIGURA 3.3 – REPRESENTAÇÃO DE UMA REDE AMPS DE TELEFONIA CELULAR. ..........................................................31 FIGURA 3.4 – DISPOSITIVOS 1G (NOKIA MOBIRA CYTYMAN 900 DE 1987, MOTOROLA MICROTAC DE 1989 E STARTAC DE 1996). ............................................................................................................................................33 FIGURA 3.5 – DISPOSITIVOS 2G (MOTOROLA STARTAC DE 1996 E NOKIA 3320 DE 2000). .......................................35 FIGURA 3.6 – DISPOSITIVOS 2,5G (LG CHAMP BX4170 E MOTOROLA RAZR V3 – AMBOS DE 2004). .........................35 FIGURA 3.7 – DISPOSITIVOS 3G (NOKIA 6120C DE 2007 E NOKIA SMARTPHONE E63 DE 2008, MODEM CELULAR DLINK, APPLE IPHONE WWDC 2009 E IPAD 1 DE 2010). ...................................................................................37 FIGURA 3.8 – DISPOSITIVOS 4G (VODAFONE CONNECT PEN K5005, MOTOROLA TRIUNPH 4G AMBOS LANÇADOS EM JUNHO E O IPHONE 4G AINDA NÃO LANÇADO NO BRASIL). ..................................................................................... 38 FIGURA 3.9 – CAMADAS DO WAP. .................................................................................................................56 FIGURA 3.10 – DISPOSITIVOS DO FUTURO IDEALIZADOS PELOS DESIGNERS DE DIVERSOS FABRICANTES. ............................ 58 FIGURA 4.1 – CODIFICAÇÃO EM PLATAFORMA JAVA. .........................................................................................61 FIGURA 4.2 – ARQUITETURA DA PLATAFORMA JAVA (ORACLE, 2012). ................................................................62 FIGURA 4.3 – ARQUITETURA DA PLATAFORMA J2EE (ORACLE, 2012). .................................................................63 FIGURA 4.4 – ARQUITETURA DA PLATAFORMA J2ME (ORACLE, 2012). ................................................................65 FIGURA 4.5 – CODIFICAÇÃO EM PLATAFORMA J2ME (ORACLE, 2012). ................................................................65 FIGURA 4.6 – CICLO PADRÃO DE EXECUÇÃO DE UM MIDLET. ................................................................................66 FIGURA 4.7 – CONTÊINER WEB. .....................................................................................................................67 FIGURA 4.8 – ARQUITETURA RMI. .................................................................................................................68 FIGURA 4.9 – ARQUITETURA DO SISTEMA SOTAC – MOBILE. ...............................................................................72 FIGURA 4.10 – INTERFACE ENTRE AS APLICAÇÕES DO SOTAC-MOBILE. ...................................................................73 FIGURA 4.11 – CASOS DE USO DO MIDLET SOTAC – MOBILE..............................................................................74 FIGURA 4.12 – CASOS DE USO DO SERVLET SOTAC – EMOBILE. .........................................................................78 FIGURA 4.13 – PERFIL PARA O SOTAC – MOBILE. NO SOTAC. ............................................................................81 FIGURA 4.14 – DIAGRAMA DE CLASSES DO MIDLET SOTAC – MOBILE. .................................................................82 FIGURA 4.15 – DIAGRAMA DE CLASSES DO SERVLET SOTAC – EMOBILE. ..............................................................83 FIGURA 4.16 – DIAGRAMA DE CLASSES DA TRADUÇÃO DO SOTAC.........................................................................83 FIGURA 4.17 – CAMADAS DO SISTEMA SOTAC-MOBILE......................................................................................88 FIGURA 4.18 – TELAS DE ABERTURA E PRINCIPAL DO SOTAC–MOBILE OBTIDAS VIA EMULADOR. ..................................91 FIGURA 4.19 – MENU PRINCIPAL E TRADUÇÃO NO SOTAC–MOBILE OBTIDAS VIA EMULADOR. .....................................92 FIGURA 4.20 – TELA DE ESPERA E EXIBIÇÃO DE VÍDEOS NO SOTAC–MOBILE OBTIDAS VIA EMULADOR. ...........................92 FIGURA 4.21 – SERVIÇO REMOTO SERVLET SOTAC –EMOBILE EM EXECUÇÃO NO SERVIDOR ......................................93 FIGURA 4.22 – TELA DE ACESSO AO SERVLET SOTAC –WMOBILE OBTIDA VIA BROWSER IE. ......................................94 FIGURA 4.23 – TELA DE TRADUÇÕES DO SERVLET SOTAC –WMOBILE OBTIDA VIA BROWSER IE..................................94 FIGURA 4.24 – TELA DE RESULTADO NO SERVLET SOTAC –WMOBILE OBTIDA VIA BROWSER IE. .................................95 FIGURA 4.25 – FLUXO DE DESENVOLVIMENTO DO SOTAC – MOBILE. ....................................................................95 FIGURA 5.1 – NOKIA S40 ASHA 311 E LG C205 PODEM EXECUTAR O MIDLET SOTAC – MOBILE. ............................ 107 FIGURA 5.2 – EXEMPLO DE NOVAS POSSÍVEIS CAMADAS PARA O SOTAC-MOBILE. ................................................... 108 FIGURA B.1 – PRESENÇA DAS PRESTADORAS DE TELEFONIA MÓVEL (ANATEL, 23/06/2009). .................................. 126 ÍNDICE DE TABELAS TABELA 2.1 – PLATAFORMAS ACEITAS PELO TORPEDO RYBENÁ. .............................................................................26 TABELA 3.1 – EVOLUÇÃO DOS PRINCIPAIS SISTEMAS OPERACIONAIS PARA DISPOSITIVOS MÓVEIS. ...................................41 TABELA B.1 – EVOLUÇÃO DA TELEFONIA MÓVEL NO BRASIL. ............................................................................... 125 TABELA B.2 – TECNOLOGIAS NÃO USADAS NO BRASIL. ....................................................................................... 125 TABELA B.3 – O FUTURO DA TELEFONIA MÓVEL NO BRASIL. ................................................................................ 125 TABELA B.4 – EVOLUÇÃO DO NÚMERO DE TERMINAIS HABILITADOS NO SMC NO BRASIL (ANATEL, 2011). ................. 127 ÍNDICE DE GRÁFICOS GRÁFICO 3.1 – DIVISÃO DO MERCADO DE SMARTPHONES NO BRASIL (GARTNER, 2010). ............................................41 GRÁFICO B.1 - EVOLUÇÃO DO NÚMERO DE TERMINAIS HABILITADOS NO SMC NO BRASIL (ANATEL, 2011). ................ 127 P á g i n a | 14 Capítulo 1 Introdução De acordo com Breda (2005), os deficientes auditivos (DA) não são contemplados com muitos recursos de acesso às informações, principalmente nos que se referem ao aprendizado. Alguns aparatos legais foram criados para suprir algumas necessidades básicas dessas pessoas, mas pouco foi feito para levar esses aparatos a elas. Uma criança DA que estuda em uma escola de alfabetização tem o direito a um intérprete para acompanhamento, mas as escolas relutam em aceitar esse tipo de aluno devido ao custo e a dificuldade de manter intérpretes. A Lei LIBRAS nº 10.436 de 22 de abril de 2002 veio oficializar a Linguagem Brasileira de Sinais como a língua oficial dos DA no país. De fato no contexto DA nacional, esta lei é muito importante, quando consideramos as dimensões territoriais do nosso país, no sentido de mantermos um único idioma materno, tanto no nível do Português quanto no nível de LIBRAS. Assim se abriram inúmeras possibilidades para a inclusão social dos DA, tanto por meio de cursos de LIBRAS, que estão disponíveis tanto para DA quanto para ouvintes que querem estar abertos a essa língua, como por meio de ferramentas multimídia que foram e estão sendo implementadas e aprimoradas para fins de inclusão digital. Vários são os projetos e ferramentas disponíveis, e mais recentemente foi desenvolvido o Projeto SOTAC baseado no Sistema FALIBRAS-MT, cujo principal objetivo é fazer a tradução automática de textos de uma linguagem fonte (LF) para uma linguagem alvo (LA), sendo como estudo de caso o uso de Português como LF e LIBRAS como LA. Destes projetos surgiu a evolução FALIBRAS-WEB desenvolvido na Universidade Federal de Alagoas, que traz para o ambiente da internet o projeto FALIBRAS-MT e SOTAC. Este trabalho apresenta-se como uma solução móvel para o FALIBRAS-WEB, SOTAC e FALIBRAS-MT, que deve estar disponível nos dispositivos de telefonia móvel de mercado para em um primeiro momento fazer tradução de P á g i n a | 15 Português no formato texto (LA) para LIBRAS (LF) em formato de sinais (vídeos). Da mesma maneira que o SOTAC este trabalho não está especificamente direcionado a estas linguagens, podendo ser direcionados para quaisquer linguagens fonte e alvo. Chamaremos este sistema de SOTAC– Mobile. 1.1 Objetivos O objetivo deste trabalho é apresentar uma proposta de um sistema para ambiente de telefonia móvel para complementar o projeto FALIBRAS a nível de tradução automática de Português para LIBRAS dando mais liberdade na comunicação dos DA. 1.1.1 Objetivos gerais Projetar e desenvolver o sistema SOTAC–Mobile, que tem como finalidade disponibilizar as funcionalidades até então desenvolvidas a nível desktop pelos módulos FALIBRAS-MT e SOTAC e na web pelo FALIBRAS-WEB em ambiente de telefonia celular, permitindo aos usuários DA, a real possibilidade de inclusão social e digital. 1.1.2 Objetivos específicos O sistema tem como proposta inicial, apenas a tradução da língua fonte o Português, texto escrito no dispositivo móvel, para a língua alvo, vídeo mostrado na tela do dispositivo móvel. Fica para uma adição posterior a tradução do áudio (voz) para a linguagem texto em Português, que constitui a primeira etapa de tradução do projeto FALIBRAS. Não são abordadas questões relacionadas à edição dos dicionários, nem de configurações de perfil usuário. Isso significa dizer que o sistema está sempre funcionando com usuário único e no perfil de usuário móvel, não havendo acesso administrativo nem de colaboradores ou usuários padrão, diferentemente do que ocorre no SOTAC. O usuário móvel tem as mesmas funções do usuário padrão do SOTAC, mas para sua identificação é automática P á g i n a | 16 e genérica e não é permitido a alteração de sua senha. A finalidade desta opção é tornar o sistema o mais simples e leve possível, permitindo-o ser executado em diferentes plataformas móveis de forma eficiente, já que as mesmas possuem limitação de processamento e memória, em oposição ao que ocorre nos computadores pessoais. 1.2 Justificativa Desde a mudança de paradigma ocorrida com o advento da terceira geração da telefonia móvel, conhecida popularmente como tecnologia 3G, a telefonia celular vem sofrendo uma evolução rápida e avassaladora. Surgiram então vários novos dispositivos conhecidos como smartphones, mas o lançamento do iPhone pela Apple, é o real divisor de águas que transformou os aparelhos de telefonia móvel em verdadeiros equipamentos multimídia, deixando para traz o simples telefone para comunicação de voz. Atualmente há mais telefones móveis no Brasil, do que pessoas. Segundo dados do IBGE (Instituto Brasileiro de Geografia e Estatística) e da ANATEL (Agência Nacional de Telecomunicações). Ao final de 2010 havia no país 202,94 milhões de telefones celulares, com crescimento de 16,66% em relação a 2009. Isso equivale a 104,68 aparelhos para cada 100 habitantes. Em um país com 185,71 milhões de habitantes (segundo o censo 2010), dos quais 5,7 milhões (segundo o censo 2000 – censo 2010 ainda em processamento) são deficientes auditivos totais ou parciais, vemos que essas pessoas tornaram-se uma classe de excluídos. Neste cenário, para os deficientes auditivos (DA), a tecnologia de telefonia móvel 3G permitiu uma nova forma de comunicação por meio de SMS (Short Message Service), ou torpedos como são popularmente conhecidos. Porém esta tecnologia limita-se a certas condições e não facilita a vida dos DA, afinal seu idioma natural é LIBRAS e não o Português, que para eles é um segundo idioma. O sistema SOTAC-Mobile, vem ocupar esta lacuna. Apesar da proposta inicial não contemplar o uso do áudio, a possibilidade de tradução em plataforma móvel, abre as portas para uma nova visão do projeto FALIBRAS. P á g i n a | 17 1.3 Metodologia Devido à vasta gama de plataformas móveis atualmente existentes, foi feito uma pesquisa dos principais ambientes de desenvolvimento móvel por meio de fontes como livros, artigos e internet. Desta forma optou-se pela linguagem de programação Java (J2ME), pois é aceita pela maioria das plataformas. Para o desenvolvimento optou-se pelo uso de uma das IDEs disponíves, de modo a organizar melhor o desenvolvimento. A este tipo de ferramenta podem ser adicionados vários SDKs para desenvolvimento nas várias plataformas móveis. Cada plataforma tem suas peculiaridades e cada uma é indicada para uma determinada marca e modelo de dispositivo móvel, isso varia de fabricante para fabricante. Há outras particularidades no desenvolvimento para dispositivos móveis, que estão relacionadas à banda de rede e ao sistema usados. Assim preferimos restringir num primeiro momento o desenvolvimento para aparelhos Nokia série S60 terceira edição (S60_3rd_Edition_SDK_Feature_Pack_2_v1_1 for Nokia devices), que incluem os modelos E62, E63 dentre outros, e utiliza o sistema Symbian. do mesmo fabricante. 1.4 Estrutura da monografia Capítulo 1 – Apresenta a proposta de trabalho, objetivos, justificativa e metodologia. Capítulo 2 – Faz uma breve análise da tradução automática e um histórico dos projetos correlatos (Player Rybená, TLibras, FALIBRAS, FALIBRAS-TS, FALIBRAS-MT, FALIBRAS-WEB e SOTAC). Capítulo 3 – Trata da tecnologia móvel, histórico, evolução com vistas mais especificamente à telefonia móvel celular no Brasil. Capítulo 4 – Apresenta o projeto, a análise e a implementação do sistema SOTAC – Mobile. Capítulo 5 – Apresenta as considerações finais e as perspectivas futuras. P á g i n a | 18 Anexo A – Lei nº 10.436/2002. Anexo B – Sistema móvel celular no Brasil. Anexo C – Informações de acesso ao protótipo. 1.5 Observações a respeito do texto dissertativo No texto desta monografia são usados termos e palavras, que são jargões dos profissionais das áreas de Tecnologia da Informação e Telecomunicações, os quais possuem significados diferentes dos existentes e fixados pelos dicionários da Lingua Portuguesa. Também são usadas diversas siglas das áreas de Tecnologia da Informação e Telecomunicações, cuja origem estão no Inglês, e tem seus significados traduzidos ou explicados no decorrer do texto. Neste trabalho é utilizado o Novo Acordo Ortográfico da Língua Portuguesa, promulgado pelo Ex-presidente Luiz Inácio Lula da Silva no dia 29 de setembro de 2008, e composto pelos Decretos Nº 6.583, Nº 6.584, Nº 6.585 e Nº 6.586. P á g i n a | 19 Capítulo 2 Tecnologia aplicada e trabalhos correlatos Neste capítulo falaremos brevemente sobre a tecnologia usada na tradução automática, e os trabalhos relacionados à proposta deste projeto. 2.1 Tradução Automática A tradução automática (TA) é o processo automático de tradução de um idioma original para outro idioma alvo, através do computador. A TA não é nada simples, muito pelo contrário. As línguas humanas consistem em morfologia (modo como as palavras são montadas), sintaxe (estrutura da frase) e semântica (sentido que se quer expor). Nesse cenário qualquer texto simples pode estar cheio de ambiguidades. Segundo Nirenburg (1987), a tradução automática teria sido a primeira aplicação não numérica proposta dentro da nova área da ciência da computação, instigada pela explosão da transmissão de informações e pela relativa facilidade (segundo erroneamente se imaginava) de se calcar o processo computacional em uma técnica humana aparentemente simples. Os aplicativos de auxílio à tradução podem ser encaixados em duas categorias: os sistemas de tradução por computador, ou tradução automática: MT (Machine Translation systems), são aqueles capazes de realizar o processo tradutório completo, mas pode não excluir pré e/ou pós edição humana. MAT (Machine-Aided Translation systems) - são os sistemas automáticos de auxílio à tradução. Estes subdividem-se em sistemas de tradução automática assistida por humanos (HAMT - Human-Aided Machine Translation) ou de tradução humana assistida por computador (MAHT Machine-Aided Human Translation), segundo quem realiza as tarefas centrais e quem presta auxílio de forma mais secundária. P á g i n a | 20 Existem determinados métodos sistemas de tradução automática. pares delas: tradução direta vs. transferência e análise local vs. Tucker, A. 1987). que caracterizam os diferentes Em geral faz-se referência a três tradução indireta, interlíngua vs. análise global (Slocum, J. 1985; Há também dois paradigmas que subdividem os sistemas que usam os métodos acima citados. O paradigma fundamental corresponde aos sistemas baseados em conhecimento profundo, fundamental ou linguístico, enquanto o paradigma empírico agrupa os sistemas que se baseiam em conhecimento superficial ou empírico. Tais métodos e paradigmas podem misturar e combinar-se de várias maneiras diferentes. De forma geral a TA, tem se tornado cada vez mais uma tarefa multidisciplinar, levando à Ciência da Computação uma busca constante de soluções para atender as diversas necessidades da sociedade. Atualmente estão sendo feitos vários estudos de caso de tradução automática utilizando o Português como língua fonte e LIBRAS como língua alvo, para melhorar a inclusão social e digital dos DA, como veremos a seguir. 2.2 FALIBRAS (CORADINE et al., 2002) Com a finalidade de melhorar a inclusão social e digital dos DA foi criado na Universidade Federal de Alagoas (UFAL), com o apoio do CNPq e da Fundação de Amparo à Pesquisa do Estado de Alagoas (FAPEAL), o projeto FALIBRAS. O projeto FALIBRAS tem como inicial principal objetivo, desenvolver um sistema de tradução automática de Português (falado) para LIBRAS (em gestos). Para tanto, o áudio em Português é captado pelo microfone e sofre a tradução, de modo a ser apresentado em LIBRAS e em tempo real por meio de uma sequência de vídeos. P á g i n a | 21 ÁUDIO CAPTURADO PELOS PERIFÉRICOS TRADUÇÃO TEXTO FONTE TRADUÇÃO Processo Cliente Figura 2.1 – Proposta inicial do projeto FALIBRAS O FALIBRAS é baseado em tecnologias de estruturas de dados, bancos de dados e de animações e está dividido em etapas. Na primeira etapa o áudio captado é convertida em texto usando recursos do IBM ViaVoice. Em seguida o texto é analisado por um interpretador que corrige a ortografia do texto e define o contexto em que as palavras estão inseridas na frase. Posteriormente o sistema faz a tradução e executa as animações correspondentes ao que foi dito. O FALIBRAS foi projetado para utilizar Java como ferramenta de desenvolvimento, pois é multiplataforma, orientada a objetos e perfeitamente compatível com o IBM ViaVoice, MySQL como banco de dados por ser gratuito, o JSpell como corretor ortográfico e para as animações foi usado o Macromedia Flash, que atualmente foi comprado pela Adobe, porque gera dados que ocupam pouco espaço. A partir do projeto FALIBRAS descrito no item acima, surgiram várias iniciativas para sua evolução, como veremos a seguir. 2.3 FALIBRAS-MT(TAVARES; CORADINE; BREDA, 2005) Segundo Breda (2005), o sistema FALIBRAS-MT é constituído pelos módulos de tradução e de autoria de tradutores. O módulo de tradução disponibiliza um ambiente que contém todas as funcionalidades necessárias para estabelecer traduções usando memórias de tradução, [apresentado na Figura 2.2]. O módulo de autoria de tradutores disponibiliza um ambiente contendo todas as funcionalidades necessárias para que os usuários possam atuar diretamente nas memórias de tradução, [como apresentado na Figura 2.3]. P á g i n a | 22 TEXTO FONTE TRADUÇÃO VÍDEOS Figura 2.2 - Módulo de tradução do FALIBRAS-MT (BREDA, 2005, pág. 25) TEXTO FONTE TRADUÇÃO TEXTO PARCIAL DICIONÁRIO SÍMBOLOS TRADUÇÃO VÍDEOS DICIONÁRIO VÍDEOS MEMÓRIA DE TRADUÇÃO Figura 2.3 – Módulo de autoria de tradutores do FALIBRAS-MT (BREDA, 2005, pág. 26) 2.4 FALIBRAS-TS (CORADINE, 2006) O FALIBRAS-TS foi desenvolvido como sendo uma interface tradutora baseada em sintaxe, que utiliza técnicas baseadas no processamento de linguagem natural, com gramáticas, usadas para processar expressões. ANALISADOR LÉXICO E SINTÁTICO ÁUDIO CAPTURADO PELOS PERIFÉRICOS TRADUÇÃO RECONHECEDOR DE FALA TEXTO FONTE TRADUÇÃO VÍDEOS DICIONÁRIO VÍDEOS Figura 2.4 – Arquitetura do FALIBRAS-TS. A primeira versão do FALIBRAS-TS está implementada em PROLOG e em Java. Uma segunda versão, baseada em componentes orientados a objetos, está implementada em C++ (CALADO, 2006), usa tratamento de ambiguidade e transferência sintática (RIBEIRO, 2007). P á g i n a | 23 2.5 SOTAC (TAVARES; BREDA, 2008) Segundo Breda (2008), o SOTAC é um ambiente para autoria e o uso de tradutores automatizados, sendo, baseado na utilização de memória de tradução e regras de tradução, derivadas de inferência gramatical, sobre os exemplos da memória de tradução. A interface desse ambiente está contextualizada na tradução de Português (texto) para LIBRAS sinalizada (vídeos), tendo como produto parcial da tradução a LIBRAS escrita (texto). No entanto, os algoritmos e os mecanismos de tradução, utilizados pelo ambiente, estão generalizados de qualquer língua-fonte escrita (textos) para qualquer língua-alvo falada (áudio) e/ou sinalizada (vídeos), tendo como produto parcial da tradução a língua-alvo escrita (textos). Figura 2.5 – Tradutor de textos para usuário padrão SOTAC (BREDA, 2008 pág. 75) A arquitetura do SOTAC é totalmente baseada na arquitetura do FALIBRAS-MT, tendo sido adicionado a este o módulo de inferência gramatical. MEMÓRIA DE TRADUÇÃO INFERÊNCIA GRAMÁTICA Figura 2.6 - Módulo de inferência gramatical do SOTAC (BREDA, 2008, pág. 64) O SOTAC foi desenvolvido em linguagem C# (C Sharp) em ambiente SharpDevelop 2.2.0.2595, e usou banco de dados PostgreSQL 1.4.3. P á g i n a | 24 2.6 FALIBRAS-WEB (FRANCO; SILVA; BRITO, 2010) O FALIBRAS-WEB foi desenvolvido na Universidade Federal de Alagoas, para estender ao ambiente da internet o FALIBRAS, permitindo aos DA uma real inclusão digital. O sistema tem a finalidade de executar a tradução de documentos on-line a fim de proporcionar autonomia aos DA no ambiente da internet. Para tanto foi desenvolvido um add-on para o browser Firefox, e a concepção da interface gráfica adaptada às necessidades do público alvo. TEXTO SOLICITADO ADD-ON INTERFACE (XUL) TEXTO EM UM TIPO JAVA COMUNICAÇÃO (JAVASCRIPT) ADEQUAÇÃO DO GIF PARA XUL TRADUTOR FALIBRAS GIF (CONJUNTO DE ANIMAÇÕES) COM A TRADUÇÃO Figura 2.7 – Arquitetura do FALIBRAS-WEB. Foi utilizado o XUL, uma linguagem baseada em XML, para o desenvolvimento da interface e para adicionar os elementos necessários ao Firefox. O JavaScript foi usado para o desenvolvimento das funções de comunicação do sistema com ao módulos do FALIBRAS. P á g i n a | 25 2.7 Player Rybená Rybená, significa comunicação, no idioma indígena Xavante. O Player Rybená foi desenvolvido para tradução textos escritos ou de páginas web de Português para LIBRAS. Figura 2.8 – Tela principal do Player Rybená. 2.8 Torpedo Rybená A partir do Player Rybená, em 2005 surgiu o Torpedo Rybená, que envia e recebe mensagens no formato texto via SMS convertidas para LIBRAS. Atualmente o software é de distribuição gratuita, mas funciona em um conjunto limitado de aparelhos e é oferecido pela Brasil Telecom GSM, sendo cobrada uma tarifa de R$0,26 (valor da época) por mensagem e conexão GPRS. Figura 2.9 – Tela de login do Torpedo Rybená. P á g i n a | 26 Figura 2.10 – Tela da caixa de entrada do Torpedo Rybená. Figura 2.11 – Telas de mensagem do Torpedo Rybená. A seguir os dispositivos compatíveis com o Torpedo Rybená. Marca Siemens Nokia Dispositivos móveis Séries / Modelos CX65, M65 6600, 3660 Tabela 2.1 – Plataformas aceitas pelo Torpedo Rybená. O software pode ser baixado via site WAP (Wireless Application Protocol) da Brasil Telecom GSM 2.9 Rybená TV Recentemente surgiu também o Rybená TV, também como extensão do Rybená Player, que permite aos DA terem acesso à TV digital por meio de LIBRAS P á g i n a | 27 usando a tecla Close Captions padrão dos aparelhos de TV digitais. Porém esta proposta se deparou com diversos problemas em relação a tradução em tempo real bem como a obtenção dos textos em Close Captions. A seguir estão mostradas as principais telas do sistema Rybená TV. Figura 2.12 – Tela da principal do Rybená TV. Figura 2.13 – Tela de execução do Rybená TV. Para a implementação foi escolhido o Java EE, com biblioteca Java AWT para a camada de visualização, e o banco de dados HSQLDB da Sun. P á g i n a | 28 Capítulo 3 Tecnologia móvel Neste capítulo falaremos sobre a tecnologia móvel, mais especificamente a telefonia móvel celular no Brasil. 3.1 Breve Histórico Várias empresas fizeram testes entre o ano de 1947 e 1973, mas foi a Motorola, que criou o primeiro protótipo de aparelho de telefonia celular realmente portátil, o DynaTAC (Dynamic Adaptative Total Area Coverage). Já no Brasil, a primeira tentativa de introdução da Telefonia móvel ocorreu em 1972, com um sistema de baixa capacidade anterior à tecnologia celular, com tecnologia IMTS (Improved Mobile Telephone System), em Brasília com apenas 150 terminais habilitados. O Japão ativou seu sistema de telefonia celular em 1978 seguido pela Suécia em 1981, ambos com tecnologias próprias. Em 1983, o primeiro modelo liberado comercialmente pela FCC (Federal Comunication Comission) foi o DynaTAC 8000x, e por U$3.995,00 estava disponível somente nos Estados Unidos. Figura 3.1 – DynaTAC 8000x da Motorola em 1983. P á g i n a | 29 O DynaTAC pesava 800 gramas, media 25 centímetros de comprimento por 3 centímetros de largura, tendo um comprimento de 7 centímetros e possuía uma bateria que acabava em 20 minutos de conversação. Até então os aparelhos celulares pesavam mais de 1 kilograma e eram enormes, geralmente sendo acoplados em carros. Em 1984 foi criado pela Bell Labs, nos Estados Unidos o padrão analógico AMPS (Advanced Mobile Phone System) de primeira geração (1G). Este padrão foi implantado em diversos países do continente Americano, da Ásia e Austrália. A partir daí, no início década de 90 os fabricantes já tinham condições tecnológicas de lançar aparelhos de telefonia celular com um tamanho mais aceitável, com um peso adequado e com baterias de duração mais prolongada. O Sistema Móvel Celular (SMC) brasileiro foi inaugurado, usando o padrão AMPS e banda A, oficialmente em 30 de dezembro de 1990, no Rio de Janeiro com capacidade para 10 mil terminais. Nesta ocasião o país contava com 667 aparelhos. No ano (1991) seguinte passou a contar com 6.700 aparelhos e em 1992 ultrapassou a marca de 30 mil unidades. Em 1997 começou a operar o primeiro serviço celular digital da banda B, em Brasília. Veja a evolução quantitativa do SMC no Brasil, no gráfico B.1 do Anexo B. O fator determinante para o crescimento do SMC no país foi a privatização, que fez com que as antigas estatais e as novas empresas investissem no setor, de modo a manter as vantagens competitivas. Assim houve um aumento na oferta de serviços e redução de preços, em uma busca desenfreada para absorver o novo mercado. Em 2001, a ANATEL (Agencia Nacional de Telecomunicações) lançou novas regras para a exploração do sistema de telefonia móvel no país, que foram descritas no regulamento do SMP (Sistema de Telefonia Pessoal), propondo uma simplificação nas áreas de atuação do mercado, leilão de novas licenças para exploração das bandas D e E. As empresas que operavam segundo as P á g i n a | 30 regras do SMC, foram incentivadas a migrar para o novo regulamento (vide a figura B.1 do Anexo B sobre a situação atual). Para melhor compreensão da telefonia móvel, faremos mais a frente uma exposição sobre a sua evolução tecnológica que se subdividiu em Tecnologia Analógica e a Tecnologia Digital, e no convencionou-se chamar de gerações. No mundo, a geração mais nova é a 4G (quarta geração) já amplamente difundida em alguns países como Japão e países da EU (União Europeia) tais como Suécia e Noruega. No Brasil a 4G deverá estar disponível antes de 2014 nas principais capitais, impulsionada pela vinda da Copa do Mundo em julho desse mesmo ano. 1G 2G 2,5G 3G CDMA2000x1 EVDO CDMA CDMA2000x1 CDMA2000x1 EVDV AMPS TDMA WCDMA GSM GPRS / EDGE HSDPA SISTEMA ANALÓGICO SISTEMA DIGITAL Figura 3.2 – Evolução da tecnologia de telefonia móvel no Brasil. Passados 20 anos desde o início da telefonia móvel comercial, o conceito procurado pelos consumidores mudou. O celular tornou-se muito mais do que um telefone para comunicação de voz, hoje é um aparelho multimídia e multifuncional que está ao alcance de todos, e com preços variando de R$90,00 a R$2.500,00, com uma diversa gama de opções de serviço. P á g i n a | 31 3.2 Conceitos da telefonia móvel celular O conceito de telefonia móvel celular pode ser definido basicamente como; um transmissor de baixa potência que atua em uma determinada área geográfica (célula) e fornece cobertura sob frequências que podem ser reutilizadas por células adjacentes. Cada célula é composta por uma torre de transmissão, uma estação de rádio frequência que são denominadas Estações Rádio Base (ERB). Abaixo o exemplo de uma área de cobertura celular. CCC ERB ERB ERB ERB ERB ERB ERB ERB ERB EM ERB ERB ERB ERB ERB ERB ERB CCC ERB ERB ERB ERB Figura 3.3 – Representação de uma rede AMPS de telefonia celular. Usamos hexágonos para a representação das células, para facilitar o entendimento, apesar da sua delimitação física não ser exatamente essa. Estas ERB ficam conectadas a um Centro de Comutação e Controle (CCC). Os CCC ficam conectados uns aos outros e ao resto da rede. Quando uma Estação Móvel (EM) está ao alcance de uma ERB, esta faz todas as verificações e mantém a EM em serviço. As ERB também fazem a função de handoff, que é a passagem das EM de uma célula para outra, bem como a função de roaming (itinerância) que é a capacidade das EM estarem em serviço mesmo fora do local onde estão cadastradas. P á g i n a | 32 3.3 Telefonia móvel analógica A telefonia móvel analógica é marcada pela transmissão unicamente de voz, que é modulada e transmitida. Na recepção, o processo inverso ocorre ou seja o sinal é recebido e demodulado de modo a obter-se o sinal de voz novamente. As primeiras tentativas analógicas foram usando sistemas half duplex chamados Push-to-talk onde era necessário apertar um botão para a transmissão do áudio. O sistema analógico não suportava criptografia, portanto era basicamente inseguro, além da qualidade do áudio não ser boa e ainda tinha baixa taxa de transmissão. 3.3.1 Primeira geração (1G) A primeira geração de telefonia móvel funcionava para apenas o serviço de transmissão de voz. As principais tecnologias utilizadas nesta geração foram: IMTS (Improved Mobile Telephone System); AMPS (Advanced Mobile Phone System). Também houve outras tecnologias menos conhecidas e usadas em outros países: TACS, ETACS, NMT450, NMT900, C-450, RTMS, RADIOCOM2000, NIT, JTACS/NTACS. No Brasil a única tecnologia de primeira geração aplicada à telefonia celular foi o AMPS. Os aparelhos celulares da época eram ainda muito volumosos e seus visores eram apenas numéricos. A bateria era grande e com performance insuficiente. No Brasil, ficaram popularmente conhecidos como “tijolões”, pois eram grandes e pesados. A exemplo dos modelos mostrados abaixo que pesavam 800g, 300g e respectivamente. Foi na verdade a Motorola que ao lançar o StarTAC em 1996, P á g i n a | 33 primeiro celular com “flip” (dobra em Português), mudou o conceito de ergonomia do celular. . Figura 3.4 – Dispositivos 1G (Nokia Mobira Cytyman 900 de 1987, Motorola MicroTAC de 1989 e StarTAC de 1996). 3.4 Telefonia móvel digital No processo de transmissão nestes sistemas, o sinal de voz é digitalizado e em seguida é feita a adição dos bits de redundância para permitir a correção de erros. Depois é adicionado um conjunto de bits para controle de comunicação (tais como palavras de alinhamento e sincronização e etc.). Tudo isso gera um aumento da taxa de transmissão. Na sequência ocorre o processamento da faixa espectral e do sinal para a posterior modularização e transmissão. Na recepção, ocorre a operação inversa, e a operação final consiste em descartar os bits adicionais de redundância e controle e transformar o sinal digital de voz novamente em sinal analógico. A maior vantagem na transmissão digital está no fato de possuir um melhor desempenho em ambientes difíceis, pois faz uso de recursos para correção de erros. Há outras várias vantagens na comunicação digital, dentre elas: melhoria na eficiência espectral; rejeição à interferência; sensibilidade. P á g i n a | 34 A transmissão digital também tem dificuldades e um dos problemas mais críticos que podem afetar a comunicação digital é o efeito multipercurso. Quando a trajetória do sinal percorre vários caminhos de comprimentos desiguais. Este efeito piora na proporção em que aumenta a taxa de transmissão e quanto maior for o diâmetro da célula. A telefonia digital produziu as gerações subsequentes da telefonia móvel celular. 3.4.1 Segunda geração (2G) A segunda geração de telefonia móvel caracterizou-se pela possibilidade de transmissão não apenas de voz, mas também permitia a transmissão de dados numéricos de pequeno volume. Surgiu o SMS (Short Message Service), popularmente conhecido como torpedo. As principais tecnologias utilizadas no Brasil nesta geração foram: CDMA (Code Division Multiple Access); TDMA ou D-AMPS (Time Division Multiple Access); GSM (Group Special Mobile). Também houve outras tecnologias menos conhecidas e usadas em outros países: N-AMPS, E-TDMA e outras. Os aparelhos celulares 2G eram bem mais ergonômicos e seus visores apesar de ainda ser monocromáticos já forneciam recursos de menu com ícones. A bateria ainda possuía certa limitação de uso, mas já não era mais necessário que o usuário carregasse uma bateria sobressalente. Também passaram a possuir outras funções como agenda eletrônica, toques variados, jogos e outras. P á g i n a | 35 Figura 3.5 – Dispositivos 2G (Motorola StarTAC de 1996 e Nokia 3320 de 2000). 3.4.2 Segunda geração e meio (2,5G) Caracteriza-se pelo conjunto de tecnologias que possuem características híbridas, ou seja características da segunda geração bem como da terceira geração, assim devido a dificuldade em estabelecer uma posição, criou-se esta denominação 2,5G. Esta geração ficou marcada pela transmissão de dados numéricos de volume moderado, além da tradicional transmissão de voz. As principais tecnologias utilizadas nesta geração foram: CDMA2000x1 (Code Division Multiple Access 2000 One Time Radio Transmission Technology); GPRS (General Packet Radio System) / EDGE (Enhanced Data Rates for Global Evolution). Os aparelhos celulares 2,5G ganharam nova roupagem, toques polifônicos e telas coloridas que no início possuíam 16 cores e chegaram a 65 mil cores o que permitiu a instalação de câmeras fotográficas embutidas e mensagens MMS (Multimedia Message Service). Figura 3.6 – Dispositivos 2,5G (LG Champ BX4170 e Motorola RAZR V3 – ambos de 2004). P á g i n a | 36 3.4.3 Terceira geração (3G) A terceira geração de telefonia móvel caracterizou-se pela possibilidade de transmissão não apenas de voz e dados de maior volume, mas também permitia uma nova gama de serviços que vão desde suporte multimídia para áudio MP3, vídeo, TV, até a conexão de internet banda larga com velocidades razoáveis, para permitir um uso bastante funcional de correio eletrônico, serviços WWW (World Wide Web), vídeo chamada e até GPS (Global Positioning System). As principais tecnologias utilizadas nesta geração foram: CDMA2000x1 EVDO (Code Division Multiple Access 2000 One Time Evolution Data Only); CDMA2000x1 EVDV (Code Division Multiple Access 2000 One Time Evolution Data/Voice); WCDMA (Wideband Code Division Multiple Access); HSDPA (High-Speed Downlink Packet Access). Também houve outras tecnologias menos conhecidas e usadas em outros países: UMTS. A geração 3G proporcionou o desenvolvimento de várias novas tecnologias, a exemplo do WAP (Wireless Application Protocol), que são páginas próprias para celular criadas pelos portais. Nesta ocasião surgiram os smartphones, celulares com funcionalidades avançadas e com sistemas operacionais que aceitam instalação de diversos softwares; os modens celulares para as conexões de internet 3G e os celulares touch pad com tela sensível ao toque e mais recentemente o multitouch que permite ao usuário manipular o dispositivo com vários dedos simultaneamente. Assim surgiram o Blackberry, e vários outros. Recentemente foi lançado o iPad que é o modelo de PCTablet (ou Tablet) da Apple. Os tablets como são P á g i n a | 37 popularmente conhecidos, são dispositivos móveis do tamanho de uma prancheta, que possuem funcionalidades de celular e de PC simultaneamente. Na realidade os tablets estão mais próximos da quarta geração de telefonia móvel do que da terceira geração. Figura 3.7 – Dispositivos 3G (Nokia 6120c de 2007 e Nokia smartphone E63 de 2008, modem celular DLink, Apple iPhone WWDC 2009 e iPad 1 de 2010). 3.4.4 Quarta geração (4G) A quarta geração da telefonia móvel, já é uma realidade em vários países da União Europeia, da Ásia e nos Estados Unidos. A Presidente Dilma Rousseff, em entrevista no programa de rádio “Café com a Presidenta”1 dia 12 de setembro passado, divulgou que a tecnologia tem previsão de funcional com 40 milhões de dispositivos antes do 1 "Presidenta" termo usado atualmente para referir-se à Presidente da República do Brasil, Dilma Roussef. Segundo à norma clássica do idioma, presidenteadvem do ente que preside, onde ente é substantivo comum de dois gêneros, logo o termo correto é Presidente Dilma Roussef. P á g i n a | 38 mês de julho de 2014, data na qual irá ocorrer a Copa do Mundo FIFA no Brasil. A previsão é de um investimento de 200 milhões de Reais. As principais tecnologias utilizadas nesta geração serão: LTE (Long Term Evolution); WiMAX (Worldwide Interoperability for Microwave Access). O padrão 4G ainda não está totalmente definido pela ITU (International Telecommunication Union) e nem pronto para uso. Assim há várias outras propostas como: HSPA+, HSPA 14, WiMAX 2 e LTEA. As tecnologias LTE e WiMAX estão na frente, e testes já estão sendo feitos no Brasil apesar de ainda não estar definido entre estas duas qual será o padrão usado no país. Fato é que a 4G trará conexão de internet em alta velocidade e permitirá uso de HDTV, e de funcionar como cartão de crédito. A tecnologia 4G promete conexões de 4 a 100 vezes mais rápidas do que as atuais. Figura 3.8 – Dispositivos 4G (Vodafone Connect Pen K5005, Motorola Triunph 4G ambos lançados em junho e o iPhone 4G ainda não lançado no Brasil). 3.5 Sistemas operacionais para DM Nasceram inicialmente para atender aos PDAs (Personal Digital Assistent) e passaram a ser utilizados na telefonia celular com a chegada da tecnologia 2G, pois foi nesta ocasião que os dispositivos celulares passaram a ter display compatível com menus e outras opções, apesar de serem, no início, ainda monocromáticos. P á g i n a | 39 Os primeiros sistemas operacionais para celular eram bem primitivos. Abaixo, um resumo das versões dos principais sistemas operacionais para dispositivos moves já lançadas: Ano Sistema Operacional / Versão 1990 EPOC16 1996 Palm OS 1.0 1997 EPOC32 v1 Palm OS 2.0 1998 Palm OS 3.0 1999 EPOC32 v5 (Symbian OS 5) 2000 Windows CE/PocketPC 2000 2001 2002 PocketPC 2002 Symbian OS 6.0 Palm OS 4.0 Palm OS 5.0 Symbian OS 6.1 Symbian OS 7.0 2003 Symbian OS 7.0s Windows Mobile 2003 Symbian OS 8.0 e 8.0b 2004 Symbian OS 8.1a e 8.1b Windows Mobile 2003 SE Symbian OS 9.0 Palm OS Cobalt Symbian OS 9.1 2005 2006 Windows Mobile 2005 Blackberry OS 4.1 Symbian OS 9.2 Symbian OS 9.3 Comentários Desenvolvido para organizadores eletrônicos Agenda eletrônica, lista de tarefas e jogos Primeira versão Correio eletrônico Suporte a HotSync com PC, e cores em 8 bits Ultima versão antes do consórcio Totalmente compatível com as principais ferramentas Office. MSN Messenger e Media Player 8 Primeiro Symbian Cores em 16 bits Bluetooth O primeiro com recurso para câmera embutida Suporte a EDGE e IPv6 Melhor compatibilidade com as versões 6.x Bluetooth, Internet Explorer Uso de dois kernels diferentes, suporte a CDMA, 3G e gráficos vetoriais Versão melhorada do 8.0 WPA, e variação da tela entre retrato e paisagem Fim dos dois kernels Wi-Fi e Bluetooth Novos recursos de segurança e Bluetooth 2 GPS e interface de gerenciamento Suporte ao idioma Vietnamita Gerenciamento de memória aprimorado, Wi-Fi e HSDPA P á g i n a | 40 Ano Sistema Operacional / Versão iOS 1.0 Windows Mobile 6 2007 Symbian OS 9.4 Symbian OS 9.5 Blackberry OS 4.2 iOS 2.0 Blackberry OS 4.5 2008 Windows Mobile 6.1 Google Android 1.0 Symbian^1 (S60) Google Android 1.1 (Cupcake) Palm WebOS Google Android 1.2 (Donut) 2009 Google Android 2.0 e 2.1 (Eclair) Blackberry OS 5 Windows Mobile 6.5 Samsung Bada 1.0 iOS 3.0 iOS 4.0 Blackberry OS 6 Windows Phone 7 Google Android 2.2 (Froyo) 2010 Google Android 2.3 (GingerBread) Symbian^2 MeeGo Symbian^3 HP Web OS Comentários Primeira versão DotNet v2 SP2 compatível, SQL Server 2005 CE e Windows Live Paginação sob demanda Suporte a DVB-H e ISBD-T Voice notes Sync Google Contacts e suporte a aplicações Third-part HTML e correio eletrônico rápidos Zoom de página inteira no Internet Explorer e Primeira versão Widgets interativos, Facebook IM Chat Bluetooth A2DP e AVRCP, upload de vídeos do YouTube e fotos do Picasa Multitarefa e Integração com correio eletrônico Yahoo Mail e GMail, Resolução de tela WVGA, navegação Google turn-by-turn gratuita HTML 5, MS Exchange Server e Bluetooth 2.1 Wireless Sync, Blackberry Enterprise Server 5 Suporte a multi-touch Primeira versão Navegação turn-by-turn, Voice Memos, Push Notifications. Pastas multitarefas Nova interface de mídia, lista de contatos múltipla e integração com mídias sociais. Multitarefas, suporte a serviços lowbased e Tiled UI Funcionalidade USB e Wi-Fi e suporte a Adobe Flash 10.1 Multi-touch, suporte a telas ultralargas e de alta resolução Versão de avaliação gratuita Desenvolvido vários sistemas embarcados. WebKit nativo, arquitetura de gráficos 2 e 3D, melhoramentos UI e suporte a monitores externos com HDMI Multitarefa, Synergy App e tela multitouch P á g i n a | 41 Ano 2011 Sistema Operacional / Versão Google Android 3.0 (HoneyComb) Comentários Lançada especialmente para tablets Multitarefa otimizada, compartilhamento de Bluetooth, suporte de transferência de mídias e customização da tela principal Google Android 3.1 (HoneyComb) Tabela 3.1 – Evolução dos principais sistemas operacionais para dispositivos móveis. Os sistemas operacionais para celular são mais importantes nos aparelhos smartphones, porque as aplicações são desenvolvidas para estes dispositivos. Abaixo vemos da distribuição do mercado de smartphones no Brasil. Smartphones no Brasil 0,9% 4,2% 1,0% 0,4% 0,1% 0,1% Nokia RIM (Blackberry) 0,0% Apple 8,4% Motorola 8,5% Samsung 54,4% 22,1% HTC Sony Ericsson Palm (HP) LG Eletronics Others Dell Gráfico 3.1 – Divisão do mercado de smartphones no Brasil (Gartner, 2010). A seguir faremos uma breve descrição sobre os principais sistemas operacionais para dispositivos móveis utilizados atualmente. P á g i n a | 42 3.5.1 EPOC OS O EPOC era um sistema operacional rudimentar criado para organizadores eletrônicos pela Psion (empresa criada em 1980). O EPOC16 era originalmente chamado apenas de EPOC. Foi desenvolvido no final da década de 80, e renomeado e lançado em 1990 como EPOC16 para o dispositivo Psion’s SIBO. Era baseado nos processadores 8086 de 16 bits, e desenvolvido em assembly e C, sendo formulado para rodar embarcado em ROM. Rodava com usuário único. A primeira versão do EPOC32 foi lançada em 1997, no Psion Series 5. Apesar de levar o mesmo nome, o EPOC32 era praticamente um novo sistema. Foi desenvolvido em C++, a partir de uma nova base de código. Era pré-emptivo multitarefa, com usuário único. Originalmente foi desenvolvido para processadores da família ARM (primeiramente Acorn RISC Machine, atualmente Advanced RISC Machine), porém permitia a compilação para outros processadores. Possuía um desempenho surpreendente levando-se em conta a capacidade limitada do hardware. As versões 2 e 4 nunca foram publicadas e não chegaram ao mercado. Já a versão 3 foi lançada em sequência da versão 1. A seguir seguiu-se a versão 5 que rodava no Psion Series 5mx , Revo / Revo Plus, Psion Series 7 / netBook, netPad e Ericsson MC218. Esta versão foi apelidada retrospectivamente de Symbian OS 5. Durante o período de desenvolvimento do EPOC32, houve uma divisão da Psion, de modo que seu departamento de software tornou-se a Psion Software. Em junho de 1998 a Psion Software tornou-se Symbian Ltd. a partir um consórcio de várias empresas. A partir daí o EPOC versão 6 ficou conhecido com Symbian OS. P á g i n a | 43 3.5.2 Palm OS O pioneirismo da Palm na criação de PDAs deu origem ao Palm OS 1.0 em 1986, sistema para ser usado nestes dispositivos. Mas seu sucesso inicial no mercado de consumo em geral não foi acompanhado pelo mercado corporativo, especialmente depois que a Microsoft quando lançou o Windows CE, que fazia perfeita interface com todas as ferramentas Microsoft para PC e era extremamente intuitivo. Outras versões se seguiram até 2009 quando fui lançado o Palm Pre rodando Palm WebOS. O Palm WebOS é baseado em Linux, sendo altamente customizado, foi desenvolvido para processadores ARM. Em abril de 2010 foi efetivamente anunciada a compra da Palm pela HP. Ao final de 2010 a HP lançou o Palm Pre 2 rodando HP Web OS sucessor do Palm WebOS. Ambos tiveram baixa aceitação e foram descontinuados pela HP em agosto de 2011. 3.5.3 Windows Mobile Foi inicialmente desenvolvido pela Microsoft para dispositivos móveis do tipo PDA e era chamado Windows CE ou PocketPC 2000. Sua segunda versão lançada em 2000 chamou-se PocketPC 2002 ainda para plataformas PDA. Até então foi pouco utilizado, pois herdou problemas oriundos de seu sistema origem, o Windows para computadores pessoais. No marcado de PDAs disputava com o Palm OS, sendo mais utilizado em ambientes comerciais e industriais, enquanto o Palm OS fazia sucesso nas casas de seus usuários. O sistema foi remodelado para melhorar sua performance e aceitar uma maior variedade de hardwares, mesmo assim ainda é pesado para a maioria dos dispositivos atuais. Foram então criadas 3 versões, seguindo o padrão usado pela Microsoft, onde separa as versões de seu sistema Windows de acordo com certas P á g i n a | 44 características. Nesse caso específico a separação foi feita visando a diferenciação do hardware a ser usado: Windows Mobile Professional para smartphones com touchscreen; Windows Mobile Standard para celulares convencionais; Windows Mobile Classic para ser usado nos PDAs conhecidos agora como PocketPCs. Assim como o Windows para computadores pessoais, não é efetivamente multitarefa, funciona simulando este recurso. Como em tese é a versão reduzida do sistema Windows usado nos computadores pessoais, o que a tornou muito popular no mercado. A última versão possui recursos para integração com Xbox360 e Zune. Em termos de desenvolvimento de aplicações para Windows Mobile, a Microsoft aconselha utilizar a linguagem C++ preferencialmente com o Studio .Net (dot Net), o qual já possui todos os recursos para desenvolvimento para esta plataforma. 3.5.4 Symbian A partir de um consórcio, fundado em 1988, entre várias empresas fornecedoras de dispositivos móveis (Nokia, Siemens, Sony Ericsson e Panasonic) surgiu o Symbian OS. Atualmente pertence à Nokia que comprou praticamente todas as ações em 2008, porém outras empresas podem licenciar o sistema para utilização em seus produtos. O Symbian é derivado do EPOC Psion e foi desenvolvido de forma modular, para permitir que cada empresa pudesse desenvolver sua própria interface, inclusive variando de modelo para modelo de dispositivo. Essa característica permanece nas versões mais atuais o que permitiu que ele fosse usado em dispositivos mais simples (até mesmo monocromáticos), bem como esteja P á g i n a | 45 sendo usado até hoje nos mais novos modelos de smartphones, e sendo a atual líder de mercado. A interface mais conhecida desse sistema é a Nokia’s series 60 (usada em dispositivos Nokia e Sony Ericsson). Este sistema foi desenvolvido para funcionar em diversos tipos de processadores da família ARM, bem como dar suporte a varias tecnologias de comunicação celular: CDMA, CDMA2000 x1, WCDMA, GSM, EDGE, e outras. O microkernel suporta vários protocolos de comunicação: TCP/IP, Ethernet, e outros. Atende a navegação web: WAP e HTML, e mensagens: SMS, MMS, email. Permite o uso de multimídia em geral. Faz sincronização de dados usando SyncML com PC via porta serial, USB, Bluetooth, infravermelho e etc. Também possui segurança dando suporte a vários protocolos de criptografia. Por causa dos mecanismos que limitam o consumo de recursos a programação para Symbian é bem restrita e complexa. Porém com o conceito Open Standard Operation System (Sistema operacional aberto padrão), ele permite que sejam desenvolvidas aplicações 32 bits multitarefa usando as linguagens JAVA e/ou C++ (com suporte a MIDP, CDC e CLDC). Recentemente a Nokia abriu os códigos fontes do Symbian e está planejando trocar o Symbian pelo Windows Mobile, nesse sentido transferiu os serviços relacionados ao Symbian para a Accenture, uma empresa multinacional de outsourcing. Esta troca está prevista até 2016, porém a Nokia pretende ainda comercializar dispositivos como Symbian até lá. 3.5.5 Android E agosto de 2005 a Google comprou a Android Inc que até então era uma pequena empresa americana fundada em 2003. Depois, em 2007, formou-se um consórcio de várias empresas chamado “Open Handset Aliance” (OHA) com a intenção de criar padrões abertos para a telefonia móvel. Entre as empresas participantes estão a Google, HTC, Dell, Motorola, Qualcomm, Texas Instruments, Samsung, LG Eletronics, T-Mobile e NVidia. P á g i n a | 46 Em dezembro de 2007 foi lançado o Android Beta SDK. E no ano seguinte foi lançado o primeiro dispositivo móvel com Android 1.0, o HTC Dream G1. Atualmente o Android é desenvolvido com uma parceria com a Sun Corp, porém todo o controle comercial e operacional é da Google. O Sistema possui código aberto e foi desenvolvido com base no GNU/Linux e é altamente customizado para funcionar em dispositivos móveis. Não está limitado a nenhum hardware específico e é multitarefa. Permite desenvolvimento em plataforma Java e possui uma infinidade de aplicativos gratuitos disponíveis para uso. Suporta todo tipo de conexão sem fio (3G, EDGE, Wi-Fi e Bluetooth). Hoje o Android é usado em aproximadamente 20% dos dispositivos móveis do mercado mundial. 3.5.6 iOS Chegou ao mercado em 2007 e hoje o iOS ocupa boa parte do mercado mas é utilizado apenas em dispositivos da Apple (iPhone e iPad). A Apple desenvolveu o iOS a partir do Mac OS X, desenvolvido para sua linha de computadores pessoais no início da década de 80 que é usado até hoje. Entretanto o iOS é bastante customizado e simplificado para funcionar adequadamente no iPhone, que tem sido um grande sucesso de vendas. Este sistema foi projetado para arquitetura ARM até a versão 4, a partir da qual está usando o chip A4, que também é usado no iPad. Como o iOS foi baseado no UNIX BSD, assim como seu “pai”, o Mac OS X, ele permite que vários usuários usem o sistema simultaneamente, isso foi contornado por meio da divisão do sistema em 3 domínios diferentes. Porém esta segurança já foi quebrada e esse procedimento de quebra é conhecido como jailbreak. P á g i n a | 47 Para evitar a pirataria a Apple faz o kernel ser carregado criptografado na memória, bem como exige assinatura digital para que uma aplicação use recursos do sistema. Entretanto a quebra citada acima permite que isso seja contornado em aplicações feitas em C e Objective C. Outra característica do iOS é que carrega drives de dispositivos direto no kernel do sistema o que aumenta a eficiência nesse aspecto. O desenvolvimento de aplicações para esta plataforma só pode ser feito em Mac OS X, pois não há SDKs disponíveis para outros sistemas operacionais de computadores pessoais. A interface é intuitiva e de fácil compressão, desta forma tornou-se um sucesso. O iOS revolucionou o padrão de sistemas operacionais para dispositivos móveis, e a cada dia vem ocupando uma maior fatia do mercado. 3.5.7 BlackBarry OS Research In Motion (RIM) desenvolveu em o Blackberry OS especificamente para sua linha de smartphones e handhelds Blackberry. É multitarefa e é muito focado no uso de dispositivos especiais tais como tracking balls e scroll wells (dispositivos para rolagens de páginas e textos, similares aos encontrados em mouses e teclados de notebooks). Mas só executa programas certificados. Uma característica interessante dos dispositivos Blackberry é que possui o teclado especialmente projetado para a digitação com polegares, desenvolvido especialmente para facilitar o seu uso. É notadamente conhecida por oferecer suporte para o e-mail corporativo, por meio de MIDP 1.0 e, mais recentemente, um subconjunto do MIDP 2.0, que permite a ativação sem fio completo e sincronização com Microsoft Exchange, Lotus Domino ou Novell GroupWise e-mail, calendário, tarefas, notas e P á g i n a | 48 contatos, quando utilizado em conjunto com o BlackBerry Enterprise Server. O sistema operacional também suporta WAP 1.2. No meio empresarial a plataforma é bastante conhecida mundo a fora, porém no Brasil não é tão difundida. Recentemente perdeu bastante mercado a nível mundial devido ao avanço do iPhone. 3.5.8 Bada O Bada é o sistema operacional desenvolvido pela Samsung em 2009, voltado para os dispositivos da própria empresa. O kernel é configurado e pode ser tanto o Linux como outro tipo RTOS (Real Time Operation System). A empresa sugere o uso do Linux para dispositivos mais complexos. É multitarefa e possui suporte nativo para multi-touch. O sistema oferece soluções voltadas para interação e comunicação com redes sociais como Twitter e Facebook, bem como para multimídia YouTube. Só está sendo usado nos smartphones mais modernos da Samsung. Não se pode dizer muito a respeito da aceitação no mercado, pois seu uso ainda é restrito. 3.5.9 Meego Surgiu a partir da fusão do Maemo (plataforma de tablets e smartphones da Nokia) com o Moblin (plataforma de netbooks da Intel). É uma distribuição Linux com interface diferente e otimizada para telas pequenas e telas sensíveis. Foi criado para plataformas variadas, como desktops, netbooks, tablets, smartphones, dispositivos automotivos, smartTVs, e outros sistemas embarcados. Por esse motivo fornece suporte para arquiteturas ARM e x86. P á g i n a | 49 Roda qualquer aplicativo para Linux além dos que são desenvolvidos para ela própria. Atualmente é hospedado pela Linux Foudation. 3.6 Desenvolvimento de Software para DM Desenvolver aplicações para dispositivos móveis requer certo trabalho de garimpagem de informações. Isso advém do fato de haver uma infinidade de dispositivos no mercado e agregado a eles uma boa variedade de sistemas operacionais e ainda alguns destes sistemas permitem interfaces variadas, como já mostrado nos anteriormente. Há alguns aspectos principais a serem considerados no desenvolvimento para dispositivos móveis, como: as limitações de espaço físico para armazenamento de dados, limitações de uso de memória, limitações no tamanho da tela, velocidade de processamento, velocidade de transmissão de dados, e outras mais. Vejamos a seguir os aspectos mais importantes. 3.6.1 Limitações O desenvolvimento de softwares para celular requer certo cuidado especialmente em relação a capacidade de memória e de processamento das CPU dos dispositivos, porém há outros detalhes importantes, como a velocidade atual fornecida para transmissão de dados. Portanto ao pensarmos numa aplicação para celular temos que ter em mente os seguintes aspectos, que são inerentes aos dispositivos celulares: Tamanho de tela; Capacidade da memória; Capacidade de processamento; Taxa de transmissão de dados; Persistência dos dados. P á g i n a | 50 Capacidade do cartão de memória; Sistema operacional; Linguagem de programação; Ao falarmos de aplicações para celular, deve ficar claro que estaremos trabalhando com telas muito pequenas, de 3 a 7 polegadas, partindo de resoluções de 150 por 150 pixels, e logicamente a disposição das informações e recursos dos aplicativos precisam obedecer certas regras visuais, sob pena de não serem utilizadas ou não funcionarem adequadamente. Há também considerações relativas às telas multi-touch. Quando nos referimos à capacidade de memória dos dispositivos celulares, estamos basicamente querendo dizer que variam de meros 32Mb a 512Mb, isso significa dizer que um aparelho celular atual funciona com a mesma capacidade de memória dos primeiros computadores. Seguindo esta analogia, e voltando ao passado, podemos considerar os diversos problemas que foram enfrentados pelos mantenedores de software quando se depararam com milhões de linhas de códigos antigas, contendo data com formato de ano com dois dígitos numéricos, à beira da virada do ano 2000. Toda esta questão se deu porque nas décadas de 70 e 80, quando estes códigos foram criados, não se avaliava a durabilidade dos sistemas, e julgou-se que a economia de espaço, suprimindo-se dois dígitos das datas, era adequada àquela realidade. Hoje sabemos que há sistemas com mais de 30 anos rodando e são totalmente funcionais, porém como foram migrados para plataformas mais robustas não há tanta limitação física. Mas em relação à durabilidade das aplicações para dispositivos celulares móveis, temos que considerar na realidade a durabilidade do dispositivo. Como P á g i n a | 51 os aparelhos celulares são na realidade em média trocados a cada ano por seus usuários, graças às promoções e facilidades que as operadoras oferecem, e sabendo que os aplicativos que neles são executados são bastante dependentes da plataforma. Vemos que também a durabilidade das aplicações para este tipo de dispositivo está cada vez mais relacionada à sua portabilidade e modularidade. Isso significa dizer que quanto mais portável e modular for o software para celular, mais tempo ele poderá ser usado. Já a capacidade de processamento dos dispositivos atuais de mercado é bastante razoável, podendo executar tarefas simultâneas, e executar arquivos de multimídia, processadores mas de a capacidade computadores ainda pessoais. é restrita Nesse comparada sentido, muito aos do processamento de aplicativos móveis é executado em servidores por meio de conexões web, wi-fi e etc. É nesse cenário, que as taxas de transmissão de dados se tornaram muito importantes, e com a chegada da tecnologia 4G as maiores velocidades permitirão um grande avanço em se tratando de aplicações móveis. A taxa de transmissão também é importantíssima, considerando que os aparelhos celulares não possuem recursos para armazenamento de dados persistentes. Estes dados ficam armazenados em servidores de banco de dados que são também acessados por meio das diversas conexões. Os cartões de memória podem ser utilizados para armazenamento de algum dado, mas ainda assim os recursos de programação para manipulação destes dados são restritos e exigem processamento que pode tornar a aplicação pouco funcional. A tendência do mercado hoje é de cada vez mais restringir-se a duas ou três plataformas operacionais para dispositivos móveis. Cada vez mais as empresas estão procurando a utilização de sistemas operacionais mais compatíveis que possibilitem o reaproveitamento das aplicações, até porque a tendência é de estas aplicações se tornarem muito mais funcionais. Mesmo assim há particularidades que precisam ser consideradas quando se trata do desenvolvimento de aplicativos para celular. Na minha visão ficaremos P á g i n a | 52 divididos entre Google Android, Microsoft Mobile Windows, Nokia Symbian (apesar de já estar fase terminal) e Apple IOS. Finalmente temos que considerar a linguagem de programação para desenvolvimento das aplicações para dispositivos móveis. Esta é uma decisão importante quando se trata das aplicações para celular, pois os recursos disponíveis para o desenvolvimento são bastante limitados e estão especialmente relacionados ao hardware. Para cada hardware há plug-ins com recursos próprios, e à medida que os utilizamos tornamos as aplicações menos portáveis. 3.6.2 Linguagens de programação Atualmente há no mercado uma vasta quantidade e variedade de linguagens de programação, direcionadas a várias aplicações e plataformas. Porém quando falamos de desenvolvimento para dispositivos celulares, ficamos restritos a: C++; Java (J2ME); Python; Dot Net Framework (.Net); XCode e Objective-C. A linguagem C++ é orientada a objetos e sendo poderosíssima, permite fazer praticamente tudo, inclusive em celulares, até mesmo acessar informações protegidas do sistema operacional, mas é compilada especificamente para cada hardware, ou seja, cada dispositivo ou grupo de dispositivos, precisa de uma compilação própria da mesma aplicação, e na proporção em que mais recursos específicos são usados; menos portável se torna a aplicação. As melhores ferramentas para desenvolvimento em C++ são pagas o que também encarece o desenvolvimento. P á g i n a | 53 A linguagem Java, possui uma plataforma voltada especificamente para aplicativos para dispositivos móveis, o J2ME. É orientada a objetos, porém possuem recursos restritos, comparada com as suas plataformas irmãs (J2EE, J2SE), voltadas para desenvolvimento em computadores pessoais. Por outro lado plataforma J2ME é extremamente portável e possui máquina virtual instalada na maioria dos dispositivos móveis do mercado. Os aplicativos criados em J2ME podem facilmente ser integrados a aplicativos criados para outras plataformas Java (J2EE, J2SE, e plataformas para dispositivos embarcados), mas não podem fazer acesso diretamente a certos recursos dos dispositivos móveis, o que de certa forma está relacionado diretamente à portabilidade das aplicações nela desenvolvidas. Há SDKs para praticamente todos os modelos de dispositivos do mercado, que são distribuídos por seus fabricantes. As ferramentas para desenvolvimento Java são em sua maioria freeware ou open source (gratuitas ou de código aberto), o que também facilita o desenvolvimento. Estas características tornam o Java como a grande fonte da maioria das aplicações móveis do mercado. A linguagem Python também é orientada a objetos, e é freeware (software livre), é usada sob plataforma Palm OS e Symbian, bem como as tradicionais plataformas para computadores pessoais. Por outro lado deixa de lado outras plataformas móveis muito usadas, como o Android por exemplo. É bastante usada industrial e academicamente, para vários propósitos. Usa gerenciamento automático da memória e é bastante similar ao Pearl e Scheme. Temos também a plataforma Dot Net (.Net) da Microsoft, que possui SDK para programação voltada a dispositivos móveis que são capazes de rodar Dot Net, em especial os que trabalham com Windows Mobile. É um ambiente bastante robusto e totalmente integrado a PC, porém tem alto custo de desenvolvimento já que todos os softwares são pagos. Por fim temos o desenvolvimento iPhone, para o qual são utilizadas as linguagens XCode e Objective-C. Porém o desenvolvimento de aplicativos para iPhone está restrito a plataforma MacOSX, já que a Apple só disponibilizou o P á g i n a | 54 SDK para rodar nesta plataforma. Em alguns casos é necessário também que os aplicativos desenvolvidos sejam homologados para iPhone. Há no mercado algumas tentativas de SDK para Windows, não autorizadas e desenvolvidas geralmente por hackers, mas a maioria delas não funciona. Outros fazem uso do VMWare rodando MacOSX, um emulador, mas o trabalho está sempre comprometido, e não há garantias quanto à qualidade da compilação. Ou seja o desenvolvimento de aplicativos para iPhone é bem restrito às plataformas da Apple, não havendo portabilidade. Outras chamadas linguagens são divulgadas no mercado, mas basicamente foram desenvolvidas sob uma das quatro plataformas acima, o que na verdade as torna restrita às características próprias das linguagens sob as quais foram montadas. 3.6.3 Bancos de dados Quando se trata de persistência de dados, em ambientes móveis temos várias considerações a fazer. A primeira delas trata do volume dados, ou seja, em geral o volume de dados contidos em qualquer banco de dados é totalmente incompatível com o hardware dos dispositivos móveis, logo o banco de dados obrigatoriamente está externo ao dispositivo. Isso significa dizer que o acesso aos dados é feito por meio de conexão com um servidor de banco de dados que pode estar em qualquer lugar. Assim toda e qualquer operação de persistência dos dados está diretamente relacionada à velocidade de conexão dos dispositivos com o servidor. Outro aspecto é a segurança, quando uma aplicação abre uma conexão com um determinado banco de dados, abrem-se também as portas para as invasões com intuito de roubo, destruição e todo o tipo de situação. Para isso há diversas formas de criptografia dos dados e recursos de segurança fornecidos pelas arquiteturas dos bancos de dados incluindo também a própria arquitetura da aplicação. Quer dizer, a aplicação ao fazer acesso a um banco de dados, e precisa usar recursos para tratar as diretivas de segurança necessárias. P á g i n a | 55 Uma terceira questão está na manutenção dos dados em geral. Os bancos de dados atuais são capazes de tratar as colisões e locks (bloqueios) de forma bastante adequada, logo por ocasião da mobilidade, e provavelmente do volume de acessos ao banco de dados, inclusive simultâneos, feitos pelos dispositivos móveis, a aplicação precisa ter recursos para identificar os retornos dados pelos bancos e tratar adequadamente cada situação. Outra questão trata do controle de versão, quer dizer quando uma aplicação para dispositivo móvel acessa um banco de dados, o faz por meio de recursos disponíveis para uma dada versão do banco. Veja que neste caso não estamos nem falando da arquitetura do banco, mas apenas da versão do banco daquela aplicação. Ou seja, para cada alteração no dado banco, associada a esta mudança, há na maioria das vezes uma inevitável alteração de versão da aplicação. Isso exige uma atualização que pode ou não ser automática conforme os recursos de cada dispositivo. Os problemas relacionados à persistência de dados ainda são grande gargalo para o desenvolvimento de aplicações para dispositivos móveis, esse cenário provavelmente mudará na medida em que as taxas de transmissão fiquem maiores com a chegada do 4G, pois a partir daí estarão abertas as portas para novas aplicações. 3.6.4 Internet O acesso a internet feito via dispositivos móveis celulares, recai também sob os mesmos aspectos das aplicações para celulares, ou seja, as limitações do hardware. Então em 1997 a Nokia, a Motorola, a Ericsson e a Unwired Planet se juntaram para criar um padrão universal para acesso a internet por meio de dispositivos móveis celulares, o WAP – Wireless Aplication Protocol. Desde então 350 outras empresas aderiram ao WAP Forum hoje chamado de OMA (Open Mobile Alliance). Mesmo assim até agora uma pouca fração sites na internet tem possui funcionalidade WAP para acesso via aparelho celular. P á g i n a | 56 O WAP é projetado para funcionar em qualquer um dos serviços existentes, usando padrões SMS, CSD (High-speed Circuit-switched Data), GPRS (General Pocked Radio Service), USSD (Unstructured Supplementary Services Data). O WAP usa a Linguagem de marcação de aplicações sem fio (WML – Wireless Markup Language) que é baseada no XML (Extension Markup Language). O WML é considerado basicamente uma metalinguagem, o que permite a criação de componentes. O WAP foi desenvolvido por meio de camadas que são apresentadas a seguir: WAE Wireless Application Enviroment WSP Wireless Session Protocol WTP Wireless Transaction Protocol WTLS Wireless Transport Layer Security WDP Wireless Datagram Protocol Rede Qualquer Conexão Wireless Figura 3.9 – Camadas do WAP. WAP P á g i n a | 57 WAE – Ambiente de aplicação sem fio, que possui as ferramentas que os desenvolvedores de conteúdo da internet usam. Incluem o WML e o WML Script que é a linguagem script usada com a WML. WSP – Protocolo de sessão sem fio, que determina se uma se uma sessão entre o aparelho e a rede é orientada à conexão ou não. WTP – Protocolo de transação sem fio, que mantém os dados fluindo de uma maneira lógica e sem problemas. Também determina como classificar cada pedido de transação (bidirecional confiável, unidirecional confiável ou unidirecional não confiável). WTLS – Segurança da camada de transporte sem fio, que fornece muitas das mesmas características do TLS (Transport Layer Security) que faz parte do TCP/IP. Ocorre a conferência da integridade dos dados, codifica e realiza a autenticação do servidor e do cliente. WDP –Protocolo de datagrama sem fio, que funciona em conjunto com a camada de rede. Torna fácil a adaptação a uma variedade grande de portadoras de rede. Rede – Pode fazer uso de qualquer tecnologia existente usada pelas operadoras e dispositivos, desde que a informação seja fornecida em nível WDP para a interface do WAP. Com o WAP o mundo da internet se abriu para os dispositivos móveis celulares, e atualmente a demanda pelo uso do WAP está só aumentando, e deve ficar cada vez mais atraente, na medida que se aproxima a chegada da tecnologia 4G. 3.7 O futuro da telefonia móvel O futuro da tecnologia celular móvel está bastante alem do que podemos imaginar em termos de velocidade de conexão, tipos de comunicação, serviços P á g i n a | 58 entre outras coisas. Quanto aos aparelhos muita coisa está se desenhando nas ideias dos designers. Veja alguns exemplos: Figura 3.10 – Dispositivos do futuro idealizados pelos designers de diversos fabricantes. P á g i n a | 59 Capítulo 4 O sistema SOTAC-Mobile Capítulo que descreve as tecnologias aplicadas neste trabalho, bem como trata de sua relação e aplicação no sistema SOTAC-Mobile. 4.1 Requisitos Baseado numa evolução do projeto FALIBRAS, é proposta a criação de um protótipo de interface de tradução de linguagem textual em Português para LIBRAS para ambiente móvel. Neste sentido, o SOTAC-Mobile é executado em dispositivos móveis, tornandoos capazes de processar, com o mesmo nível de recursos, a tradução feita pelo Sistema SOTAC. 4.1.1 Requisitos funcionais A criação de uma interface amigável para os DA em ambiente móvel requer alguns aspectos muito importantes: Simplicidade – o entendimento e a navegação desta interface deve ser intuitiva evitando que o DA tenha que executar muitos cliques a fim de obter seu resultado.; Portabilidade – deve permitir que vários dispositivos móveis possam executá-la, também deve ser executada via web. Eficiência – o processamento não pode ser lento e o tempo de resposta deve ser adequado à solicitação do DA; P á g i n a | 60 4.1.2 Requisitos técnicos O protótipo deve executar as seguintes funções: Validação de login; Tradução de Português para Texto alvo; Tradução de Português para LIBRAS; O aplicativo móvel não fica transiente no dispositivo móvel, é iniciado manualmente. 4.2 Tecnologias avaliadas Devido a estas principais características, a escolha da linguagem JAVA (J2ME) como ferramenta de desenvolvimento desta interface ficou clara, na medida em que esta linguagem oferece todos os recursos necessários para esta implementação, bem como é a linguagem mais utilizada atualmente no mercado para desenvolvimento em plataformas móveis e/ou encapsuladas. 4.2.1 Plataforma Java A linguagem Java, foi criada pela SUN Microsystems no final da década de 90, é uma linguagem orientada a objetos que é compilada para um bytecode intermediário, de modo que este código é interpretado e executado por uma máquina virtual. Esta característica dá ao Java uma grande portabilidade, já que o mesmo código pode ser executado em plataformas totalmente distintas. Toda a codificação fonte para plataforma Java nada mais é do que o conjunto de especificações definida pela Java Language Specification que é escrita em formato texto, com arquivos de extensão .java. Estas instruções do código fonte compiladas, resultam em mnemônicos (comandos) montados (assembly da máquina virtual) que são chamados ByteCodes. O nome ByteCode origina-se do fato da instrução ter o tamanho de um byte. P á g i n a | 61 A linguagem Java não é o único recurso da plataforma de desenvolvimento JAVA. Esta plataforma está baseada em três pilares: A linguagem em si; o JVM, que é a máquina virtual Java e um vasto conjunto de APIs. CÓDIGO FONTE Código.java + JSR BYTECODE Código.class MÁQUINA VIRTUAL JVM SISTEMAS OPERACIONAIS Qualquer sistema operacional Figura 4.1 – Codificação em Plataforma JAVA. A função do JVM é tratar as questões relacionadas à portabilidade, deixando o desenvolvedor livre para os assuntos programáticos relevantes à sua implementação. Por outro lado o usuário final que deseja executar uma aplicação necessita ter em seu dispositivo uma série de instalações, que atualmente são facilmente encontradas e instaladas, até mesmo em muitos, casos já faz parte do pacote do dispositivo. Já os desenvolvedores, necessitam das bibliotecas e outros recursos para desenvolvimento. Por esta razão, a plataforma Java possui duas distribuições diferentes: JDK – Java Development Kit, voltado para o desenvolvedor e usado para o desenvolvimento das aplicações Java; JRE – Java Runtime Enviroment – voltado para o usuário final e usado apenas para a interpretação das aplicações Java. P á g i n a | 62 Para os dispositivos, esta plataforma em sua versão 2 está dividida em: J2SE – Java 2 Standard Edition: Tecnologia projetada para computadores pessoais e ambientes de trabalho, neste caso as aplicações são chamadas APLets; J2EE – Java 2 Enterprise Edition: Tecnologia direcionada para aplicações baseadas em servidores, neste caso as aplicações são conhecidas como SERVLets e podem conter suporte interno para JSP (JavaServer Pages) e XML (eXtensible Markup Language); J2ME – Java 2 Micro Edition: Tecnologia direcionada para dispositivos com poucos recursos computacionais como por exemplo, palms, smartphones, tablets, onde as aplicações para estes são conhecidas como MIDLets. A seguir apresenta-se visualmente esta divisão da plataforma Java conforme os dispositivos aplicáveis: Figura 4.2 – Arquitetura da plataforma JAVA (ORACLE, 2012). As APIs (bibliotecas) Java compreendem um conjunto de recursos, agrupados em pacotes (packages) usado no desenvolvimento das aplicações Java. Estas P á g i n a | 63 APIs variam de acordo com a aplicação. Este conceito é muito comum e é usado, por exemplo, nas linguagens C e C++. O Java é compatível com os principais WebBrowsers do mercado e é extremamente difundido na web. Atualmente também está se tornando a plataforma clássica para desenvolvimento de aplicações embarcadas como, veículos automotores, equipamentos industriais, televisores, e até eletrodomésticos. Por este motivo e por suas características foi a plataforma de desenvolvimento escolhida para este protótipo. 4.2.2 J2EE O J2EE, é direcionado para aplicações baseadas em servidores, neste caso as aplicações são conhecidas como SERVLets são usadas para suprir as necessidades das aplicações distribuídas, ou seja, aquelas que necessitam da flexibilidade de disponibilizar acesso à sua lógica de negócio e dados para diferentes tipos de dispositivos (navegadores, dispositivos móveis, aplicações desktop, aplicações embarcadas, etc.). Abaixo o modelo de arquitetura J2EE. Figura 4.3 – Arquitetura da plataforma J2EE (ORACLE, 2012). P á g i n a | 64 4.2.3 J2ME O J2ME é a tecnologia direcionada para dispositivos com poucos recursos computacionais como, por exemplo, palms, smartphones, tablets. As aplicações desenvolvidas usando esta tecnologia são chamadas de MIDLets e o ByteCode gerado na sua compilação é executado por meio de uma máquina virtual reduzida chamada KVM (Kilobyte Virtual Machine), que nada mais é do que a própria JVM mais enxuta (um subconjunto dela). O nome KVM é uma alusão à pouca quantidade de memória exigida que é na ordem de Kilobytes. Há uma configuração que define as características da família de dispositivos e os recursos e bibliotecas que compõem a KVM, são: CDC – Connected Device Configuration, que corresponde ao conjunto de APIs para dispositivos “fixos”, por exemplo um computador ligado a um televisor; CLDC – Connected Limited Device Configuration, que corresponde ao conjunto de APS para dispositivos com alguma capacidade de processamento, vídeo e memória limitados, geralmente dispositivos móveis. Há perfis que definem o conjunto de APIs que fornece funcionalidade a uma configuração, são eles: Fundation Profile, que é a base para dispositivos em rede sem interface gráfica usando CDC; Personal Basics e Personal Profile, que é a base para dispositivos com suporte gráfico e alta capacidade, usado com CDC; Mobile Information Device Profile (MIDP), que é o perfil compatível com o CLCD e implementa componentes, entrada, tratamento de eventos de interface com o usuário, armazenamento persistente, interoperabilidade de rede, segurança e outros vários recursos. P á g i n a | 65 A seguir está apresentada a Arquitetura J2ME. Figura 4.4 – Arquitetura da plataforma J2ME (ORACLE, 2012). Figura 4.5 – Codificação em Plataforma J2ME (ORACLE, 2012). P á g i n a | 66 O s MIDLets possuem um ciclo de processamento padrão definido pelo MIDP, conforme a seguir: PAUSADO pauseApp() destroyApp() startApp() ATIVO destroyApp() DESTRUIDO Figura 4.6 – Ciclo padrão de execução de um MIDLet. Normalmente os MIDLets são criados em um ambiente computacional padrão, mas para efeito de desenvolvimento são utilizados emuladores de forma a otimizar e aproximar a execução destes aplicativos em seus reais dispositivos. Estes emuladores estão disponíveis sob a forma de plug-ins para as IDEs mais utilizadas, e cada fabricante de dispositivos as disponibiliza em seus sites de desenvolvimento, em geral de forma gratuita. Os plug-ins são compostos também pelas SDKs necessárias para o desenvolvimento específico de aplicações para um dado dispositivo. 4.2.4 Dispositivos série S60 com Symbian Como o Symbian é atualmente o Sistema Operacional mais usado nos dispositivos móveis no Brasil, optou-se por implementar a interface deste protótipo voltada para este sistema. Mais especificamente para versão que é compatível com os Smartphones série S60, atualmente os mais difundidos do mercado. O SDK para Symbian é o Nokia Developer Suite for J2ME e está disponível no site do fabricante. O modelo usado no projeto é o Nokia E63. P á g i n a | 67 4.2.5 Apache Tomcat O Apache Tomcat é um servidor de aplicações Java para Web, livre e de código aberto, criado no projeto Jakarta com apoio formal da SUN Microsystems como sendo a implementação de referência para as tecnologias J2EE. Atualmente o Tomcat tem seu próprio projeto de desenvolvimento independente, dentro da Apache Software Foudation. O Tomcat é robusto e eficiente, sendo na realidade um Contêiner Web, parte da plataforma corporativa J2EE. Entretanto pode também atuar como servidor Web/HTTP autônomo, ou pode funcionar integrado a um servidor web dedicado como o Microsoft IIS, ou ainda ser parte integrante de um servidor de aplicações mais amplo como o GlassFish com versão livre (também possui versão comercial) e promover recursos de Java Servlet e JSP. Por outro lado o Tomcat não implementa um contêiner EJB (Enterprise JavaBeans). Isto é, para aplicações J2EE que utilizam JavaBeans se faz necessário o uso de um servidor completo JBoss AS, Sun GlassFish ou IBM WebSphere. Cliente Web Apache Tomcat Aplicações Figura 4.7 – Contêiner Web. Para a nossa aplicação está disponível na web apenas um contêiner com servidor Apache Tomcat versão 6.0.35 configurado para executar o SERVLet SOTAC-Enterprise Mobile, que é capaz de responder as solicitações da interface móvel retornando as traduções solicitadas. 4.2.6 Computação distribuída – RMI O RMI (Remote Method Invocation) é um pacote opcional da plataforma Java que contém uma API de alto-nível construída em cima de sockets, que permite P á g i n a | 68 a passagem de dados entre computadores. Por meio desta tecnologia conseguimos passar dados entre diferentes sistemas e invocar métodos em objetos remotos, que podem ser manipulados com se estivessem na máquina local. A transferência de dados é gerenciada pela máquina virtual Java de forma transparente. Na realidade podemos considerar o RMI como sendo uma evolução da arquitetura cliente/servidor, onde um cliente é um computador que efetua requisições por serviços, e um servidor trabalha como componente de entrega dos serviços solicitados. Processo Cliente Processo Servidor Objeto Cliente Objeto Servidor STUB SKELETON Gerenciador de Referências Remotas Gerenciador de Referências Remotas Camada de Transporte RMI Figura 4.8 – Arquitetura RMI. A seguir estão descritos os principais componentes da arquitetura RMI: Interface de objeto de servido, que é uma sub-interface que implementa a interface do objeto remoto; Implementação de servidor, que é uma classe que implementa a interface com o servidor remoto; Objeto de servidor: que é a instância da classe implementação de servidor; P á g i n a | 69 Registro RMI (RMI Register), que é um utilitário responsável pelo registro dos objetos remotos e fornece serviços de nomes (naming services) para a localização de objetos (lookup); Programa cliente, que é o programa que invoca (chama) os métodos no objeto de servidor remoto; Stub (canhoto) de servidor, que é um objeto que reside na máquina cliente e serve como substituto para o objeto de servidor remoto; Skeleton (esqueleto) de servidor, que é um objeto que reside na máquina servidor e comunica com o objeto de servidor real e o stub. O RMI-op é um subconjunto do pacote RMI, que roda sobre a plataforma J2ME, tendo nesta plataforma a mesma funcionalidade de seu conjunto origem. Para a utilização do RMI-op em dispositivos móveis é necessário que os dispositivos possuam como recurso o JSE-066 (RMI Optional Package Specification). Como nem todos os dispositivos móveis do mercado possuem este recurso, optou-se pelo uso de frameworks aumentando a rapidez e a portabilidade do protótipo. 4.2.7 Arcademis / RME Arcademis é um framework utilizado para facilitar o desenvolvimento de sistemas baseados em objetos distribuídos que utilizam a invocação remota de métodos como meio de comunicação. O RME (Remote Method Invocation for J2ME) é um sistema orientado a objetos, que permite a invocação remota de métodos segundo uma sintaxe semelhante à de JAVA RMI, de acordo com Pereira et al. (2006). P á g i n a | 70 O RME foi derivado do Arcademis, sendo assim uma instância do mesmo. Há duas implementações de RME, uma destinada à plataforma J2SE e a outra para ser utilizada na configuração CLDC da plataforma J2ME, contendo somente as funcionalidades necessárias para aplicações clientes. Assim como RMI, RME apresenta uma arquitetura orientada a serviços, segundo Baresi et al. (2003). O RME é usado no nosso protótipo na medida em que é necessário acessar e trocar dados entre um serviço remoto contendo as funcionalidades de tradução do Sistema SOTAC, originalmente desenvolvido em outra plataforma, mas que é usado como base para a implementação de uma versão do mesmo para ambientes móveis, o Sistema SOTAC-Mobile. 4.2.8 Streaming A transmissão de arquivos de multimídia entre plataformas se tornou uma tarefa muito comum atualmente, porém estes arquivos em geral são grandes e requerem muito espaço físico de armazenamento. Assim com o surgimento da possibilidade de execução destas informações em dispositivos móveis de forma integrada com a Internet, esta limitação relacionada ao espaço físico dos dispositivos passou a ser um aspecto importantíssimo. A tecnologia conhecida com Streaming foi criada com a finalidade de permitir que os pacotes multimídia possam ser transmitidos através da rede sem necessidade de download e upload síncrono. Em Streaming as informações de mídia não são efetivamente gravadas pelo recebedor dos dados, ao invés disso as informações são exibidas utilizando um fluxo de transmissão de acordo com a sua banda de rede, desde que esta banda tenha capacidade suficiente para a execução em tempo real. Esta abordagem se tornou bastante interessante, pois livra os recebedores de mídia das questões relacionadas a direitos autorais, e ainda assim permite que as mídias possam ser executadas em seu destino. Para que um dispositivo móvel possa executar as funções de Streaming é necessário que ele possua nativamente os protocolos RTP e RTSP. Os P á g i n a | 71 dispositivos Nokia série S60 possuem este recurso nativamente, e este também é um dos aspectos pesados na escolha do dispositivo móvel para o qual o nosso protótipo está desenvolvido. 4.2.9 IDE NetBeans De modo geral, o desenvolvimento Java não requer IDEs específicas, pois todo o código pode ser criado em qualquer editor de texto padrão, e neste caso, a organização necessária fica neste caso a critério do desenvolvedor. Porém o uso de IDEs facilita, organiza e torna o desenvolvimento focado no resultado da aplicação evitando-se perda de tempo com questões relacionadas a manipulação de pastas e arquivos. A SUN Microsystems oferece um IDE gratuitamente, porém este IDE ainda é bastante dependente da organização do desenvolvedor, deixando boa parte da organização do projeto por definir. Atualmente a Oracle, é proprietária da SUN Microsystems, criadora do JAVA, e indica como IDEs para desenvolvimento Java, o Oracle JDeveloper que é uma ferramenta com custos de uso, e o NetBeans que é gratuito. Assim sendo, apesar de haverem outras IDEs bastante populares e gratuitas, como o Eclipse, a opção escolhida para o desenvolvimento da interface é o NetBeans versão 7.1.2, considerada a última versão estabilizada do produto. O NetBeans é totalmente compatível com os frameworks necessários ao projeto, sendo uma ferramenta bastante robusta, estável e eficiente para desenvolvimento Java. 4.2.10 Astah O software para edição da documentação de Casos de Uso e UML é o Astah Community versão 6.4.1 que é software livre. Ele é a escolha mais natural por ser livre e possuir todos os recursos necessários à documentação deste protótipo. Na realidade o Astah é a nova e última versão do Jude, que trocou de nome por questões comerciais. P á g i n a | 72 4.3 Modelagem 4.3.1 Arquitetura do SOTAC–Mobile A proposta do SOTAC-Mobile, é implementar uma interface simples para a execução das funcionalidades do Sistema SOTAC em dispositivos móveis. O MIDLet, SOTAC-Mobile, proposto neste projeto está focado em CLCD com perfil MIDP com a finalidade de ser a interface entre o usuário DA e a aplicação de tradução SOTAC. Assim o protótipo trabalha com a seguinte arquitetura: Clowd Computing SOTACMobile TRADUÇÃO J2ME - RME TRADUTOR SOTAC TRADUÇÃO VÍDEOS Figura 4.9 – Arquitetura do Sistema SOTAC – Mobile. Como vemos acima, o MIDLet SOTAC-Mobile que está instalado nos dispositivos móveis Nokia, compatíveis com a série S60, com sistema operacional Symbian. Esta instalação se dá por meio de empacotamento feito especialmente para facilitar este processo. Como o MIDLet SOTAC-Mobile, proposto é apenas uma interface visual entre as funcionalidades oriundas do Sistema SOTAC e o DA, logo se faz necessária a criação de uma aplicação, SERVLet SOTAC-Enterprise Mobile, responsável pela integração entre a Camada de Negócios obtida a partir do SOTAC e esta interface. Esta aplicação intermediária também tem uma função muito P á g i n a | 73 importante que é manter os recursos do SOTAC disponíveis na web, já que o SOTAC é um sistema desktop. Desta forma, assim que o usuário DA executa a aplicação a mesma entra no estado ATIVO, e fica aguardando a digitação de um texto em Português, que é a opção inicial deste protótipo. Neste momento o DA deve enviar o texto para uma das opções de Tradução. O texto para Tradução é enviado para o SERVLet SOTAC-EMobile que está disponível na web. Cabe então ao SERVLet SOTAC-EMobile providenciar a tradução do texto e posteriormente o envio do resultado novamente ao MIDLet SOTAC-Mobile. Web Conteiner em Servidor de Aplicação Tomcat MIDLet SOTAC - Mobile RME SERVLet SOTAC - EMobile J2EE TRADUTOR SOTAC TRADUÇÃO VÍDEOS Figura 4.10 – Interface entre as aplicações do SOTAC-Mobile. Como podemos observar o SOTAC-Mobile é composto de três módulos principais distintos, são eles: MIDLet SOTAC-Mobile – aplicação que é executada nos dispositivos móveis e é a principal interface com o usuário DA; P á g i n a | 74 SEVLet SOTAC-EMobile – aplicação responsável por receber as chamada RME, via web ou dispositivo móvel, executar e gerenciar a interface com a Camada de Negócios originada do SOTAC; SOTAC versão 1.1 – nova versão do SOTAC usada para o cadastro e configuração dos dados usados no nosso servidor de Banco de Dados. Há também, na web uma interface (SERVLet SOTAC-Web Mobile) básica apenas executar as mesmas funções do MIDLet SOTAC-Mobile a fim de demonstrar que há portabilidade na solução. Ademais a função primordial do SERVLet SOTAC-EMobile é apenas de comunicação entre o SOTAC e o MIDLet SOTAC-Mobile. Isto significa dizer que a função desta aplicação é apenas de usar os recursos disponíveis para apresentar na web os resultados de tradução semelhantes aos feitos por meio do MIDLet SOTAC-Mobile, que podem ser visualizados em qualquer WebBrowser. 4.3.2 Casos de Uso O diagrama de casos de uso do MIDLet SOTAC-Mobile está apresentado a seguir: Figura 4.11 – Casos de uso do MIDLet SOTAC – Mobile. P á g i n a | 75 UC1 – Efetuar Login: Atores: Usuário final do MIDLet SOTAC-Mobile (DA). Pré-condições: SERVLet SOTAC-EMobile operante e conexão estável com a Internet. Fluxo de eventos primário: Usuário final do MIDLet SOTAC-Mobile (DA) executa a aplicação; A função Efetuar Login é chamada; É feita a solicitação de acesso ao SERVLet SOTAC-EMobile que é responsável pela chamada ao SOTAC; O SERVLet SOTAC-EMobile processa o Login e aguarda o retorno do SOTAC; O SERVLet SOTAC-EMobile retorna a resposta ao MIDLet SOTACMobile, que trata este retorno; Caso o retorno esteja ok, o MIDLet SOTAC-Mobile abre a tela para digitação do texto a ser traduzido e aguarda atuação do usuário. Caso contrário o sistema exibe a mensagem com o tratamento de erro adequado e retorna ao modo de espera. Fluxos alternativos: Nenhum. UC2 – Traduzir Texto de Português para Texto Alvo: Atores: Usuário final do MIDLet SOTAC-Mobile (DA). Pré-condições: Digitação de um texto em Português, SERVLet SOTACEMobile operante e conexão estável com a Internet. P á g i n a | 76 Fluxo de eventos primário: Usuário final do MIDLet SOTAC-Mobile digita um texto em Português e solicita a tradução para Texto; O MIDLet SOTAC-Mobile valida o preenchimento do texto; É feita a solicitação de acesso RMI ao SERVLet SOTAC-EMobile que é responsável pela chamada às funções de tradução do SOTAC; Após o processamento da tradução o SERVLet SOTAC-EMobile retorna a resposta ao MIDLet SOTAC-Mobile, que trata este retorno; Caso o retorno esteja ok, o MIDLet SOTAC-Mobile abre a tela para exibir o Texto Alvo traduzido e aguarda atuação do usuário. Caso contrário o sistema exibe a mensagem com o tratamento de erro adequado e retorna ao modo de espera. Fluxos alternativos: Nenhum. UC3 – Traduzir Texto de Português para LIBRAS: Atores: Usuário final do MIDLet SOTAC-Mobile (DA). Pré-condições: Digitação de um texto em Português, SERVLet SOTACEMobile operante e conexão estável com a Internet. Fluxo de eventos primário: Usuário final do MIDLet SOTAC-Mobile digita um texto em Português e solicita a tradução para LIBRAS. O MIDLet SOTAC-Mobile valida o preenchimento do texto; É feita a solicitação de acesso RMI ao SERVLet SOTAC-EMobile que é responsável pela chamada às funções de tradução do SOTAC; P á g i n a | 77 Após o processamento da tradução o SERVLet SOTAC-EMobile retorna a resposta ao MIDLet SOTAC-Mobile, que trata este retorno; Caso o retorno seja de falha, o sistema exibe a mensagem com o tratamento de erro adequado. Caso contrário, se o retorno for ok, o MIDLet SOTAC-Mobile abre a tela para exibir a sequência de vídeos; O MIDLet SOTAC-Mobile solicita via internet a transmissão dos vídeos, e apresentada uma a uma em tempo real; Ao final da apresentação do texto alvo e dos vídeos o MIDLet SOTACMobile retorna à tela inicial e aguarda outra atuação do usuário. Fluxos alternativos: Nenhum. UC4 – Apresentação dos Vídeos: Atores: UC3. Pré-condições: Pasta publicável no servidor web contendo os vídeos listados, para transmissão via HTTP ou um servidor Streaming, para transmissão via RTP ou RTSP, a lista de vídeos a serem apresentados e conexão estável com a internet. Fluxo de eventos primário: MIDLet SOTAC-Mobile recebe a lista de vídeos para apresentação; É feita a solicitação e a transmissão dos arquivos listados pelo SERVLet SOTAC-EMobile; Caso haja falha de comunicação exibe a mensagem com o tratamento de erro adequado e o MIDLet SOTAC-Mobile retorna ao modo de espera. Caso a exibição seja ok, o MIDLet SOTAC-Mobile retorna ao modo de espera. Fluxos alternativos: Nenhum. P á g i n a | 78 O diagrama de casos de uso do SERVLet SOTAC-EMobile está apresentado a seguir: Figura 4.12 – Casos de uso do SERVLet SOTAC – EMobile. UC5 – Serviço Remoto: Atores: MIDLet SOTAC-Mobile. Pré-condições: Contêiner web funcionando adequadamente. Fluxo de eventos primário: O SERVLet SOTAC-EMobile fica em estado de espera aguardando uma solicitação do MIDLet SOTAC-Mobile; O MIDLet SOTAC-Mobile solicita a execução de uma função ao SERVLet SOTAC-EMobile, que é responsável pela chamada dos métodos do SOTAC; O SERVLet SOTAC-EMobile processa a solicitação, validando os parâmetros informados; P á g i n a | 79 O SERVLet SOTAC-EMobile faz o repasse do retorno para o MIDLet SOTAC-Mobile; O SERVLet SOTAC-EMobile retorna ao estado de espera para nova solicitação do MIDLet SOTAC-Mobile. Fluxos alternativos: Nenhum. UC6 – Login: Atores: UC5. Pré-condições: Banco de dados do SOTAC funcionando adequadamente com todos os parâmetros e cadastros preenchidos a partir do SOTAC 1.1. Fluxo de eventos primário: O SERVLet SOTAC-EMobile solicita a execução do login à Camada de Negócios para o processamento da solicitação; A Camada de Negócios processa a solicitação e retorna a resposta ao SERVLet SOTAC-EMobile; O SERVLet SOTAC-EMobile faz a passagem do resultado "ok" ou "não ok" para o MIDLet SOTAC-Mobile. O SERVLet SOTAC-EMobile retorna ao estado de espera para nova solicitação do MIDLet SOTAC-Mobile. Fluxos alternativos: Nenhum. UC7 – Tradução Texto: Atores: UC5. Pré-condições: Banco de dados do SOTAC funcionando adequadamente com todos os parâmetros e cadastros preenchidos a partir do SOTAC 1.1. P á g i n a | 80 Também é necessário que os arquivos de vídeo estejam disponíveis em uma pasta publicável na web, para transmissão via HTTP, ou em um servidor Streaming, para transmissão via RTP ou RTSP. Fluxo de eventos primário: O SERVLet SOTAC-EMobile solicita a execução da tradução à camada de negócios o processamento da solicitação; A camada de negócios processa da solicitação e retorna a resposta ao SERVLet SOTAC-EMobile; O SERVLet SOTAC-EMobile faz a passagem do resultado da tradução para o MIDLet SOTAC-Mobile Caso haja a necessidade de transmissão da sequência de vídeos, o SERVLet SOTAC-EMobile retorna também a lista de todos os vídeos que devem ser apresentados, já na sequência correta, para o MIDLet SOTAC-Mobile. O SERVLet SOTAC-EMobile retorna ao estado de espera para nova solicitação do MIDLet SOTAC-Mobile. Fluxos alternativos: Nenhum. 4.3.3 Configurações O protótipo proposto faz uso de persistência por meio de Banco de Dados, atravéz do Sistema SOTAC para efeito de cadastro, assim sendo estas questões são tratadas de forma transparente ao sistema. Para consultas, a persistência é feita diretamente pela aplicação SERVLet SOTAC-EMobile. Porém duas questões importantes foram levantadas. A primeira trata do cadastro do usuário para uso geral do SOTAC-Mobile, e a segunda trata da seleção da Memória de Tradução a ser utilizada. P á g i n a | 81 Com relação à questão relacionada à segurança e aos perfis usados no Sistema SOTAC, ficou definido se fazer um cadastro contendo os seguintes parâmetros: Perfil = U; Nome = Usuário Móvel; Login = movel; Senha = M. Este cadastro está pré-fixado (hardcoded) na Camada de Negócios do SOTAC, e é usado para todas as chamadas de tradução executadas por meio do MIDLet SOTAC-Mobile. Esta abordagem, torna o MIDLet SOTAC-Mobile uma ferramenta para uso irrestrito e livre. A seguir a tela de cadastro do SOTAC 1.1 com o perfil acima citado, trazendo o usuário cadastrado. Figura 4.13 – Perfil para o SOTAC – Mobile. no SOTAC. Este cadastro está programado para ser executado caso não haja este usuário móvel inserido no banco de dados. Está implementada uma inclusão feita P á g i n a | 82 diretamente via código durante a função de login na Camada de Negócios do SOTAC. Já para tratar a questão da seleção da Memória de Tradução a ser utilizada, preferencialmente a seleção é feita utilizando-se a primeira memória cadastrada no sistema, pois para efeito do nosso protótipo a questão primordial não está na essência da tradução, mas na possibilidade de executá-la em ambiente móvel. Desse modo a Memória de Tradução "1" está pré-fixada (hardcoded) no sistema. 4.3.4 UML A seguir está o diagrama UML usado do MIDLet SOTAC-Mobile. Figura 4.14 – Diagrama de Classes do MIDLet SOTAC – Mobile. P á g i n a | 83 A seguir está o diagrama UML usado do SERVLet SOTAC-EMobile. Figura 4.15 – Diagrama de Classes do SERVLet SOTAC – EMobile. A seguir está o diagrama UML referente às funcionalidades do SOTAC (Java). Figura 4.16 – Diagrama de Classes da tradução do SOTAC. P á g i n a | 84 4.3.5 Recursos As seguintes tecnologias e recursos são usados para desenvolvimento deste protótipo. Para o MIDLet, SOTAC-Mobile: J2ME(JDK 1.6.0_25); SDK para dispositivos Nokia série S60 FP2; Nokia OVI Suite versão 2.1.0.87; Arcademis / RME framework (client) 2.0; NetBeans versão 7.1.2; Conexão Móvel Web 3G; Dispositivo celular Nokia modelo E63 (série S60), habilitado. Para o SERVLet, SOTAC-EMobile: J2EE (JRE e JDK 1.6.0_25); Arcademis / RME framework (server) 2.0; NetBeans versão 7.1.2; SharpDevelop versão 4.0.4; Banco de Dados PostGreSQL versão 9.3.1; JDBC; Host do tipo clowd computing com recursos Java, fornecido por mim. Contêiner web Apache Tomcat versão 6.0.35 em Windows 2008 Server. P á g i n a | 85 Para o SERVLet, SOTAC-WMobile: J2EE (JRE e JDK 1.6.0_25); Arcademis / RME framework (client) 2.0; NetBeans versão 7.1.2; CSS; HTML; JSP; Conexão Móvel Web 3G; Host do tipo clowd computing com recursos Java, fornecido por mim; Contêiner web Apache Tomcat versão 6.0.35 em Windows 2008 Server. Para o SOTAC versão 1.1: Banco de Dados PostGreSQL versão 9.3.1; SharpDevelop versão 4.2.1; Microsoft SKD para Windows versão 7; SOTAC versão 1.0. Para a Modelagem e Documentação: Adobe Acrobat Reader 9; Astah Community versão 6.4.1; MS Work 2007; P á g i n a | 86 4.4 Implementação Para tratar dos aspectos relacionados à implementação, temos que considerar algumas questões importantes ocorridas durante o desenvolvimento do projeto. 4.4.1 Versões das ferramentas A primeira questão está relacionada às versões das ferramentas utilizadas no SOTAC versão 1.0. Tanto a versão do SharpDevelop quanto a versão do PostgreSQL do projeto original, já não estão mais disponíveis para uso, logo não houve outra opção, a não ser utilizar versões mais recentes. Diante do exposto surgiu a necessidade de optar por usar versões mais próximas das anteriormente usadas ou as versões mais atuais. Decidiu-se então pelas versões mais atuais das ferramentas, mesmo correndo o risco de ser necessário algum ajuste no código. Gerou-se a nova versão do SOTAC, versão 1.1, para configuração dos dados deste projeto. Cumpre esclarecer, que a nova versão não sofreu nenhuma alteração funcional em relação à versão anterior, e nem quaisquer ajustes de código. 4.4.2 Plataformas de desenvolvimento A seguir levantou-se a questão a respeito do Java como plataforma de desenvolvimento do protótipo. Fez-se necessário determinar a melhor abordagem a respeito da camada de negócios do SOTAC, o qual está desenvolvido em C# (C Sharp). Foram levantadas duas abordagens: 2 Tradução da camada de negócios para Java; Criação de uma DLL (COM) em C# acessível pelo Java via JNA2 e C++. JNA: Framework para Java que pode executar bibliotecas escritas em outras linguagens (C ou C++). P á g i n a | 87 No primeiro caso avaliou-se o risco de não se obter os mesmos resultados no processo de tradução, visto que a recodificação nem sempre resulta em resultados satisfatórios, além do fato do trabalho de recodificação em si. Por outro lado e baseado nos testes feitos, obteve-se ganho de performance, já que não fez-se necessário o uso de chamadas externas. No segundo caso fez-se necessário a criação de uma interface feita em C/C++ para executar a chamada à DLL em C#, já que o C# não é compatível com o JNA (Java) diretamente, pois ambos, Java e C#, trabalham com máquinas virtuais distintas entre si, ou seja; o resultado de seus assemblies é totalmente incompatível. Neste sentido criou-se a DLL em C# com base no código original do SOTAC, o que também trata-se de recodificação, bem com criou-se a DLL de interface em C/C++, onde esta é disparada via JNA no Java. A vantagem desta segunda abordagem está no fato de a recodificação feita não alterar o código original diretamente, já que apenas se fez necessário ajustar e código dos tratamentos de erros, para redução das mensagens de forma a atender as restrições dos aplicativos móveis, e a separação da camada de negócios em uma DLL a parte ao executável original. Por outro lado, trabalhar com interface entre linguagens, C#, C++ e Java, gera menor portabilidade e aumenta a complexidade. A esta questão da interface entre bibliotecas desenvolvidas com linguagens diferentes, também há dois agravantes. O problema de performance, já que DLLs de componentes COM em C# são um pouco lentas, especialmente para chamadas de chamadas. Bem como a passagem de parâmetros por referência e à estabilidade deste processo, já que o Java trabalha unicamente com passagem de parâmetros por valor. Pensando de forma prática e vislumbrando o futuro onde a ideia é expandir para outros dispositivos e plataformas os recursos de tradução do SOTAC, verificou-se que a tradução da camada de negócio do SOTAC para Java mostrou-se a melhor abordagem para este projeto. Ou seja, apesar de haver um trabalho maior de recodificação da Camada de Negócios, e isto inclui a P á g i n a | 88 parte de segurança e conexão com o Banco de Dados, com esta abordagem, obteve-se o melhor resultado com vistas a longo prazo. Todos os métodos traduzidos estão ajustados para terem o comprimento das mensagens de retorno reduzido, a fim de permitir a apresentação das mesmas em dispositivos móveis com recursos limitados de tela. Também estão anexados novos métodos em função das configurações móveis mencionadas anteriormente. 4.4.3 Definição das camadas do sistema Diante do exposto, tornou-se claro a necessidade da divisão do sistema em camadas, que podem ou não estarem localizadas no mesmo ambiente, conforme os recursos que se fazem necessários. Assim o sistema está dividido em diversas aplicações responsáveis pelas várias camadas, conforme apresentado na figura a seguir. CAMADA DE INTERFACE SOTAC-Mobile Aplicações web, ou móveis SOTAC-WMobile CAMADA DE SERVIÇO RMI Serviço RME SOTAC-EMobile CAMADA DE NEGÓCIO DO SOTAC Funções de login e tradução BANCO DE DADOS POSTGRESS memoriatraducao Figura 4.17 – Camadas do sistema SOTAC-Mobile. Esta divisão é responsável não só pela portabilidade da solução proposta para os diversos dispositivos que podem usar a tradução do SOTAC, mas também P á g i n a | 89 pela possibilidade de alterações nos hardwares envolvidos, tanto para expansão de recursos, como para a adição de novos itens de interface sem a necessidade de alterações nas funções de negócio ou para futuras modificações nas funções de negócio sem que haja a necessidade de maiores alterações nas aplicações de interface com o DA. As aplicações para dispositivos móveis e web, que são aplicações meramente de interface entre o DA e o sistema, podem ser distribuídas e simultaneamente usar os recursos de negócio do SOTAC. Daí fez-se necessário a criação de uma camada especial no SERVLet SOTAC-EMobile, camada RME, para gerenciar o uso da Camada de Negócios, recodificada a partir das funções do SOTAC original, a fim de permitir que estas rotinas mantenham seu encapsulamento original, fornecendo uma maior portabilidade do sistema. 4.4.4 Streaming e formato dos arquivos de vídeo Posteriormente fez-se a avaliação a respeito da transmissão dos vídeos para dispositivos móveis. Optou-se por executar este processo na própria aplicação Java (MIDLet SOTAC-Mobile) de modo a minimizar o uso de recursos específicos dos dispositivos. Nesse sentido, é fornecida a lista dos caminhos (hosts e/ou paths) e arquivos de vídeo para exibição. Isso criou transparência e ganho de performance. Outro aspecto relacionado à exibição dos vídeos que exigiu tratamento, é que a aplicação original trabalha com arquivos no formato AVI, que não é adequado nem para o ambiente móvel nem para a web. Assim, os arquivos de vídeo foram convertidos para o formato MP4, mais comummente utilizados para exibição e transmissão de vídeos. Neste processo de conversão, os vídeos também foram ajustados para o tamanho 320 por 240 pixels, que é a medida padrão usada pelos dispositivos Nokia S60, com relação ao tamanho de seus displays. P á g i n a | 90 O formato MP4 se apresentou como o mais adequado ao projeto devido a uma série de vantagens: É perfeitamente compatível com os recursos MMAPI do J2ME (JSR 135). Permite streaming. Seus arquivos podem ser exibidos com relativa facilidade, pois a maioria dos dispositivos atuais possuem recursos para a sua exibição. Mais especificamente nos dispositivos Nokia série S60, há players e codecs capazes de executar este tipo de arquivo sem outras adições. Este formato gera arquivos bastante compactos o que não compromete os limitados recursos dos dispositivos móveis. Por fim também se fez necessário avaliar os recursos para a transmissão da sequência destes arquivos para os dispositivos móveis, de modo a garantir uma performance adequada e uma execução sem interferência do usuário DA. Para tanto os recursos desenvolvidos dentro da camada de serviço RMI do projeto, permitem que se possa trabalhar com a transmissão dos arquivos utilizando-se tanto protocolo HTTP quanto o protocolo RTMP, bastando apenas uma configuração no arquivo de properties da aplicação do SERVLet SOTACEMobile. 4.4.5 Portabilidade Finalmente, optou-se por criar uma interface web, o SERVLet SOTACWMobile, para uso das funcionalidades do SOTAC e a título de demonstração a fim de apresentar como o uso destas tecnologias é capaz de trazer portabilidade. P á g i n a | 91 Esta página também teve importância ao facilitar o desenvolvimento do projeto, na medida em que os testes das duas camadas mais inferiores puderam ser feitos de forma autônoma. Também foram feitos testes em emulador para dispositivos móveis Nokia série S40. Estes testes foram feitos com Nokia SDK 2.0 for Java — for Series 40 apps, e não exigiram maiores alterações de código. O uso de emulador nestes testes se deu por uma questão de ausência de recurso físico. O resultado é equivalente ao obtido na com a versão para Nokia série S60, portanto com sucesso. 4.4.6 Interface A partir dos módulos do sistema, a interface está separada em três partes, uma para cada aplicação: Do MIDLet SOTAC-Mobile: A interface do MIDLet SOTAC-Mobile é bastante simples e minimalista. Figura 4.18 – Telas de abertura e principal do SOTAC–Mobile obtidas via emulador. P á g i n a | 92 Figura 4.19 – Menu principal e tradução no SOTAC–Mobile obtidas via emulador. Figura 4.20 – Tela de espera e exibição de vídeos no SOTAC–Mobile obtidas via emulador. P á g i n a | 93 No contexto das telas acima apresentadas, vemos que a navegação é bastante simples e pode ser feita igualmente com dispositivos que possuem teclados alfanuméricos ou numéricos com as mesmas funcionalidades. Do SERVLet SOTAC-EMobile: Como o SERVLet SOTAC-EMobile se trata de uma aplicação muito simples apenas para execução do Serviço Remoto do sistema e das funções do SOTAC, não há uma interface visual disponível, assim sendo; por meio do prompt de comando do Windows é possível visualizar o processamento desta camada. Figura 4.21 – Serviço remoto SERVLet SOTAC –EMobile em execução no servidor Do SERVLet SOTAC-WMobile: A interface está criada, como já explicado anteriormente apenas para efeito demonstrativo, assim há apenas as páginas mais básicas para a demonstração. Estas páginas podem ser abertas nos browsers Internet Explorer, Google Crome, e Mozila Firefox, que são mais comumente usados. Em todos os casos o funcionamento apresentou-se correto e com os resultados adequados para a tradução e apresentação dos vídeos. P á g i n a | 94 A página de acesso ao sistema, para login de usuário. Figura 4.22 – Tela de acesso ao SERVLet SOTAC –WMobile obtida via browser IE. E a página para a execução da tradução. Figura 4.23 – Tela de traduções do SERVLet SOTAC –WMobile obtida via browser IE. P á g i n a | 95 Página com a apresentação de uma tradução após um teste. Figura 4.24 – Tela de resultado no SERVLet SOTAC –WMobile obtida via browser IE. Usa-se nesta aplicação o CSS como tecnologia de gerenciamento de estilos. Do SOTAC: Está mantida, exatamente a mesma interface já usada na versão 1.0, ou seja; a nova versão 1.1 é apenas a reedição do SOTAC com atualização das ferramentas de desenvolvimento e banco de dados. Esta interface pode ser vista na tese de mestrado de Breda (2008). 4.4.7 Fluxo de desenvolvimento Como o SOTAC-Mobile é uma evolução do Sistema SOTAC, podemos representar o fluxo de desenvolvimento do protótipo da seguinte maneira: FALIBRAS FALIBRAS - MT SOTAC SOTAC-Mobile Figura 4.25 – Fluxo de desenvolvimento do SOTAC – Mobile. P á g i n a | 96 4.4.8 Codificação A partir das camadas definidas e mostradas anteriormente, a implementação está separada em três aplicações principais desenvolvidas na plataforma Java: SERVLet SOTAC-EMobile: O SERVLet SOTAC-EMobilet é na verdade um Serviço Remoto RMI capaz de executar as funções do SOTAC traduzidas para Java. Assim sendo, primeiramente há a interface RME é composta das chamadas às funções de login (linha 2), tradução (linha 3) e uma função auxiliar para impressão de informações na tela do Serviço Remoto (linha 4), esta interface é também utilizada por em todos os módulos de interface do projeto. 1. public interface ServicoRemoto extends Remote{ 2. public String Login(String usuario, String senha) throws ArcademisException; 3. public String[] Traduz(String perfil, String tipo, String TXTOrigem) throws ArcademisException; 4. public void mensagemServidor(String mensagem) throws ArcademisException; 5. } A seguir a rotina da classe skeleton do RME para login e tradução, responsável pelo vínculo com a classe stub RME. 1. public class ServicoRemotoImpl_Skeleton extends arcademis.server.Skeleton { 2. 3. public Stream dispatch(RemoteCall r) throws Exception { 4. RmeRemoteCall remoteCall = (RmeRemoteCall)r; 5. Stream returnStr = OrbAccessor.getStream(); 6. Stream args = remoteCall.getArguments(); 7. switch (remoteCall.getOperationCode()) { 8. case 0: { 9. java.lang.String param0 = (java.lang.String)args.readObject(); 10. Marshalable retValue = null; 11. ((sotacsmobile.ServicoRemotoImpl)super.remoteObject).mensagemServidor(param0); 12. returnStr.write(retValue); 13. } 14. break; 15. case 1: { 16. java.lang.String param0 = (java.lang.String)args.readObject(); 17. java.lang.String param1 = (java.lang.String)args.readObject(); 18. java.lang.String retValue = ((sotacsmobile.ServicoRemotoImpl)super.remoteObject).Login(param0, param1); 19. returnStr.write(retValue); 20. } 21. break; 22. case 2: { 23. java.lang.String param0 = (java.lang.String)args.readObject(); 24. java.lang.String param1 = (java.lang.String)args.readObject(); 25. java.lang.String param2 = (java.lang.String)args.readObject(); 26. java.lang.String[] retValue = ((sotacsmobile.ServicoRemotoImpl)super.remoteObject).Traduz(param0, param1, param2); 27. returnStr.write(retValue); 28. } P á g i n a | 97 29. break; 30. default: { 31. throw new ArcademisException("Invalid operation in remote method request"); 32. } 33. } // end switch 34. return returnStr; 35. } // end dispatch 36. } Para efetuar o processamento das requisições RME, tem-se e classe de implementação da interface acima (implementação do login e da tradução). Observa-se que estas rotinas são bastante semelhantes às rotinas usadas na aplicação em C# do projeto original do SOTAC de Breda (2008). Abaixo há a implementação do login, onde é feita a chamada da função (linha 6) do SOTAC traduzida para Java. 1. @Override 2. public String Login(String usuario, String senha) { 3. String ret = ""; 4. try { 5. sotacemobile.sotac.Login lgn = new sotacemobile.sotac.Login(); 6. ret = lgn.Login(usuario,senha); 7. } catch (Exception e) { 8. ret = ret +". "+ e.getMessage(); 9. } 10. return ret; 11. } Observa-se que o retorno desta função é uma string alimentada com o valor "Ok." em caso de sucesso ou de uma mensagem de erro em caso de insucesso, resultados estes obtidos via retorno da função sotacemobile.sotac.Login. Na implementação da tradução é feita a chamada à função (linha 9) do SOTAC traduzida para Java. 1. @Override 2. public String[] Traduz(String perfil, String tipo, String TXTOrigem) { 3. String ret = ""; 4. String TXTAlvo = ""; 5. Vector vret = new Vector(); 6. System.out.println("Traduzir texto origem: "+ TXTOrigem); 7. sotacemobile.sotac.TraducaoTexto trdtxt = new sotacemobile.sotac.TraducaoTexto(); 8. try { 9. ret = trdtxt.EfetuarTraducao(perfil,tipo,TXTOrigem); 10. } catch (Exception e) { 11. ret = ret +". "+ e.getMessage(); 12. } P á g i n a | 98 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. } // alimenta a resposta com a tradução obtida vret.add(ret); if (ret.equals("Ok.")) { // monta o retorno = primeiro a tradução depois a lista de aquivos TXTAlvo = trdtxt.getTEXTOAlvoString()+" "; System.out.println("Tradução: "+ TXTAlvo); vret.add(TXTAlvo); // carrega os vídeos if (tipo.equals("V")) { String[] videos = trdtxt.getSEQVideos(); // passando os vídeos para o retorno for (int i = 0; i < videos.length; i++) { vret.add(videos[i]); } } } // prepara o retorno String[] retorno = new String[vret.size()]; for (int i = 0; i < vret.size(); i++) { retorno[i] = (String)vret.get(i); } return retorno; Observa-se que ao final da tradução ocorre a alimentação do vetor que contem o conjunto de strings (cadeias de caractéres) com o resultado do processamento, com a seguinte disposição: Posição 0 (zero): retorno "Ok." ou mensagem de erro (linha 14); Posição 1: texto Alvo (linha 19); Posição 2 em diante: lista de arquivos (linha 25). Por fim, há a função de execução do Serviço Remoto bem como a função main da aplicação. 1. public void execute() { 2. try { 3. RmeConfigurator mc = new RmeConfigurator(); 4. mc.configure(); 5. ServicoRemotoImpl infoObj = new ServicoRemotoImpl(); 6. System.out.println("Registrando objeto Remoto..."); 7. RmeNaming.bind(URL,infoObj); 8. System.out.println("Registrado!"); 9. infoObj.activate(); 10. } catch (Exception e) { 11. System.err.println("Erro " + e); 12. e.printStackTrace(); 13. System.exit(2); 14. } 15. System.out.println("Esperando por ação..."); 16. } Observando-se que a conexão RME (linha 7) é feita usando-se a URL prédefinida em um arquivo de properties, comumente usado em Java. P á g i n a | 99 Abaixo a main da aplicação, com ênfase na geração das classes stub e skeleton RME (linha 12), recurso este fornecido pelo Arcademis / RME. 1. public static void main(String[] args){ 2. String ret = ""; 3. // Obtem o nome do serviço registrado via properties 4. try { 5. ret = sotacemobile.SOTACEMobile.GetConfig(); 6. } catch (Exception e) { 7. System.err.println("Ocorreu uma falha na leitura das propriedades." + "\n\nDetalhes: \n"+e.getMessage()); 8. } 9. // stubs e skeletons 10. String localPath = new java.io.File("").getAbsolutePath() + "/src"; 11. rme.rmec.RmeC.main(new String[] {"-d", localPath, "sotacsmobile." + ServiceName+"Impl"} ); 12. // executando 13. try { 14. new SOTACEMobile().execute(); 15. System.err.println("SOTACEMobile pronto ("+URL+")."); 16. } catch (Exception e) { 17. System.err.println("Mensagem: " + e.toString()); 18. e.printStackTrace(); 19. } 20. } MIDLet SOTAC-Mobile: As funcionalidades principais do MIDLet SOTAC-Mobile são as que fazem interface com o SERVLet SOTAC-EMobile, criadas em Java. Primeiramente tem-se a rotina que efetua a conexão com o Serviço Remoto (RME), que é feita por meio da String contendo a URL de conexão (linha 6): 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. try { System.out.println("Configurando..."); RmeConfigurator mc = new RmeConfigurator(); mc.configure(); System.out.println("Procurando por objeto remoto..."); SRemoto = (ServicoRemoto)RmeNaming.lookup(URL); }catch (Exception e) { e.printStackTrace(); throw new Exception("Erro ao procurar o objeto remoto!\n" + e); } A seguir é feito o login (linha 4) com a finalidade de garantir o acesso ao sistema, observando-se que todos os parâmetros estão definidos hardcoded: 1. 2. 3. 4. 5. 6. 7. 8. 9. if (SRemoto != null) { try { SRemoto.mensagemServidor("Efetuando login remoto!"); ret = SRemoto.Login("movel","M"); }catch (Exception e) { e.printStackTrace(); throw new Exception("Erro ao realizar a chamada remota!\n" + e); } } P á g i n a | 100 Está definida uma classe chamada Locator inicializada juntamente com o Serviço Remoto (SRemoto), e tem como principal finalidade armazenar a lista de vídeos recebida com aspectos de playlist (lista de reprodução) permitindo assim o sequenciamento dos vídeos sem atuação direta do usuário. A seguir apresenta-se a definição desta classe: 1. public class Locator { 2. public String[] locator = null; 3. public int locatorindex = 0; E finalmente a chamada para a função que efetua as traduções (linha 4), incluindo a chamada a função para a alimentação da lista dos vídeos (linha 15) definida na classe Locator mencionada acima: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. if (SRemoto != null) { try { SRemoto.mensagemServidor("Efetuando a tradução remota!"); sret = SRemoto.Traduz("U",tipo,textofonte); ret = sret[0]; }catch (Exception e) { ret = e.getMessage(); } // trata o retorno do servlet if (ret.equals("Ok.")){ TextField SM_T = MIDlet.getSM_traducao_textfield(); SM_T.setString(sret[1]); // se a tradução é com vídeo prepara para a exibição if (tipo.equals("V")) { MIDlet.videos.intLocator(sret,2); } } } } Esta aplicação faz uso da interface RME e da classe stub do RME com a finalidade de integração com a implementação das funções de login e tradução do SOTAC SERVLet-EMobile, abaixo está a classe stub do RME: 1. public java.lang.String Login(java.lang.String param0, java.lang.String param1) throws arcademis.ArcademisException { 2. java.lang.String resp = null; 3. try { 4. Stream args = OrbAccessor.getStream(); 5. args.write(param0); 6. args.write(param1); 7. int op = 1; 8. Stream future = invoke(args, op, '?', 0); 9. if(future.isException()) { 10. Exception e = (Exception)future.readObject(); 11. throw e; 12. } 13. resp = (java.lang.String)future.readObject(); 14. } catch (arcademis.ArcademisException e) { 15. throw e; 16. } catch (Exception e) { P á g i n a | 101 17. throw new arcademis.UnspecifiedException(e.toString()); 18. } 19. return resp; 20. } 21. 22. public java.lang.String[] Traduz(java.lang.String param0, java.lang.String param1, java.lang.String param2) throws arcademis.ArcademisException { 23. java.lang.String[] resp = null; 24. try { 25. Stream args = OrbAccessor.getStream(); 26. args.write(param0); 27. args.write(param1); 28. args.write(param2); 29. int op = 2; 30. Stream future = invoke(args, op, '?', 0); 31. if(future.isException()) { 32. Exception e = (Exception)future.readObject(); 33. throw e; 34. } 35. resp = (java.lang.String[])future.readObject(); 36. } catch (arcademis.ArcademisException e) { 37. throw e; 38. } catch (Exception e) { 39. throw new arcademis.UnspecifiedException(e.toString()); 40. } 41. return resp; 42. } Por fim, a seguir estão apresentadas as rotinas para execução da lista de vídeos, onde a exibição em si (linha 4) ocorre no evento start da classe PlayerManager por meio de uma thread (fluxo de execução) separada. 1. 2. 3. 4. 5. 6. 7. 8. String video = MIDlet.videos.getLocator(); if (!(video.equals("")) && !(video == null)) { defplayer(); player = Manager.createPlayer(video); player.addPlayerListener(this); player.realize(); // aguarda o final da apresentação para iniciar o outro video automaticamente player.start(); Observa-se que não há um loop (fluxo de repetição) para a exibição da sequencia de vídeos, pois um vídeo só é chamado após o evento END_OF_MEDIA, disparado pelo objeto player, e utilizando a playlist vídeos da classe Locator mencionada anteriormente. Conforme mostrado a seguir. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. } else if(event.equals(PlayerListener.END_OF_MEDIA)) { form.deleteAll(); MIDlet.switchDisplayable(null, MIDlet.getSM_waitScreen()); MIDlet.videos.nextLocator(); if (MIDlet.videos.indexLocator() < MIDlet.videos.lenghtLocator()) { // inicia o proximo vídeo this.run(); } else { // reinicia o locator MIDlet.videos.firstLocator(); // volta para a tela anterior MIDlet.switchDisplayable(null, MIDlet.getSM_form()); } } P á g i n a | 102 Todas as outras rotinas contidas no MIDLet SOTAC-Mobile são meramente para tratamentos de GNU. Do SOTAC-WMobile: Na aplicação web, para as solicitações de login e tradução temos uma repetição da lógica utilizada na aplicação móvel. sendo que estas rotinas foram implementadas no dopost. A interface RME e a classe stub do RME são exatamente as mesmas utilizadas no MIDLet SOTAC-Mobile. Todas as outras rotinas do SERVLet SOTAC-WMobilet são para tratamentos usando CSS, XHTML e JSP. Do SOTAC: No SOTAC as principais rotinas traduzidas para Java estão relacionadas aos processos de conexão ao banco de dados, login e tradução. Estes códigos foram traduzidos do C# para Java. Estas rotinas pertencem atualmente ao SERVLet SOTAC-EMobile, contemplando a camada de negócios do SOTAC. A seguir é apresentada a rotina utilizada para conexão (linha 2) com o banco de dados, usando parâmetros de acesso obtidos a partir do arquivo de properties Java, criado para substituir o config.ini usado no SOTAC que é originalmente preenchido na rotina principal do SOTAC (program.cs). 1. 2. 3. public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL,UserID,Password); } P á g i n a | 103 Outro item de banco de dados é a rotina para a execução de querys (linha 7). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. public static ResultSet runquery(String SQLquery) { Connection CONEXAO = null; ResultSet RS = null; try { CONEXAO = Conecta.getConnection(); Statement stm = CONEXAO.createStatement(); RS = stm.executeQuery(SQLquery); } catch(SQLException e) { e.printStackTrace(); } finally { try { CONEXAO.close(); } catch(SQLException onConClose) { onConClose.printStackTrace(); } return RS; } } A rotina de login do sistema está criada para atender a nova configuração de acesso via dispositivos móveis. 1. public class Login { 2. public String Login(String user, String password) 3. { 4. String ret = ""; 5. try { 6. ret = sotacemobile.jdbc.Conecta.GetConfig(); 7. } catch (Exception e) { 8. return "Ocorreu uma falha na leitura das propriedades." + "\n\nDetalhes: \n"+e.getMessage(); 9. } 10. if (ret == "Ok.") { 11. ret = CriarAdministrador(); 12. if (ret == "Ok.") { 13. ret = CriarUsuarioMobile(); 14. if (ret == "Ok.") ret = EfetuarLogin(user,password); 15. } 16. } 17. return ret; 18. } Observa-se que o usuário móvel é criado (linha 13) quando não existe na base de dados, adequando-se ao novo contexto. Na sequência (linha 14) é feita a chamada para a consulta de login via banco de dados. P á g i n a | 104 A rotina para criação do usuário móvel assemelha-se muito àquela utilizada na versão original do SOTAC para a criação de um usuário administrador automaticamente, esta abordagem é proposital de forma a respeitar a lógica original do SOTAC. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. private String CriarUsuarioMobile() { String COMANDO = ""; int contagem = 0; ResultSet rs = null; try { COMANDO = "select count(usuario) as total " + "from usuarios " + "where perfil = 'U' and usuario = 'movel'"; rs = sotacemobile.jdbc.Conecta.runquery(COMANDO); if (rs.next()) contagem = rs.getInt("total"); if (contagem == 0) { COMANDO = "select max(cod_us) as total " + "from usuarios "; rs = sotacemobile.jdbc.Conecta.runquery(COMANDO); if (rs.next()) { double total_us = rs.getDouble("total"); if (total_us>0) total_us++; else total_us = 1; COMANDO = "insert into usuarios " + "(cod_us,usuario,senha,nome,perfil) " + "values ("+Double.toString(total_us)+",'movel','M','Usuário Móvel','U')"; rs = sotacemobile.jdbc.Conecta.runquery(COMANDO); } } } catch (Exception e) { return "Ocorreu uma falha de conexão com o banco de dados." + "\n\nDetalhes: \n"+e.getMessage(); } return "Ok."; } Por fim, todas as outras rotinas foram traduzidas para Java, sem alteração de sua lógica original em C#, sempre respeitando a autoria que é do SOTAC de Breda (2008). No mais todas as diferenças de tradução estão relacionadas apenas ao contexto de caixas de mensagens removidas e substituídas por retorno string, e/ou com a retirada de objetos e eventos visuais. Os códigos completos estão disponíveis para download por meio das URLs apresentadas no ANEXO C. P á g i n a | 105 4.4.9 Resultados alcançados No processo de tradução foram alcançados os mesmos resultados obtidos na tese de Breda (2008). Porém o contexto de apresentação destes resultados está expresso de maneira diferente. No dispositivo móvel Nokia E63 (modelo S60 disponível), fez-se a instalação da aplicação empacotada correta e automaticamente, por meio dos recursos próprios do modelo e de conexão com PC via USB. A execução da aplicação é feita via menu principal do sistema operacional, sem maiores dificuldades. A navegação apresentou-se muito simples e tranquila e a tradução para LIBRAS ocorre perfeitamente de acordo com a MT cadastrada. A apresentação dos vídeos possui o tempo de resposta adequado e sua visualização é muito boa. Na web, apesar da função principal desta aplicação ser ilustrativa, a mesma pôde ser acessada via WebBrowser Internet Explorer, Google Crome e Mozila FireFox sem qualquer restrição e mantendo totalmente seus recursos funcionais e visuais. Assim sendo, vemos a implementação de um sistema portável para tradução Português para LIBRAS é totalmente viável e eficiente. P á g i n a | 106 Capítulo 5 Considerações finais Neste capítulo são apresentadas, as análises de portabilidade e escalabilidade bem como as considerações finais a respeito deste trabalho. 5.1 Análise de portabilidade Considerando que atualmente há uma vasta quantidade de dispositivos móveis em funcionamento e disponíveis no mercado, está claro que apesar deste trabalho se limitar a um grupo específico de dispositivos móveis, é possível expandir esta ideia para uma diversa gama de outros dispositivos e plataformas. 5.1.1 Portablidade para dispositivos móveis compativeis com plataforma J2ME O MIDLet SOTAC-Mobile está codificado em J2ME e usa alguns recursos que não estão presentes em todos os dispositivos compatíveis com J2ME. Desta forma nem todos os dispositivos compatíveis com J2ME são capazes de executar o MIDLet SOTAC-Mobile. Dentre o conjunto dos dispositivos compatíveis com J2ME, todos aqueles que possuírem JSR-118, JSR-135e JSR-139 são capazes de executar o MIDLet SOTAC-Mobile. Para tanto, faz-se necessário gerar uma nova compilação do aplicativo, vinculando a ela a SDK do conjunto dos dispositivos selecionados. Por exemplo, considerando os dispositivos Nokia séries S40, uma série de dispositivos mais antiga, é fato que nem todos os seus dispositivos desta série podem executar o MIDLet SOTAC-Mobile, porém para a série S80, bem mais recente, vemos que a maioria de seus dispositivos podem executar o MIDLet SOTAC-Mobile. P á g i n a | 107 Para dispositivos de outros fabricantes como a Samsung, Motorola e outros, a regra é a mesma, é necessário observar suas especificações, ou seja; desde que sejam compatíveis com J2ME e possuam recursos JSR-118, JSR-135 e JSR-139, podem executar normalmente o MIDLet SOTAC-Mobile. A seguir alguns exemplos de dispositivos que podem executar o MIDLet SOTAC-Mobile, baseados em testes feitos com base em seus SDKs e usando os seus respectivos emuladores (não foram executados testes nos dispositivos fisicamente, por questões de viabilidade do recurso). Figura 5.1 – Nokia S40 Asha 311 e LG C205 podem executar o MIDLet SOTAC – Mobile. Para alguns dos dispositivos móveis compatíveis com J2ME que não possuam todos os recursos JSR-118, JSR-135 e JSR-139, provavelmente é possível também executar o MIDLet SOTAC-Mobile, mas são necessários ajustes no código e isso depende muito de cada especificação. Como isso não está testado, não há garantia nestes casos. 5.1.2 Portabilidade para dispositivos móveis com Android A plataforma Android possui alguns recursos Java, mas não é totalmente compatível com J2ME. Assim, para suprir esta diferença, há alguns emuladores J2ME, também conhecidos como J2ME Runners, capazes de executar aplicações J2ME no Android. Na realidade os J2ME Runners, funcionam como máquinas virtuais J2ME dentro do Android e normalmente não executam corretamente todas as funções J2ME, fazendo com que os aplicativos não funcionem corretamente. Isso ocorre principalmente nos processos de conexão via socket. P á g i n a | 108 Como o MIDLet SOTAC-Mobile usa recursos Arcademis/RME baseados em conexão via socket, faz se necessário avaliar e testar o MIDLet SOTAC-Mobile nestas condições antes de determinar a portabilidade real desta solução. Outra opção é gerar uma nova interface voltada para a plataforma Android de forma nativa. Neste caso há a necessidade de verificar a capacidade desta aplicação em acessar a Camada de Serviços RMI. Há algumas soluções para esta questão, mas também precisam ser avaliadas e testadas antes de determinar a portabilidade real desta solução. Certamente é mais interessante para o futuro partir para outras opções de desenvolvimento como a utilização de SOA (WebServices e SOAP). Nestes casos a Camada de Serviço RMI é afetada, necessitaria de substituição ou manutenção. Porém o mais adequado é adicionar novas camadas de serviço de forma paralela à atual camada RMI, desta forma não há necessidade de manutenção nas atuais interfaces que estão em J2ME. CAMADA DE INTERFACE CAMADA DE INTERFACE Aplicações web, ou móveis J2ME Aplicações web, ou outras plataformas móveis CAMADA DE SERVIÇO RMI CAMADA DE SERVIÇO SOA Serviço RME WebService SOTAC-Mobile SOTAC-WMobile SOTAC-EMobile CAMADA DE NEGÓCIO DO SOTAC Funções de login e tradução BANCO DE DADOS memoriatraducao Figura 5.2 – Exemplo de novas possíveis camadas para o SOTAC-Mobile. As opções acima citadas são ideias para trabalhos futuros. POSTGRESS P á g i n a | 109 5.1.3 Portabilidade para dispositivos móveis com Windows Mobile ou Windows Phone Em geral a plataforma Windows Mobile ou Windows Phone é compatível com J2ME, e isto está diretamente relacionado ao fabricante do dispositivo. Portanto, da mesma maneira ao que já mencionado anteriormente se faz necessário a aplicação de SDKs específicos dos fabricantes dos dispositivos para recompilar o MIDLet SOTAC-Mobile para execução em Windows. Como o MIDLet SOTAC-Mobile não usa nenhum recurso específico dos dispositivos Nokia S60, a portabilidade não exige manutenções maiores. Porém é interessante que faça uma avaliação e testes com relação a este caso, sendo também uma proposta de trabalho futuro. Em se tratando de versões mais antigas da plataforma Windows, ou seja, do Windows CE, há diversas Máquinas Virtuais Java para esta plataforma no mercado. Porém devido às limitações dos dispositivos móveis que usam Windows CE, que são mais antigos, provavelmente não seja possível executar o MIDLet SOTAC-Mobile na maioria deles. Há que se testar em trabalho futuro. Um aspecto interessante a se citar, é que a plataforma Symbian está sendo abandonada pela Nokia, em prol da plataforma Windows Phone. Isto significa dizer que todos os aplicativos J2ME para Symbian que atualmente existem no mercado em breve devem ser migrados caso se deseje mantê-los. 5.1.4 Portablidade para dispositivos móveis BlackBerry Em geral a plataforma BlackBerry é compatível com J2ME. Portanto, da mesma maneira ao que já mencionado anteriormente se faz necessário a aplicação de SDKs específicos do fabricante, neste caso a RIM, para recompilar o MIDLet SOTAC-Mobile para execução em BlackBerry. Em geral os aplicativos J2ME quando executados no BlackBerry, não tem acesso à maioria dos recursos próprios destes dispositivos, isto significa dizer P á g i n a | 110 que para aplicações onde estes recursos são exigência o melhor e desenvolver diretamente para a plataforma, ou seja nativamente. Mas como o MIDLet SOTAC-Mobile não usa nenhum recurso específico dos dispositivos Nokia S60, portar o MIDLet SOTAC-Mobile para a plataforma BlackBerry não requer maiores manutenções. Porém é interessante que faça uma avaliação e testes com relação a este caso, sendo também uma proposta de trabalho futuro. 5.1.5 Portabilidade para dispositivos Apple A plataforma Apple é totalmente diferente do que, até o momento, se discutiu e testou no presente trabalho. Como o desenvolvimento para esta plataforma requer ambiente Apple, se faz necessário criar uma nova interface. Faz-se então necessário recodificar o MIDLet SOTAC-Mobile para o ambiente nativo Apple. Porém, uma questão importante relacionada aos aplicativos para plataforma Apple, está na necessidade de registro e pagamento de comissão de 30% cobrada pela Apple. Esta abordagem é uma proposta bastante interessante para o futuro. 5.1.6 Portabilidade para dispositivos de outras plataformas Recaímos neste caso para a mesma questão, cada plataforma tem seus aspectos particulares, devendo portanto para cada qual verificar-se a viabilidade do projeto. O aspecto mais importante é a relação custo benefício, que deve ser avaliada quando se trata de desenvolvimento em plataformas móveis de pouca expressão no mercado. Em especial, porque a tendência do mercado a partir de 2012, é ficar restrito às plataformas Android, Windows Mobile ou Windows Phone, Apple e com menor expressividade o BlackBerry. Outra ideia interessante, e viabilizar a utilização do SOTAC-Mobile em outras plataformas Java embarcadas, como TV, dispositivos automotores, dispositivos P á g i n a | 111 de posicionamento global (GPSs) entre outros. Em todos estes casos a plataforma Java (J2ME) já é uma realidade o que possibilita novas abordagens. Logicamente a interface de cada caso é item de estudo e testes em trabalhos futuros, mas a possibilidade de executar o SOTAC-Mobile em tão vasta gama de dispositivos é extremamente interessante, levando-se em conta que somente faz-se necessário trabalhar na Camada de Interface. Dar ao DA a possibilidade de comunicação com todos estes dispositivos é uma realidade muito próxima. 5.2 Análise de escalabilidade Há várias possibilidades de expansão do sistema SOTAC-Mobile. A seguir apresenta-se as ideias mais promissoras. 5.2.1 Expansão do SOTAC de forma completa para a web Neste trabalho já está criado um pequeno site, no qual é possível executar traduções pela web. Portanto é totalmente viável expandir este site de forma a permitir o acesso a toda camada de negócios do SOTAC. A respeito desta expansão temos três questões básicas a considerar: Manter apenas a abordagem RMI atual. Partir também para uma abordagem usando SOA. Em ambos os casos a solução passa pelo que já está feito neste projeto, onde necessita-se adicionar, ou melhor traduzir, todas as funções de negócio e persistência do SOTAC para o SERVLet SOTAC-EMobile. Adições na Camada de Negócios. Porém, no primeiro caso faz-se necessário criar as interfaces RMI necessárias para a manipulação das mesmas, fazendo-se da mesma forma como está feito para as funções de login e tradução apresentadas neste projeto. Adição na Camada de Serviços RMI. P á g i n a | 112 A seguir parte-se para toda a interface web, e uso de todos os recursos do SOTAC via Internet, seguindo o que já está feito neste projeto de forma bastante simples para as traduções e login. No segundo caso, há a necessidade da criação de uma segunda Camada de Serviços para gerenciar as questões relacionadas a WebService. A criação de WebServices em Java é relativamente normal e não traz problemas em termos das adições a serem implementadas. Adição da Camada de Serviços SOA, vide a figura 5.2. Por fim então pode-se fazer toda a interface web, para uso de todos os recursos do SOTAC, via Internet . Neste caso usa-se os serviços WebService disponíveis na nova Camada de Serviços WS criada. Outro aspecto é verificar o desempenho destas soluções comparativamente, o que pode ser outra questão de estudo. 5.2.2 Melhoramento do SOTAC-Mobile no processo de seleção das Memórias de Tradução Na medida em que todas as funcionalidades do SOTAC estiverem disponíveis, independentemente do uso de SOA ou RMI, as Memórias de Tradução estão disponíveis para manipulação. Isto significa dizer que o SERVLet SOTAC-WMobile, pode ter acesso ao cadastro e manipulação das Memórias de Tradução, assim como o uso das mesmas exatamente como o SOTAC original, tanto na web como em dispositivos móveis. No caso da web estamos tratando de uma aplicação similar ao SOTAC, que pode executar todas as suas funcionalidades, isso inclui a persistência e o uso das MT nas traduções. Já para dispositivos móveis, é mais adequado a criação de uma outra interface para gerenciar as funções administrativas do SOTAC. Quer dizer, trabalhar P á g i n a | 113 separadamente com os perfis de usuário "Administrador" ou "Colaborador". Isso evita aumentar a complexidade do MIDLet SOTAC-Mobile, que está criado para usuários DA. Neste caso é interessante notar que pode-se adicionar a opção de seleção de Memórias de Tradução no atual MIDLet SOTAC-Mobile, tornando-o igual à aplicação web, e consequentemente igual ao SOTAC original, neste quesito. 5.2.3 Futura utilização de SOA. No projeto atual a Camada de Serviços utiliza RMI para integração entre a Camada de Negócio e a Camada de Interface dos sistema. Porém, é possível o uso de SOA, e para tanto é necessário a adição de uma nova da camada de serviços para gerenciar os WebServices, como já mencionado anteriormente. O uso de SOA, abre um leque de possibilidades, permitindo a expansão da Camada de Interface, para diversas outras plataformas e tornando o SOTACMobile um sistema extremamente portável, especialmente porque é possível manter a abordagem RMI atual rodando paralelamente à abordagem SOA. É interessante salientar que ambas abordagens devem andar paralelamente, até porque nem todos os dispositivos móveis possuem recursos para uso de WebServices e manipulação de arquivos no formato XML. Isto significa dizer que as abordagens de Serviço RMI e SOA são na realidade complementares no sentido de atingir o maior volume de plataformas. Como a Camada de Serviços não interfere no funcionamento das camadas mais abaixo, todo o sistema pode ser modular e distribuído fisicamente em diferentes ambientes. Até mesmo as diferentes Camadas de Serviço podem estar em ambientes distintos, o que é bastante interessante pois podemos até mesmo criar formas para balancear os recursos físicos para distribuir melhor o serviço prestado. Em um projeto futuro pode-se adicionar a abordagem SOA ao SOTAC-Mobile e simultaneamente complementá-lo tanto na web como em uma outra plataforma P á g i n a | 114 móvel como o Android ou em uma outra plataforma embarcada por exemplo de TV. 5.2.4 Integração do SOTAC-Mobile com soluções de animação 2D ou 3D Há diversos trabalhos com animações para LIBRAS, usando-se Avatares (figuras humanas animadas para animações), estes trabalhos estão baseados no melhoramento da forma de armazenamento e transporte dos vídeos. Como exemplo pode-se consultar o projeto POLI-LIBRAS de Januário et. al. (2010), no qual uma destas ideias é apresentada. Isto pode tornar-se uma adição interessante ao projeto. E abre as portas para que os vídeos possam ser substituídos por animações 2D ou 3D. Neste caso, com o uso de XML e/ou de computação gráfica, pode criar-se um padrão em XML para geração das traduções do texto em LIBRAS, possibilitando maior velocidade de tradução. Cabe então à aplicação, interpretar o XML de retorno da tradução e a partir dele gerar as animações adequadas por meio dos Avatares. A principal vantagem desta forma de exibição de LIBRAS é tornar a tradução mais impessoal o que melhora o entendimento e a comunicação com o DA. Outra vantagem é que torna-se desnecessário o uso de muitos recursos de transmissão de dados, players e codecs, na medida em que as interfaces não mais necessita exibir arquivos de vídeo. As desvantagens do uso de Avatares são algumas, e dentre elas temos primeiramente a incapacidade de dispositivos móveis mais antigos se utilizarem dos recursos de animação 3D. Por outro lado, em geral; todo dispositivo móvel capaz de executar jogos pode executar animações 2D, porém estes perdem muito da linguagem LIBRAS pois alguns sinais em 2D podem ficar confusos para o DA. P á g i n a | 115 Depois há que se verificar se as diferenças entre os dispositivos móveis alvo requerem muito tratamento de fabricante para fabricante, ou se o mesmo código pode ser portável de um dispositivo para outro. Logicamente estamos tratando, neste caso, de cada uma das plataformas individualmente. Por exemplo; qual a possibilidade de portabilidade de código entre dispositivos diferentes que usam uma mesma plataforma Android ou J2ME ou BlackBerry. Há também questões inerentes à animação em si, como o caso da influência das expressões faciais em LIBRAS. Como estas questões precisam ser visualizadas em dispositivos móveis com recursos visuais reduzidos. De certa forma a tendência é que os novos dispositivos móveis do mercado possam lidar com isso facilmente e esta evolução venha em breve. 5.2.5 Futura migração do sistema para HTML5 e WAP A linguagem HTML5 (Hypertext Markup Language, versão 5) é a nova versão da linguagem de marcação de hipertexto HTML, que teve sua primeira especificação divulgada em 2008 pela W3C. Há uma série de adições a esta versão de HTML, voltadas para desenvolvimento de aplicações web com a finalidade de recuperar o terreno perdido nestes últimos tempos. Devido a uma série de limitações o desenvolvimento em HTML, sempre dependeu de outros recursos, o quê com esta nova versão propõe-se, sejam padronizados. Outra questão em que o HTML5 aparece com grande força é no desenvolvimento de aplicações web para dispositivos móveis. Apesar do HTML5 não substituir todos os recursos das plataformas nativas, ele vem com grande força já que oferece portabilidade total, ou seja; uma aplicação web escrita em HTML5 pode rodar em qualquer dispositivo móvel, desde que seu WebBrownser assim o permita. P á g i n a | 116 Em breve todos os dispositivos móveis do mercado aceitarão HTML5 assim como os mais atuais dispositivos da linha Apple e Samsung Galaxy. Uma proposta futura de implementar todas as funcionalidades do SOTAC e SOTAC-Mobile em HTML5, assim flexibilizando e facilitando o uso geral de seus recursos pelos DA. Esta abordagem, também pode ser disponibilizada de forma paralela à abordagem atual, pois também atua na Camada de Interface. 5.3 Conclusão A principal conclusão deste trabalho está na validação da real possibilidade do uso de técnicas de tradução em toda a sua gama de possibilidades em ambientes variados e móveis. Tais considerações são uma porta nova para a inclusão social dos DA no mundo digital, podendo inclusive estender-se a outros tipos de linguagens, idiomas e dispositivos. P á g i n a | 117 Referências LIBRAS. Língua Brasileira de Sinais. Disponível em: http://www.libras.org.br/libras.php. Acessado em: setembro de 2011. BREDA, W. L. Um ambiente para apoio à tradução baseado em conhecimento – Estudo de caso com Português – LIBRAS. Dissertação (Mestrado) – Universidade Federal do Espírito Santo, 2008. BREDA, W L. Projeto FALIBRAS-MT – Um sistema para autoria e uso de tradutores automáticos Português - LIBRAS. Dissertação (Bacharelado) – Universidade Federal do Espírito Santo, 2005. TAVARES, O. L.; CORADINE, L. C.; BREDA, W. L. FALIBRAS.MT. Autoria de tradutores automáticos de texto do português para libras, na forma gestual animada: Uma abordagem com memória de tradução. XXV Congresso da Sociedade Brasileira de Computação 2005. TAVARES, O. L.; CORADINE, L. C.; et al. Sistema FALIBRAS: Um intérprete virtual, como ferramenta de apoio pedagógico à educação de surdos. Universidade Federal de Alagoas, 2002. CORADINE, L. C.; ALBUQUERQUE, F. C.; et al. Interpretação de pequenas frases com análise léxica no sistema FALIBRAS: Tradutor do português para a LIBRAS. III Fórum de informática aplicada a pessoas portadoras de necessidades especiais – CBComp 2004. FRANCO, M. N.; SILVA, W. L. A.; BRITO, P. H. S. FALIBRAS-WEB : Uma proposta de inclusão social para surdos. Universidade Federal de Alagoas. CORADINE, L. C. BRITO, P. H. S; SILVA, R.L; SILVA, T. F. L.; CUNHA, F; Estruturação da Linguagem LIBRAS em Computador a Partir de um Locutor P á g i n a | 118 Externo - Sistema FALIBRAS. Projeto FAPEAL / UFAL (Iniciação Científica), 2002. JANUÁRIO, G. C. LEITE, L. A. F. KOKA, M.L. Projeto POLI-LIBRAS – Um tradutor de Português para LIBRAS. Dissertação (Bacharelado) – Escola Politécnica de São Paulo, 2010. RYBENÁ, Player. Comunicação priorizando a acessibilidade. Instituto CTS. Disponível em: http://www.rybena.com.br/default/index.jsp. Acessado em: setembro de 2011. LIRA, G. de A. Projeto TLIBRAS – Tradutor Português x LIBRAS. Disponível em: http://www.acessobrasil.org.br/index.php?itemid=39 e http://www.acessobrasil.org.br/libras/. Acessados em: outubro de 2011. NIRENBURG, S. "Knowledge and Choices in Machine Translation". Machine Translation. Org. Sergei Nirenburg. Cambridge, Cambridge University Press, 1987, pp. 1-15. SLOCUM, J. "A Survey of Machine Translation: Its History, Current Status, and Future Prospects". Machine Translation Systems. Org. Jonathan Slocum. Cambridge, Cambridge University Press, 1985, pp.1-41. TUCKER, A. B. "Current Strategies in Machine Translation Research and Development". Machine Translation. Org. Sergei Nirenburg. Cambridge, Cambridge University Press, 1987, pp. 22-41. DECLARAÇÃO UNIVERSAL DOS DIREITOS HUMANOS, adotada e proclamada pela resolução 217 A (III) da Assembleia Geral das Nações Unidas em 10 de dezembro de 1948. Tradução oficial, UNITED NATIONS HIGH COMMISSIONER FOR HUMAN RIGHTS. Disponível http://portal.mj.gov.br/sedh/ct/legis_intern/ddh_bib_inter_universal.htm. Acessado em setembro de 2011. em: P á g i n a | 119 BRASIL, LEI Nº 10.436/2002, DE 24 DE ABRIL DE 2002. Braslília Gabinete da Presidência da República. Disponível http://www.planalto.gov.br/ccivil_03/Leis/2002/L10436.htm. em: Acessado em setembro de 2011. BRASIL, DECRETOS Nº 6.583, Nº 6.584, Nº 6.585 e Nº 6.586. http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6583.htm, http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6584.htm, http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6585.htm, http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6586.htm. Acessados em outubro de 2012. ABNT (Associação Brasileira de Normas Técnicas). Informação e documentação – citações em documentos – apresentação: NBR 10520. Rio de Janeiro, 2002a. ABNT (Associação Brasileira de Normas Técnicas). Informação e documentação – referências – elaboração: NBR 6023. Rio de Janeiro, 2002b. IBGE (Instituto Brasileiro de Geografia e Estatística), Censo 2010, publicado no Diário Oficial da União no dia 04 de novembro de 2010. Disponível em http://www.censo2010.ibge.gov.br/. Acessado em setembro de 2011. GARTNER. Disponível em HTTP://www.gartner.com. Acessado em setembro de 2011. ANATEL (Agência Nacional de Telecomunicações). Disponível em Disponível em http://www.anatel.org.br. Acessado em setembro de 2011. INES, Instituto Nacional de Educação dos Surdos. http://www.ines.org.br. Acessado em setembro de 2011. APACHE TOMCAT. Disponível em http://tomcat.apache.org/. Acessado em abril de 2012. P á g i n a | 120 ORACLE, – Java J2ME. Disponível em http://www.oracle.com/us/technologies/java/mobile/overview/index.html. Acessado em abril de 2012. SUN MICROSYSTEMS, Disponível em http://java.sun.com. Acessado em abril de 2012. SUN MICROSYSTEMS, RMI-op. Disponível em http://java.sun.com/products/rmiop/. Acessado em abril de 2012. MICROSOFT, Windows Mobile. Disponível em http://www.microsoft.com/windowsmobile. Acessado em setembro de 2011. Linguagem Python. Disponível em http://www.python.org. Acessado em outubro de 2011. TELECO, Telefonia Celular no Brasil. Disponível http://www.teleco.com.br/tutoriais/tutorialcelular/pagina_1.asp. Acessado em em setembro de 2011. TELECO, Desenvolvimento de aplicações móveis com J2ME. Disponível em http://www.teleco.com.br/tutoriais/tutorialj2me/pagina_1.asp. Acessado em setembro de 2011. TELECO, Aparelhos celulares. Disponível em http://www.teleco.com.br/celprod.asp. Acessado em outubro de 2011. NOKIA Developer. Disponível em http://www.developer.nokia.com. Acessado em setembro de 2011. NOKIA E63, Device Especifications em http://www.developer.nokia.com/Devices/Device_specifications/E63/. Acessado em maio de 2012. P á g i n a | 121 LG Developer. Disponível em http://developer.lge.com/resource/mobile/RetrievePhoneList.dev. Acessado em outubro de 2012. Plataforma Symbian. Disponível em http://www.symbian.org. Acessado em setembro de 2011. Plataforma Google Android. Disponível em http://developer.android.com/index.html. Acessado em setembro de 2011. PALM / HP, Developer. Disponível em http://developer.palm.com. Acessado em setembro de 2011. Plataforma Samsung BADA. Disponível em http://www.bada.com. Acessado em setembro de 2011. Plataforma Meego. Disponível em http://meego.com. Acessado em setembro de 2011. NETBEANS. Disponível em http://netbeans.org/. Acessado em abril de 2012. Open Mobile Alliance. Disponível em http://www.openmobilealliance.org. Acessado em outubro de 2011. ACCENTURE noticias. Disponível em http://newsroom.accenture.com/article_display.cfm?article_id=5191. Acessado em setembro de 2011. FALIBRAS. Disponível em: http://www.falibras.tci.ufal.br Acessado em: setembro de 2011. http://www2.dcc.ufmg.br/laboratorios/llp/projects/arcademis ASTAH Community. Disponível em http://astah.net/. Acessado em abril de 2012. P á g i n a | 122 Amazon Clowd Computing. Acessado em agosto de 2012. Disponível em http://aws.amazon.com/pt/. P á g i n a | 123 ANEXO A LEI LIBRAS LEI Nº 10.436, DE 24 DE ABRIL DE 2002. Dispõe sobre a Língua Brasileira de Sinais - Libras e dá outras providências. O PRESIDENTE DA REPÚBLICA Faço saber que o Congresso Nacional decreta e eu sanciono a seguinte Lei: Art. 1o É reconhecida como meio legal de comunicação e expressão a Língua Brasileira de Sinais - Libras e outros recursos de expressão a ela associados. Parágrafo único. Entende-se como Língua Brasileira de Sinais - Libras a forma de comunicação e expressão, em que o sistema linguístico de natureza visualmotora, com estrutura gramatical própria, constituem um sistema linguístico de transmissão de ideias e fatos, oriundos de comunidades de pessoas surdas do Brasil. Art. 2o Deve ser garantido, por parte do poder público em geral e empresas concessionárias de serviços públicos, formas institucionalizadas de apoiar o uso e difusão da Língua Brasileira de Sinais - Libras como meio de comunicação objetiva e de utilização corrente das comunidades surdas do Brasil. Art. 3o As instituições públicas e empresas concessionárias de serviços públicos de assistência à saúde devem garantir atendimento e tratamento adequado aos portadores de deficiência auditiva, de acordo com as normas legais em vigor. Art. 4o O sistema educacional federal e os sistemas educacionais estaduais, municipais e do Distrito Federal devem garantir a inclusão nos cursos de formação de Educação Especial, de Fonoaudiologia e de Magistério, em seus P á g i n a | 124 níveis médio e superior, do ensino da Língua Brasileira de Sinais - Libras, como parte integrante dos Parâmetros Curriculares Nacionais - PCNs, conforme legislação vigente. Parágrafo único. A Língua Brasileira de Sinais - LIBRAS não poderá substituir a modalidade escrita da língua portuguesa. Art. 5o Esta Lei entra em vigor na data de sua publicação. Brasília, 24 de abril de 2002; 181o da Independência e 114o da República. FERNANDO HENRIQUE CARDOSO Paulo Renato Souza Texto publicado no Diário Oficial da União de 25.4.2002 P á g i n a | 125 ANEXO B Sistema Móvel Celular no Brasil Abaixo estão apresentadas a evolução da tecnologia móvel no Brasil. Geração 1G 2G 2,5G 3G Tecnologia Largura de banda (Hz) 30K 30K 1,25M 200K 200K 1,25M 200K 5M 1,25M 1,25M 5M AMPS TDMA CDMA GSM GPRS CDMA-2000 1x (1XRTT) EDGE WCDMA CDMA-2000 1xEVDV CDMA-2000 1xEVDO HSDPA Taxa de transmissão (b/s) ≤ 16,2K ≤ 28,8K ≤ 28,8K ≤ 28,8K ≤ 64K – 144K ≤ 64K – 144K ≤ 384K – 2M ≤ 384K – 2M ≤ 384K – 2M ≤ 384K – 2M ≤ 384K – 10M Tabela B.1 – Evolução da telefonia móvel no Brasil. Outras tecnologias de telefonia celular não utilizadas no Brasil. Geração 1G 2G 2,5G Tecnologia DECT D-AMPS PHS HSCSD Tabela B.2 – Tecnologias não usadas no Brasil. O futuro da tecnologia móvel no Brasil está previsto para 2014, com o SMC de quarta geração. Geração 4G Tecnologia WiMax WiBro iBurst LTE 3GPP LTE 3GPP2 UMB Tabela B.3 – O futuro da telefonia móvel no Brasil. P á g i n a | 126 Abaixo estão apresentadas as operadoras de telefonia móvel no Brasil, sua cobertura e região de atuação. Figura B.1 – Presença das Prestadoras de telefonia móvel (ANATEL, 23/06/2009). P á g i n a | 127 Abaixo o gráfico evolutivo (ao longo dos anos) dos terminas SMC habilitados no Brasil. 31.726 191.402 755.224 1.416.500 2.744.549 4.550.175 7.368.218 1991 1992 1993 1994 1995 1996 1997 1998 46.373.266 34.880.967 6.700 1990 28.745.769 667 1972 23.188.171 150 50.000.000 15.032.698 100.000.000 120.980.103 86.210.336 65.605.577 150.000.000 99.918.621 173.959.368 200.000.000 151.949.077 220.352.712 250.000.000 202.944.033 Terminais habilitados no Brasil 0 1999 2000 2001 2002 2003 2004 2005 Gráfico B.1 - Evolução do número de terminais habilitados no SMC no Brasil (ANATEL, 2011). Ano 1972 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 Terminais habilitados 150 667 6.700 31.726 191.402 755.224 1.416.500 2.744.549 4.550.175 7.368.218 15.032.698 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 Tabela B.4 – Evolução do número de terminais habilitados no SMC no Brasil (ANATEL, 2011). 23.188.171 28.745.769 34.880.967 46.373.266 65.605.577 86.210.336 99.918.621 120.980.103 151.949.077 173.959.368 202.944.033 220.352.712 2006 2007 2008 2009 2010 2011 P á g i n a | 128 ANEXO C Acesso ao Protótipo Abaixo estão os links onde são encontradas as implementações do protótipo apresentado. SERVLet SOTAC-EMobile (via SSH): http://ec2-23-23-199-102.compute-1.amazonaws.com. SERVLet SOTAC-WMobile: http://ec2-23-23-175-86.compute-1.amazonaws.com/SOTAC-WMobile/. MIDLet SOTAC-Mobile (instalação): http://ec2-23-23-175-86.compute-1.amazonaws.com/SOTACWMobile/donwloads/SOTAC-Mobile%20-%20instalacao.rar. Estes host serão mantidos até agosto de 2013, podendo haver extensão deste prazo caso necessário. Também estão disponíveis links para todos os recursos utilizados bem como acesso às planilhas de testes de Breda (2008).