Introdução

editar

O Plano de Gerenciamento de Configuração retrata as atividades do Gerenciamento de Controle de Configuração e Mudança que serão realizadas ao longo do ciclo de vida do produto de software. Suas atividades envolvem apontar a configuração do software e manter sua integridade durante o projeto.

Finalidade

editar

Este documento tem a finalidade de elaborar um padrão a ser praticado pelos integrantes da equipe com o intuito de garantir um controle maior do produto no desenrolar do projeto. Sendo assim, serão detalhados os marcos de entrega das atividades, além de todos os recursos necessários, entre eles, computadores, ferramentas e equipes; e as suas devidas responsabilidades.

Escopo

editar

Este Plano de Gerenciamento de Configuração destina-se aos membros da equipe responsáveis pelo desenvolvimento do projeto do Espelho Político, realizado inicialmente nas disciplinas de Métodos de Desenvolvimento de Software e Gestão de Portifólios e Projetos de Software da Universidade de Brasília, que continua em andamento atualmente, e abrange todo o controle e gerenciamento da configuração do projeto.

Referências

editar
  • Template do Plano de Gerência de Configuração do Rational Unified Process.

Gerenciamento da Configuração do Software

editar

Papéis e Responsabilidades

editar

A equipe é formada pelas alunas Ana Carolina Lopes da Silva e Elaine Cristina Meirelles da Universidade de Brasília. As mesmas realizarão todos os papéis previstos para uma Gerência de Configuração, como: gerente de configuração, gerente de controle de mudança e desenvolvedor, o que incluem as responsabilidades de estabelecer políticas de gerência de configuração, escrever Plano de Gerência de Configuração, configurar ambiente de gerência de configuração, criar e promover baselines, estabelecer processo de controle de mudanças, enviar, revisar e atualizar solicitação de mudança e seguir os padrões e procedimentos definidos no Plano de Gerência de Configuração.

Ferramentas, Ambiente e Infra-estrutura

editar
GERÊNCIA DE CONFIGURAÇÃO
FERRAMENTA FUNÇÃO
Git Responsável pelo controle de versão
GitHub Responsável pela hospedagem web/online do projeto
Wiki (Wikiversidade e GitHub) Responsável pela documentação do projeto

Tabela 1 - Ferramentas de Gerência de Configuração

AMBIENTE DE DESENVOLVIMENTO
FERRAMENTA TIPO
Ubuntu 14.04 LTS Sistema Operacional
LibreOffice Writer Editor de texto
Sublime Text Plataforma de desenvolvimento

Linguagem: Ruby on Rails

Tabela 2 - Ferramentas de Ambiente de Desenvolvimento

As ferramentas de comunicação são:

  • Slack
  • Trello

O Programa de Gerência de Configuração

editar

Configuração da Identificação

editar

Métodos de identificação

editar

Os artefatos devem ser nomeados da seguinte maneira: _.

Exemplo: ESPELHO-POLÍTICO_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

A aprovação do documento é dada pelo membro da equipe responsável pelo artefato em questão através de uma revisão do artefato.

 Baselines do projeto

editar

As baselines do projeto serão definidas ao final de cada sprint. Sendo que cada sprint terá a duração de 7 dias. Elas poderão ser autorizadas pelos integrantes da equipe.

Configuração e Mudança de Controle

editar

Processo de Requerimento por Mudanças e Aprovação

editar

Os requerimentos de mudança serão feitos através de issues, criadas no repositório do projeto que se encontra no GitHub. As issues deverão conter labels, que especificam seu tipo (prioridade, nível de dificuldade, se é bug, funcionalidade, etc), quem será responsável por ela e a descrição da issue (qual seu objetivo). Podendo também conter algum link que ajude na resolução da issue. Para a issue ser aprovada, deverá ser feito um pull request, onde será feita uma avaliação, se esse for aprovado, será feito o merge. Se não, será comentado o porque do pull request não ter sido aceito, para que sejam feitas as correções solicitadas. Quando o pull request for aceito, a issue deverá ser fechada. Será criada uma branch para cada requerimento de mudança.

Configuração do Status da Conta

editar

Mídia de Armazenamento do Projeto e Processo de Entrega

editar

Uma vez por semana será feito um backup da versão mais recente ou estável do projeto na máquina das integrantes da equipe.

Milestones

editar

Para a melhor realização deste projeto preve-se a finalização de cada marco nas seguintes datas:

  • (13.05) Sprint 1 - Implementar Integração contínua: Travis/Jenkins
  • (20.05) Sprint 2 - Implementar Build: Chef
  • (27.05) Sprint 3 - Implementar Build: Vagrant
  • (03.06) Sprint 4 - Refatoração (se necessário)
  • (10.06) Release 1 - Verificação do Andamento dos projetos
  • (24.06) Release 2 -Apresentação Final

Treinamento e Recursos

editar

Os recursos e treinamentos serão adquiridos durante a ministração das aulas da disciplina de Gerência de Configuração de Software ofertada pela UnB.

Andamento em 10/06

editar
Andamento do Projeto
Atividade Ferramenta Status O que faltava?
Integração Contínua Travis CI em andamento - 30% Descobrir erro no script de .travis.yml
Build Chef solo 12.3.0 em andamento - 80% Descobrir erro na receita do chef
Build Vagrant em andamento - 90% Fazer shell provision de instalação de pacotes básicos

Tabela 3 - Status do andamento do projeto em 10/06.

Etapa Final - Relatório

editar

Espelho Político

editar

Website desenvolvido em Ruby on Rails durante as disciplinas de Métodos de Desenvolvimento de Software e Gestão de Portifólios e Projetos de Software da Universidade de Brasília.

Foi implementado com base no conceito de Dados Abertos, onde seu principal objetivo é mostrar, de forma transparente, para a população quais os políticos que realmente estão fazendo a diferença no Brasil. Isso é demonstrado através de gráficos com a quantidade e nomes de proposições de leis criadas por eles e rankings dos que mais elaboram essas proposições.

O projeto original encontra-se em: <https://github.com/EspelhoPolitico/espelho-politico>

Ferramentas Utilizadas

editar

GitHub

editar

Serviço de Web Hosting Compartilhado para projetos que usam o controle de versionamento Git. Possui funcionalidades de uma rede social como feeds, seguidores, wiki e um gráfico demonstrando os trabalhos dos desenvolvedores nas versões de seus projetos/ repositórios.

Um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade. Cada diretório de trabalho do Git é um repositório com um histórico completo e habilidade total de acompanhamento das revisões, não dependente de acesso a uma rede ou a um servidor central.

Jenkins

editar

Fornece serviços de integração contínua para desenvolvimento de software. É um sistema baseado em servidor que funciona em um servlet container como o Apache Tomcat. Ele suporta ferramentas de SCM incluindo AccuRev, CVS, Subversion, Git, entre outras.

Ferramenta de gerência de configuração escrito em Ruby e Erlang. Utiliza uma DSL Ruby para criar scripts de ambiente. O chef é usado para simplificar a tarefa de configuração e manutenção de servidores de uma empresa e consegue descrever o que consiste a infra-estrutura do sistema e a maneira pela qual cada parte deve ser implantada, configurada e testada. Além disso, pode se integrar com plataformas baseadas em nuvem, como Rackspace, Internap, Amazon EC2, Cloud Platform Google, OpenStack, SoftLayer e Microsoft Azure, e automaticamente provisionar e configurar novas máquinas.

Vagrant

editar

Software que cria e configura ambientes de desenvolvimento virtuais. Pode ser visto como um wrapper de nível superior em torno de um software de virtualização como o VirtualBox, Vmware, KVM e Linux Containers (LXC), e em torno de software de gerenciamento de configuração, como Ansible , Chef, Salt e Puppet.

Resultados

editar

O projeto Espelho Político não possuía nenhuma gerência de configuração. Sendo assim, o objetivo deste trabalho era iniciar essa gerência com ferramentas que visam facilitar o uso do ambiente de desenvolvimento do software e melhorar a qualidade do mesmo a partir da integração contínua. Para isso, foi realizado um fork do projeto, encontrado em <https://github.com/ecmeirelles/espelho-politico>, onde fez-se as mudanças relacionadas a integração contínua. Além disso, foi criado um novo repositório na organização, encontrado em <https://github.com/EspelhoPolitico/automacao>, onde realizou-se a inclusão do Vagrant e Chef.

Em virtude de dificuldades iniciais com a integração contínua, o primeiro passo completado foi a configuração da Vagrant, utlizada para manter em comum o ambiente de desenvolvimento para todos os desenvolvedores. O sistema operacional configurado na máquina virtual foi o Ubuntu 14.04 LTS, 64 bits, através da imagem base (conhecida como box) ubuntu/trusty64, encontrada em <https://atlas.hashicorp.com/ubuntu/boxes/trusty64>. Além disso, fez-se uso de shell script provision para a instalação dos pacotes necessários para o total e correto funcionamento do software.

Logo após, foi intregado a Vagrant o chef-solo, versão 12.3.0. Foram instalados diversos cookbooks, relacionados ao banco de dados e linguagem de programação. Além disso, foram feitas receitas e atributos.

Por último, foi implantada a integração contínua. Para isso foi utilizada a ferramenta Jenkins CI. Para a configuração do Jenkins foram utilizados plugins para o Github, reposítório oficial do projeto, para o Git, utilizado para o controle de versão, além de plugins referentes a Ruby on Rails, linguagem utilizada no projeto.

Para um melhor entendimento dos colaboradores (antigos e possíveis novos), foi realizado, adicionalmente, um passo-a-passo de instalação no arquivo README, tanto do arquivo forkado do projeto, quanto do novo repositório.

Dificuldades

editar

As integrantes desconheciam, inicialmente, a gerência de configuração em si, juntamente com as suas ferramentas de apoio. Fator que culminou em pequenas dificuldades de configuração e uso no começo do trabalho.

Outra dificuldade, que resultou na mudança da ferramenta de integração contínua, foi a de escrita do script de testes do arquivo .travis.yml, utilizado pela ferramenta Travis CI. Até o momento não foi descoberta a causa do erro.

Instalação

editar

As instruções para a instalação do software Espelho Político em uma máquina virtual estão no README.md do projeto que pode ser acessado pelo link <https://github.com/EspelhoPolitico/automacao>.

O README também contém as instruções para instalação da ferramenta de integração contínua Jenkins.

Referências

editar

GALE, Andy. Getting started with chef: First steps with chef. Disponível em: < http://gettingstartedwithchef.com/first-steps-with-chef.html >. Último acesso em junho de 2015.

VAGRANT DOCS. Getting started. Disponível em: < https://docs.vagrantup.com/v2/getting-started/index.html >. Último acesso em junho de 2015.

REYNOLDS, Rick. Setting up Jenkins for GitHub, Rails & Rspec. Disponível em: < http://www.webascender.com/Blog/ID/522/Setting-up-Jenkins-for- GitHub-Rails-Rspec#.VYmjYend88o >. Último acesso em junho de 2015.