Você está na página 1de 22

LAPR1

Laboratório Projeto I

www.isep.ipp.pt
Professores

Miguel Sá (fsa@isep.ipp.pt)

Vitor Cunha (vhc@isep.ipp.pt)

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Método de Avaliação

Dois trabalhos de grupo(P):

1º – grupos de 2 elementos (30%)

2º – grupos de 4 elementos (70%)

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Planeamento do Semestre

• Apresentação da disciplina e Introdução Git – 2/3 aulas

• Merge, Branch e Stashes; Git Bash, Linha de Comandos Git – 3 aulas

• 1º trabalho prático – 50 min (22 de novembro)

• Algoritmia, Netbeans, JAVA – 3/4 aulas

• Trabalho de Grupo final – Até ao final do semestre

• Trabalho de Grupo Final – Entrega e apresentação dos trabalhos

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Apresentação Alunos

• Nome
• Profissão
• Experiência em IT
• Porquê este curso?

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


• Como é feito hoje um grande projeto de
desenvolvimento de software?
• Ferramentas Utilizadas?

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


• Verificar instalação de GitExtensions
• Criação de perfis no Bitbucket

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Sistema de Controlo de versões - VCS - Version Control System
O que é um sistema de controlo de versões?
• Ferramentas de software que ajudam a gerir o código fonte ao longo do tempo

Vantagens
• Segurança: Evitar corrupções de ficheiros. Controlo de acessos ao código fonte.

• Versionamento: Histórico do código fonte. Restaurar para um estado anterior ou comparar alterações

• Colaboração: Facilita o trabalho de uma equipa de desenvolvimento

• Rastreabilidade: “Quem”, “Quando”, “Como”, “Porque” e “Onde” das alterações efetuadas

• Organização: visualização completa do ciclo de vida de cada ficheiro, desde sua criação até o momento atual.

• Confiança: Repositórios remotos ajudam na recuperação de imponderáveis. Testar novas ideias sem danificar a
linha base do desenvolvimento

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Controlo de versões - Version Control

Antes do controlo de versões

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Controlo de versões - Version Control

Antes do controlo de versões – PROBLEMAS

• Perder código feito anteriormente


• Vários elementos da equipa a editar os mesmos ficheiros
• Substituir código de outro elemento
• Difícil saber qual a última versão
• Funcionalidades adicionadas por um elemento podem ser incompatíveis com
outras realizadas por outro elemento da equipa
• Funcionalidades repetidas por elementos da equipa

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Controlo de versões - Version Control

Antes dos sistemas de Após os Sistemas de controlo


controlo de versões de versões

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Sistemas de Controlo de Versões Centralizados - CVCSs - Centralized
Version Control Systems

Exemplos:
• CVS
• Subversion
• Perforce

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Sistemas de Controlo de Versões Centralizados - CVCSs - Centralized
Version Control Systems

Modo de funcionamento:
• 1 servidor central contém versões de todos os ficheiros
• Os clientes ligam-se e obtêm as últimas versões dos ficheiros a partir
do servidor central

Vantagens: Desvantagens:
• Os elementos das equipas conhecem o • Se o servidor fica offline, a colaboração fica
trabalho dos outros em standby
• Os administradores têm um panorama geral • Se o disco do servidor avaria e não há
das tarefas dos programadores backups, o histórico perde-se se não estiver
• Mais fácil de gerir do que pastas locais nos computadores clientes

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Sistemas de Controlo de Versões Distribuídos - DVCSs - Distributed
Version Control Systems

Exemplos:
• Git
• Mercurial
• Bazaar
• Darcs

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


Sistemas de Controlo de Versões Distribuídos - DVCSs - Distributed
Version Control Systems

Modo de funcionamento:
• Os clientes ligam-se e obtêm não apenas as últimas versões dos ficheiros a partir do servidor
central mas o completo historial do projecto (full mirror of the repository)

Vantagens: Desvantagens:
• Se o servidor fica offline, os utilizadores • Checkout inicial do repositório é mais lento
podem continuar a trabalhar normalmente (todas branches e histórico é copiado para a
• Se o disco do servidor avaria, cada um dos máquina local)
clientes tem o histórico do projecto • É necessário mais espaço de armazenamento
armazenado localmente e pode ser copiado • Maior exposição do código fonte, pois cada
para outro servidor participante possui uma cópia localmente
• Permite colaboração com diversos utilizadores vulnerável.
em diferentes projectos

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


História do GIT

• A partir de 2002, o projecto Linux Kernel passou a utilizar um Sistema de Controlo de


Versões Distribuído proprietário – BitKeeper
• Em 2005 esta versão de software passou a ser paga
• A comunidade Linux iniciou o desenvolvimento de um DVCS chamado GIT cujas
características pré-definidas foram:
• Rapidez
• Design simples
• Suportar facilmente desenvolvimento não-linear (centenas de ramos paralelos)
• Totalmente distribuído
• Capaz de suportar eficientemente grandes projectos como o Linux Kernel (velocidade e tamanho do
projecto)

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


GIT – o que o distingue dos restantes VCS?

Outros VCS – Delta- Armazenam os dados


based version control como mudanças em
uma versão inicial de
cada ficheiro.

Git armazena dados


GIT - Snapshots, não como snapshots do
diferenças projeto ao longo do
tempo

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


GIT – 3 componentes

Working Tree ou Working Directory


• É a pasta onde trabalhamos nos ficheiros. Podemos pensar nesta pasta como um sistema de ficheiros
onde visualizamos e alteramos os ficheiros.

Staging Area ou Index


• É onde os commits são preparados. Nesta área o Git compara os ficheiros da working directory com os
que estão no repositório. Quando alteramos um ficheiro na working directory, a staging area marca o
ficheiro como modificado antes ser feito o commit.

Repository ou .git directory


• É onde o git armazena todos os commits - um snapshot de todos os nossos dados a determinada
altura – que foram feitos no projecto. É o container que guarda todas as alterações que foram
efectuadas nos ficheiros do projecto.

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


GIT – Workflow

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


GIT – Workflow

1. Modificamos os ficheiros na working tree

2. Seleccionamos os ficheiros cujas alterações queremos que façam parte do próximo


commit, que adiciona apenas essas alterações à staging area

3. Fazemos o commit, que retira os ficheiros da staging area e os armazena num snapshot
permanentemente ao repositório git (.git directory)

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


GIT – Workflow

Se uma versão de um ficheiro está na pasta .git (.git directory), é considerado commited

Se um ficheiro foi modificado e está na staging area, é considerado adicionado ao index ou


staged

Se um ficheiro foi modificado mas não está na staging area, o ficheiro está apenas modified.

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024


GIT – Ciclo de um ficheiro

ISEP · CTeSP em Desenvolvimento Ágil de Software · Laboratório Projecto I · 2023/2024

Você também pode gostar