UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL – UNIJUÍ DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS – DCEEng CURSO DE CIÊNCIA DA COMPUTAÇÃO MARTIN ANDRÉ ARNOLD DILL DESENVOLVIMENTO DE SISTEMA WEB PARA MONITORAMENTO RESIDENCIAL E PREDIAL EM TEMPO REAL IJUÍ 2012 MARTIN ANDRÉ ARNOLD DILL DESENVOLVIMENTO DE SISTEMA WEB PARA MONITORAMENTO RESIDENCIAL E PREDIAL EM TEMPO REAL Trabalho de Conclusão de Curso apresentado ao Colegiado de Coordenação do Curso de Ciência da Computação a da Universidade Regional do Noroeste do Estado do Rio Grande do Sul – UNIJUÍ, como pré-requisito parcial para obtenção do título de Bacharel em Ciência da Computação. Orientador: Dr. Paulo Sérgio Sausen IJUÍ 2012 MARTIN ANDRÉ ARNOLD DILL DESENVOLVIMENTO DE SISTEMA WEB PARA MONITORAMENTO RESIDENCIAL E PREDIAL EM TEMPO REAL Trabalho de Conclusão de Curso apresentado ao Colegiado de Coordenação do Curso de Ciência da Computação a da Universidade Regional do Noroeste do Estado do Rio Grande do Sul – UNIJUÍ, como pré-requisito parcial para obtenção do título de Bacharel em Ciência da Computação. ______________________________________ Orientador: Prof. Dr. Paulo Sérgio Sausen BANCA EXAMINADORA ______________________________________ Prof. Msc. Juliano Gomes Weber IJUÍ Dezembro de 2012 AGRADECIMENTOS Primeiramente, agradeço a Deus pela oportunidade de cursar uma ótima universidade, e agora, ao final do curso, poder finalizá-lo com ótimas experiências conhecimento adquirido ao longo da mesma. Agradeço também à minha família por todo o apoio e suporte, não deixando faltar nenhum recurso durante a realização do curso. Agradeço ao amigo Felipe Scherer, que cedeu seu trabalho para que eu pudesse fazer o meu, estendendo-o e melhorando-o. Agradeço ao meu orientador, Paulo Sérgio Sausen, que realizou muito bem seu trabalho, sempre conduzindo o trabalho para o caminho certo, auxiliando com importantes orientações que foram muito importantes para a coesão e implementação do trabalho. Por fim, agradeço ao amigo Regis Schuch, que muito me auxiliou durante a realização do meu trabalho, principalmente nos ajustes finais, agradeço a todos estes no geral, pois sem a ajuda dos mesmos, o trabalho certamente não seria entregue. RESUMO Este trabalho visa desenvolver uma aplicação web de monitoramento, em tempo real, utilizando as melhores opções em tecnologia possíveis, através de um estudo dividido em etapas que visa avaliar cada recurso individualmente, conforme seu propósito. Inicialmente, será apresentada uma contextualização do projeto, explicando sua razão e seus objetivos. Após esta contextualização, serão apresentados os resultados do estudo que conduziu para a escolha das seguintes tecnologias: arquitetura de sistema, linguagem de programação, banco de dados, criptografia e formas de comunicação entre diferentes sistemas. Após a escolha das tecnologias, será apresentada a aplicação de monitoramento desenvolvida, detalhando todas as suas funcionalidades e particularidades do desenvolvimento. Por fim, os resultados e a conclusão serão apresentados. Palavras Chave: Sistema Web, Monitoramento e Web Services. ABSTRACT This work intends to develop a web application real time-based monitoring using the best possible technology options, through a study divided into stages that aims to evaluate each feature individually, according to their purpose. Initially a contextualization of the project will be submitted, explaining its reason and objectives. After this context, will be present the results of the study that lead to the choice of the following technologies: system architecture, programming language, database, encryption and communication forms between different systems. After the choice of technologies, will be presented the developed monitoring application detailing all its features and peculiarities of development. Finally, results and conclusion will be presented. Keywords: System Web, Monitoring and Web Services. LISTA DE FÍGURAS Figura 1. Esquema simplificado do sistema atual. .................................................... 13 Figura 2. Software de automação e monitoramento - Status dos dispositivos. ......... 14 Figura 3. Software de automação e monitoramento - Histórico................................. 15 Figura 4. Esquema simples do sistema de monitoramento com a inclusão do módulo web. ........................................................................................................................... 16 Figura 5. Modelo 3 camadas. .................................................................................... 18 Figura 6. Sistema web representado no modelo de arquitetura em 3 camadas. ...... 19 Figura 7. Estatísticas de Uso do PHP. ...................................................................... 20 Figura 8. Estatística de utilização das linguagens web: Quantidade de Utilização X Quantidade de Tráfego. ............................................................................................ 22 Figura 9. Exemplo de sistema utilizando um Web Service. ....................................... 26 Figura 10. Modelo simples de criptografia. ................................................................ 28 Figura 11. Interface da Aplicação para telas maiores. .............................................. 41 Figura 12. Tela principal da aplicação para dispositivos móveis. .............................. 42 Figura 13. Tela de monitoramento – Lista de dispositivos. ....................................... 43 Figura 14. Tela de Histórico – Últimas dez ocorrências. ........................................... 44 Figura 15. Tela de Relatórios da aplicação Web ....................................................... 45 Figura 16. Tela de autenticação da aplicação de monitoramento web. ..................... 46 Figura 17. Tela inicial da aplicação: Mapa de Dispositivos. ...................................... 48 Figura 18. Histórico de eventos da aplicação de monitoramento. ............................. 49 Figura 19. Formulário para geração de relatórios. .................................................... 50 Figura 20. Exemplo de geração do relatório de ocorrências. .................................... 51 Figura 21. Listagem de Atividades Irregulares. ......................................................... 52 Figura 22. Cadastro de atividades irregulares. .......................................................... 52 Figura 23. Listagem dos dispositivos. ....................................................................... 53 Figura 24. Tela de inserção/edição de um dispositivo. .............................................. 54 Figura 25. Tela de listagem de Tipos de Dispositivos. .............................................. 55 Figura 26. Inserção/edição de um tipo de dispositivo. ............................................... 56 Figura 27. Tela de Dados do Cliente e Alteração de Senha. .................................... 56 LISTA DE TABELAS Tabela 1. Custo de licenças de alguns SGBD’s pagos. ............................................ 24 Tabela 2. Comparativo de Preços entre Entidades Certificadoras . .......................... 29 LISTA DE ABREVIATURAS CSS - Cascading Style Sheets HTML - HyperText Markup Language HTTP - HyperText Transfer Protocol HTTPS - Hypertext Transfer Protocol Secure WSDL - Web Services Description Language UDDI - Universal Description, Discovery and Integration SSL - Secure Sockets Layer SGBD - Sistema Gerenciador de Banco de Dados ASP - Active Server Pages JSP - Java Server Pages PHP - PHP: Hypertext Preprocessor AJAX - Asynchronous Javascript and XML SQL - Structured Query Language PIC - Programmable Interrupt Controller JVM - Java Virtual Machine ISS - Internet Information Services] PDF - Portable Document Format XML - eXtensible Markup Language LAMP - Linux + Apache + MySQL + PHP TCP -Transmission Control Protocol IP - Internet Protocol SOA - Service Oriented Arquiteture RMI - Remote Method Invocation DCOM - Distributed Component Object Model CORBA - Common Object Request Broker Architecture SUMÁRIO INTRODUÇÃO .......................................................................................................... 11 1. CONTEXTUALIZAÇÃO E ESTRUTURA EXISTENTE ....................................... 13 1.1. A PROPOSTA DO MÓDULO DE MONITORAMENTO WEB EM TEMPO REAL ......................................................................................................................15 2. REFERENCIAL TEÓRICO ................................................................................. 17 2.1. A ARQUITETURA DE SISTEMA ................................................................. 17 2.2. A LINGUAGEM DE PROGRAMAÇÃO ......................................................... 19 2.3. O BANCO DE DADOS ................................................................................. 23 2.4. A FORMA DE COMUNICAÇÃO ................................................................... 25 2.5. CRIPTOGRAFIA: A SEGURANÇA DO SISTEMA ....................................... 27 2.6. DEMAIS TECNOLOGIAS WEB ................................................................... 30 2.6.1. HTML ..................................................................................................... 30 2.6.2. CSS ....................................................................................................... 31 2.6.3. Javascript .............................................................................................. 32 3. SISTEMA DE MONITORAMENTO WEB ............................................................ 34 3.1. O MÓDULO DESKTOP................................................................................ 34 3.1.1. Web Service: Cliente ............................................................................. 34 3.2. O MÓDULO WEB......................................................................................... 35 3.2.1. Web Service: Servidor .............................................................................. 35 3.2.2. Modelagem do Banco de Dados ............................................................... 36 3.2.3. Interfaces com o Usuário .......................................................................... 40 3.3. APLICAÇÃO DE MONITORAMENTO.......................................................... 45 3.3.1. Mapa de Dispositivos............................................................................. 46 3.3.2. Histórico e Filtros ................................................................................... 48 3.3.3. Relatórios .............................................................................................. 49 3.3.4. Alertas para Atividades Incomuns ......................................................... 51 3.3.5. Painel de Controle: Cadastros ............................................................... 53 CONCLUSÃO............................................................................................................ 57 REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................... 59 11 INTRODUÇÃO Este trabalho de conclusão de curso é uma extensão do trabalho intitulado ―DESENVOLVIMENTO DE UM SISTEMA DE AUTOMAÇÃO PREDIAL PARA PEQUENAS EDIFICAÇÕES‖. Apresentado em 2010 pelo acadêmico Luís Felipe Scherer e orientado pelo Professor MSc. Maurício de Campos. No trabalho em questão, o acadêmico desenvolveu um sistema de automação capaz de coletar sinais de dispositivos distribuídos por um ambiente e enviá-los para um software em um computador que realizava os processos e monitoramento a nível local. Nos últimos anos, a procura por softwares desktop convencionais veio diminuindo gradativamente. Este fato se deve à recente evolução dos sistemas e aplicativos web, juntamente com a consolidação das tecnologias presentes, que nos permitiram realizar praticamente as mesmas tarefas que vinham sendo utilizadas nos softwares desktop de outrora. Uma das vantagens da utilização destes sistemas e aplicativos é a possibilidade de acesso a partir de qualquer lugar onde haja uma conexão com a Internet, garantindo também ao usuário o acesso a seus dados, permitindo maior grau de mobilidade e facilidade de acesso. Este trabalho estende o projeto inicial a partir do desenvolvimento de um módulo web, em tempo real, deste sistema de automação e monitoramento. Este módulo web resgatará as informações coletadas pelo hardware e software já existentes e tornará possível o monitoramento remoto em qualquer lugar do mundo através de uma conexão com a internet, tanto por um computador quanto por dispositivos móveis (ex.: smartphones e tablets). O restante deste trabalho está organizado da seguinte forma: Na seção 1, será apresentada uma contextualização da estrutura de software e hardware já existente, juntamente com um exemplo que explana a utilização do sistema de automação e monitoramento com a adição do módulo web. A contextualização deste cenário será importante didaticamente e também permitirá melhor entendimento do objetivo do sistema existente e o módulo web. Na seção 2 será apresentado o referencial teórico. Em que será explanada a preparação para o estudo, a análise de tecnologias web para o desenvolvimento deste sistema de monitoramento online, tais como: arquitetura de sistema, 12 linguagem de programação, banco de dados, criptografia e formas de comunicação entre diferentes sistemas. Na seção 3 o módulo de monitoramento online é apresentado, este módulo é subdividido em 2 partes: o módulo desktop, contendo uma aplicação que coleta os dados do software local existente e enviando-os para o segundo módulo. O segundo módulo é a aplicação web que recebe estes dados e os exibe de forma dinâmica na tela através de uma aplicação de monitoramento web. Juntamente com esta aplicação há um painel de controle onde são parametrizados os dados coletados. Por fim serão apresentados a conclusão e os resultados do trabalho. Este trabalho se refere exclusivamente a um projeto de software, para mais detalhes sobre hardware e o projeto físico, consultar em (Scherer, 2010). 13 CONTEXTUALIZAÇÃO E ESTRUTURA EXISTENTE Nesta seção será realizada uma contextualização da estrutura de software e hardware desenvolvidos no trabalho de conclusão do acadêmico Luis Felipe Scherer. Serão apresentados os objetivos e resultados obtidos no trabalho do acadêmico, justificando também o propósito e significado da extensão deste trabalho. A proposta do acadêmico foi o desenvolvimento de um hardware capaz de monitorar diversos dispositivos tais como: sensores, lâmpadas, alarme, controles para acesso, entre outros. Estes dispositivos podem estar distribuídos por um condomínio, prédio ou residência. A leitura da situação destes dispositivos seria realizada em tempo real e centralizada em uma placa de hardware contendo um microprocessador PIC que envia estes dados a um computador através de uma conexão serial. A situação do dispositivo representa seu estado no momento da leitura, neste caso há duas possibilidades: ligado e desligado. Na Figura 1 é apresentado um esquema contendo as partes integrantes do sistema inicial. Figura 1. Esquema simplificado do sistema atual. 14 No momento em que os dados são transferidos para o computador, um software desenvolvido na linguagem de programação C++ realiza a leitura dos mesmos e exibe em uma interface gráfica a situação de cada dispositivo, desde que estes estejam devidamente mapeados no software. Na Figura 2 é possível visualizar a tela de situação de dispositivos. Figura 2. Software de automação e monitoramento - Status dos dispositivos. Neste mesmo software há um histórico da mudança de situação dos dispositivos, em que é possível verificar as mudanças de estado de todos os dispositivos monitorados. Um exemplo de utilização deste recurso é saber exatamente o dia e horário de todas as ocorrências durante um determinado período em que o alarme disparou ou por quanto tempo em determinada noite o alarme esteve desligado. Estas análises são utilizadas para resolver questões de segurança, porém o monitoramento pode servir para outros propósitos. A tela de histórico da mudança dos dispositivos pode ser visualizada na Figura 3. 15 Figura 3. Software de automação e monitoramento - Histórico. 1.1. A PROPOSTA DO MÓDULO DE MONITORAMENTO WEB EM TEMPO REAL Após a explanação do sistema inicial, nesta subseção será apresentada a proposta do desenvolvimento do sistema web. Aqui serão descritos os objetivos do trabalho e serão propostas melhorias que posteriormente serão implantadas no sistema e que conduzirão para a criação do módulo de monitoramento web. O primeiro objetivo que levou à ideia da criação do sistema web foi permitir que os clientes que estão residindo nos locais monitorados possam ter a visão geral do comportamento da sua residência ou prédio, mesmo estando fora de casa. Desde que haja acesso à Internet, será possível verificar a situação de sua moradia. Este aspecto por si só já revela um grande avanço em relação à proposta inicial, pois nela só é possível o monitoramento local. Este objetivo em particular é o mais complexo, pois implica no estudo e seleção de diversas tecnologias para tornar possível a integração entre o módulo local e o módulo web do sistema. Entre elas: a escolha de uma linguagem de 16 programação para a web em que o programa será desenvolvido, um banco de dados para armazenar as informações coletadas, uma forma de comunicação entre estes diferentes locais, uma forma de comunicação segura entre as partes (criptografia) e também aspectos organizacionais, tais como escolha de uma arquitetura de sistema. Na Figura 4 pode ser visualizado um esquema de como o sistema deverá se adaptar para receber o módulo web. Figura 4. Esquema simples do sistema de monitoramento com a inclusão do módulo web. O sistema Web também terá como objetivo, através da análise dos dados capturados, analisar e detectar comportamentos irregulares, pois estará armazenando um histórico das atividades. Um exemplo de atividade irregular seria o desligamento do alarme no período entre 23h da noite e 06h da manhã do dia seguinte. O terceiro objetivo do sistema web será criar diferentes interfaces de usuário, tais como interfaces para smartphones e tablets, e não apenas computadores pessoais. Isto possibilitará melhor usabilidade em diferentes plataformas, visto que em telas menores muita informação dificulta a visão e interação do usuário. Isto é incomum em computadores convencionais com telas maiores, em que mais informações e opções gráficas mais avançadas podem ser agregadas ao sistema para melhorar o entendimento. 17 2. REFERENCIAL TEÓRICO Nesta seção serão apresentadas as tecnologias e ferramentas utilizadas para o desenvolvimento e validação do módulo de monitoramento web. Atualmente há inúmeras opções de tecnologias para se desenvolver um sistema web. Há diversas formas de organização (arquitetura de sistema), linguagens de programação, bancos de dados e comunicação entre sistemas. É necessário então um estudo mais aprofundado das tecnologias, para que o software seja desenvolvido com as ferramentas que mais se adequam ao estilo e propósito do sistema, que podem ser os mais diversos. 2.1. A ARQUITETURA DE SISTEMA Segundo (BOOCH et. al., 1999), arquitetura de sistema é ―O conjunto de decisões significativas sobre a organização de um sistema de software, a seleção dos elementos estruturais e as suas interfaces em que o sistema é composto, em conjunto com o seu comportamento, tal como especificado nas colaborações entre esses elementos, a composição destes elementos estruturais e comportamentais em subsistemas progressivamente maiores, e o estilo arquitetônico que guia esta organização - esses elementos e suas interfaces, suas colaborações e sua composição‖. Escolher uma arquitetura de sistema é importante, pois quando é utilizada, está se fazendo a organização fundamental de um sistema, incorporada em seus componentes, suas relações com os outros sistemas e os princípios que regem a sua concepção e evolução (HILLARD, 2000). Existem diversas arquiteturas de sistemas que podem ser utilizadas para se conceber um software, cada uma delas apresenta vantagens e desvantagens para cada caso. Para este sistema web, a arquitetura a ser utilizada é o ―modelo 3 camadas‖ (MICROSOFT GUIDE, 2010). Nesta arquitetura, o software é dividido em três camadas distintas que comunicam-se entre si. A primeira camada é Aplicação, esta é responsável pela 18 interação do usuário com o sistema, pode-se dizer que esta é a parte visual do sistema, as telas. Na segunda camada, estão as regras de negócio, nesta parte há todas as regras que regem o funcionamento do software, ou seja, todas os serviços que fazem o sistema funcionar. A terceira camada é chamada de ―Camada de persistência‖, a persistência se refere à persistência de dados, esta camada é responsável por armazenar e buscar os dados coletados pelo sistema ou necessários para o funcionamento do mesmo, pode ser chamada também de camada de dados. Na Figura 5 é ilustrado o modelo 3 camadas e suas partes integrantes (MICROSOFT GUIDE, 2010). Figura 5. Modelo 3 camadas (Microsoft Dynamics Nav). A vantagem da utilização de um modelo 3 camadas neste sistema é que se for necessário realizar ajustes ou até mesmo substituir uma camada inteira, as outras camadas permanecerão intactas e o sistema funcionará normalmente, pois estas serão independentes entre si. Um exemplo de troca de camada seria a substituição de um sistema gerenciador de banco de dados por outro, com mais recursos. É possível também reaproveitar o código das demais camadas para se desenvolver um sistema multi-canal (acessado por vários meios ou plataformas). 19 Neste trabalho serão desenvolvidas duas camadas de apresentação para o sistema web: A principal para telas grandes (computadores e tablets) e a segunda para se adaptar a telas menores, por exemplo: smartphones. Utilizando o modelo de 3 camadas será necessário desenvolver apenas uma nova camada de apresentação, as regras de negócio e camada de persistência continuam intactas e são totalmente reaproveitadas sem qualquer modificação. Outra vantagem é a possibilidade de integração com outras aplicações, pela comunicação mais acessível à camada de regras de negócio e banco de dados. Na Figura 6 pode ser visualizada arquitetura do sistema de monitoramento web utilizando o modelo 3 camadas. Figura 6. Sistema web representado no modelo de arquitetura em 3 camadas. 2.2. A LINGUAGEM DE PROGRAMAÇÃO Várias propriedades das linguagens de programação devem ser analisadas ao escolher a que melhor se adapta ao propósito do sistema a ser desenvolvido. Alguns destes aspectos são: ● Simplicidade: O quão simples é escrever os comandos na sintaxe da linguagem para se fazer um programa; 20 ● Portabilidade: Propriedade que permite utilizar o mesmo software para ser executado em diferentes plataformas (sistemas operacionais); ● Compatibilidade: Possibilidade de integração da linguagem com diversas tecnologias, como por exemplo, bancos de dados ou Web Services; ● Segurança: O quão a linguagem está vulnerável a ataques e invasões; ● Documentação: Suporte que a linguagem oferece para consulta sobre seus métodos e recursos. Neste trabalho, um estudo com as linguagens de programação para a web mais populares foi realizado, entre elas ASP, JSP e PHP. A linguagem que se destacou e foi escolhida para o desenvolvimento do módulo web foi a linguagem PHP. A seguir serão explicados os motivos da escolha. O PHP: Hypertext Preprocessor é uma das linguagens para web mais utilizadas no mundo (PHP, 2008). Sua popularidade se deve à facilidade em criar aplicações dinâmicas com suporte à maioria dos bancos de dados existentes e ao conjunto de funções que, por meio de uma estrutura flexível de programação, permitem desde a criação de simples portais até complexas aplicações de negócio. (DALL'OGLIO, 2007) Na Figura 7 pode ser visualizado um gráfico com a evolução da utilização do PHP nos servidores web, na figura em questão mostra que desde 2000 o número de domínios que está utilizando PHP aumentou consideravelmente e este se mantém estável. Figura 7. Estatísticas de Uso do PHP (php.net). 21 Sob o aspecto da simplicidade, PHP é uma linguagem com um modelo de desenvolvimento muito simples. O propósito original do PHP era desenvolver rapidamente aplicações para a Web sem qualquer treinamento preliminar. Isto foi tão bem sucedido que todas as principais empresas de hospedagem oferecem pacotes de hospedagem para aplicações PHP. Além disso, o PHP possui duas sintaxes, a estruturada e a orientada a objeto, que permite ao desenvolvedor a liberdade de escolher o estilo de programação que mais lhe é vantajosa. Em relação à portabilidade, a linguagem está disponível para quase todos os sistemas operacionais. A abordagem técnica do PHP é idêntica a uma Máquina Virtual Java (JVM). É necessário apenas instalar o PHP na máquina servidor e o aplicativo irá funcionar imediatamente, sem reescrever código, não importa qual sistema operacional está sendo utilizado. A linguagem PHP está disponível para utilização nos dois servidores de páginas mais utilizados atualmente: Apache e Microsoft ISS. O PHP possui bibliotecas nativas para acesso aos principais SGBDs do mercado, entre eles: MySQL, PostgreSQL, Oracle e SQL Server. Possui bibliotecas nativas para desenvolvimento de Web Services SOAP, permite criar documentos das mais diversas extensões, tais como documentos de texto, PDFs, Planilhas eletrônicas, XML entre outros. A plataforma PHP não teve nenhum alerta de segurança em vários anos, atualmente é a plataforma mais confiável para desenvolvimento de aplicações e web sites. A documentação é muito ampla, todas as funções e bibliotecas suportadas pela linguagem estão disponíveis no site oficial (http://php.net), a linguagem é aperfeiçoada e mantida por cerca de mil engenheiros e a comunidade de desenvolvedores que utilizam PHP é de aproximadamente 4,5 milhões de usuários. Na Figura 8 podem ser vistos mais alguns detalhes sobre a natureza da utilização do PHP, pode-se observar que o mesmo está liderando sob o aspecto da quantidade de utilização. 22 Figura 8. Estatística de utilização das linguagens web: Quantidade de Utilização X Quantidade de Tráfego. Ao analisar as propriedades da linguagem de programação PHP, concluiu-se que esta é a mais adequada para o desenvolvimento do módulo web, pois neste sistema deverão ser utilizados diversas tecnologias para que o desenvolvimento do mesmo seja possível, entre elas um SGBD e um Web Service a serem escolhidos posteriormente, como o PHP já suporta nativamente estes recursos, o uso desta linguagem é apropriado. Em relação às questões de segurança, o sistema web a ser desenvolvido deve ter um cuidado especial, pois estará trabalhando com dados sigilosos, como a linguagem está estável a muitos anos e possui uma equipe de desenvolvimento grande, a linguagem garante a segurança necessária para o sistema. A questão da portabilidade também é importante, pois um dos objetivos da criação deste sistema web é o acesso em diversos dispositivos em diferentes plataformas, por ser uma linguagem de execução no lado do servidor, não importa qual plataforma está sendo utilizada. Desde que haja uma aplicação que permita a navegação na internet, o sistema poderá ser acessado. O PHP oferece vantagens também para o desenvolvedor, que contará com uma sintaxe simples e uma extensa documentação e comunidade de desenvolvedores. Com estes recursos a disposição, o desenvolvimento se torna 23 facilitado, além de possuir nativamente diversos recursos que mais tarde serão necessários para o desenvolvimento do sistema. 2.3. O BANCO DE DADOS Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a estes dados. O conjunto de dados, comumente chamado de banco de dados, contém, por exemplo, informações sobre uma empresa em particular. O principal objetivo de um SGBD é proporcionar um ambiente conveniente e suficiente para a recuperação e armazenamento das informações do banco de dados (KORTH, 1999). Um SGBD faz mais do que simplesmente gravar e acessar dados, se fosse apenas isso, uma aplicação poderia fazê-lo através de um gerenciamento de arquivos simples. Um SGBD possui diversos recursos transparentes ao utilizador que garantem que não haja inconsistências e redundâncias nos dados, dificuldade no acesso, problemas de integridade, também implementam questões de segurança relacionados ao acesso aos dados e gerenciam acessos concorrentes (KORTH, 1999). Nesta seção será explanada a escolha do SGDB que tem como objetivo a gravação dos dados coletados pelo sistema de monitoramento local e que serão utilizados para consulta e análise no módulo web. Existem diversos produtos de SGBDs disponíveis no mercado atualmente, cada qual com suas características que os tornam melhores em alguns casos e piores em outras ocasiões sob a ótica do desempenho e recuperação de dados. Entre os mais utilizados estão: PostgreSQL, Oracle, Microsoft SQL Server e MySQL. O foco deste trabalho está mais relacionado à aplicação em si e não a forma de armazenamento e recuperação das informações. Tendo isso como base, não seria necessário um banco de dados demasiadamente robusto, pois a aplicação, não estará trabalhando com um grande volume de dados. Neste caso, a melhor opção de SGBD para o módulo web de monitoramento é o SGBD MySQL. 24 O MySQL é um SGBD livre de custo e de código aberto. No início da sua história, o MySQL enfrentou muitas críticas devido a sua falta de suporte a recursos básicos dos SGBDs, tais como chaves estrangeiras e sub-consultas. Porém, nos últimos anos, o MySQL tornou-se banco de dados mais popular do mundo pelo seu alto desempenho, alta confiabilidade e facilidade de uso. (CONVERSE, 2004) É também o SGBD de escolha para uma nova geração de aplicativos que utilizam o LAMP (Sigla da combinação: Linux + Apache + MySQL + PHP / Perl / Python). Muitas das maiores organizações e de mais rápido crescimento do mundo, incluindo Facebook, Google, Adobe, Alcatel Lucent e Zappos encontraram no MySQL uma forma de economizar tempo e dinheiro ligando seus web sites, sistemas críticos de negócio e pacotes de software (MySQL, 2012). Uma das vantagens para a escolha deste SGBD foi a sua ampla disponibilidade nos servidores de hospedagem web, praticamente todos os servidores trabalham com o MySQL em conjunto com a Linguagem PHP. Outra vantagem de utilização é o custo zero, ou seja, o MySQL é livre de custo, ao contrário de outros SGBDs como Oracle, SQL Server e DB2. Na Tabela 1 pode-se verificar o custo de manutenção de alguns SGBDs pagos do mercado. Tabela 1. Custo de licenças de alguns SGBD’s pagos. SGBDs Custo pela licença (em Reais) Oracle Standard (para 1 processador) R$ 35.000,00 Microsoft SQL Server (para 1 processador) R$ 3.500,00 O SGBD é nativo para as 3 plataformas mais utilizadas em servidores: Unix, Linux e Windows. Também não é necessária compatibilidade específica com algum servidor web específico, o PHP se encarrega de integrar ambas as partes. MySQL é o padrão de fato para sites de alto tráfego web pelo seu mecanismo de consulta de alto desempenho, capacidade de inserção de dados otimizado, e um forte apoio para as funções especializadas da web como pesquisas rápidas em textos longos (MySQL, 2012). Por fim, a vantagem da utilização do MySQL para este trabalho advém da escolha da linguagem de programação anterior, o PHP. A linguagem PHP e o MySQL foram praticamente desenvolvidos para trabalharem juntos, a união destas duas ferramentas faz com que os softwares obtenham maior desempenho e 25 agilidade. Por fim, a estabilidade deste SGBD é comprovada, não há grandes mudanças de versão para versão, fazendo com que este seja fácil de se trabalhar. (CONVERSE, 2004). 2.4. A FORMA DE COMUNICAÇÃO Nesta seção serão apresentados os conceitos envolvendo formas de comunicação entre diferentes plataformas e justificada a escolha por uma tecnologia específica. O sistema de monitoramento local e o módulo web estarão sendo executados em locais distantes fisicamente, ou seja, fora do alcance de uma rede local. O primeiro estará instalado em um computador no local monitorado e o outro estará em um servidor na web que poderá ser acessado em qualquer local. As plataformas em que foram desenvolvidas estes dois módulos são distintas, o sistema local foi desenvolvido na linguagem C++ para o sistema operacional Windows e o sistema web local será desenvolvido em PHP que é uma linguagem exclusiva para web. Para realizar uma conexão bem sucedida entre os dois módulos é necessária uma tecnologia que utilize um padrão de comunicação. Este padrão deve ser suportado em ambas as linguagens e que possa ser facilmente configurado. Sabendo disso, uma pesquisa foi feita para verificar quais meios de comunicação poderiam ser utilizados para interligar estes dois módulos. Uma opção seria realizar uma conexão TCP/IP padrão, que está disponível nativamente em praticamente todas as linguagens de programação de alto nível, porém esta opção é de difícil implementação. Para que esta opção seja bem sucedida o sistema deveria reconhecer as mensagens enviadas e tratá-las para que o programa entenda o que deve fazer e então chamar os métodos responsáveis. Além disso, a comunicação entre estas duas tecnologias que teria que ser configurada manualmente. Na pesquisa concluiu-se que a melhor opção para comunicação entre os módulos seria a utilização de um Web Service. Um Web Service é um conjunto de funções empacotas, entidades independentes que estão publicadas na web para outros programas utilizarem. 26 A tecnologia de Web Services oferece um modelo de programação para a criação de aplicações distribuídas que utilizam padrões abertos. A arquitetura utiliza padrões da Internet como HTTP, XML e SOAP (Simple Object Acess Protocol) e introduz novos conceitos e tecnologias, tais como Arquitetura Orientada a Serviços (SOA), Universal Description, Discovery and Integration (UDDI), e Web Services Description Language (WSDL) (SONERA PLAZA, 2002). A tecnologia de Web Services foi escolhida porque a linguagem de programação PHP, que será utilizada para o desenvolvimento do módulo web e a Linguagem de programação C++ utilizada no desenvolvimento do sistema local possuem suporte nativo para desenvolvimento de Web Services com o protocolo SOAP, que será o padrão utilizado para a comunicação entre os módulos. SOAP é um protocolo leve para troca de informações em um ambiente distribuído. É um protocolo de comunicação, diferente de um sistema de computação distribuída como RMI, DCOM ou CORBA, que são protocolos específicos para uma linguagem. SOAP é independente do modelo de programação, plataforma ou de transporte usado para trocar as mensagens SOAP, e sua sintaxe é baseada em XML. Na Figura 9 pode ser visualizado um exemplo de funcionamento de um Web Service SOAP. Figura 9. Exemplo de sistema utilizando um Web Service. (http://www.oficinadanet.com.br/) Neste exemplo, a aplicação local da esquerda está invocando um método de um web service em um sistema remoto, esta comunicação acontece web utilizando HTTP através do protocolo SOAP. Depois que o método é processado, uma resposta é enviada para a aplicação com o resultado da solicitação. Também é 27 possível perceber que o web service se divide em duas partes: servidor e cliente, sendo o servidor responsável por abrigar e disponibilizar os métodos e o cliente que irá utilizar estes métodos. O funcionamento do Web Service no sistema de monitoramento web será realizado da mesma forma: No módulo web (servidor do Web Service) serão criadas e abrigadas as funções que irão receber os dados vindos da aplicação local e que irão fazer a análise e armazenamento destes dados. Este conjunto de funções serão métodos, que estarão disponíveis para execução pela aplicação local (cliente). O web service, ao receber uma requisição, irá processar os dados e enviará uma resposta para o sistema local informando que mais dados podem ser enviados ou, em caso de erro, o que está acontecendo de errado. Outro motivo que conduziu à escolha desta tecnologia foi a facilidade na implementação e disponibilização de novos métodos para a aplicação local. A publicação de um novo método é transparente, basta desenvolver o método no servidor e automaticamente o método estará disponível para acesso na aplicação cliente, não sendo necessária modificação no código da aplicação local. Além da facilidade de utilização, uma questão importante é a segurança. A tecnologia de web services está apta a implementar um sistema de proteção aos dados que estão trafegando sobre o protocolo SOAP. Isso é necessário devido à questão que envolve o sigilo dos dados captados. Na próxima seção o assunto de criptografia aos dados será explanada. 2.5. CRIPTOGRAFIA: A SEGURANÇA DO SISTEMA Criptografia é um meio de aprimorar a segurança de uma mensagem ou arquivo embaralhando o conteúdo de modo que ele só possa ser lido por quem tenha a chave de criptografia correta para desembaralhá-lo. Por exemplo, ao comprar algo em um site, as informações da transação (como endereço, número de telefone e número do cartão de crédito) normalmente serão criptografadas para ajudar a mantê-la segura (MICROSOFT BRASIL, 2012). 28 Na Figura 10 pode-se observar um fluxo de informação utilizando criptografia, onde a mensagem é criptografada antes de ser enviada, e descriptografada na chegada ao seu destindo, impedindo que seja lida durante seu percurso. Figura 10. Modelo simples de criptografia. Neste sistema serão aplicadas duas formas de criptografia, essas criptografias possuem o mesmo objetivo: proteger os dados que trafegarem pela Internet. A primeira será responsável pela proteção da aplicação web em si, que fará a comunicação com o utilizador do sistema, protegendo os dados enviados pela aplicação ao navegador do cliente, a tecnologia utilizada será a SSL (Secure Socket Layer). Já a segunda criptografia tratará de proteger os dados enviados através do web service, no sentido da aplicação web service local (cliente) para a aplicação web (servidor), a resposta do servidor para a aplicação não será necessária, pois este estará enviando apenas uma confirmação de recebimento dos dados, neste caso será utilizada um algoritmo criptográfico secreto. O SSL é uma tecnologia de proteção ao trafego de dados mais utilizada na Web. Praticamente todos os sistemas web ou web sites que necessitam ter uma proteção aos dados que enviam aos clientes utilizam este tipo de criptografia. Isto permite que os dados enviados não sejam entendidos por outras máquinas na rede, senão a real utilizadora do serviço. O SSL utilizado neste sistema web será o Módulo do servidor de páginas Apache denominado OpenSSL, uma solução que implementa o algoritmo de forma gratuíta e já é nativa do servidor. Utilizando o OpenSSL e fazendo com que o cliente 29 sempre utilize uma conexão segura através do protocolo HTTPS, é possivel implementar a comunicação de forma segura, porém apenas isso não basta. Para a aplicação que recebe os dados se certificar que a aplicação que está os enviando os dados é a verdadeira, ou seja, que não há nenhuma máquina estranha enviando dados falsos para o receptor é necessário que, a aplicação no servidor (neste caso o sistema web) utilize um certificado digital válido. Um certificado digital é um documento eletrônico que visa atestar a identidade do seu titular (usuário ou instituição, como bancos e lojas de comércio eletrônico), em documentos ou e-mails digitalmente assinados, em navegação na internet ou em operações online, inclusive sigilosas. Ao ser instalado no computador e usado em uma dessas ações pelo titular, por meio de software capaz de operá-lo, o certificado dá garantias dessa identidade, ou de privacidade, para as partes envolvidas (REZENDE, 2005). Após a certificação, que, em tese, prova que a aplicação do servidor é a original, os dados podem ser transmitidos, mas caso a identidade não seja comprovada, o navegador de internet bloqueará o tráfego dos dados a não ser que o cliente utilizador deseje conectar no serviço mesmo assim, adicionando uma exceção de segurança. Para obter o certificado digital válido, é necessário que a aplicação do servidor compre-o de uma entidade certificadora. Esta entidade vai gerar um certificado válido e garantirá que este não está sendo usado por aplicações mal intencionadas, assegurando trafego seguro à aplicação web e também aos utilizadores. Neste trabalho não serão utilizados certificados digitais, devido ao seu alto valor e estar em fase inicial, porém caso a aplicação seja utilizada por clientes reais em um futuro próximo, a aplicação deverá fazer uso de um. Na Tabela 2 podem-se observar alguns valores em dólares de certificados digitais oferecidos pelas mais populares entidades certificadoras da internet (WhichSSL, 2012). Tabela 2. Comparativo de Preços entre Entidades Certificadoras (WhichSSL ,2012). Entidade Certificadora Verisign GeoTrust COMODO Valor do Certificado $ 234,00 $ 118,00 $ 64,95 Validade do Certificado 1 Ano 1 Ano 1 Ano 30 Para a comunicação entre o web service do módulo local com o módulo web será utilizado um algoritmo criptográfico secreto. A tecnologia SSL também poderia ser utilizada para esta conexão, porém a utilização desta faz com que a aplicação perca desempenho no envio dos dados, pois leva um tempo considerável para criptografar e descriptografar as mensagens. Além da conexão SSL será utilizada autenticação por meio de sessões, uma forma fundamental e simples de implementar a segurança, através de um controle de acesso utilizando usuario e senha. Para que a conexão seja mais rápida entre as partes, um algoritmo criptográfico menos complexo pode ser utilizado, visto que os dados, mesmo que interpretados, não podem ser compreendidos em sua totalidade, pois estes não estão associados aos dispositivos no momento do envio. A aplicação cliente do web service apenas envia um vetor de elementos numéricos que só faz sentido unindo estes valores com as informações que estão contidas no servidor, que possui a segurança SSL. 2.6. DEMAIS TECNOLOGIAS WEB Ao criar um sistema web são utilizadas algumas tecnologias que são essenciais para que o desenvolvimento se inicie. Estas tecnologias já estão consolidadas e são utilizadas praticamente em todos os sistemas desenvolvidos especialmente para a web. Estas tecnologias são o HTML, CSS e Javascript. 2.6.1. HTML Para publicar informação de distribuição global, é preciso uma linguagem de compreensão universal, um tipo de publicação de língua materna que todos os computadores podem potencialmente entender. A linguagem de publicação utilizada na Internet é HTML (HyperText Markup Language) (W3C, 2012). HTML dá aos autores a possibilidade de: Publicar documentos on-line com títulos, textos, tabelas, listas, fotos, etc; 31 Recuperar informações on-line através de links de hipertexto, com o clique de um botão; Projetar formas para a realização de transações com serviços remotos, para uso na busca de informações, reservas ou encomenda de produtos; Incluir videoclipes, músicas e outras aplicações diretamente em seus documentos. O HTML é uma linguagem de marcação, baseada em XML, é o padrão utilizado por todas as páginas de internet que existem, para se publicar algo na web, é necessário que seja feito através de um documento/página HTML. Isto significa que apenas escolher uma linguagem de programação e utilizá-la para desenvolver um sistema web não basta. É necessário utilizar o HTML para padronizar as informações que serão exibidas na tela e também dar forma ao sistema. A linguagem de programação PHP está diretamente ligada ao HTML, pois a linguagem, ao ser executada, gera documentos HTML que serão as telas do sistema. Atualmente a versão 5 do HTML ainda está em desenvolvimento, portanto será utilizada a última versão já estável e suportada pelos principais navegadores de Internet. Esta versão é o HTML 4.1. 2.6.2. CSS O CSS (Cascading Style Sheets) é um mecanismo simples para adicionar estilo (por exemplo, fontes, cores, espaçamentos) aos documentos web. É possível desenvolver um sistema sem usar estilos, porém sistemas muito básicos, sem cores nem formas personalizadas. O CSS é utilizado para personalizar e destacar as informações presentes em um documento HTML, ou seja, dá forma e desenvolve a interface com o usuário do sistema (W3C, 2012). No caso deste trabalho serão desenvolvidos dois estilos, o primeiro para computadores desktop, com telas maiores, o segundo para dispositivos móveis com acesso à internet, que por consequência possuem telas menores. É dada extrema importância à interface de utilização do sistema porque esta cumpre a tarefa essencial de acertar a devida importância para cada informação 32 presente na tela, como a forma de acesso ao sistema será destas duas formas distintas, é necessário que se destaque de forma diferenciada as informações para cada tipo de dispositivo, melhorando o aproveitamento do sistema objetivando a fácil utilização do mesmo. 2.6.3. Javascript Javascript é a linguagem de programação do tipo script mais popular do mundo. É a linguagem padrão utilizada para interação em páginas Web, mas também é amplamente usado por aplicativos de desktop, aplicativos de telefonia móvel, e servidores de internet. O Javascript, diferentemente do PHP, é executado na máquina do cliente (utilizador de sistema) e não no servidor (disponibilizador do sistema), o que lhe permite realizar funções que não são possiveis pelo PHP, como, por exemplo, detectar a resolução da tela do computador em que está sendo utilizado um sistema web, esta informação o PHP não consegue capturar, pois não está sendo executado na máquina do utilizador, mas sim em um servidor (W3C, 2012). O javascript será utilizado neste sistema para requisitar novas informações sobre o monitoramento em intervalos de tempo determinado. Como o sistema de monitoramento é em tempo real, as informações precisam ser atualizadas constantemente. É possivel atualizar estas informaçoes sem a utilização desta linguagem de script, porém há uma diferença. Sem usar o Javascript é necessário atualizar toda a página para requerer novas informações, isso significa ter de carregar novamente, além das novas informações, todas as imagens, estilos e demais componentes do documento HTML. Isto gera uma lentidão no sistema e não constitui uma interface fluída de navegação, o que prejudicaria muito a utilização do sistema. Com javascript, apenas as novas informações podem ser recuperadas através de requisições assíncronas (AJAX) e o fluxo de dados se torna muito menor e a atualização dos dados do sistema se dá de forma transparente, como uma aplicação desktop tradicional. 33 O Javascript também será utilizado para detectar informações sobre o cliente utilizador, como, por exemplo, em que tipo de máquina o sistema está sendo executado (computador ou dispositivo móvel) e assim aplicar o estilo adequado para cada cliente. Além disso o Javascript é utilizado para dar mais dinamismo ao sistema, projetando animações com imagens ou componentes do sistema. 34 3. SISTEMA DE MONITORAMENTO WEB Nesta seção será apresentado o sistema de monitoramento web, descrevendo todos os seus detalhes de desenvolvimento. O sistema será descrito em duas subseções, a primeira apresentará detalhes sobre o módulo do sistema desenvolvido para a parte local do sistema, responsável pelo controle e envio dos dados para a aplicação web, que será descrita na segunda subseção e que será responsável pela análise e exibição dos dados coletados. 3.1. O MÓDULO DESKTOP O módulo desktop do sistema possui uma função simples, porém essencial para o funcionamento da aplicação. Os dados que estão sendo capturados pelo sistema local de monitoramento necessitam ser enviados para o servidor web, onde estará rodando a aplicação que será responsável pela análise e exibição destes dados. A função deste módulo desktop é enviar, através de um web service, os dados que foram coletados pelo hardware presente no local monitorado. Para isso, foi necessário adaptar e reescrever parte da aplicação cliente já existente, adicionando uma chamada para o web service do módulo web. 3.1.1. Web Service: Cliente Para desenvolver o Web Service na aplicação local é necessário utilizar uma biblioteca em C, que realiza conexões e interage com web services remotos. A biblioteca utilizada para desenvolvimento se chama GSoap, esta não é nativa na linguagem C, mas basta importá-la para o arquivo principal da aplicação local para fazer uso da mesma. 35 A partir do momento em que o código da aplicação reúne todos os sinais dos dispositivos em um vetor, a chamada de web service é adicionada, enviando os sinais de todos os dispositivos coletados, juntamente com a identificação do cliente o qual está os enviando e também a data e a hora do envio. O Web Service se encarrega de enviar os dados e receber uma resposta de confirmação que garante que os dados chegaram com sucesso. Inicialmente o código foi escrito sem uma Thread, porém ao perceber que, se a conexão com o servidor falhasse por um momento, a aplicação travaria, pois estaria esperando a resposta do Web Service. Constatando esta falha, foi criada uma Thread para enviar os dados, assim caso a conexão falhasse, a aplicação continuaria funcionando normalmente, um marcador foi adicionado à interface da aplicação para exibir se o web service estava conectado ao servidor, baseado na resposta obtida. Este marcador pode ser observado na Figura 3, localizado à direita da aplicação, se chamando Net Conectado. Quando conectado exibe uma cor vermelha, ao desconectar exibe uma cor cinza. No caso da figura a aplicação encontra-se desconectada do Web Service. 3.2. O MÓDULO WEB Nesta seção são descritos todos os detalhes de implementação do módulo web, contendo o Web Service servidor, o banco de dados e a aplicação de monitoramento web. 3.2.1. Web Service: Servidor O Web Service do servidor é responsável pela captura dos dados enviados pelo Web Service cliente e a interpretação dos mesmos, tendo como responsabilidade a análise dos dados e a geração do histórico, juntamente com a gravação da situação atual no banco de dados. Ao receber novos dados através da função ―RecebeDados‖ do Web Service, a primeira tarefa do servidor é identificar qual cliente está os enviando, já que o 36 sistema comporta múltiplos clientes. Esta verificação é realizada através da consulta à primeira posição do vetor de dados recebido, que carrega o identificador único do cliente. Ao identificar o cliente, a função verifica quais dados foram alterados desde o último envio. Esta verificação é realizada para saber quais dispositívos alteraram a sua situação. Após identificar alterações, as posições alteradas são consultadas na tabela de dispositivos para verificar quais dispositivos estão ativos e se os dispositivos cadastrados ativos possuem a opção ―Gerar Histórico‖, esta opção é utilizada para definir quais deles, ao alterarem seus Status, gerarão ou não uma nova atividade no histórico. Isto é interessante para destacar alguns dispositivos mais importantes, tais como o alarme ou a sirene, e desconsiderar alterações em lâmpadas, por exemplo. Se um dispositivo possui a opção ―Gerar Histórico‖, uma nova entrada no histórico é criada, contendo a data de envio dos dados, qual dispositivo teve seu status alterado e qual foi a alteração realizada. Neste caso só há dois tipos de alteração: de Ligado para Desligado, ou de Desligado Para Ligado. Ao analisar a situação de todos os dispositivos, a situação atual é gravada no banco de dados como última situação válida, que será utilizada para comparar com novos dados que o Web Service estará recebendo. Este processo se repete a cada novo envio, caracterizando um loop infinito, em que os dados são recebidos, processados, e uma confirmação é enviada ao cliente para que este possa enviar novos dados. O envio de dados pela aplicação cliente é realizado em um intervalo menor que 2 segundos, então a situação atual pode ser considerada como tempo real. E a atualização dos dados na aplicação é instantânea, exibindo ao cliente o status dos dispositivos de seu local monitorado há apenas alguns segundos atrás. 3.2.2. Modelagem do Banco de Dados Nesta subseção é apresentada a modelagem lógica de banco de dados da aplicação de monitoramento web. O projeto é composto por 6 tabelas: Sinais, 37 Descrição dos Sinais, Clientes, Histórico, Tipos de Dispositivos e Atividades Irregulares. Tabela Sinais Nesta tabela é armazenada a situação atual de cada cliente em um registro único, que é constantemente atualizada pelo Web Service. SINAIS Chave Atributo Tipo de Dado Tamanho Observações DATAHORA timestamp @ - Chave primária CLIENTE # caractere 50 Chave estrangeira da tabela Clientes VALORES caractere 1000 A modelagem foi realizada desta forma porque se fossem utilizadas chaves estrangeiras para todos os dispositivos, em múltiplos registros, a cada segundo centenas de atualizações de registros deveriam ser feitas, fazendo com que o sistema se tornasse lento, ao obter todos os dados em um só registro, seu uso se torna muito mais eficiente. Tabela Descrição de Sinais Nesta tabela é realizada a associação de um dispositivo cadastrado no sistema com a posição no vetor recebido de um cliente, ou seja, apenas a partir deste momento é possível identificar qual sinal pertence a qual dispositivo. DESC_SINAIS Chave Atributo @ CLIENTE @ NUM_SINAL DESC_SINAL # Tipo de Dado Tamanho Observações Inteiro 10 Chave primária Inteiro 10 Chave primária caractere 100 Chave Estrangeira de Tipo TIPO_DISP inteiro 10 de Dispositivo GERA_HISTORICO caractere 1 sim ou não (0 ou 1) ATIVO caractere 1 Ativo ou inativo Posição na planta da POS_PLANTA caractere 20 aplicação web. Nesta tabela estão todas as informações de cada dispositivo, a qual cliente ele pertence, qual sua posição no vetor de dados do cliente, seu nome, tipo de 38 dispositivo, se suas mudanças de estado geram histórico ou não, se o dispositivo está sendo utilizado ou está desativado e também qual sua posição na planta do cliente utilizada na aplicação web na tela de monitoramento do sistema. Tabela Clientes Nesta tabela são armazenadas as informações sobre os clientes do sistema, informações tais como número de identificação, nome completo, login de utilização, senha de acesso e nível de acesso. CLIENTES Chave Atributo @ ID_CLI @ NOME_CLI USERNAME PASSWORD NIVEL_ACESSO Tipo de Dado Tamanho Observações Inteiro 10 Chave primária caractere 10 Chave primária caractere 100 caractere 10 Senha Criptografada caractere 1 Total ou parcial (1 ou 0) Nesta tabela são armazenadas apenas as informações utilizadas pelo sistema a respeito dos seus clientes, informações completas estarão sendo armazenadas em outros sistemas. O nível de acesso define se o usuário pode ou não controlar seus dispositivos, cadastrálos ou alterá-los, normalmente os usuários padrão vêm com acesso apenas parcial, pois não há necessidade de alteração dos dados e esta será feita pela administração do sistema. Tabela de Histórico Nesta tabela ficam armazenadas todas as ocorrências de mudança de estado dos dispositivos, nela são registradas a data e a hora da mudança, qual dispositivo sofreu a alteração, a qual cliente pertence o dispositivo e qual foi o tipo de evento registrado. 39 HISTORICO Chave Atributo @ ID DATAHORA # CLIENTE # Tipo de Dado Tamanho Observações Inteiro 10 Chave primária timestamp Inteiro 10 Chave estrangeira de Clientes Chave estrangeira de Descrição de DISPOSITIVO Inteiro 10 Dispositivos EVENTO caractere 1 0 ou 1 O tipo de evento registrado representa se o dispositivo alterou seu status de Desligado para Ligado (1), ou de Ligado para Desligado (0). Tabela Tipos de Dispositivos Nesta Tabela é cadastrado apenas um descritivo dos tipos de dispositivos existentes no sistema, para que, quando forem necessários novos tipos, estes possam ser cadastrados e utilizados sem que haja necessidade de alteração no sistema. TIPO_DISPOSITIVO Chave Atributo Tipo de Dado Tamanho Observações @ ID Inteiro 10 Chave primária DESCRICAO Caractere 50 Atualmente no sistema há quatro tipos de dispositivos cadastrados e utilizáveis: Lâmpadas, Sensores, Alarmes e Sirenes. Tabela Atividades Irregulares Nesta tabela são armazenadas informações a respeito de dispositivos que, se determinadas regras cadastradas acontecerem, por exemplo, acendimento de uma lãmpada de madrugada, o sistema gerará um alerta de atividade irregular. Na tabela são armazenadas o cliente e dispositivo ou tipo de dispositivo que gerará o alarme, a hora inicial e final do acontecimento, a mensagem que será exibida na tela e para qual mudança de estado a atividade se configure como irregular (ex: ligar, desligar ou os dois). 40 ATIVIDADES_IRREGULARES Chave @ # # # Atributo ID ID_CLI ID_DISP ID_TIPO_DISP HORA_INICIO HORA_FIM MENSAGEM ESTADO Tipo de Dado Tamanho Observações Inteiro 10 Chave primária Inteiro 10 Chave Estrangeira Cliente Inteiro 10 Chave Estrangeira Descrição Dispositivos Inteiro 10 Chave Estrangeira Tipo Dispositivos Tempo Tempo Caractere 255 Caractere 1 Apenas (0,1,2) 3.2.3. Interfaces com o Usuário Nesta subseção são apresentadas as duas interfaces com o usuário desenvolvidas para a aplicação. Será dada maior ênfase para a interface para dispositivos móveis, pois na próxima seção que apresentará a aplicação em seu funcionamento, serão exibidas as telas da interface com o usuário para a aplicação para computadores e notebooks. A aplicação para dispositivos móveis tem o intuito de trazer uma visão mais agradável da aplicação web para telas menores, partindo deste princípio, alguns recursos da aplicação para telas maiores foram removidos para que a informação melhor se adequasse na tela e não deixasse a visualização da aplicação poluída, exibindo apenas as informações mais importantes. Isto não significa que a interface para telas grandes não possa ser carregada pelos dispositivos móveis, pelo contrário, se o cliente optar por utilizar a interface padrão para computadores, basta trocar de interface através de um link disponível na aplicação. A maioria dos dispositivos modernos com sistemas operacionais já suportam os recursos mais avançados dos navegadores, então é possível visualizar a interface normal, porém com limitação de tamanho de tela que pode trazer eventuais encômodos. Na Figura 11 pode-se observar a interface para telas maiores. 41 Figura 11. Interface da Aplicação para telas maiores. Na tela da Figura 11, que é a tela inicial da aplicação, percebe-se que são utilizados diversos recursos gráficos com imagens para representar os dispositivos monitorados, por isso a necessidade da criação de uma interface especial para os dispositivos menores, pois com uma tela pequena, os dispositivos ficam dificeis de se observar, e o histórico de eventos e os filtros do histórico ficam de difícil visualização, por estarem com uma letra muito pequena. Levando estes fatos em consideração, decidiu-se recriar a interface para se adequar às telas menores, esta nova interface foi desenvolvida e pode ser visualizada na Figura 12. 42 Figura 12. Tela principal da aplicação para dispositivos móveis. Na Figura 12 percebemos que a interface é diferente de uma aplicação web convencional, se parece e se comporta tal qual uma aplicação para disposivos móveis, com menos informações, botões maiores e simples navegação, nesta versão para dispositivos móvies o usuário tem acesso ao monitoramento dos dispositivos, o histórico e também à alguns relatórios. Na tela de monitoramento, o usuário pode visualizar uma lista de todos os dispositivos monitorados ativos e, ao lado de cada dispositivo, uma miniatura representando o tipo de dispositivo e também seu estado, nesta lista é possível filtrar por nome de dispositivo para ser de mais simples localização. Os dados são atualizados em tempo real sem necessidade de atualização da página. Na Figura 13 é possível visualizar a tela de monitoramento. 43 Figura 13. Tela de monitoramento – Lista de dispositivos. Na tela do histórico, o usuário pode visualizar as últimas 10 ocorrências de mudanças de estado dos dispositivos, trazendo uma lista com o nome do dispositivo, o tipo de evento (ativou ou desativou) e o horário da ocorrência, esta lista também é atualizada em tempo real sem a necessidade de atualização. Na Figura 14 é possível visualizar a tela de histórico da aplicação para dispositivos móveis. 44 Figura 14. Tela de Histórico – Últimas dez ocorrências. Como a tela de histórico mostra apenas os últimos registros da aplicação, é necessária uma funcionalidade para recuperar informações do passado, sobre determinados dispositivos, em determinados horários. Para isso a funcionalidade de histórico foi criada, objetivando recuperar estas informações e trazer relatórios sobre o comportamento dos dispositivos em um determinado intervalo de tempo, a tela de relatórios pode ser visualizada na Figura 15. 45 Figura 15. Tela de Relatórios da aplicação Web 3.3. APLICAÇÃO DE MONITORAMENTO Nesta seção será apresentada a aplicação de monitoramento, desenvolvida na linguagem PHP, instalada em um servidor remoto, que obtêm os dados do banco de dados MYSQL, alimentado pelo Web Service instalado no mesmo servidor. Por se tratar de um sistema que exige autenticação do usuário, ao abrir a aplicação de monitoramento em um navegador de internet, a tela de autenticação é apresentada. A aplicação como um todo utiliza navegação segura (HTTPS), então a partir deste ponto, desde o envio das credenciais do usuário até quando este abandonar o sistema, os dados que transitarão entre o utilizador da aplicação e o servidor estão protegidos por criptografia de alto nível. Na Figura 16 pode ser visualizada a tela de autenticação. 46 Figura 16. Tela de autenticação da aplicação de monitoramento web. Cabe salientar que o sistema de monitoramento é multi-cliente, então diversos clientes podem se conectar, ilimitadamente, à aplicação de monitoramento e receber dados, estando limitados apenas à velocidade de conexão de sua Internet e também à capacidade de processamento do servidor da aplicação. As credenciais são informadas para o cliente pelo e-mail oficial da aplicação no momento do cadastro, e caso a senha seja perdida, por segurança, deve-se solicitar nova senha por e-mail ou entrar em contato diretamente com o administrador de sistema, para garantir a identidade do cliente que está solicitando a nova senha e não se trate de um usuário mal intencionado. 3.3.1. Mapa de Dispositivos Ao se conectar a aplicação, a tela principal é apresentada, nela, as informações de mais destaque estão no mapa de dispositivos. Nesta tela, é 47 apresentada uma planta baixa do local monitorado, cada cliente possui uma planta que é carregada no momento da autenticação. Nesta planta são carregados os dispositivos que estão sendo monitorados pela aplicação web, estes ficam posicionados na planta simulando a sua localização de fato do local monitorado. Há diferentes e intuitivas formas de exibição dos dispositivos conforme o seu tipo (por exemplo, uma lâmpada), bem como seu estado atual, que pode ser ligado ou desligado. Estas informaçoes são carregadas a partir da tabela de descrição dos dispositivos. Quando um dispositivo muda seu estado, o mesmo ocorre com o indicativo na planta baixa no mesmo momento. Isto faz com que o cliente perceba exatamente quando ocorreu a mudança e qual o local aproximado onde tal evento ocorreu, esta forma de visualização permite que o usuário tenha uma visão geral do local monitorado, percebendo facilmente o que está ocorrendo com cada dispositivo e qual o local em que o mesmo se encontra. Estes dados são atualizados de segundo em segundo, conforme dados enviados pelo web service da aplicação local, que fica encarregado pelo envio dos mesmos, um indicativo à direita da tela informa qual a data e a hora da última atualização, para que, caso o web service local perca temporariamente a sua conexão, o cliente perceba que a situação que está vendo no mapa dos dispositivos não é a mais atual, mas sim a do último dado recebido no passado. Porém, ao possuir uma conexão estável a aplicação flui as informações normalmente podendo ser considerada uma aplicação de monitoramento em tempo real. Na Figura 17 pode-se observar um exemplo de mapa de dispositivos com alguns dispositivos pré-cadastrados. 48 Figura 17. Tela inicial da aplicação: Mapa de Dispositivos. 3.3.2. Histórico e Filtros O histórico é outra importante ferramenta presente na tela inicial da aplicação de monitoramento. Em tempo real são atualizadas, segundo a segundo, as últimas atividades envolvendo dispositivos que possuem a opção de gerar histórico marcada em seu registro. No mesmo momento em que chegam os dados do estado atual dos dispositivos no mapa, o histórico também é atualizado, exibindo e registrando os fatos ocorridos para que estes não se percam quando a aplicação for fechada. A lista de histórico exibe os últimos 10 eventos registrados pela aplicação, os dados apresentados são o dispositivo que teve seu estado alterado, qual foi a mudança e também a data e a hora desta mudança. Este recurso conta ainda com opções de filtragem dos dados, para que o cliente possa observar mudanças específicas nos dispositivos, os filtros disponíveis atualmente são: 49 Filtro por Dispositivo; Filtro por Estado. No primeiro é possivel filtrar o histórico para exibir apenas as entradas de um determinado tipo de dispositivo, como por exemplo apenas Lâmpadas, por padrão a opção Todos os Dispositivos vem selecionada. No segundo filtro é possivel filtrar eventos do histórico por estado, por exemplo, apenas quando dispositivos foram ligados ou ativados, por padrão, a opção ―Todos os Estados‖ vem selecionada. Com estes dois filtros é possivel fazer combinações de eventos específicos para selecionar melhor o que o cliente deseja ver. Na Figura 18 é possivel observar o Histórico na aplicação de monitoramento com dados de exemplo. Figura 18. Histórico de eventos da aplicação de monitoramento. 3.3.3. Relatórios A tela de monitoramento mostra um pequeno histórico contendo apenas os últimos acontecimentos do local monitorado. Então é necessário que exista uma funcionalidade que possa recuperar mais informações do passado em qualquer 50 tempo sobre o monitoramento e também que possa filtrar essas ocorrências por dispositivo ou estado para que os dados possam ser mais bem selecionados. Para suprir essa necessidade a funcionalidade de relatórios foi desenvolvida. Na tela de relatórios é escolhido o intervalo de datas e horário inicial e final em que as ocorrências aconteceram, podendo também optar pela data inicial ―desde sempre‖, que representa a data da primeira ocorrência, ou também a data final ―até agora‖ que representa a data da última ocorrência registrada. Ao escolher o intervalo de tempo, é possivel escolher também o histórico de ocorrências de um dispositivo específico, ou pode-se deixar selecionada a opção ―todos‖, que recuperará ocorrências de todos os dispositivos. Por fim, pode ser escolhido o estado das ocorrências, ou seja, se os dispositivos foram ativados ou desativados, por padrão, o relatório recuperará os dois casos. Na Figura 19 é possível observar a tela de formulário do relatório. Figura 19. Formulário para geração de relatórios. Após gerar o relatório enviando o formulário, as ocorrências são exibidas em uma nova tela, como forma de tabela. Uma tabela exemplo de resultados pode ser visualizada na Figura 20. 51 Figura 20. Exemplo de geração do relatório de ocorrências. 3.3.4. Alertas para Atividades Incomuns A identificação de atividades irregulares é uma importante funcionalidade do aplicativo web de monitoramento. O objetivo desta funcionalidade é destacar e identificar possíveis atividades estranhas acontecendo nos locais monitorados, através da analise individual do histórico de ocorrências. Uma situação que pode ser usada para explanar essa funcionalidade seria definir que uma atividade irregular é o alarme de um local monitorado que dispara num horário determinado da madrugada, porém em nem todos os locais isso pode ser considerado irregular, portanto para cada local pode-se definir, através de um cadastro, o que pode ser considerada uma atividade irregular. Para cadastrar uma atividade irregular deve-se acessar o link "Configurações" presente no topo da aplicação web. Acessando o link "Atividades Irregulares" o usuário poderá observar as atividades cadastradas sendo listadas, para serem editadas ou excluídas e tendo também a opção de adicionar novas atividades. Na Figura 21 é possível observar a tela de listagem das atividades irregulares. 52 Figura 21. Listagem de Atividades Irregulares. Para Cadastrar uma nova atividade, deve-se definir qual o dispositivo ou tipo de dispositivo que será alvo de análise das atividades irregulares, qual o horário em que o evento ocorre que fará este ser considerado uma atividade irregular, qual o tipo de evento (Ativar, Desativar ou Ambos), e também uma mensagem personalizada, que será exibida quando a atividade do histórico for validada como irregular. Na Figura 22 pode-se visualizar a tela de cadastro das Atividades Irregulares. Figura 22. Cadastro de atividades irregulares. 53 3.3.5. Painel de Controle: Cadastros O painel de controle da aplicação web, que é última subseção desta seção sobre a aplicação Web e também do Projeto, apresenta as telas administrativas do sistema. Estas telas são utilizadas pelo administrador da aplicação para gerenciar os dispositivos de cada cliente, são basicamente os cadastros de dispositivos e alertas. Para acessar a parte administrativa do sistema, deve-se clicar no link ―Configurações‖ no topo direito da tela, próximo ao link de saída do sistema. Como os dispositivos dos locais monitorados podem ser instalados após a implantação do sistema, ou até mesmo alguns dispositivos fiquem com defeito e não possam mais ser utilizados, é necessário um cadastro dos mesmos para mantê-los sempre atualizados. Na Figura 23 podemos visualizar a tela de listagem dos dispositivos. Figura 23. Listagem dos dispositivos. Na Figura 23, podemos visualizar a lista com todos os dispositivos cadastrados no sistema e algumas informaçoes sobre eles, tais como seu identificador, que é a posição do vetor de dados recebida pelo web service cliente, a descrição do dispositivo, seu tipo e se este gera eventos de histórico ou não. Os dispositivos podem ser basicamente incluídos, editados e excluídos nesta listagem. Para inserir um novo dispositivo, deve-se clicar em ―novo dispositivo‖, que será exibido um formulário em branco para a inserção dos dados do novo 54 dispositivo. Para editar um dispositivo existente, deve-se clicar na descrição do dispositivo, e um formulário contendo os dados atuais do dispositivo será exibido para que as informações sobre ele possam ser modificadas. Por último, se um dispositivo não existe mais, ele pode ser excluído, clicando no botão excluir respectivo ao dispositivo desejado. Na Figura 24 pode-se visualizar a tela de cadastro/edição de um dispositivo. Figura 24. Tela de inserção/edição de um dispositivo. Na Figura 24, pode-se observar a tela de edição do primeiro dispositivo cadastrado, nela são informadas: a identificação do dispositivo (posição do vetor), a descrição do mesmo, qual o tipo de dispositivo, que é uma caixa de seleção dinâmica que carrega as opções cadastradas de tipos de dispositivos, a opção de gerar histórico (sim ou não), se o dispositivo está ativado, ou seja, está aparecendo na tela de monitoramento e a posição do dispositivo na planta. A posição do dispositivo na planta representa o local em que o dispositivo será carregado na planta na aplicação para computadores, esta posição é capturada através de um clique na imagem da planta, ao clicar na posição, um script recupera as coordenadas do clique e adiciona na caixa de texto para que a posição seja gravada no banco de dados, e posteriormente, o dispositivo possa ser carregado na tela de monitoramento. A tela de inserção de um dispositivo é exibida da mesma forma, porém com as informações em branco, para a criação de um novo dispositivo. No painel de 55 controle também há a opção de um cadastro dos tipos de dispositivos, para que, caso um novo tipo seja instalado no local monitorado, este possa ser adicionado à aplicação sem necessidade de manutenção no código. A tela de cadastro de Tipos de Dispositivos é semelhante à tela de Dispositivos, e pode ser visualizada na Figura 25. Figura 25. Tela de listagem de Tipos de Dispositivos. A sistemática para o gerenciamento dos tipos de dispositivos é a mesma da tela de dispositivos, para inserir basta clicar em ―Novo Tipo de Dispositivo‖, para editar deve-se clicar na descrição do dispositivo desejado, e por último, se o objetivo é excluir um tipo de dispositivo não mais usado, basta clicar no botão excluir respectivo. A tela de inserção/edição de um tipo de dispositivo é realmente simples, como o identificador do tipo de dispositivo é gerado automaticamente pelo SGBD, a única informação a ser inserida/editada é a descrição do tipo de dispositivo. Esta tela pode ser visualizada na Figura 26. 56 Figura 26. Inserção/edição de um tipo de dispositivo. Por fim, para completar a parte administrativa dos cadastros, há a tela dos dados do cliente. Esta tela apenas é utilizada para visualizar alguns dados e alterar a senha do cliente, caso seja necessário por alguma questão de segurança. Para utilizá-la basta clicar no link ―Dados do Cliente‖ no menu dos cadastros, digitar a nova senha duas vezes e enviar o formulário, se a senha foi validada corretamente, a senha será substituída. A tela de Dados do Cliente pode ser visualizada na Figura 27. Figura 27. Tela de Dados do Cliente e Alteração de Senha. 57 CONCLUSÃO Com este trabalho pôde-se compreender e aprender com profundidade as tecnologias web existentes e mais utilizadas atualmente, para que o desenvolvimento de um software de monitoramento fosse realizado com as melhores opções possíveis, através de um estudo detalhado. Entre essas tecnologias destacam-se: linguagens de programação, sistemas gerenciadores de banco de dados, servidores de aplicações web, as linguagens utilizadas para se trabalhar com as páginas web (HTML, CSS e Javascript). A oportunidade de trabalhar e estudar com formas de comunicação entre diferentes plataformas, utilizando web services, no aplicativo proposto e desenvolvido propiciou conhecimento de diversas linguagens de programação, e uma forma padronizada e amplamente utilizada para comunicação entre estas plataformas. Utilizando diversas técnicas de segurança, tais como criptografia e certificados digitais, pode-se entender como trabalhar com segurança de dados e aplicações, garantindo que os dados que trafegam entre servidor e cliente não sejam capturados e compreendidos, aumentando significativamente a segurança do sistema. Conhecendo as arquiteturas de sistemas amplamente utilizadas para se desenvolver softwares e escolhendo uma para ser a base de desenvolvimento de um aplicativo web, conclui-se que é necessária a utilização da mesma, para que as funções do aplicativo estejam bem separadas e organizadas em módulos, o que facilita a manutenção e expansão. Com relação aos sistemas gerenciadores de bancos de dados, pode-se perceber a importância de analisar diversos produtos, a fim de escolher não o sistema mais robusto, mas sim o que trará o melhor custo benefício para o sistema, levando em consideração os fatores custo de licença e utilização, robustez e grau de complexidade de utilização. Ao desenvolver o sistema, pode-se testar e validar o funcionamento de cada função e tela, fazendo com que a utilização do mesmo pelos usuários finais se torne mais facilitada e menos suscetível a falhas. Aproveitando os conhecimentos adquiridos ao em tecnologias web, pode-se desenvolver mais de uma interface com o usuário, que visa facilitar o uso dependendo da plataforma em que o mesmo é 58 acessado, visto que um sistema web pode ser acessado também por smartphones e tablets atualmente, visto que os navegadores destes dispositivos evoluíram consideravelmente. Por fim, ao término do desenvolvimento e da validação dos serviços e aplicativos, o sistema se comportou bem e não teve falhas graves, cumprindo o que lhe foi proposto. O monitoramento online via internet facilita e auxilia muito os utilizadores da tecnologia, pois não necessitam mais estar no local monitorado para consultar os eventos ocorridos ou a situação atual do local, isto pode ser realizado através de um equipamento com navegador instalado. A interface que foi melhorada consideravelmente, juntamente com as funções agregadas ao sistema, que antes não existiam, tais como o mapa de dispositivos e os relatórios, abriram um leque de possibilidades para visualização e consulta de eventos com relação ao monitoramento e ao histórico de eventos. 59 REFERÊNCIAS BIBLIOGRÁFICAS BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. The UML Modeling Language User Guide. 2nd Edition. [S.l]. Addison-Wesley. 1999. CONVERSE, T.; PARK J.; MORGAN C. PHP 5 e MySQL A Bíblia. [S.l.:S.n]. 4 p. 2004. DALL'OGLIO, P. PHP Programando com Orientação a Objetos: Inclui Design Patterns. 1 ed. São Paulo: Novatec, 576 p. 2007. HILLARD, R. IEEE-std-1471-2000: Recommended Practice for Architectural Description of Software-Intensive Systems. [S.l]. IEEE, http://standards.ieee.org/. 2000. KORTH, H.F.; SILBERCHATZ, A.; S. SUDARSHAN. Sistema de bancos de dados. São Paulo — SP, Brasil: Makron Books. 1999. MICROSOFT BRASIL. O que é Criptografia? Disponível em: <http://windows.microsoft.com/pt-BR/windows7/What-is-encryption>. Acesso em 16 de setembro 2012. MICROSOFT GUIDE. Microsoft Application Architecture Guide. 2nd Edition. 2010. Disponível em: <http://www.microsoft.com/architectureguide>. Acessado em: 26 agosto de 2012. MySQL. Why MySQL. Disponível Acessado em 03 de setembro 2012. em: <http://www.mysql.com/why-mysql/>. PHP. PHP White Paper. The Irish PHP User Group (2008). Disponível em: <http://www.php.ie/f/PHPWhitePaper.pdf>. Acessado em 26 de agosto 2012. 60 REZENDE, P. O que é um Certificado Digital? (2005). Disponível on-line em: <http://www.cic.unb.br/~pedro/trabs/certdigital.html>. Acesso em 17 de setembro 2012. SONERA PLAZA. Web Services White Paper (2002). Disponível em: <http://www.medialab.sonera.fi/workspace/WebServicesWhitePaper.pdf>. Acessado em 05 de setembro 2012. SCHERER, F. L. Desenvolvimento de um Sistema de Automação Predial para Pequenas Edificações (2010). IJUÍ – RS. 2010. W3C. W3C Consortium. Cascading Style Sheets (CSS). Recommendation 7 June 2011. Disponível em: <http://www.w3.org/TR/CSS21/>. Acessado em 10 de setembro 2012. W3C. W3C Consortium. HTML 4.01 Specification. Recommendation 24 December 1999. Disponível em: < http://www.w3.org/TR/REC-html40/>. Acessado em: 10 de setembro 2012. W3SCHOOLS. W3C Consortium. Javascript Tutorial. Disponível em: <http://www.w3schools.com/js/js_intro.asp>. Acessado em 10 de setembro 2012. WhichSSL. SSL Cert Comparison, SSL Certification Price Comparison. Disponível em: <http://www.whichssl.com/comparisons/price.html>. Acesso em 17 de setembro 2012.