Pytuga
Contexto do Projeto
editarPytuguês é uma versão da linguagem de programação Python que tenta se aproximar o máximo possível de um pseudo-código em português. A motivação principal em aprender Pytuguês é evitar as barreiras com a língua inglesa quando iniciamos a aprender programação. Uma vantagem do Pytuguês com relação a outras soluções semelhantes é que a transição para uma linguagem de programação de uso comum é bastante suave, já que é possível misturar código Python e Pytuguês no mesmo programa.[1]
O projeto já está disponível para instalação utilizando do gerenciado de pacotes pip3.
Guia de instalação: http://pythonhosted.org/pytuga/install.html.
Plano de Gerenciamento de Configuração de Software
editarIntrodução
editarEste plano aborda o gerenciamento de todas as atividades referentes à Configuração de Software que será envolvida no projeto Pytuga, como contribuição para o mesmo.
Finalidade
editarAcompanhar os procedimentos de gerenciamento de configuração de software aplicados no projeto Pytuga com o intuito de facilitar a manutenção, evolução e instalação do software, utilizando das práticas propostas.
Escopo
editarIntroduzir integração contínua ao projeto:
editarO projeto não possui integração contínua, o que seria útil para manter a qualidade do projeto bem como transparência do status da build.
Criar ambiente virtual para o projeto:
Levantar um ambiente virtual fácil de configurar, leve, reproduzível e portátil para o projeto com a finalidade de facilitar o gerenciamento da infraestrutura do mesmo.
Gerenciamento de Configuração de Software
editarCronograma
editarMarco | Objetivo |
---|---|
03/10 | Finalização de plano de gerenciamento |
09/10 | Estudos sobre projeto |
17/10 | Possíveis testes |
25/10 | Criação de integração continua |
30/10 | Criação do ambiente virtual |
07/11 | Analise de empacotamento do projeto |
14/11 | Finalizando virtualização e scripts de instalação |
21/11 | Entrega de resultados/Pull Request |
Papeis
editarEquipe formada pelos alunos da disciplina de gerência de configuração de software da Universidade de Brasília (UNB), Flávio da Costa Paixão e Phelipe Wener.
Responsável | Papel |
Flávio da Costa Paixão | Gerente de configuração |
Phelipe Wener | Gerente de configuração |
Ferramentas
editarAs ferramentas utilizadas com base no escopo de controle de mudanças deste projeto serão:
Ferramenta | Descrição |
Git | Ferramenta de versionamento. |
GitHub | Source forge para gerenciamento de versões. |
Vagrant | Ferramenta para virtualização do ambiente |
Travis | Ferramenta de integração contínua. |
Python | linguagem de programação utilizada no desenvolvimento. |
Pytuga | Interpretador de Pytuguês. |
Relatório
editarO processo de criação do script de integração contínua mostrou alguns problemas, uma vez que exceto na versão 3.5 do python, todas as outras versões da release 3 quebraram. Isso se devia a um bug corrigido apenas na versão 3.5, portanto o código teve de ser adaptado para as demais versões, a fim de manter compatibilidade, gerando assim uma issue e um pull request.
A issue foi respondida pelo professor Fábio que guiou a dupla para deixar o código da melhor forma possível. Ao final, o script do travis, como mostrado acima, foi configurado para três versões do python com todos os testes corrigidos.
Sobre a virtualização foram poucos problemas apresentados, nos quais foram rapidamente solucionados, o primeiro deles foi com relação a escolha da box de virtualização na qual contém o sistema virtualizado, foi testado dois outros sistemas que apresentaram falhas na versões das dependências requeridas para o projeto, entretanto foi solucionado com a utilização do Ubuntu server 14.04 LTS. Na geração do script de inicialização da vagrant tivemos problemas com a instalação das dependências, pois era necessário executar a instalação de um arquivo do próprio repositório para instalação do pytuga, o setup.py.
Era esperado que acontecesse alguns problemas na execução do trabalho, porém foram problemas que puderam ser resolvidos sem grandes dificuldades, não comprometendo o andamento do projeto.
Travis
editarComo ferramenta selecionada para aplicação da integração contínua, o Travis, fornece um ambiente gerenciável, podendo ser acessado pelo próprio navegador. Possibilita a seleção de repositórios vinculados a uma conta GitHub, no qual é o serviço de web hosting utilizado pelos membros deste projeto.
Para a aplicação da integração contínua ao repositório foi criado um script de extensão .yml, necessário para execução dos testes no Travis CI. O script está no seguinte formato:
https://github.com/fabiommendes/pytuga/blob/master/.travis.yml
Após algumas configurações no site do Travis CI, o projeto estava sendo depurado mostrando o status após cada commit.
Vagrant
editarA plataforma Vagrant foi selecionada para a criação do ambiente virtual do projeto, onde foi criado uma Box contendo todas as dependências necessárias para trabalhar com o projeto da linguagem, a fim de facilitar as contribuições ao mesmo.
Para a criação deste ambiente foi necessário instalar a ferramenta virtual box e o próprio Vagrant
sudo apt-get install virtualbox vagrant
Após a instalação destas ferramentas, basta configurar o Vagrant. Primeiramente é necessário a criação de uma pasta contendo um repositório git do fork, para isso basta executar um o comando git clone dentro da pasta recém criada.
mkdir PROJETO
cd PROJETO
git clone https://github.com/pwener/pytuga.git
Com a pasta criada com o projeto, é necessário criar também um arquivo vagrantfile, no qual contém toda a configuração necessário para o ambiente virtual. Este arquivo é criado automaticamente ao executar a seguinte linha de comando.
vagrant init ubuntu/trusty64
Essa última linha de comando, cria uma box contendo o sistema Ubuntu server 14.04 LTS, no qual julgamos ser o suficiente para armazenar as versões necessárias das dependências do projeto.
O ambiente Vagrant está pronto para ser inicializado, entretanto não foi devidamente configurado para o projeto, para isso é necessário criar um outro arquivo na pasta raiz do projeto contendo um script shell com as dependências necessárias do projeto, o nome escolhido para esse arquivo foi setup.sh. Abaixo segue as dependências instaladas para esse projeto.
# update source-list and install dependencies
sudo apt-get -y update
sudo apt-get -y install python3-all python3-pyqt5 python3-pyqt5.qsci python3-pyqt5.qtsvg python3-pyqt5.qtwebkit python3-pip git vim
# clone and enter in repository
git clone https://github.com/fabiommendes/pytuga.git
cd pytuga
# Install pytest
sudo pip3 install pytest
# run setup.py to install local version
sudo python3 setup.py install
O arquivo setup.py está vinculado ao projeto, contendo um script de instalação próprio de outras dependencias utilizadas no mesmo, como o próprio pytuga. Após a criação desse script é necessário apontar no vagrantfile qual é o arquivo contendo este script. Para isso foi adicionada a seguinte linha de comando no arquivo vagrantfile.
config.vm.provision :shell, path:"setup.sh"
Esta linha indica o arquivo contendo os provisionamentos para a configuração do ambiente vagrant. Com o script de inicialização da vagrant é necessário criar a máquina virtual na Virtual box, para isso é necessário apenas um comando.
vagrant up
Ele vai rodar o script e criar o ambiente contendo todos os provisionamento do script de inicialização. Com isso tudo preparado é necessário apenas acessar o ambiente configurado da vagrant utilizando o comando.
vagrant ssh
Dentro dele vão estar todas as dependências necessárias para trabalhar com o projeto da linguagem Pytuguês. Para utilizar o ambiente virtual do projeto, basta executar o último comando, lembrando que é preciso ter o vrtual box e a própria vagrant instalada em sua máquina.