• Nenhum resultado encontrado

DESENVOLVIMENTO

No documento Checks (páginas 73-93)

Após o processo de levantamento de requisitos, modelagem de casos de uso, modelagem dinâmica e modelagem da infraestrutura, a próxima etapa é o desenvolvimento do sistema proposto.

Este capítulo tem como objetivo explanar sobre o processo de construção do sistema proposto, descrevendo as ferramentas utilizadas no desenvolvimento do sistema, fazendo um breve histórico do desenvolvimento, abrangendo problemas e soluções encontradas, realizar a apresentação das telas e a validação do sistema.

6.1 FERRAMENTAS TECNOLÓGICAS

A escolha de ferramentas que auxiliam o desenvolvimento de um sistema pode ser influenciada pela preferência pessoal ou pelas limitações específicas do cenário (LUTZ; ASCHER, 2004, p. 29).

As ferramentas escolhidas para o desenvolvimento do sistema proposto, apresentadas a seguir, foram selecionadas tanto por escolha pessoal quanto por limitações ou características do sistema. Uma relação das ferramentas utilizadas pode ser vista na figura 23.

Figura 23 - Ferramentas tecnológicas.

A seguir, será feito uma breve descrição de cada uma das ferramentas utilizadas.

6.1.1 PHP

PHP é uma linguagem de scripting, que é interpretada por um servidor Web. Não é fortemente tipada e possui suporte a classes, permitindo programação orientada a objetos. Fornece suporte a diversos bancos de dados e acesso simples a dados vindos de formulários HTML, o que a torna excelente para desenvolvimento de sistemas para Web (SEBESTA, 2010, p.122). O conhecimento prévio da autora sobre a linguagem influenciou a escolha.

6.1.2 Yii Framework

Um framework de aplicações web é um conjunto de arquivos com código-fonte organizados estruturalmente. Esses arquivos são usado para o desenvolvimento rápido de aplicações web. São estruturas como aplicativos, implementados em partes, onde é possível estender e transformá-los, para que adquiram forma de acordo com suas necessidades (POREBSKI; PRZYSTALSKI; NOWAK, 2011, p. 2).

Além da rapidez no desenvolvimento, outra vantagem dos frameworks é a elegância no código e a minimização do risco de erros de programação. Frameworks estão em conformidade com o princípio Don't Repeat Yourself (DRY), o que significa que eles possuem todas as partes lógicas codificadas apenas uma vez e em um só lugar. Esta regra impede a duplicação de código, especialmente o copiar-e-colar. Isso facilita a manutenção do código e evita erro. Geralmente, frameworks promovem a reutilização do código e de outras boas práticas de programação, o que é ótimo para os programadores que não possuem conhecimento suficiente ou para os que não são disciplinados a cuidar da qualidade do código (POREBSKI; PRZYSTALSKI; NOWAK, 2011, p. 2).

Para o sistema proposto, foi escolhido o Yii Framework, a escolha desse framework foi feita por preferência da autora em conhecer uma nova plataforma de desenvolvimento, diferente das que ela já conhecia.

O Yii foi criado por um desenvolvedor de Prado e segue muitas das suas convenções. Yii é muito rápido (levando vantagem na maioria dos benchmarks), é extensível, modular e estritamente orientado a objetos. Possui um rico conjunto de características e documentação decente. Não utiliza nenhuma configuração especial, de modo que não é necessário saber nada além de PHP orientado a objetos para poder usá-lo. Além disso, ao contrário de muitos outros frameworks, ele segue a arquitetura MVC (Model-View-Control) pura (POREBSKI; PRZYSTALSKI; NOWAK, 2011, p. 12).

6.1.3 Eclipse

Eclipse é um ambiente de desenvolvimento integrado, utilizado para desenvolver aplicativos em diversas linguagens, desenvolvido em novembro de 2001, é utilizado mundialmente, podendo ser executado nos sistemas operacionais mais populares, exigindo apenas a instalação prévia do Java, utilizando pouco mais de 300MB em disco e 512MB de memória RAM (BURNETTE, 2006, p. 11-12).

Foi escolhido como ambiente de desenvolvimento por exigir pouco recurso da máquina e se integrar bem às outras ferramentas utilizadas no desenvolvimento do sistema proposto.

6.1.4 Git

Sistemas de controle de versão auxiliam no desenvolvimento de aplicativos, pois permitem ao desenvolvedor visualizar as diversas versões de um arquivo, recuperá-las, compará-las e modificá-las, tendo controle total dessas mudanças. Também permite a realização de desenvolvimento em paralelo, trabalhando em duas ou mais versões de um

mesmo arquivo, podendo realizar a mesclagem desses arquivos ao final das modificações (SIEVER et al., 2006, p. 729).

Git é um sistema de controle de versão, gratuito e de código livre distribuído, ele foi escolhido como ferramenta de apoio ao desenvolvimento do projeto devido ao conhecimento prévio por parte da autora e pela fácil integração com as outras ferramentas de desenvolvimento.

6.1.5 Bootstrap

Bootstrap é uma coleção gratuita de ferramentas para a criação de websites e aplicações que utilizem HTML, CSS e JavaScript extensões opcionais. Bootstrap é usado por grandes empresas e startups também (FERGUSON; HEILMANN, 2013, p. 335, tradução nossa).

Algumas das características do Bootstrap (FERGUSON; HEILMANN, 2013, p. 335, tradução nossa) são:

x possui uma configuração da tipografia de todo o aplicativo;

x usa um sistema de grade para layout das páginas e apoia projeto ágil; x inclui estilos para elementos HTML, como formulários, botões e tabelas; x oferece ícones embutidos;

x fornece componentes de interface de usuário reutilizáveis.

Para o desenvolvimento do sistema proposto foi utilizado o Bootstrap para que as telas do sistema fiquem com as mesmas características, reduzindo o tempo gasto em desenvolvimento de estrutura e implementação de layout.

6.1.6 NGINX

Nginx é um servidor HTTP de alto desempenho e proxy reverso, gratuito e de código aberto, é também um servidor proxy de IMAP/POP3. Foi lançado em 2004, e oito anos

após, seu lançamento o Nginx já hospedava mais de 12% dos sites ativos em todo o mundo. Ele é conhecido pelo seu alto desempenho, estabilidade, conjunto de funcionalidades, configuração simples e pelo baixo consumo de recursos (NGINX, 2013, tradução nossa).

Pelo conhecimento prévio por parte da autora e pela facilidade de configuração, o Nginx foi a solução escolhida para o sistema proposto.

6.1.7 VirtualBox

VirtualBox possui um conjunto de ferramentas para auxiliar na criação de um ambiente virtualizado, ele é executado sobre um sistema operacional já instalado, integrando os componentes da máquina física com a máquina virtualizada. Do ponto de vista da máquina virtualizada, o hardware é real, no entanto, isso só é possível graças a um conjunto de hardware genérico que o VirtualBox possui (SIQUEIRA, 2010, p. 13).

O VirtualBox foi escolhido como parte integrante do ambiente de teste, pois, conforme dito anteriormente, a aplicação será executada em nuvem, fazendo com que o hardware não seja uma preocupação. A possibilidade de construir três máquinas virtualizadas dentro de um mesmo computador auxiliou o desenvolvimento do sistema proposto.

6.1.8 Gearman

Gearman é um sistema que cria filas de processos baseado em rede, foi desenvolvido a fim de processar grandes volumes de tarefas. Ele tem como principais características a execução de funções remotas com baixa latência, sendo capaz de executar códigos remotamente e, em paralelo, realizando, assim, o balanceamento de carga dos processos e dando suporte a componentes escritos em linguagens de programação distintas, como Ruby, Perl, PHP, Python, C, C + + e Java (EWART, 2013, tradução nossa).

O Gearman possui basicamente três elementos principais: client, server e o worker. Cada elemento possui uma função conforme descrito a seguir (EWART, 2013, tradução nossa):

x Client: requisita ao server tarefas a serem realizadas;

x Server: aceita as tarefas vindas do client e as encaminham ao worker; x Worker: executa a tarefa.

As tarefas podem ou não ter um retorno, caso a tarefa possua retorno, o worker envia esse retorno para o server que encaminha o retorno para o client.

A figura 24 apresenta uma visão geral do fluxo descrito anteriormente dentro de uma aplicação web. No exemplo visto, o client, pode ser tanto o PHP quanto o Gearman UDF.

O Gearman MySQL UDF (User Defined Functions, funções definidas pelo usuário) permite que consultas em MySQL possam atuar como um client. Dessa forma, é possível executar consultas não apenas na máquina local, mas em qualquer máquina que possua um worker, distribuindo, assim, o uso do processador e/ou memória (GEARMAN, 2013, tradução nossa).

As funções podem ser executadas em segundo plano, podem ser executadas em paralelo e também para requisitar workers a partir de uma consulta MySQL (GEARMAN, 2013, tradução nossa).

Figura 24 - Aplicação web, utilizando o Gearman

A estrutura apresentada, na figura 24, é muito semelhante a que foi utilizada no sistema proposto, a distribuição de processamento e por trabalhar com múltiplas plataformas fez com que o Gearman fosse escolhido para auxiliar nos processos de monitoramento de serviços e envio de alertas.

6.2 HISTÓRICO DE DESENVOLVIMENTO

O método utilizando para auxiliar o desenvolvimento do sistema proposto foi baseado na metodologia Scrum. Segundo Pressman (2011, p. 95-96), Scrum é um método de desenvolvimento ágil de software que auxilia as atividades de desenvolvimento, utilizando conjuntos de padrões de processo de software. Esses padrões são eficazes em projetos que possuem prazos de entrega reduzidos. Cada padrão possui um conjunto de ações a serem desenvolvidas, são eles:

x Backlog: é uma listagem dos requisitos ou funcionalidades que o sistema possui, essa listagem pode ser alterada ao longo do processo de desenvolvimento;

x Sprints: são conjuntos de atividades realizadas para atingir um ou mais itens do Backlog, limitado por um prazo;

x Reuniões Scrum: são reuniões que atualizam a equipe do que está sendo feito, que problemas foram encontrados e o que será feito até a próxima reunião.

O desenvolvimento do sistema foi feito em cinco sprints. Durante a primeira sprint, foi realizada a modelagem do banco de dados, após a modelagem do banco de dados, foi configurado o ambiente de desenvolvimento.

A configuração do ambiente de desenvolvimento partiu da criação de uma máquina virtual no VirtualBox, a instalação e configuração do Nginx, Percona XtraDB Cluster e Yii Framework. Posteriormente, foi realizada a integração do Yii com o Bootstrap. Durante a primeira sprint, também foram realizados testes com o Gearman e MySQL Event Scheduler.

A segunda sprint englobou apenas atividades de desenvolvimento, foi realizado o desenvolvimento do cadastro de usuário, perfil e serviço.

Na terceira sprint, foram desenvolvidas as regras de acesso aos módulos, o controle de sessão do usuário através do banco e testes de replicação dos dados.

Na quarta sprint, foram desenvolvidas as atividades para o monitoramento e alerta de indisponibilidade dos serviços cadastrados. A figura 25 apresenta um modelo de como o módulo de monitoramento e o módulo de alerta se comportam.

O monitoramento: o MySQL Event Scheduler, atuando como um client, faz uma requisição ao Gearman, atuando como um server, que transfere essa requisição ao PHP cURL, atuando como worker, o cURL verifica os serviços e devolve os dados ao server que encaminha para o client.

Figura 25 - Fluxo de dados de monitoramento e alerta.

Fonte: A autora (2013).

O alerta: o MySQL Event Scheduler, atuando como um client, faz uma requisição ao Gearman, atuando como um server, que transfere essa requisição ao PHP Mailer, atuando como worker, o PHP Mailer envia os alertas necessários e devolve os dados ao server que encaminha para o client.

Além dos dois módulos já citados, nessa sprint, também foi desenvolvido o módulo de gráficos e o módulo de relatórios de entrega de alertas. A quinta e última sprint englobou as tarefas de implantação do sistema no ambiente final.

6.3 APRESENTAÇÃO DO SISTEMA

A seguir, são ilustradas as telas da ferramenta de checagem e monitoramento de sistemas online, bem como uma breve descrição de suas funcionalidades.

A figura 26 apresenta a tela de login do sistema, o usuário deve entrar com seu login ou email e sua senha e concluir a ação, clicando em “Login”, ou ele pode, através do link “Cadastra-se”, ir para a página de cadastro de usuário.

Figura 26 - Tela de login

Fonte: A autora (2013).

Caso o usuário esqueça sua senha, ele pode clicar em “Esqueceu a senha?” e ser redirecionado para a tela de recuperação de senha.

A tela de recuperação de senha pode ser visualizada na figura 27, para que o usuário recupere sua senha, ele deve entrar com seu email ou login e concluir a ação, clicando em “Restaurar”.

Figura 27 - Tela de recuperação de senha

Fonte: A autora (2013).

Após a ação de solicitação de nova senha, o sistema envia um email ao usuário com um link que o redireciona para um novo formulário com os campos necessários para que o usuário crie uma nova senha.

A figura 28 apresenta o formulário de cadastro de um usuário. Todos os campos que possuem um asterisco em vermelho são campos obrigatórios. Além dos campos com dados do usuário, há também o campo de verificação para impedir cadastros automatizados. Figura 28 - Tela de registro de usuário

Após preencher o formulário corretamente e clicar em “Cadastre-se”, o sistema enviará um link de ativação de cadastro ao usuário, após clicar no link de ativação, o usuário será direcionado para a tela de confirmação de ativação de cadastro.

Após fazer o login no sistema, o usuário poderá acessar aos dados da sua conta, através do item “Minha Conta” existente no menu. O usuário poderá visualizar seus dados, conforme a figura 29.

Figura 29 - Tela de dados do usuário

Fonte: A autora (2013).

Além de visualizar seus dados, o usuário pode editá-los através do link “Editar”, nessa tela de edição é apresentado um formulário idêntico ao formulário de registro presente na figura 29.

O usuário pode alterar sua senha através do link “Alterar senha” e, por fim, remover sua conta através do link “Remover conta”.

Figura 30 - Tela de listagem de perfil criado pelo do usuário

Fonte: A autora (2013).

Através do link “Criar Perfil”, o usuário poderá criar perfis para associar a serviços e alertas, ele é redirecionado para um formulário que solicita o nome do perfil. Na listagem, além dos perfis cadastrados, é possível visualizar os botões de visualizar, alterar e apagar um perfil, também aparece um campo para busca de um perfil por nome.

A figura 31 apresenta a tela de cadastro de serviço, os campos que possuem um asterisco em vermelho são campos obrigatórios.

Figura 31 - Tela de cadastro de serviço

Ao cadastrar um serviço, o usuário deve escolher qual o intervalo de checagem, de quais locais ele quer que seja checado e a qual perfil ele quer que o serviço seja associado. Também pode escolher se quer que seja avisado, quando o serviço está indisponível, e qual o tempo máximo de resposta para que seja enviado um alerta.

A figura 32 apresenta a listagem de serviços cadastrados por um usuário, mas utilizando a palavra google como filtro para a pesquisa de nomes de serviço. Apresenta também botões para visualização, edição e remoção de um serviço e link para a criação de serviços.

Figura 32 - Tela de listagem de serviços cadastrados com filtro aplicado

Fonte: A autora (2013).

A figura 33 possui o formulário de cadastro de um contato, conforme existente nos outros formulários do sistema os campos que possuem um asterisco em vermelho são obrigatórios. Ao digitar o login ou o email do contato, o sistema verifica se esse já está cadastrado no sistema, após isso, o campo de email é preenchido com o email que o usuário utilizou para realizar seu cadastro. O usuário pode editar o campo de email, conforme ache necessário.

É necessário selecionar o tipo de email, é importante relatar que, para alarmes que serão lidos em dispositivos móveis, comumente com uma tela menor bem como com uma velocidade menor na conexão com a internet, a opção “texto” é melhor escolha por não conter imagens em seu conteúdo.

É necessário selecionar, ao menos, um dia da semana. Para que o alarme seja disparado ao longo do dia, basta que deixe a hora de início de envio do alerta igual a hora de

fim de envio. A seleção de contato é responsável pela ligação entre os contatos cadastrados e os serviços cadastrados.

Figura 33 - Tela de cadastro de contato

Fonte: A autora (2013).

Caso um contato não esteja cadastrado, é possível realizar o cadastro rapidamente, através da opção “Novo usuário”, a figura 34 ilustra esse cenário.

Figura 34 - Tela de cadastro de usuário

Após preencher o login, o email do contato e clicar no botão “Criar” o sistema dispara um email para o novo usuário cadastrado, com uma senha gerada de forma randômica. A visualização dos dados de um contato é apresentada na figura 35, junto com links para listagem, criação, alteração e remoção do contato.

Figura 35 - Tela de visualização de contato

Fonte: A autora (2013).

Um usuário pode ver os alertas aos quais seu usuário está associado através da página “Meus Contatos”, que pode ser acessada no item “Contatos” do menu. O usuário pode alterar qualquer informação ali contida, bem como remover os seus contatos. A figura 36 ilustra esse cenário.

Figura 36 - Tela de listagem dos contatos do usuário

A figura 37 apresenta a listagem de serviços monitorados. Inclui na listagem o tempo de resposta médio do serviço, apresenta, também, um retorno quanto à disponibilidade do sistema, sendo verde para disponível, amarelo para parcialmente indisponível e vermelho para indisponível.

A listagem, ainda, inclui o horário da última checagem, um botão para visualizar o gráfico de disponibilidade e um para visualizar os alertas enviados a respeito daquele serviço. Os dados dessa listagem se atualizam automaticamente, a imagem circular, logo abaixo do título da seção “Lista de Monitoramento”, indica que os dados estão sendo atualizados naquele instante.

Figura 37 - Tela de listagem de serviços monitorados

Fonte: A autora (2013).

Ao selecionar o botão azul da figura 37, o usuário é redirecionado para a página que contem o gráfico de tempo de resposta.

O gráfico pode ser visualizado na figura 38, ele possui o tempo de resposta medido ao longo do tempo. O usuário pode posicionar o ponteiro do mouse sobre os pontos do gráfico para visualizar mais detalhes, pode também incluir ou remover os locais de checagem.

O gráfico, ainda, possibilita ao usuário selecionar partes do gráfico, para ter uma visão melhor da amplitude do mesmo. O gráfico é atualizando automaticamente a cada sessenta segundos.

Figura 38 - Tela de gráfico do tempo de resposta.

Fonte: A autora (2013).

A figura 39 apresenta a listagem de serviços que possuem alertas enviados, cada serviço está acompanhado de um botão para visualizar, com mais detalhes os alertas enviados. Figura 39 - Tela de listagem de serviços com alertas

Fonte: A autora (2013).

A figura 40 apresenta a listagem de alertas enviados, é possível verificar quem recebeu determinado alerta, qual o IP que apresentou problema, qual o tempo de resposta do serviço checado, qual foi o problema encontrado e a hora do envio do email.

Figura 40 - Tela de listagem de alertas enviados

Fonte: A autora (2013).

Na listagem de alertas enviados, existe um link para retornar para a listagem visualizada na figura 39. É possível chegar à tela de listagem de alertas enviados de duas formas: tanto pelo botão incluído na figura 37, quanto pelo botão incluído na figura 39.

6.4 VALIDAÇÃO

Após o desenvolvimento de todos os módulos, foi feita uma comparação do sistema desenvolvido e dos requisitos que foram definidos para verificar se todos foram implementados no sistema. Através dessa comparação foi verificado que todos os requisitos foram atendidos, essa foi a primeira validação a que o sistema foi submetido.

A segunda validação contou com a participação de um voluntário externo. Ele possui conhecimento avançado na área da computação. Inicialmente foi feita uma apresentação geral do sistema, foi explicado ao usuário o objetivo do sistema, também como o sistema funciona, para que o voluntário estivesse ambientado com o sistema, e assim, pudesse avaliá-lo. A partir disso, o voluntário navegou pelo sistema, destacando pontos e tirando dúvidas quanto ao seu funcionamento. Os pontos destacados pelo voluntário serão explanados a seguir.

Quanto ao cadastro inicial para acesso ao sistema: o usuário alegou não haver nenhum problema em compreender os dados que eram solicitados, no entanto, utilizando

leitores de emails distintos, o usuário detectou que o email enviado pelo sistema nem sempre se tornava um link, destacando esse como um problema de usabilidade, sugerindo a correção desse problema.

Quanto ao cadastro de perfis: o usuário relatou que o cadastro está simples de ser compreendido, porém na listagem inicial sugeriu colocar um aviso de lista vazia quando não há nenhum perfil cadastrado, disse que o campo para filtro de perfil parece ser, na verdade, um campo para cadastro.

Quanto ao cadastro de serviços: o usuário alegou não haver nenhum problema em compreender os dados solicitados, mas destacou que seria interessante incluir uma caixa de seleção do protocolo com os itens HTTP e HTTPS, preenchendo dinamicamente o campo de porta do serviço com o valor padrão para o protocolo selecionado na caixa. Relatou que, caso

No documento Checks (páginas 73-93)

Documentos relacionados