Repositório:https://github.com/IolaneAndrade/TecProg_2016-01

Introdução

editar

Visão Geral

editar

Trata-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

editar

O 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

editar

Nã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

editar

Serão atendidas as seguintes demandas para o projeto EuVou:

  1. Implantação de integração contínua;
  2. Configuração de ambiente virtual de desenvolvimento.

Definições, Acrônimos e Abreviações

editar
Termo 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

editar

EuVou é 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

editar
Release 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

editar

Para 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

editar
Ferramenta 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

editar

Procedimentos de mudança

editar

Em 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

editar

As 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 (b​ug, ​d​uplicate, enhancement, etc)​, uma milestone associada e uma pessoa responsável.

Ciclo de vida das Solicitações de Mudança

editar

As issues devem possuir os seguintes estados: aberta (o​pen) ​e fechada (c​losed)​.

Qualquer membro da equipe pode abrir uma i​ssue,​e da mesma forma qualquer membro da equipe pode tomar para si uma issue a​berta. Quando uma i​ssue a​berta for concluída, deve­-se fecha-­la o mais rápido possível.

Integração Contínua

editar

A 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
  1. Registre-se no Travis CI usando a conta do GitHub para que o Travis CI se sincronize com seus repositórios;
  2. Acesse a página https://travis-ci.org/profile/;
  3. Selecione o repositório em que deseja realizar a build;
  4. Adicione um arquivo .travis.yml ao repositório. Este arquivo contém as informações sobre como realizar a build.
  5. É necessário realizar um commit e um push para que o Travis CI realize o build;
  6. Acesse https://travis-ci.org/ para acompanhar o status do build.

.travis.yml

editar

Este é 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

editar

Instalações necessárias

editar
$ dpkg -i vagrant_1.9.0_x86_64.deb
$ dpkg -i virtualbox-5.0_5.0.22-108108-Ubuntu-precise_i386.deb

Primeiros passos

editar

1. 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

[1] [2]

  1. Travis-ci para android - https://docs.travis-ci.com/user/languages/android/
  2. Vagrant - https://www.vagrantup.com/docs/