Introdução

editar

Contexto

editar

O aplicativo “Tem Remédio Aí?” tem como objetivo facilitar o acesso à informação da disponibilidade de medicamentos em Unidades Básicas de Saúde, Hospitais e Farmácias de Alto Custo da Secretaria de Estado de Saúde do Distrito Federal. Tendo informações sobre os remédios e a possível disponibilidade dos mesmos nas unidades básicas de saúde. Disponibilizando também as informações sobre as unidades básicas, como endereço, telefone e podendo gerar a trajetória pelo Google Maps. Os usuários podem informar se acharam ou não o remédio em uma determinada unidade básica, assim outros usuários podem visualizar se alguém conseguiu ou não o remédio.

Objetivo

editar
  • Esta página tem como objetivo acompanhar a Gerência de Configuração de Software (GCS) do projeto, como cronograma, pápeis, integração contínua.

Visão Geral

editar

O aplicativo possui as seguintes funcionalidades:

  • Informa disponibilidade do remédio.
  • Gerar trajetória.
  • Login.
  • Cadastro.
  • Usuário informa disponibilidade.

A aplicação foi desenvolvida para Android, utilizando as seguintes ferramentas:

  • Android Studio
  • Parse Server
  • MongoDB

Componentes

editar
Nome Matrícula
João Pedro de Lima Pereira 14/0145826
Vinícius Borges de Almeida 15/0151225

Repositório

editar
  • O repositório do aplicativo com a GCS se encontra no GitHub.
  • O repositório original do aplicativo se encontra no GitHub
  • O aplicativo se encontra publicado na Google Play.
  • O repositório do script de instalação do ambiente de desenvolvimento do projeto se encontra no GitHub.

Gerenciamento de Configuração de Software

editar

Cronograma

editar
Milestone Período Atividade Status
Planejamento 20/09 ~ 26/09 Fazer plano de GCS Concluído
27/09 ~ 03/10 Pesquisar ferramentas a serem utilizadas Concluído
Preparação 04/10 ~ 17/10 Alterar a política de branches Concluído
18/10 ~ 28/10 Criação de um script para instalação do projeto Concluído
29/10 ~ 07/11 Configuração do Jenkins para build do código Concluído
07/11 ~ 14/11 Configuração do Jenkins para testes Concluído
Apresentação 14/11 Ponto de controle do andamento do projeto
Execução 15/11 ~ 18/11 Geração de builds a partir dos pushes no GitHub Concluído
19/11 ~ 28/11 Realização de ajustes A realizar
Apresentação 28/11 Entrega final do projeto

Papéis

editar
Papel Responsabilidade Responsável
Gerente de Configuração de Software Acompanha as mudanças nos itens de configuração do software João Pedro e Vinícius B.

Ferramentas, Ambiente e Infra-estrutura

editar
Ferramenta Descrição
Github Repositório remoto, para controle de versão
Android Studio IDE para desenvolvimento da aplicação
Jenkins Ferramenta de integração contínua
Parse Server Server para o parse das informações do app para o banco
MongoDB Banco de dados remoto
Google Drive Repositório de documentos

Resultados do Projeto

editar

Política de Branches

editar

A política de branches utilizada anteriormente era de uma branch master e uma branch para cada dupla pareada no desenvolvimento do aplicativo. Neste projeto ela foi alterada, deixando apenas a branch master, que abrigará o código utilizado para gerar as builds automatizadas pelo Jenkins, ferramenta de integração contínua escolhida, e uma branch para cada funcionalidade a ser desenvolvida no projeto. Desta forma, as builds do projeto serão geradas a cada novo commit realizado na branch master.

Script de Instalação

editar

Com o objetivo de facilitar a instalação do ambiente de desenvolvimento, criamos um script para Ubuntu que realiza as seguintes operações:

  • Muda a cor do texto apresentado no Terminal para amarelo;
  • Adiciona os repositórios do Java Development Kit e Android Studio;
  • Instala o JDK e o Android Studio;
  • Instala bibliotecas adicionais caso a versão do sistema seja de 64 bits;
  • Cria a pasta de projetos do Android Studio;
  • Copia os arquivos do repositório do Git para a pasta de projetos;
  • Cria um atalho do Android Studio na Área de Trabalho;
  • Inicializa o Android Studio.


#!/bin/bash
#Definindo a cor amarela
YELLOW='\033[1;33m'
#Definindo a falta de cor
NOCOLOR='\033[0m'
#Consultando a versão do sistema
VERSION=`uname -m`
#Definindo a versão desejada 
TARGET_VERSION="x86_64"
#Definindo o caminho da pasta de projetos do Android Studio
PROJECTS_FOLDER="/home/$USER/AndroidStudioProjects"
#Definindo o endereço do repositório remoto do projeto no GitHub
PROJECT_REPO="https://github.com/jplpereira/GCS-TemRemedioAi.git"

echo -e "${YELLOW}#################################################################################################################"
echo "Iniciando a instalação do projeto TemRemedioAi"
echo "Adicionando repositórios"
sudo add-apt-repository ppa:webupd8team/java
sudo add-apt-repository ppa:paolorotolo/android-studio
sudo apt-get update
echo "Instalando o Java Development Kit"
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
echo "Instalando o Android Studio"
sudo apt-get install android-studio
Instalando bibliotecas adicionais caso a versão do sistema seja de 64 bits
if [ "${VERSION}" == "${TARGET_VERSION}" ]; then
echo "Seu sistema é de 64 bits. Será necessário instalar algumas bibliotecas"
echo "Instalando bibliotecas"
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
else
echo "Seu sistema é de 32 bits. Não será necessário instalar outras bibliotecas"
fi
echo "Criando a pasta de projetos do Android Studio"
sudo mkdir $PROJECTS_FOLDER
echo "Clonando o projeto do GitHub"
cd $PROJECTS_FOLDER
sudo git clone $PROJECT_REPO
echo "Criando atalho para o desktop"
echo -e "[Desktop Entry]\nVersion=1.0\nType=Application\nName=Android Studio\nExec='/opt/android-studio/bin/studio.sh' %f\nIcon=/opt/android-studio/bin/studio.png\nCategories=Development;IDE;\nTerminal=false\nStartupNotify=true\nStartupWMClass=android-studio" >> ~/.local/share/applications/androidstudio.desktop
echo "Inicializando o Android Studio"
./opt/android-studio/bin/studio.sh
echo -e "#################################################################################################################${NOCOLOR}"

Jenkins

editar

Para fazer a build automatizada do projeto utilizamos o Jenkins CI, ferramenta de integração contínua. Ele se encontra instalada localmente em uma das máquinas do grupo. Tivemos vários problemas em gerar as builds, pois várias dependências do projeto estavam desatualizadas, assim como outros erros que não estavam permitindo que o build da aplicação fosse realizado no Android Studio. Após a resolução desses problemas, cada build gerava um erro, que por fim foram todos solucionados, enfim permitindo a geração do build do projeto que incluem tanto as dependências do projeto, como também a suíte de testes, fazendo com que, desta forma, o build da aplicação só seja realizado caso todos os testes passem. O gatilho de geração de build é realizada a cada commit na branch master do projeto. Nada foi automatizado para o pós-build, pois por enquanto o projeto está parado, ou seja, não existe uma equipe continuando o desenvolvimento da aplicação, fazendo com que deixássemos essa opção para o futuro.

 
Principal Jenkins

E segue o ultimo log de build:

 
Build