EuVou
Repositório:https://github.com/IolaneAndrade/TecProg_2016-01
Introdução
editarVisão Geral
editarTrata-se da disciplina responsável por prover um "conjunto de atividades projetadas para controlar as mudanças pela identificação dos produtos do trabalho que serão alterados, estabelecendo um relacionamento entre eles, definindo o mecanismo para o gerenciamento de diferentes versões destes produtos, controlando as mudanças impostas, auditando e relatando as mudanças realizadas."(Software Engineering: A Practitioner's Approach. Pressman,Roger). Dessa forma, a gerência de configuração de software auxilia o desenvolvimento de software com versionamento, controle de mudança e auditoria de configurações, e se faz necessária em qualquer software tal como EuVou.
Propósito
editarO propósito desse documento é apresentar o plano e execução de gerencia de configuração de software no projeto EuVou. O projeto em questão não possui GCS.
Problema
editarNão é possível saber qual é a versão estável do sistema;
- Não são documentadas as versões e suas respectivas localizações do código-fonte;
- Não há controle das modificações que são realizadas;
- Os itens de configuração não são listados ou identificados.
Escopo
editarSerão atendidas as seguintes demandas para o projeto EuVou:
- Implantação de integração contínua;
- Configuração de ambiente virtual de desenvolvimento.
Definições, Acrônimos e Abreviações
editarTermo | Significado |
---|---|
Baseline | É um marco a partir da entrega de um ou mais itens de configuração |
Build de Software | "É a atividade de combinar versões corretas de itens de configuração de software, utilizando dados de configuração apropriados, em programas executáveis a serem entregues ao cliente ou a outro destinatário, como, por exemplo, a atividade de teste." (SWEBOK, tópico 6-11; 2004). |
Integração Contínua | "Realizar de forma automatizada builds, ou cópias parciais ou totais de softwares que estão em desenvolvimento, realizando testes unitários, testes de integração, testes funcionais, análise estática de código e outras atividades que a ferramenta em questão possa executar de forma automática para garantir a qualidade do produto." (TARGETTRUST, 2016). |
GCS | Gerência de Configuração de Software |
EuVou | Software tratado por este documento. Trata-se de um aplicativo android como angenda cultural. Disponível em: https://github.com/italopaiva/EuVou |
Tabela 1 - glossário básico
Apresentação do Projeto
editarEuVou é um aplicativo para dispositivos android usado como agenda cultural, que indica quais os possíveis eventos no momento que oaplicativo foi acessado com base na localização do usuário via GPS. Para informações adicionais acesse o Documento de visão
Cronograma
editarRelease | Milestone | Sprint | Período | Atividade | Status |
---|---|---|---|---|---|
1 | Planejamento | 1 | 19 de setembro a 3 de outubro | Redigir plano de GCS | Realizado |
2 | 26 de setembro a 3 de outubro | Selecionar ferramentas a serem utilizadas | Realizado | ||
3 de outubro | Ponto de controle 1 | Realizado | |||
2 | Integração contínua | 3 | 3 a 10 de outubro | Estudar a ferramenta Travis CI | Realizado |
Configuração da ferramenta Jenkins para teste . | Realizado | ||||
4 | 10 a 17 de outubro | Gerar builds periodicamnete trazendo report com a cobertura de código. | Realizado | ||
5 | 17 a 24 de outubro | Configuração da ferramenta Jenkins para build do código. | Realizado | ||
24 de outubro | Ponto de controle 2 | Realizado | |||
3 | Máquina virtual | 6 | 24 a 31 de outubro | Instanciar máquina virtual (Vagrant) | Realizado |
7 | 31 de outubro a 7 de novembro | Criar script de instalação do Android Studio | Realizado | ||
8 | 7 de novembro a 14 de novembro | Possíveis ajustes | Realizado | ||
9 | 14 de novembro a 21 de novembro | Realizado | |||
21 de novembro | Entrega final | Realizado |
Tabela 2 - Cronograma
Instalação do Aplicativo
editarPara instalar o software EuVou é preciso acessar o Google Play e baixar o aplicativo (https://play.google.com/store/apps/details?id=com.mathheals.euvou&hl=pt_BR)
Ferramentas
editarFerramenta | Descrição |
---|---|
Android Studio IDE | IDE utilizado no desenvolvimento da
aplicação. |
Android SDK Tools | Android Software Development Kit |
SQLite 3.8.9 | SGBD a ser utilizado no projeto. |
Travis | Ferramenta de integração contínua. |
Controle de Configuração
editarProcedimentos de mudança
editarEm engenharia de software é muito comum a necessidade de mudanças durante o desenvolvimento de um projeto afinal os requisitos podem ser atualizados a qualquer momento a fim de garantir qualidade do software. Assim, uma solicitação de mudança deve ser aberta conforme descrito no sub-tópico abaixo.
Criação de Solicitação de Mudança
editarAs solicitações de mudanças ou funcionalidades devem ser criadas em forma de issues no próprio repositório remoto do GitHub. A issue criada sempre deve conter um título, uma descrição associada, um tipo (bug, duplicate, enhancement, etc), uma milestone associada e uma pessoa responsável.
Ciclo de vida das Solicitações de Mudança
editarAs issues devem possuir os seguintes estados: aberta (open) e fechada (closed).
Qualquer membro da equipe pode abrir uma issue,e da mesma forma qualquer membro da equipe pode tomar para si uma issue aberta. Quando uma issue aberta for concluída, deve-se fecha-la o mais rápido possível.
Integração Contínua
editarA equipe de Gerência de Configuração deve configurar um servidor Jenkins que irá fazer um build do projeto inteiro a cada push no repositório remoto. O Travis também deve informar a cobertura de código atual a cada build.
Integração contínua: Travis CI
editarÉ uma ferramenta de integração contínua com o intuito de tornar mais rápido atividades como compilação de um projeto e execução de seus testes automatizados. Com o Travis configurado, essas tarefas são executadas a cada mudança no repositório de código e, em caso de erros de compilação ou falhas nos testes automatizados, todos os desenvolvedores são alertados rapidamente.
Passo-a-passo
editar- Registre-se no Travis CI usando a conta do GitHub para que o Travis CI se sincronize com seus repositórios;
- Acesse a página https://travis-ci.org/profile/;
- Selecione o repositório em que deseja realizar a build;
- Adicione um arquivo .travis.yml ao repositório. Este arquivo contém as informações sobre como realizar a build.
- É necessário realizar um commit e um push para que o Travis CI realize o build;
- Acesse https://travis-ci.org/ para acompanhar o status do build.
.travis.yml
editarEste é um modelo de script do Travis-ci para android que foi utilizado no projeto EuVou.
language: android
jdk: oraclejdk8
sudo: require
android:
components:
- platform-tools
- tools
- build-tools-22.0.1
- android-23
- sys-img-armeabi-v7a-android-23
- extra-android-m2repository
- compile 'com.android.support:appcompat-v7:23.0.1'
- compile 'com.google.android.gms:play-services:8.1.0'
before_script:
# Create and start emulator
- echo no | android create avd --force -n test -t android-23 --abi armeabi-v7a
- emulator -avd test -no-skin -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
script:
- ./gradlew build jacocoTestReport assembleAndroidTest
- echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
- emulator -avd test -no-skin -no-audio -no-window &
- android-wait-for-emulator
- adb shell setprop dalvik.vm.dexopt-flags v=n,o=v
- ./gradlew connectedCheck
after_success:
- bash <(curl -s https://codecov.io/bash)
script: ./gradlew
Virtualização: Vagrant
editarInstalações necessárias
editar- Vagrant: instalação pode ser feita através da página de downloads do site oficial: https://www.vagrantup.com/downloads.html.
$ dpkg -i vagrant_1.9.0_x86_64.deb
- Virtualbox: será utilizado por ser free e disponível pra maioria das plataformas:https://www.virtualbox.org/wiki/Downloads
$ dpkg -i virtualbox-5.0_5.0.22-108108-Ubuntu-precise_i386.deb
Primeiros passos
editar1. Crie a máquina virtual que roda o Ubuntu 12.04 LTS 64-bit.
$ vagrant init hashicorp/precise64
2. O vagrant up instala cada dependência que o seu projeto precisa e configura cada pasta sincronizada.
$ vagrant up
Após esses dois comando uma máquina virtual Ubuntu 12.04 LTS de 64 bits isolada, com todos os recursos, será executado em segundo plano.
3. Pode ser solicitado que se faça o login numa conta do servidor HashiCorp's Atlas. Registre-se aqui: https://atlas.hashicorp.com/account/new. E então faça o login:
$ vagrant login
Principais comandos
editar- Redirecionar para um console SSH dentro da máquina virtual: você pode fazer qualquer coisa que gostaria aqui, como a instalação de software, modificação de arquivos, ou mesmo remover todo o sistema de arquivos (HASHIMOTO, 2013).
$ vagrant ssh
- Se algo der errado, ou se só quiser recomeçar a partir de uma máquina limpa, utilize o vagrant destroy que remove todos os traços do ambiente de desenvolvimento (HASHIMOTO, 2013).
$ vagrant destroy
É comum que o desenvolvedor realize alterações no Vagrantfile. Depois de fazer quaisquer modificações, um reload deve ser chamado. (HASHIMOTO, 2013).
$ vagrant reload
vagrantfile
editar# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Cria uma máquina virtual usando a imagem do Ubuntu 64 bits
config.vm.box = "ubuntu/trusty64"
# Define uma máquina virtual chamada "web"
config.vm.define :my_virtualbox do |web_config|
# Permite acessar o endereço "localhost:8080" para acessar a porta 80 na
"guest machine"
config.vm.network "forwarded_port", guest: 80, host: 8080
# Cria uma rede privada que permite apenas acesso do host à maquina
# Utilizando um ip específico.
web_config.vm.network "private_network", ip: "189.6.24.246"
end
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe 'maven'
chef.add_recipe 'android-sdk'
chef.json = {
'java' => {
'jdk_version' => '7'
},
'android-sdk' => {
'owner' => 'vagrant',
'group' => 'vagrant',
'components' => ['android-20', 'android-19'],
# 'setup_root' => '/opt/somewhere',
# 'with_symlink' => false,
# 'java_from_system' => true,
'maven_rescue' => true,
'maven_local_repository' => '/home/vagrant/.m2/repository'
}
}
end
end
Referências
editar- ↑ Travis-ci para android - https://docs.travis-ci.com/user/languages/android/
- ↑ Vagrant - https://www.vagrantup.com/docs/