EqLibra
Grupo: Attany Araújo e Keli Cristina
Trabalho desenvolvido no âmbito da disciplina de Gerência de Configuração de Software
Introdução
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]A seguir as referências utilizadas para a elaboração deste documento:
- Artefato do RUP: Plano de Gerenciamento de Configuração. Acesso em 19/04/2016. Disponível em <http://www.wthreex.com/rup/portugues/index.htm>
- Pro Git book. Acesso em 23/04/2016. Disponível em <https://git-scm.com/book/pt-br/v1/>
Visão Geral
[editar | editar código-fonte]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 | editar código-fonte]Papeis e Responsabilidades
[editar | editar código-fonte]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:
|
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 | editar código-fonte]- 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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]Identificação da Configuração
[editar | editar código-fonte]Métodos de Identificação
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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:
Aprovação de Solicitação de Mudança
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]Travis CI
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]- 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 | editar código-fonte]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