AULA 22 - Seminário 10
AULA 22 - Seminário 10
AULA 22 - Seminário 10
Configuração de software
Carlos Henrique Silva de Oliveira Bueno Igor Augusto Reis Gomes
Gustavo Mendes Santos Jose Luzia da Silva Neto
Heitor Guimarães da Fonseca Filho Vitor Hugo Souto Oliveira
Table of contents
01 02 03
introdução processo ferramentas
Definição, importância e Desde gerenciamento de De versão, mudanças e
objetivos mudanças até de releases integração contínua
04 05 06
Vantagens e desvantagens Boas práticas, desafios e Estudo de caso
Desde melhoria da produtividade tendências Case de sucesso do uso
até potenciais conflitos e atrasos do GCS
Abordagens atuais e
futuras
01 introdução
Contextualização
● Software está sempre sujeito a melhorias e ● Importante analisar, registrar e controlar
mudanças mudanças
● Há a necessidade de modificar/atualizar soluções
existentes
● Necessidade de Gerenciamento de
Configuração de Sistema
● Os requisitos estão constante mudança
● Atualização dos sistemas para atender às
necessidades atuais
CONCEITO
O QUE É? DEFINIÇÃO
● Área da Engenharia de Software
● Gerenciar os sistemas em
responsável por fornecer o apoio
evolução:
para o desenvolvimento de
- Para não perder o controle de
software
quais mudanças e versões foram
● Relacionado com as políticas,
incorporadas em cada versão do
processos e ferramentas para
sistema
gerenciamento de mudanças dos
sistemas de software
“conjunto de atividades projetadas para
controlar as mudanças pela identificação dos
produtos do trabalho que serão alterados,
estabelecendo um relacionamento entre eles,
definindo o mecanismo para o gerenciamento de
diferentes versões destes produtos, controlando
as mudanças impostas, e auditando e relatando
as mudanças realizadas..”
—Roger Pressman
Importância
1. Rastreamento eficaz de bugs: vincular modificações de código a problemas relatados torna o
rastreamento de bugs mais eficaz.
2. Implantação e Integração Contínuas: combina com processos contínuos para automatizar implantação e
teste, resultando em entrega de software mais confiável e oportuna.
3. Gerenciamento de riscos: reduz a chance de introduzir falhas críticas ajudando na detecção precoce e
correção de problemas.
4. Suporte para Projetos Grandes: o controle de código-fonte oferece um método ordenado para gerenciar
modificações de código para projetos grandes, promovendo um processo de desenvolvimento bem
organizado.
5. Reprodutibilidade: ao registrar versões precisas de código, bibliotecas e dependências, o versionamento
de código-fonte torna as compilações repetíveis.
6. Desenvolvimento Paralelo: facilita o desenvolvimento paralelo permitindo que vários desenvolvedores
colaborem em vários ramos ao mesmo tempo.
objetivos
1. Controlar a evolução de sistemas de software: o GCS ajuda a garantir que as alterações em um sistema
de software sejam adequadamente planejadas, testadas e integradas ao produto final.
2. Possibilitar a colaboração e coordenação: ajuda as equipes a colaborar e coordenar seu trabalho,
garantindo que as alterações sejam integradas adequadamente e que todos estejam trabalhando a partir
da mesma versão do sistema de software.
3. Fornecer controle de versão: fornece controle de versão para sistemas de software, permitindo que
equipes façam gestão e rastreio de diferentes versões do sistema e retornem a versões anteriores, se
necessário.
4. Facilitar a replicação e distribuição: ajuda a garantir que sistemas de software possam ser facilmente
replicados e distribuídos para outros ambientes, como teste, produção e sites de clientes.
5. O GCS é um componente crítico do desenvolvimento de software, e práticas eficazes de GCS podem ajudar
a melhorar a qualidade e confiabilidade de sistemas de software, além de aumentar a eficiência e reduzir o
risco de erros.
02 processo
Atividades
No que se refere às atividades do processo de gerenciamento de configuração de um
produto, os autore Pressman e Sommerville têm diferentes definições.
Pressman define cinco tarefas básicas, sendo elas:
1) Identificação;
2) Controle da versão;
3) Controle de mudanças;
4) Auditoria de configuração;
5) Relato de status.
Atividades
Já Sommerville define quatro:
1) Gerenciamento de Mudanças;
2) Gerenciamento de Versões;
3) Construção do Sistema;
4) Gerenciamento de Releases.
terminologia
Diferentes empresas usam diferentes termos para o mesmo conceito, então antes de
prosseguirmos com a descrição do processo de gerenciamento é necessário definir a
terminologia empregada nesta apresentação de acordo com o que encontramos nos
livros do Pressman e do Sommerville.
Um mesmo SCI pode ter diferentes versões dele mesmo que podem ser empregadas
em diferentes versões do mesmo software.
terminologia
BASELINE
Baselines são versões de componentes, de itens de configuração, que servem como
marco de referência no desenvolvimento de software. Elas são um conjunto de
versões de componentes que foram aprovados pela autoridade administrativa do
produto de software e servem como base para qualquer desenvolvimento posterior.
É possível que tenha a alteração de baselines, mas isso envolve um processo formal
de alteração.
terminologia
Outros termos também são definidos no livro de Sommerville, como segue na tabela abaixo:
terminologia
01 Identificação
02 Controle de versão
PROCESSo Controle de
03
(pressman) mudanças
Auditoria de
04 configuração
05 Relato de status
Identificação de Objetos de Configuração de Software
Para fazer o controle e administração dos SCIs eles devem ser nomeados e
organizados separadamente em uma abordagem orientada a objetos, na qual dois
tipos de objetos podem ser identificados: Objetos básicos e Objetos compostos.
Objetos básicos são unidade de texto criadas por um engenheiro de software durante
a análise, projeto, codificação ou teste. Um exemplo seria um conjunto de casos de
teste.
Objetos compostos são coleções de objetos básicos e outros objetos compostos, como
por exemplo a Especificação de Projeto.
Controle de versão
Combinação de procedimentos e ferramentas para gerenciar diferentes versões de
objetos de configuração criados durante o processo de engenharia de software.
Atributos, como um número de versão, são associados aos objetos para especificar
configurações alternativas do sistema de software.
Essas versões alternativas podem tanto ser revisões de software, como acontece em
jogos por exemplo, ou versões variantes que podem usar diferentes componentes de
acordo com o sistema sendo utilizado.
Em alguns casos, as questões de auditoria podem ser levantadas durante a revisão técnica,
mas quando o GCS é uma atividade formal a auditoria deve ser feita separadamente.
Relato de Status
O relato de status, ou Configuration Status Report (CSR) responde às seguintes perguntas:
1. O que aconteceu?
2. Quem fez?
3. Quando aconteceu?
4. O que mais será afetado?
Toda vez que um SCI recebe uma identificação nova ou atualizada uma entrada de CSR é
feita. Todas as vezes que uma auditoria é realizada os resultados são registrados como
parte da tarefa do CSR. A saída do CSR pode ser colocada em um banco de dados online
para que desenvolvedores ou realizadores de manutenção tenham acesso às informações
sobre mudanças feitas. CSRs são gerados regularmente com a intenção de manter a
administração e os profissionais a par de mudanças importantes.
O CSR ajuda a eliminar problemas causados por falta de comunicação entre aqueles
envolvidos no desenvolvimento de software.
Gerenciamento de
01 mudança
PROCESSo
Gerenciamento de
02 versões
Gerenciamento de
(Sommerville) 03
versões
Construção do
sistema
Gerenciamento de
04 releases
PROCESSO (SOMMERVILLE)
Como dito anteriormente, as duas primeiras atividades do processo descrito por
sommerville se assemelham muito com o Controle de Versões e o Controle de Mudanças.
As maiores diferenças estão na Construção do Sistema e no Gerenciamento de Releases.
ferramentas
Controle de Jira Trello Asana
● Existem diversas ferramentas
disponíveis para auxiliar no GCS, mudança
desde sistemas de controle de versão
até ferramentas de integração
contínua.
Integração Jenkins GitHub Actions GitLab CI
● As escolhas podem variar contínua (ci)
dependendo das necessidades
específicas do projeto e da equipe.
04 Vantagens e desvantagens
Melhoria da Redução do
produtividade risco
de erros e defeitos ao
e eficiência ao reduzir o
tempo e o esforço garantir que todas as
necessários para alterações sejam
gerenciar alterações de devidamente testadas
software. e validadas.
Dificuldade em gerenciar
dependências
e garantir que todas as
desvantagens
alterações sejam
integradas corretamente.
Potencial para
conflitos
e atrasos, especialmente em grandes
equipes de desenvolvimento com vários
colaboradores.
05 Boas práticas, desafios e
tendências
Boas Práticas e Padrões
● Documentação Detalhada: Mantenha uma documentação detalhada de configurações,
dependências e procedimentos de implantação. Isso ajuda na compreensão do sistema e na
resolução de problemas.