66Dias
Grupo: Rafael Fazzolino e Matheus Godinho
Introdução
[editar | editar código-fonte]O software 66Dias é um aplicativo para a plataforma iOS responsável por auxiliar na mudança de hábitos na vida das pessoas, através de uma estratégia sugerida por uma universidade americana. Esse aplicativo foi desenvolvido por três pessoas e está em sua primeira versão.
66 Dias
[editar | editar código-fonte]Baseado em uma teoria publicada pelo European Journal of Social Psychology, nós iremos te ajudar a mudar um hábito em apenas 66 dias, onde iremos trabalhar uma maneira de reprogramar nossa mente para adquirir um novo hábito.
Você já pensou que quando nós tentamos mudar um hábito, na realidade estamos adquirindo um novo hábito que irá substituir o antigo? Foi pensando nisso que encontramos uma maneira fácil de te ajudar a perder uma velha mania ou conseguir estudar todos os dias como você sempre quis. O artigo How are habits formed: Modelling habit formation in the real worldy, publicado na European Journal of Social Psychology determina a base utilizada para alcançar essa meta, que é automatizar a sua mente ao novo hábito por meio da repetição diária.
É pensando nisso que nossa proposta é acompanhar a repetição de seu novo hábito, por 66 dias consecutivos, um número mínimo aconselhado pelo artigo, e assim ajudá-lo a alcançar sua meta."
Como todo treinamento, ele não é fácil, então para te ajudar existem três fases diferentes no nosso processo dentro dos 66 dias, que vão moldar o seu comportamento e te ajudar a seguir firme na sua proposta, e essa fases são:
Divulgue-se (1- 22): Como a primeira fase é a mais difícil, sua mente ainda está acostumada ao antigo modo, deixe mais pessoas sabendo sobre sua meta, para poder colocar uma certa pressão em si. Auto-análise (22 - 44): Tenha certeza do porquê você está fazendo isso e em como isso irá melhorar sua vida, mantenha-se sempre em mente seus motivos para continuar em frente. Encontrando a luz (44 - 66): Ainda é fácil abandonar tudo, mas você já está quase lá, encontre um apoio e siga a luz no final do túnel porque sua premiação está logo ali."
Nosso método é praticamente um treinamento cerebral intenso e como todo tipo de treinamento existem regras que nos ajudarão a alcançar os resultados:
O seu hábito tem que poder ser realizado TODOS os dias. Não pode estar envolvido com dependências químicas, como parar de fumar. Só podem ser cometidas 5 falhas em todos os 66 dias. Não é permitido que as falhas ocorram em dias consecutivos. Caso uma das duas últimas regras sejam quebradas, nossa meta terá falhado, e assim para conseguir adquirir esses mesmo hábito, será necessário que você recomece a contar os 66 dias.
Finalidade
[editar | editar código-fonte]Esse plano tem como finalidade definir a Gerência de Configuração do software 66 dias, que foi desenvolvido para plataforma IOS. Dentro desta definição, estão inclusos: versionamento, integração contínua, definição de uma folha de estilo e organização de uma wiki de apresentação.
Visão Geral
[editar | editar código-fonte]Gerência de configuração de software é uma atividade que tem como objetivo manter a qualidade do software. Busca manter todos os itens do projeto sob controle, registrando todas as alterações, para que qualquer dado possa ser recuperado sem perdas ao projeto. Segundo Pressman, 2006, Gestão de configuração de software é um conjunto de atividades de acompanhamento e controle que começa quando o projeto de engenharia de software tem início e só termina quando o software é retirado de operação. Como Pressman apresenta, desde o início do projeto é necessária a gerência de configuração de software, todos os artefatos gerados devem ser mantidos de maneira organizada utilizando versionamento, tanto pros artefatos quanto pro código, claro.
Para aplicar gerência de configuração de software em um projeto é necessário que todo o produto de software (o que inclui o código e todos os artefatos gerados) seja mantido de maneira a facilitar a pesquisa de versões anteriores, recuperando alguma configuração perdida, por exemplo. A ferramenta utilizada em grande parte das empresas para manter o produto de software é o GIT, desenvolvido por Linus Torvalds. Existem inúmeros repositórios remotos que suportam projetos GIT, como o Bitbucket, e o GitHub e GitLab (GitHub x GitLab), a escolha do repositório vai de acordo com a necessidade da empresa/projeto.
Outra área contemplada pela gerência de configuração de software é a questão referente a integração contínua, que muitas vezes é integrada com o repositório GIT. Esta se refere a geração automática de Builds do software a cada modificação (por exemplo), executando todos os testes e garantindo todas as configurações.
Projeto de Configuração
[editar | editar código-fonte]Papéis e Responsabilidades
[editar | editar código-fonte]Papel | Responsabilidade | Integrante |
---|---|---|
Gerente do projeto de configuração | Gerenciar e desenvolver atividades de GCS | Rafael Fazzolino |
Gerente do projeto de software | Implementar testes e desenvolver atividades de GCS | Matheus Godinho |
Infra-estrutura
[editar | editar código-fonte]Durante Gerência de Configuração do software 66 dias que está verminado em um repositório GIT no GitHub, será criada uma política de Versionamento, que definirá a política de branches e commits do projeto, será associado a uma wiki de documentação do sistema para os desenvolvedores, também presente no GitHub. O software é desenvolvido na plataforma IOS, utilizando a linguagem swift.
Para aplicação deste plano de gerência serão utilizados dois computadores, um com o sistema operacional Linux e outro com o sistema operacional da Apple (IOS). Para desenvolvimento será utilizado apenas o computador IOS, deixando o Linux apenas para documentação e organização das wikis e repositório.
Para o desenvolvimento do ambiente de testes e correções de sistema será utilizada a IDE padrão da plataforma iOS, o XCode da Apple. A ferramenta de integração contínua a ser utilizada no projeto será o Travis. Segue uma tabela que apresenta de forma clara as ferramentas utilizadas durante o projeto.
Ferramenta | Versão | Descrição |
---|---|---|
GIT | 1.9.1 | Possibilita versionamento e gerência de configuração do software, possibilitando também a integração com outras ferramentas. |
GitHub | Repositório remoto GIT. | |
Travis | Possibilita configuração de integração contínua, com integração com o github. | |
Vagrant | 1.8.4 | Provê um ambiente com as ferramentas necessárias para o desenvolvimento do software. |
Xcode | 6.4 | IDE utilizada para o desenvolvimento iOS. |
Homebrew | 0.99 | Gerenciador de dependencias utilizados nos sistemas OSX. |
Colaborações
[editar | editar código-fonte]Atualmente o software 66 dias se encontra quebrado em sua atual versão em desenvolvimento, devido a uma atualização de linguagem, e por problemas de configuração de versões todo o desenvolvimento de novas features e de correção de bugs está travado até a resolução desses problemas. Este trabalho busca solucionar os problemas presentes e aplicar a gerência de configuração para evitar que isto volte a ocorrer, e que possa manter sempre uma versão testada e validada quando acontecer algum deploy e ter um controle maior de solicitações e relatos de bugs dos usuários do aplicativo.
Um dos objetivos deste trabalho é, também, facilitar o trabalho conjunto dos contribuidores do aplicativo, que hoje trabalham remotamente projeto 66Dias, definindo guias de estilo. Dentro desta organização, está presente, também, a definição de uma política de commits, para que os contribuidores possam compreender a melhor maneira de trabalhar no projeto, facilitando o trabalho dos revisores dos merge request.
Cronograma
[editar | editar código-fonte]Objetivo Geral | Objetivos Específicos | Período | Atividade | Status |
---|---|---|---|---|
Garantia da Qualidade | Gerar Build | 17 - 22 de Abril | Levantar software | Feito |
Cobertura do Código | 22 de Abril a 30 de Maio | Desenvolver testes unitários | Feito | |
Integração Contínua | 10 a 28 de Maio | Analisar e selecionar ferramentas de apoio | Feito | |
28 de Maio a 6 de junho | Configurar integração contínua | Feito | ||
6 a 20 de junho | Evoluir integração contínua | Feito | ||
10 a 25 de junho | Configurar Vagrant | Feito |
Instalações e configurações
[editar | editar código-fonte]Travis-CI
[editar | editar código-fonte]O travis-ci foi utilizado para realizar a integração contínua do software, tentando gerar uma build a cada commit realizado na master do projeto. Nessa geração de build, são executados todos os testes para conferir se tudo está correto. Segue o passo a passo para configuração do travis-ci:
Primeiramente basta se registrar no travis-ci utilizando a própria conta do Github. Feito isso, o travis-ci irá sincronizar todos os seus repositórios, vá no seu perfil e selecione o repositório que deseja aplicar a integração contínua.
Feito isso, basta adicionar um arquivo a pasta raiz do seu projeto chamado .travis.yml que contem as informações sobre as configurações necessárias ao projeto. Segue as configurações utilizadas
language: objective-c
osx_image: xcode6.4
xcode_project: SixtySixDays.xcodeproj
xcode_scheme: SistySixDays
xcode_sdk: iphonesimulator8.4
script:
- xctool -project SixtySixDays.xcodeproj -scheme SixtySixDays -sdk iphonesimulator8.4
notifications:
email:
recipients:
- fazzolino29@gmail.com
- matheus.godinho@outlook.com
on_success: always
Vagrant
[editar | editar código-fonte]O Sistema Operacional utilizado para realização do projeto de configuração e do software em si foi o IOS, desenvolvido pela Apple. Por esse motivo, segue a configuração necessária para o mesmo.
Para instalação do Vagrant, faça download da versão para IOS no site oficial: https://www.vagrantup.com/downloads.html. Após a execução do arquivo e instalação do mesmo, o vagrant já estará disponível para execução no terminal. Para iniciar a execução, basta rodar:
$ vagrant init
Segue abaixo a configuração utilizada para este projeto no Vagrant file, para poder suprir todas as necessidades do sistema operacional alvo para o projeto:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# Use box from Atlas
config.vm.box = "AndrewDryga/vagrant-box-osx"
config.vm.provider "virtualbox" do |vb|
# Amount of memory on the VM because xcode will be used:
vb.memory = "4096"
end
#script to install homebrew and others DevTools to iOS
$script = <<SCRIPT
sudo chown -R vagrant:admin /Library/Caches/Homebrew
brew update
npm update
echo 'vagrant' | brew cask update
xcode-select --install
gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries
sudo /usr/sbin/DevToolsSecurity --enable
SCRIPT
# Enable provisioning with a shell script.
config.vm.provision "shell", inline: $script
end
Para levantar o ambiente, utilize o comando:
$ vagrant init
O que vai executar o virtualbox. É possível acessar o ambiente a partir de ssh, utilizando o comando
$ vagrant ssh
Para levantar o ambiente, execute:
$ vagrant up
Ao terminar o trabalho, para desligar a máquina virtual do vagrant, execute:
$ vagrant destroy