Prévia do material em texto
Versionamento de Software 1. Qual é o principal objetivo do versionamento de software? a) Melhorar a estética do código b) Controlar alterações e manter histórico das versões do software c) Aumentar o tempo de desenvolvimento d) Eliminar a necessidade de testes Resposta correta: b) Controlar alterações e manter histórico das versões do software O principal objetivo do versionamento de software é controlar as alterações feitas no código ao longo do tempo e manter um histórico das versões do software. O versionamento permite que desenvolvedores e equipes de desenvolvimento acompanhem o progresso do projeto, identifiquem quando e onde mudanças específicas foram feitas e revertam alterações se necessário. Cada versão do software pode ter um número de versão associado que reflete mudanças significativas, correções de bugs ou adições de funcionalidades. Isso é especialmente importante em projetos colaborativos, onde várias pessoas podem estar trabalhando no mesmo código, pois o versionamento ajuda a evitar conflitos e facilita a integração de diferentes contribuições. Além disso, ter um histórico claro das versões é fundamental para fins de auditoria e manutenção, permitindo que os desenvolvedores compreendam a evolução do software e a razão por trás de certas decisões de design e implementação. 2. Qual das seguintes práticas é comum em um sistema de controle de versão? a) Ignorar as alterações feitas no código b) Fazer backups manuais em um único local c) Criar branches para desenvolvimento paralelo d) Remover todos os históricos de versões anteriores Resposta correta: c) Criar branches para desenvolvimento paralelo Uma prática comum em sistemas de controle de versão é criar branches para desenvolvimento paralelo. Branches permitem que desenvolvedores trabalhem em diferentes funcionalidades, correções de bugs ou experimentos sem afetar a versão principal do código (geralmente chamada de "main" ou "master"). Isso é especialmente útil em equipes onde múltiplas tarefas precisam ser realizadas simultaneamente, pois cada branch pode ser desenvolvido de forma isolada e, quando pronto, pode ser mesclado (merge) de volta à branch principal. Essa abordagem facilita a af://n770 colaboração entre desenvolvedores, pois permite que eles façam alterações sem interferir no trabalho uns dos outros. Além disso, branches ajudam a organizar o fluxo de trabalho, tornando mais fácil testar novas funcionalidades ou correções antes de integrá-las ao código principal. Essa prática é essencial para a gestão eficaz de projetos de software, especialmente em ambientes ágeis, onde as iterações rápidas são comuns. 3. O que significa a prática de "tagging" em um sistema de versionamento? a) Criar uma nova branch para desenvolvimento b) Marcar versões específicas do software para referência futura c) Excluir versões antigas do código d) Modificar diretamente o código sem controle Resposta correta: b) Marcar versões específicas do software para referência futura A prática de "tagging" em um sistema de versionamento refere-se ao ato de marcar versões específicas do software para referência futura. As tags são frequentemente usadas para identificar versões estáveis ou lançamentos importantes, como versões de produção ou marcos significativos no desenvolvimento do software. Ao criar uma tag, os desenvolvedores podem facilmente voltar a um estado específico do código, facilitando o acesso a versões anteriores sem a necessidade de navegar pelo histórico de commits. Tags são especialmente úteis em ciclos de lançamento, pois permitem que as equipes mantenham uma referência clara de onde cada versão do software está no tempo e quais alterações foram feitas antes de cada lançamento. Além disso, ao usar tags, as equipes podem garantir que a versão que foi implantada em produção pode ser facilmente recuperada ou replicada, o que é crucial para manter a estabilidade do software ao longo do tempo. 4. Qual é a diferença entre um commit e um push em um sistema de controle de versão? a) Um commit salva mudanças localmente, enquanto um push envia essas mudanças para um repositório remoto b) Um commit remove arquivos do projeto, enquanto um push os adiciona c) Um commit é irreversível, enquanto um push pode ser desfeito d) Ambos são a mesma coisa, apenas com nomes diferentes Resposta correta: a) Um commit salva mudanças localmente, enquanto um push envia essas mudanças para um repositório remoto A diferença fundamental entre um commit e um push em um sistema de controle de versão é que um commit salva as mudanças no repositório local do desenvolvedor, enquanto um push envia essas mudanças para um repositório remoto. Quando um desenvolvedor realiza um commit, ele registra uma alteração no código, associando-a a uma mensagem que descreve o que foi alterado. Esse commit é armazenado localmente, permitindo que o desenvolvedor trabalhe de forma isolada e teste suas alterações antes de compartilhá-las com outros. Após realizar um ou mais commits, o desenvolvedor pode usar o comando push para enviar essas alterações para um repositório remoto, como um servidor ou uma plataforma de hospedagem de código (por exemplo, GitHub). O push é o passo que torna as alterações visíveis para outros membros da equipe e integra as contribuições ao projeto compartilhado. Essa distinção é crucial para entender o fluxo de trabalho em projetos colaborativos, onde o controle sobre quando e como as alterações são compartilhadas é vital. 5. Por que o versionamento semântico (SemVer) é utilizado no controle de versões de software? a) Para permitir a criação de versões aleatórias sem critérios b) Para comunicar de forma clara e consistente as mudanças entre versões c) Para ignorar o impacto das mudanças no código d) Para simplificar o número de versões lançadas Resposta correta: b) Para comunicar de forma clara e consistente as mudanças entre versões O versionamento semântico (SemVer) é utilizado no controle de versões de software para comunicar de forma clara e consistente as mudanças entre versões. O SemVer segue um esquema de numeração que utiliza três componentes principais: MAJOR.MINOR.PATCH. O número da versão major (MAJOR) é incrementado quando há mudanças incompatíveis na API, indicando que a nova versão não funcionará com versões anteriores. O número minor (MINOR) é incrementado quando funcionalidades novas são adicionadas de forma compatível, permitindo que novos recursos sejam introduzidos sem quebrar a funcionalidade existente. Já o número patch (PATCH) é incrementado para correções de bugs que não afetam a funcionalidade ou a API. Essa abordagem fornece uma linguagem comum que permite que desenvolvedores e usuários compreendam rapidamente o que esperar de cada nova versão do software. Ao seguir o SemVer, as equipes de desenvolvimento podem garantir uma comunicação eficiente sobre a evolução do software, ajudando a gerenciar expectativas e a evitar problemas de compatibilidade à medida que novas versões são lançadas.