Pytuga

Fonte: Wikiversidade

Contexto do Projeto[editar | editar código-fonte]

Pytuguê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[editar | editar código-fonte]

Introdução[editar | editar código-fonte]

Este 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[editar | editar código-fonte]

Acompanhar 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[editar | editar código-fonte]

Introduzir integração contínua ao projeto:[editar | editar código-fonte]

O 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[editar | editar código-fonte]

Cronograma[editar | editar código-fonte]

Marco 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[editar | editar código-fonte]

Equipe 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[editar | editar código-fonte]

As 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[editar | editar código-fonte]

O 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[editar | editar código-fonte]

Como 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[editar | editar código-fonte]

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

Referências[editar | editar código-fonte]

http://pythonhosted.org/pytuga/install.html

http://pythonhosted.org/pytuga/index.html

  1. https://github.com/pwener/pytuga