Grupo: Attany Araújo e Keli Cristina

Trabalho desenvolvido no âmbito da disciplina de Gerência de Configuração de Software

Introdução editar

O Plano de Gerência de Configuração (PGC) descreve as atividades referentes ao Gerenciamento de Controle de Cofiguração e Mudança que devem ser executadas durante o projeto. Neste Plano estão especificados as atividades e seus responsáveis bem como os recursos necessários para sua execução, como: recursos humanos, ferramentas de apoio e computadores.

Finalidade editar

Este documento tem como finalidade estabelecer um padrão a ser seguido pela equipe, garantindo um maior controle sobre o produto, mantendo sua integridade e controlando sistematicamente as mudanças durante o projeto.

Escopo editar

O escopo deste trabalho abrange o Controle e Gerenciamento da Configuração do projeto de software EqLibra. Neste contexto serão tratados os seguintes itens:

  • Configuração de Ambiente;
  • Integração Contínua;

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

Nesta subseção estão apresentadas as definições dos termos, acrônimos e abreviações necessários para a correta interpretação deste documento:

Termo Significado
EqLibra Financial Management System. Sistema de Gerenciamento Financeiro
RUP Rational Unified Process. Processo de engenharia de software criado pela empresa Rational Software Corporation, adquirido pela IBM.
PGC Plano de Gerência de Configuração
Baseline Marco de referência no desenvolvimento de um software
Status Estado ou condição
Branch “Ramos” do GitHub utilizados para realizar desenvolvimentos separados

Referências editar

A seguir as referências utilizadas para a elaboração deste documento:

Visão Geral editar

Este documento está dividido em seções. Na seção 02 estão descritos os papeis e responsabilidades, além das ferramentas utilizadas para a execução do PGC. Na seção 03 temos a definição do programa de Gerenciamento de Configuração, no qual tem-se a descrição da identificação da configuração, controle de configuração e mudança e estimativa do status da configuração. Na seção 04 os marcos para a execução do PGC está definido. A seção 05 se refere aos treinamentos necessários.

Gerenciamento de Configuração de Software editar

Papeis e Responsabilidades editar

A tabela a seguir mostra os papeis e responsabilidades definidos para a execução deste plano de Gerência de Configuração:

Papel Responsabilidade
Gerente de Configuração Responsável pela criação do Plano de Gerência de Configuração de Software, garantindo que ele abranja:
  • atividades que devem ser executadas;
  • cronograma de atividades;
  • responsabilidades atribuídas;
  • recursos necessários (equipes, ferramentas, ambiente e infra-estrutura);
Gerente de Ferramentas de Configuração Responsável pela manutenção da infraestrutura necessária para que a Gerência de configuração possa ter um bom funcionamento no contexto do projeto.
Auditor de configuração de software Responsável por realizar auditorias de configuração do projeto.
Desenvolvedor Responsável pelo código do projeto, ou seja, é quem produz os itens de configuração que serão gerenciados.

Ferramentas, ambiente e infraestrutura editar

  • Nesta seção serão tratadas às definições referentes às ferramentas, ambiente e infraestrutura necessárias para a execução deste plano.
Ferramentas para Gestão da Configuração editar

Como ferramentas de Gestão da Configuração, serão utilizados:

  • Git: sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade;
  • GitHub: serviço de Web Hosting Compartilhado para projetos que usam o controle de versionamento Git;
Ferramentas para o ambiente e infraestrutura de Desenvolvimento editar

Para o ambiente de desenvolvimento, serão utilizadas as seguintes ferramentas:

  • Ubuntu 14.04 LTS : sistema operacional;
  • Travis CI: Ferramenta de integração continua;
  • Vagrant (1.8.1): Ferramenta de construção de ambiente de desenvolvimento;
  • Sublime Text 3: editor de código;
  • Google docs: editor de texto;
Ferramentas de Comunicação editar

Como ferramentas de Comunicação, serão utilizados:

  • Gmail: ferramenta de email utilizada para comunicação;
  • Facebook: rede social utilizada para comunicação;

Programa de Gerenciamento da Configuração editar

Identificação da Configuração editar

Métodos de Identificação editar

Os artefatos do projeto EqLibra devem ser nomeados da seguinte maneira:

Exemplo: EqLibra_PGC.pdf

As siglas dos artefatos encontram-se abaixo:

  • PGC - Plano de Gerência de Configuração
  • BLD - Builds do Sistema
  • RLF - Relatório Final

O documento é aprovado através de uma revisão do artefato realizada por um membro da equipe responsável pelo mesmo.

Baselines do projeto editar

As baselines do projeto serão definidas ao final de cada sprint, sendo que o projeto será desenvolvido a partir da baseline0 (estado atual do projeto). Desta forma, a baseline receberá o número da sprint que foi finalizada.

Exemplo: Baseline01: definida a partir da finalização da Sprint01 .

Cada sprint terá a duração de 2 semanas. A autorização das baselines será feita pelos integrantes da equipe.

Controle de Configuração e Mudança editar

O Controle de Configuração e Mudança será realizado a partir da ferramenta GitHub. A estrutura principal para este projeto no GitHub deve se utilizar de 2 branches básicas:

  • Master: branch principal do projeto no qual o código deve estar estável;
  • Development: branch de desenvolvimento, sendo a base para a criação de branchs auxiliares;

Será utilizada a funcionalidade de criação de issues no GitHub. Serão abertas issues para todas as atividades a serem executadas no software. Será criada uma branch (a partir da branch Development) para cada issue a ser executada. A figura a seguir ilustra este modelo:

 
Estrutura do GitHub
Aprovação de Solicitação de Mudança editar

A aprovação de uma solicitação de mudança será realizada a partir do GitHub, utilizando-se da opção de pull request, onde o conjunto de atualizações do sistema será atualizado na branch “Development”.

Milestones editar

Para o acompanhamento da execução deste Plano de Gerência de Configuração, em acordo com as datas estabelecidas para a Disciplina de Gerência de Configuração de Software, os seguintes marcos foram definidos:

  • 27/04: Entrega do Plano de GCS
  • 01/06 a 08/04: Apresentação do andamento dos Projetos
  • 22/06 e 29/06: Apresentação Final do Projeto

Treinamento editar

O treinamento será realizado através das aulas da disciplina de Gerência de Configuração de Software da Universidade de Brasília (UnB) ministradas durante o primeiro semestre de 2016.

Resultados editar

Travis CI editar

O Travis CI é um serviço de Integração Contínua na nuvem que possui integração a repositórios no GitHub.

Os projetos de código aberto podem ser testados sem custos através do site travis-ci.org. O serviço também está disponível para projetos privados através do TravisPro que fornece implementações personalizadas de uma versão proprietária no próprio hardware do cliente.

Quando o Travis CI é ativado para um dado repositório, o GitHub notifica por e-mail sempre que são dados novos commits. É possível configurá-lo apenas para executar em uma branch. O Travis CI irá conferir a branch pertinente e executar os comandos especificados no arquivo .travis.yml , que geralmente constrói o software e executa os testes automatizados. Quando esse processo é concluído, o Travis notifica o desenvolvedor, que pode configurar para receber e-mails contendo os resultados dos testes (que mostra o sucesso ou fracasso). No caso de solicitações de pull, a solicitação de recebimento será anotada com o resultado e um link para o log de compilação, usando uma integração GitHub

Neste trabalho o foco será configuração do Travis para um projeto de código aberto em linguagem Python, utilizando o framework Django, disponibilizado no GitHub. O repositório a ser utilizado encontra-se em:  https://github.com/DAS1-2016/Finpy. Para execução do travis CI foi criado uma branch específica chamada Travis neste repositório.

Acessando e configurando o Travis CI editar

Para iniciar a configuração com o Travis CI acessar o endereço: https://travis-ci.org/. Na parte superior do lado direito da página, clicar no botão:

 

para conectar com a sua conta do GitHub.

Ao conectar, a página do Travis CI mostra os projetos do GitHub. A tela a seguir mostra o projeto selecionado:

 

Para começar, deve-se seguir os passos descritos na página, conforme descrito a seguir:

  • 1º Ativar o Repositório:
  • 2º  Adicionar o arquivo .travis.yml no repositório

Para iniciar a configuração do Travis CI no projeto, deve-se adicionar na raiz do repositório do GitHub um arquivo chamado .travis.yml. O .travis.yml é um arquivo de texto no formato YAML que especifica a linguagem de programação usada, o ambiente de construção e teste desejado ( incluindo dependências que devem ser instaladas antes que o software pode ser construído e testado), e vários outros parâmetros necessários para executar o software.

Para este projeto foi utilizado o arquivo .travis.yml com a seguinte configuração:

language: python
sudo: required

python:
  - "3.4"

services:
  - postgresql

env:
  - DJANGO_VERSION=1.7.7 MIGRATE='./manage.py migrate'

branches:
  only:
    - travis

services:
  - postgresql

python:
  - "3.4"

install:
  - pip3 install Django==$DJANGO_VERSION
  - psql -c 'create database kanjam;' -U postgres
  - psql -c "create user kanjam WITH PASSWORD 'root'" -U postgres
  - psql -c 'alter user kanjam CREATEDB;' -U postgres
  - sudo apt-get install python3-psycopg2
  - pip3 install django-bootstrap3==6.2.2
  - pip3 install django-foundation
  - pip3 install django-zurb-foundation
  - sudo apt-get build-dep python-psycopg2
  - pip3 install psycopg2 
  - pip3 install --upgrade setuptools

script:
  - python3 manage.py test
  • 3º Configurando o projeto no Travis Ci

Ao abrir as configurações, as seguintes opções são mostradas:

  • Current: mostra a situação atual (último commit)
  • Branchs: mostra as branchs ativas
  • Build History: mostra o histórico
  • Settings: opção para setar as configurações:
     
  • 4º Dar push do arquivo .travis.yml no seu repositório git

Após dar push no git, o travis ci reconhece automaticamente. Quando a configuração está correta o travis informa na tela : build passing.

 

Link do travis ci para este projeto: Finpy

Vagrant editar

Vagrant é uma ferramenta para a construção de ambientes de desenvolvimento que reduz consideravelmente o tempo de configuração de qualquer ambiente de desenvolvimento.

O Vagrant fornece ferramentas para construir ambientes de desenvolvimento únicos para cada projeto de uma vez, e depois facilmente derrubá-los e reconstruí-los apenas quando eles forem necessários.

Por meio do fornecimento de máquinas virtuais o Vagrant ajuda a maximizar a produtividade e flexibilidade. O Vagrant usa o VirtualBox da Oracle para criar suas máquinas virtuais e então usa o Chef ou o Puppet para provisioná-las. Também é possível utilizar um script shell para desempenhar esta função.

Configurando o Vagrant editar
  • 1º Instalação da Virtual Box
$ sudo apt-get install virtualbox
  • 2º Instalação do Vagrant
$ sudo apt-get install vagrant
  • 3º Instalação do pacote dkms

Instale o pacote DKMS para garantir que os módulos do kernel do host do VirtualBox estão devidamente atualizados.

$ sudo apt-get install virtualbox-dkms
  • 4º Criação de um diretório para a criação da instância
$ mkdir vagrant_project
$ cd vagrant_project
  • 5º Adicionando uma box Vagrant

O Vagrant não cria uma instância de máquina virtual totalmente do zero. Em vez disso, ele importa uma imagem base para a VM e constrói a partir dela. Isso simplifica excelentemente as coisas para os usuários do Vagrant, pois eles não tem que perder tempo definindo detalhes entediantes como capacidade de memória, tamanho do disco rígido, controladores de rede etc., e também permite que sejam usadas bases personalizadas para construir o projeto em cima delas.

As bases sobre as quais o Vagrant constrói são empacotadas como “boxes”, que são basicamente pacotes tar em um formato específico para o Vagrant. Qualquer pessoa pode criar uma box.

As boxes instaladas são globais na instalação atual do vagrant. Isso significa que, uma vez que a box lucid32 é adicionada, ela pode ser usada por vários projetos ao mesmo tempo. Todo projeto usa a box apenas como base, assim, depois que a VM do projeto for criada, ela pode sofrer modificações sem afetar os outros projetos que usem a mesma box.

Uma lista de boxes vagrant pode ser encontrada neste link: http://www.vagrantbox.es/. Para configuração do ambiente do projeto EqLibra, será utilizada a box ubuntu/trusty64.

$ vagrant box add ubuntu/trusty64 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
  • 6º Criação da instância e do arquivo Vagrant (Vagrantfile)

O Vagrantfile é um arquivo que contém as definições para criar a máquina virtual Box.

$ vagrant init ubuntu/trusty64
  • 7º Edição do Vagrantfile

Este é o Vagrantfile utilizado para configuração do ambiente do projeto EqLibra:

 
  • config.vm.box - identificador da "box" que você irá usar. A box fica compartilhada no seu sistema, podendo ser usada por múltiplos Vagrantfiles;
  • config.vm.box_url - url da "box" . Nesse caso, Ubuntu 14.04 64bits.
  • config.ssh.shell - O shell para usar ao executar comandos SSH a partir Vagrant.
  • config.vm.define - é usado para definir um VM em um ambiente multi-VM. Leva um único parâmetro obrigatório que é o nome da máquina virtual.
  • config.vm.hostname - O nome do host que a máquina deve ter. O padrão é nulo.
  • config.vm.provision - Configura provisioners na máquina, de modo que o software pode ser instalado e configurado automaticamente quando a máquina é criada. Neste caso, como provisioner, é utilizado um script shell, que será explicado na próxima seção.
  • 8º Criação do Script shell

No diretório criado, mesmo diretório que contém o Vagrantfile, foi criado um arquivo script.sh:

 
  • 9º Fazer o boot na máquina virtual
$ vagrant up
  • 10º Rodar o provisioner

O comando abaixo roda apenas os provisioners, sem reiniciar a máquina. É bastante útil após fazer pequenas modificações no provisionamento.

$ vagrant provisioner
  • 11º Acessar a máquina através do ssh

O Vagrant fornece acesso SSH completo aos ambientes virtuais.

$ vagrant ssh

Executando vagrant ssh, o Vagrant irá te mostrar automaticamente um terminal shell funcional.

Depois de rodar vagrant ssh, você deve enxergar algo similar ao seguinte:

$ vagrant ssh
...
vagrant@vagrantup:~$
  • 12º Acessar a máquina através do ssh

Rode os seguintes comandos na máquina virtual para Instalação e Configuração do Banco de Dados (PostgreSQL). Estes comandos não foram inseridos no Script Shell pois foram apresentados diversos erros com o provisionamento.

Instalação da última versão do PostgreSQL:

$ sudo apt-get install postgresql postgresql-contrib

Após instalação, execute o comando:

$ sudo -i -u postgres

Para criação do usuário:

$ createuser -drlP kanjam

Para gerenciamento e criação do banco:

$ psql

Para criar o banco da aplicação:

$ create database kanjam with owner kanjam;

Referências editar

https://github.com/DAS1-2016/Finpy

http://friendsofvagrant.github.io/v1/docs/getting-started/ssh.html

https://www.howtoforge.com/tutorial/ubuntu-vagrant-install-and-getting-started/

https://www.howtoforge.com/tutorial/vagrant-ubuntu-linux-apache-mysql-php-lamp/

https://nandovieira.com.br/usando-o-vagrant-como-ambiente-de-desenvolvimento-no-windows

http://www.olindata.com/blog/2014/07/installing-vagrant-and-virtual-box-ubuntu-1404-lts

http://www.erikaheidi.com/pt_br/blog/vagrant-101-montando-seu-ambiente-de-desenvolvimento-portatil