Escolar Documentos
Profissional Documentos
Cultura Documentos
DO AMAZONAS
DEPARTAMENTO DE ENSINO SUPERIOR
CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO
DE SISTEMAS
Manaus, Amazonas
Outubro, 2016
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
DO AMAZONAS
Manaus – Amazonas
Outubro, 2016
UMA APLICAÇÃO MOBILE PARA NOTIFICAÇÃO DE ACIDENTES
POR ARRAIAS
BANCA EXAMINADORA
Manaus, 2016
Dedicatória
Dedico à minha família, amigos e professores
Agradecimentos
Poisonous animals are those able to inoculate venom into its victim, causing
accidents that can lead to death. Among these animals there are the stingrays which,
despite being docile, cause accidents that leave their victims incapacitated and with
the need of some time absent from work, often leaving them with sequelae.
Therefore, these animals represent a public health problem in the places where they
live. In Brazil, the systems that catalogue accidents involving venomous animals give
greater emphasis to arachnids, snakes and scorpions, with little information related
to stingrays. Regarding the notification of accidents caused by stingrays in the state
of Amazonas, a contribution was made through the development of a web system
called SNAA (Sistema de Notificação de Acidentes por Arraias, in english Accident
Reporting System for Stingrays). In this work, we present an extension of this
system, in which are included features that enable the reporting of accidents through
mobile devices and offline conditions. This application is called SNAA Mobile and it
was developed for Android platform, using the JAVA technology, and guided by the
AUP (Agile Unified Process). The SNAA Mobile provides features such as the
victim's data register, the geolocation of the accident, clinical data (bite location,
symptoms, etc.) and treatment data (drugs, tests, etc.), allowing the notification of
accidents in both online and offline conditions.
Capítulo 1.....................................................................................................................1
Introdução.....................................................................................................................1
1.1 Objetivo...............................................................................................................3
Capítulo 2.....................................................................................................................5
Fundamentação Teórica...............................................................................................5
Capítulo 3...................................................................................................................23
3.3 Android..............................................................................................................28
3.3.1 Arquitetura......................................................................................................29
3.3.1.1 Applications.................................................................................................30
3.3.1.3 Libraries.......................................................................................................31
3.3.1.3.1 SQLite......................................................................................................32
3.3.1.4 Runtime.......................................................................................................32
Capítulo 4...................................................................................................................38
SNAA Mobile...............................................................................................................38
4.1.5 Arquitetura......................................................................................................56
4.4.1.2 Permissões..................................................................................................67
4.4.1.5 Geolocalização............................................................................................75
4.5. Implantação......................................................................................................87
Considerações Finais.................................................................................................89
Revisão Bibliográfica..................................................................................................91
Capítulo 1
Introdução
1.1 Objetivo
Capítulo 2
Fundamentação Teórica
1 Disponível em http://dtr2004.saude.gov.br/sinanweb/tabnet/dh?
sinannet/animaisp/bases/animaisbrnet.def
8
perfil é obrigatória a criação de uma conta de usuário, a qual será solicitada por
meio do preenchimento de um formulário, disponível no sistema.
O usuário com perfil de profissional de saúde, por sua vez, registra
informações sobre acidentes, tais como, a identificação do paciente, identificação
dos dados do acidente e da arraia que causou o agravo, bem como as opções de
cadastro de prontuário e tratamento do paciente. Para este perfil é obrigatória a
criação de uma conta de usuário no sistema, a qual será criada e mantida pelo
representante de sua unidade de saúde.
Para o perfil público será disponibilizada a opção de notificar acidentes não-
oficiais. Neste caso, a notificação é semelhante à realizada pelo profissional de
saúde: é disponibilizado um formulário para cadastro da notificação do acidente,
porém sem as opções para registro de prontuário e tratamento do paciente. Cabe
salientar que, para este perfil, não há necessidade de criação de uma conta no
sistema.
Os perfis de acesso e sua relação com os módulos do SNAA são apresentados
no Quadro 1.
2 Sigla de Global Position System (Sistema de posicionamento global), tecnologia que possibilita a
captura de dados do posicionamento de um objeto, pessoa ou lugar ao redor do planeta.
14
que as falhas ocorrem, elas são relatas à equipe, que encontra a causa da
falha e faz as correções e mudanças nos requisitos, no projeto, no código,
no conjunto de testes e na documentação, conforme necessário.
Manutenção adaptativa: algumas vezes, uma mudança introduzida em
uma parte do sistema requer modificações em outras partes. A manutenção
adaptativa é a implementação dessas modificações secundárias. Esta
manutenção pode ser realizada para mudanças no hardware, software ou
no ambiente;
Manutenção perfectiva: a manutenção perfectiva consiste em realizar
mudanças para melhorar alguns aspectos do sistema, mesmo quando
nenhuma das mudanças for consequência de defeitos. Esta manutenção
pode ser desde alterações no documento, para tornar a esclarecer
determinados itens, até modificações no código e no projeto;
Manutenção preventiva: de modo semelhante à manutenção perfectiva, a
manutenção preventiva consiste em modificar alguns aspectos do sistema,
a fim de prevenir falhas. A manutenção preventiva geralmente ocorre
quando um programador ou analisador de código descobre um defeito real
ou potencial, que ainda não causou uma falha, e decide corrigir o defeito
antes que ele gere uma falha.
portáteis, netbooks e tablets (ROCHA, 2010). LECHETA (2013) afirma que mais de
três billhões de pessoas possuem um aparelho celular, e isso corresponde a mais
ou menos metade da população mundial. A explicação 3 para o crescimento rápido
no consumo destes dispositivos é dada pelas suas principais características:
mobilidade (capacidade de poder continuar uma comunicação e manter o envio de
dados constante mesmo quando em movimento), facilidade de acesso a dados e
informações a qualquer hora e lugar, principalmente devido ao avanço de
tecnologias como o wireless (conexão de redes sem fios) e a capacidade de ser
multitarefa (rodar aplicativos, ser multimídia, ter agenda telefônica, funcionalidades
de celular, etc).
Segundo ROMEIRO (2005) algumas vantagens dos dispositivos móveis em
relação aos microcomputadores são:
4 HTML5 é a mais nova versão do Hypertext Markup Language (Linguagem de marcação de texto),
uma linguagem para estruturação e apresentação de conteúdo de páginas web.
5 CSS3 é a mais nova versão das Cascading Style Sheets (Folhas de estilo em cascata), onde se
define estilos para páginas web.
20
6 Linguagem de programação interpretada, incorporada aos navegadores para executar scripts sem necessitar de requisições ao servidor.
21
Capítulo 3
Fase Artefato
- Descrição geral do software (escopo);
- Diagrama de casos de uso;
Inception (Concepção)
- Especificação dos casos de uso;
- Prototipação das interfaces dos usuários.
- Descrição da arquitetura do software;
- Diagrama de classes;
- Diagrama de sequência;
Elaboration (Elaboração)
- Diagrama de máquina de estados.
- Diagrama de entidade e relacionamento
(MER).
Construction (Construção) - Código-fonte e testes
3.3 Android
9Traduzido do inglês ‘código aberto’, diz-se do software cujo código-fonte está disponível aos
usuários, para que estes possam estudá-lo, bem como contribuir para aperfeiçoá-lo. Para saber
mais, visite http://opensource.org/.
29
celulares liderados pela empresa Google. Entre alguns integrantes do grupo estão
nomes como HTC, LG, Motorola, Samsung, Intel, Acer, Dell, entre outros, ou seja,
inclui fabricantes de dispositivos móveis, desenvolvedores de aplicativos,
operadoras de telefonia móvel e fabricantes de chips (LECHETA, 2013).
Apesar do desenvolvimento com a linguagem Java, os aplicativos não são
compilados em Java bytecode e interpretados em uma máquina virtual Java (JVM).
Foi desenvolvida uma máquina virtual (VM) específica para o Android, a qual é
otimizada para conseguir trabalhar com baixa energia e com memória e unidades de
processamento central (CPU) limitadas, a Dalvik VM.
No trabalho a ser realizado, Android será a principal tecnologia a ser utilizada,
pois utiliza Java como linguagem de programação, a mesma linguagem adotada no
desenvolvimento do SNAA, facilitando assim as questões de comunicação, o
reaproveitamento de componentes, além de uma redução no tempo de
desenvolvimento. Além disso, como foi apresentado no Capítulo 3, Android é um
dos sistemas mais populares quando se trata do contexto de computação móvel.
3.3.1 Arquitetura
3.3.1.1 Applications
3.3.1.3 Libraries
3.3.1.3.1 SQLite
através de instruções SQL (Struct Query Language, utilizada para acesso a bancos
de dados). Na prática, o SQLite funciona como um “mini-SGBD”, capaz de criar um
arquivo em disco, ler e escrever diretamente sobre este arquivo. O SQLite não
possui um processo servidor separado, a gravação e leitura dos dados estão num
único arquivo, foi projetado para funcionar em ambientes de pouca memória como
celulares, PDAs e MP3, com equilíbrio e velocidade.
3.3.1.4 Runtime
Fonte:https://developer.android.com/gu ide/components/activities.html
3.4 REST
De uma maneira geral, pode-se definir Web Services como componentes que
representam serviços remotos possíveis de serem acessados por outras aplicações
(BURÉGIO, 2003). Seu objetivo é permitir a comunicação entre diferentes
aplicações através da Internet. Em termos práticos, tem-se um “serviço de software”
independente de plataforma, linguagem e localização, que recebe requisições de
37
Capítulo 4
SNAA Mobile
Conforme pode ser observado, os módulos que compõem o SNAA mobile são:
14 Um caso de uso abstrato é um caso de uso que não é propriamente instanciado, ou seja, não
constitui um ciclo concreto de eventos. O caso de uso abstrato é realizado pelos casos com os quais
tem relacionamento.
45
Figura 18 - Tela de notificação - dados da vítima. Figura 19 - Tela de notificação – dados do acidente.
4.1.5 Arquitetura
1ª 4ª
2ª release 3ª release
release release
Atividades
120
60 dias 60 dias 45 dias 20 dias
dias
Implementação e testes do módulo
X
de notificação
Implementação e testes da
X
geolocalização de um acidente
4.4.1.2 Permissões
16 Site: https://developer.android.com/reference/android/Manifest.permission.html
70
tela normal podem ter tamanhos de tela e aparência um pouco diferentes quando
medidos a mão. De forma similar, dois dispositivos que reportem uma densidade de
tela hdpi, por exemplo, podem ter uma densidade de pixel um pouco diferente. O
Android torna essas diferenças abstratas para a aplicação, de forma que você pode
fornecer uma interface de tela para cada tamanho e densidade e deixar que o
sistema manipule qualquer ajuste final necessário.
Além disso, o Android provê recursos para que o desenvolvedor possa
controlar a interface de sua aplicação para algum específico tipo de tela, pois pode
ocorrer que o layout produzido não se encaixe em telas pequenas, ou seja
otimizada para telas grandes, ou ainda seja otimizada para orientação em retrato e
paisagem, por exemplo. A Figura 43 também ilustra esta situação, por meio do
diretório values-w820dp que significa a aplicação de um layout específico para telas
com largura (width) de 820 dp.
Portanto, é importante observar que isto não retira a responsabilidade do
desenvolvedor de trabalhar na construção correta das interfaces. Sabendo destas
diretivas, esta atividade se torna menos trabalhosa.
4.4.1.5 Geolocalização
como torres de telefonia celular e redes Wifi, ou pelo GPS embutido no dispositivo.
Obter esta informação pode ser um pouco complicada, há alguns desafios na
captura correta da localização de um usuário. Algumas delas incluem:
Para cumprir seu principal objetivo, o SNAA mobile deverá, como ressaltado
várias vezes ao longo deste trabalho, sincronizar seus dados com o SNAA. A troca
de dados entre os dois ocorrerá em dois momentos: no primeiro login e na
sincronização de notificações.
O primeiro login deverá, obrigatoriamente, ser realizado com o dispositivo
tendo conexão à Internet, para verificar a autenticidade do profissional de saúde e
registrar seus dados na base de dados do SNAA mobile – para posteriores logins
offline. Neste primeiro momento também será utilizado um recurso do Android
chamado Shared Preferences, o qual permite ler e salvar pequenas informações de
uma aplicação em arquivos do próprio dispositivo, o qual auxiliará ao efetuar login
automaticamente (sem a necessidade do profissional ficar constantemente digitando
seus dados) tanto online quanto offline. Para posteriores logins em que o dispositivo
esteja conectado à Internet, somente haverá verificação do status do profissional,
para saber se está apto a notificar acidentes.
Para ocorrer sincronização de notificações o SNAA mobile deverá, como
apresentado na Figura 18 (diagrama de máquina de estados), perceber a presença
de sinal de Internet. Esta tarefa foi implementada utilizando um recurso chamado
Broadcast Receiver, componente da plataforma Android responsável por receber e
tratar eventos, os broadcasts, provenientes do próprio sistema ou de outras
aplicações. Em geral, este componente é aplicado em uma atividade (activity) e será
utilizado ao longo do ciclo de vida do SNAA mobile, dado que a sincronia, por
consumir dados (dados, neste sentido, são os dados de rede Wifi ou da operadora
telefônica), deve ocorrer somente quando a aplicação estiver sendo utilizada, não
devendo consumir dados quando estiver em segundo plano.
79
método sincronizarDados. Por se tratar de uma operação que demanda tempo, uma
vez que a sincronia depende da velocidade de conexão à Internet do dispositivo,
este método instancia uma classe chamada SincronizacaoTask, que estende a
classe AsyncTask - componente do Android que permite a realizar uma tarefa em
segundo plano (background) e apresentar o resultado na interface de usuário. Isto
permitirá ao usuário continuar os cadastros de notificações durante uma sincronia,
por exemplo.
O principal método de uma AsyncTask é chamado doInBackground. A Figura
38 ilustra a implementação deste método na classe SincronizacaoTask.
Como ilustra a Figura 38, primeiramente há a recuperação da conexão com o
banco de dados do dispositivo (método getDatabase) para realizar consulta às
notificações que precisam ser enviadas ao SNAA. Esta consulta, a principal do
SNAA mobile, é apresentada na Figura 39.
Esta consulta objetiva verificar, nas tabelas que fazem parte da notificação de
um acidente, registros que se encontram com o campo COL_REGISTRO_ENVIADO
igual à false, indicando que estes devem ser enviados ao servidor. Esta situação
ocorre quando um registro é inserido ou alterado no banco de dados do SNAA
mobile. Este campo é sempre atualizado para true quando o registro é enviado.
As notificações resultantes da consulta são armazenadas em uma lista e
enviadas em um objeto da classe NotificacaoSender, o qual também comporta
dados do profissional, para autenticação (haverá validação do profissional
novamente, pois há casos em que o mesmo encontra-se inativo, não podendo
realizar a sincronização). Este objeto é passado como parâmetro para um objeto da
classe NotificacaoRequest, responsável por realizar a requisição, especificando o
caminho requisitado e tratando os dados a serem enviados (transformação do
objeto em json).
Para efetuar a requisição, o método execute da classe NotificacaoRequest é
disparado e tem início o envio das notificações. A resposta desta requisição é
encapsulada em um objeto chamado SincroniaResponse, responsável por informar
à atividade se houve alguma falha (atributo estático RETURN_FAILED), e neste
caso, informa ao profissional qual o problema encontrado; se a sincronia foi
realizada com sucesso (atributo estático RETURN_OK); ou se não há nada a
sincronizar (atributo estático RETURN_NOTHING).
Caso os dados tenham sido enviados com sucesso, tem início uma transação
para tratar a resposta do SNAA, que são as mesmas notificações enviadas, porém
82
17 Sigla para Universally Unique Identifier, traduzido identificador único universal, é um identificador
numérico de 128 bits – 32 caracteres hexadecimais - com o objetivo de facilitar a troca de
informações em sistemas distribuídos. Para se ter ideia, é maior a probabilidade de você ser atingido
por um meteorito que haver repetição de UUID’s.
83
18 Trigger, traduzido gatilho, é um recurso de banco de dados que permite a execução de alguma
lógica de programação sempre que ocorre um evento de inserção, atualização ou exclusão de
registro ou registros em uma tabela.
87
4.5. Implantação
Considerações Finais
trabalho futuro, que depende das autoridades de saúde, diz respeito a implantação
desta aplicação e viabilização de seu uso junto aos profissionais de saúde da
Região.
91
Revisão Bibliográfica
AMBLER, S. The Agile Unified Process (AUP). The Agile Unified Process (AUP),
2005. Disponivel em: <http://www.ambysoft.com/unifiedprocess/agileUP.html>.
Acesso em: 17 mar. 2015.
BOOCH, Brady. UML: guia do usuário / Grady Booch, James Rumbaugh, Ivar
Jacobson; tradução de Fábio Freitas da Silva e Cristina de Amorim – Rio de Janeiro:
Elsevier, 2012. – 12ª reimpressão.
GARRONE NETO, D.; HADDAD JR., V. Acidentes por raias. In: CARDOSO, J. L. C.;
FRANÇA, F. O. S.; WEN, F. H.; MÁLAQUE, C. M.; HADDAD JR., V.
(Ed.). Animais peçonhentos no Brasil: biologia, clínica e terapêutica dos acidentes.
2nd. São Paulo, Brasil: Sarvier, 2009. cap. 30, p.295-313.
HADDAD JR., V.; GARRONE NETO, D.; PAULA NETO, J. B.; MARQUES, F. P. L.;
BARBARO, K. C. Freshwater stingrays: study of epidemiologic,
clinic and therapeutic aspects based on 84 envenomings in humans and some
enzymatic activities of the venom. Toxicon, v. 43, n. 3, p. 287-94, Mar 1 2004.
MONTEIRO, João Bosco. Google Android - Crie aplicações para celulares e tablets.
Ed. Casa do código, 2012.
PARANÁ. Acidentes com animais aquáticos – arraias e peixes com ferrão, 2012.
Disponível em <http://sesaeventos.saude.ws/zoonose/html/arquivos/NT%2002_
2012%20ARRAIAS%20E%20PEIXES.pdf>.Acesso em: 18 mar. 2015.
RAMOS, Bruno Barbosa; BRUM, Diego Berg. Sistema na cloud para criação e
processamento de formulários eletrônicos com opção de uso em mobile online e
offline. 2004. 67 páginas. Projeto de Graduação - Universidade Federal do Rio de
Janeiro, Rio de Janeiro.
Interessados e Interesses:
- Profissional de saúde: deseja buscar um determinado registro de vítima.
Interessados e Interesses:
- Profissional de saúde: deseja registrar uma nova vítima de acidente por arraia.
Interessados e Interesses:
- Profissional de saúde: deseja registrar dados de um acidente por arraia.
Pré-condições:
O profissional deverá estar autenticado no sistema;
A vítima do acidente já deverá estar cadastrada.
Data do acidente;
Coordenadas geográficas;
Período do dia (Manhã, tarde, noite ou madrugada);
97
Estado/Município da ocorrência;
Tipo de local (rio, lago,igarapé,etc.);
Nome do rio;
O que a vítima estava fazendo na hora do acidente.
Interessados e Interesses:
- Profissional de saúde: deseja registrar imagens da arraia e/ou do ferimento
relacionados a um acidente.
Pré-condições:
O profissional deverá está autenticado no sistema;
O acidente deverá estar cadastrado.
Interessados e Interesses:
- Profissional de saúde: deseja registrar os dados clínicos da vítima;
Pré-condições:
O profissional deverá está autenticado no sistema;
O acidente deverá estar cadastrado.
Interessados e Interesses:
- Profissional de saúde: deseja concluir a notificação
Pré-condições:
O profissional deverá está autenticado no sistema.
O acidente deverá estar cadastrado.
Interessados e Interesses:
- Profissional de saúde: deseja editar os dados de uma notificação.
Pré-condições:
O profissional deverá está autenticado no sistema;
A notificação deverá estar cadastrada.
Interessados e Interesses:
- Profissional de saúde: deseja reabrir para edição um acidente que está com
situação igual à CONCLUÍDO.
Pré-condições:
O profissional deverá está autenticado no sistema;
A notificação deverá estar com acidente com situação igual à CONCLUIDO.
Figura 49 - Tela de notificação – dados da vítima. Figura 50 - Tela de notificação - dados do acidente.
Figura 51 - Tela de notificação– dados clínicos. Figura 52 - Tela de notificação – dados de tratamento.