Roteiro para o Projeto de Organizaçãotrabalho Final
Roteiro para o Projeto de Organizaçãotrabalho Final
Roteiro para o Projeto de Organizaçãotrabalho Final
Belo Horizonte
UFMG
2022
1
SUMÁRIO
APRESENTAÇÃO --------------------------------------------------------------------------------------------------- 4
DIAGNÓSTICO -------------------------------------------------------------------------------------------------------5
2.1 Fluxo de informação e recursos de informação existente --------------------------------------- 5
2.2 Usuários da informação e suas necessidades de informação --------------------------------- 7
2.3 Fundamentação teórica do projeto -------------------------------------------------------------------- 7
2
1. APRESENTAÇÃO
Para tornar essa tarefa possível, existem várias soluções disponíveis, sendo a mais
conhecida e amplamente utilizada delas, um sistema chamado GIT. O GIT é um sistema de
gerenciamento de versões de documentos, desenvolvido pelo criador do Linux e mantido pela
própria comunidade de desenvolvedores. Aliado a essa tecnologia, muitas empresas utilizam o
GitHub, que é um sistema para hospedar arquivos usando GIT como base. Essa junção permite
estabelecer um ambiente de desenvolvimento seguro e coletivo, além de proporcionar várias
funcionalidades que facilitam o trabalho de administração do fluxo de trabalho. Por isso, para
que se tenha maior proveito dessas ferramentas, existem padrões de projeto e de administração
de fluxo, que, se mal utilizados, acabam prejudicando o desenvolvimento e gerando conflitos
que poderiam ser evitados.
3
2. DIAGNÓSTICO
4
Figura 1: registro de alterações por Sistemas de Controle de Versão baseados em arquivos. Fonte:
Primeiros passos - Noções Básicas de Git.
O Git não pensa ou armazena seus dados dessa maneira. Em vez disso, o Git
pensa em seus dados mais como um conjunto de snapshots de um mini sistema de
arquivos. Toda vez que o estado de um projeto é salvo no Git, este basicamente “tira
uma foto” de como todos os seus arquivos estão naquele momento e armazena uma
referência a esse instantâneo. Para ser eficiente, se os arquivos não foram alterados, o
Git não armazena o arquivo novamente - apenas um link para o arquivo idêntico anterior
que ele já havia armazenado.
Figura 2: controle de versão realizado pelo Git. Fonte: Primeiros passos - Noções Básicas de Git
5
2.2 Usuários da informação e suas necessidades de informação
6
detalhar um pouco mais sobre como o Git opera, quais suas vantagens sobre os
concorrentes, e sobre como o versionamento é feito:
A maioria dos outros sistemas de controle de versão armazena
informação como uma lista de mudanças por arquivo, tratando as
informações e mantendo-as como um conjunto de arquivos e as
mudanças feitas a cada arquivo. Um grande diferencial do Git em
relação à maioria dos sistemas é que ele não armazena as informações
dessa forma, pois considera que os dados são como um conjunto de
snapshots de um mini-sistema de arquivos. Para isso, no Git há a
possibilidade de criar, a qualquer momento, vários snapshots (ou
“branch”. Espécie de “cópia espelho”. Captura de algo em um
determinado instante, como em uma foto) do projeto. Pode-se supor
que em um projeto de um sistema é preciso realizar determinada
alteração no código fonte, mas não é desejável que essa alteração não
esteja disponível para mais ninguém, a não ser somente para o
desenvolvedor responsável pela alteração, até que tudo esteja certo.
Então, o snapshot é uma boa solução para esse caso, pois o
desenvolvedor pode trabalhar nesse “espelho” até acertar todos os
detalhes do sistema e quando o mesmo estiver pronto, pode-se fazer
um merge para o projeto original. Cada vez que se salva (ação
conhecida tecnicamente como “commit”) um projeto, é como se ele
tirasse uma foto de todos os seus arquivos naquele momento e
armazenasse uma referência para essa captura. Se nenhum arquivo foi
alterado, a informação não é armazenada novamente. (PALESTINO,
2018)
O GitHub, por sua vez, é um local de armazenamento em nuvem dos
arquivos enviados via Git. A vantagem de seu uso se dá uma vez que, com ele, não
é necessário instalar o Git em diversos computadores para acessar determinado
arquivo, visto que é um serviço web. (PALESTINO, 2018)
7
3. SOLUÇÃO DO PROBLEMA
Dessa forma, existe uma convenção de nomear os branches a partir de suas funções
dentro do desenvolvimento do software, assim como definir o que cada um desses tipos de
branches faz, como listado a seguir e ilustrado na imagem:
● Branch master/main: branch que contém o código que realiza as tarefas do software
em produção, ou seja, aquele programa que já está disponível para os clientes utilizarem.
● Branch feature: novos branches que são criados para o desenvolvimento de novos
recursos e que serão agrupados posteriormente ao branch master.
● Branch hotfix/ bugfix: são branches puxados a partir do branch master e que são usados
para a correção de erros existentes no código original.
8
3.2 Justificativa
A prática de ter uma boa organização de branches a partir de um modelo nos oferece
inúmeros benefícios, se tem uma separação melhor das funcionalidades de cada parte do
projeto. Isso facilita, por exemplo, a correção de futuros que possam existir dentro do produto,
pois a partir do momento em que existe uma independência, pelo menos no nível abstrato, de
cada parte do código, é possível focar na correção dessa funcionalidade sem se preocupar com a
interferência nas outras partes. Essa praticidade se torna útil também para utilizar ferramentas
que automatizam o processo de colocar o código em produção, como por exemplo a cultura de
DevOps, na qual não entraremos em detalhes aqui por não ser o foco deste trabalho.
Além disso, a aplicação dessa metodologia também permite uma melhor estruturação do
projeto. Com isso, conseguimos um maior valor semântico para a documentação do projeto e
maior facilidade de descrever as novas atualizações que são produzidas.
De certa forma, não precisamos de muitos recursos para a implementação desta solução.
O ponto mais importante para a efetivação dessa prática está em um bom conhecimento por
parte da equipe por trás do desenvolvimento do projeto em boas práticas de utilização do git,
como a política do git flow citado nos tópicos anteriores. Podemos alcançar uma boa
consistência dessas partes a partir da utilização de um padrão de software durante toda a
implementação do produto, garantindo que todos que estejam mexendo no produto se entendam
na forma de trabalhar.
9
Uma limitação a se evidenciar, devido à necessidade de se pensar nessa estruturação
antes de iniciar o projeto, é que esta prática não pode ser alcançada, ou talvez sim, mas com
muita dificuldade, em trabalhos que já estão em produção e, portanto, essa separação das
funcionalidades ser uma tarefa irrealista. Por isso, destaca-se mais uma vez a necessidade de
pensar em uma modelagem das informações, sendo que isso, na maioria dos casos, como
estamos tratando de softwares, se resume à modelagem do banco de dados, onde serão
armazenados as informações das diversas partes do projeto.
4. CONSIDERAÇÕES FINAIS
REFERÊNCIAS BIBLIOGRÁFICAS
10
AQUILES, Alexandre e Rodrigo Ferreira. Controlando Versões com GIT e GitHub. 1ª
Edição. São Paulo. Casa do Código. 2014
HADLER, Mikael. Utilizando o fluxo Git Flow. Disponível em:
https://medium.com/trainingcenter/utilizando-o-fluxo-git-flow-e63d5e0d5e04. Acesso em: 03
jul. 2022.
MOTA, Fernando Jorge. Git Flow: Uma forma legal de organizar repositórios git.
Disponível em: https://fjorgemota.com/git-flow-uma-forma-legal-de-organizar-repositorios-git/.
Acesso em: 03 jul. 2022.
11