AULA 22 - Seminário 10

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 40

Gerenciamento de

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.

Os termos mais importantes são itens de configuração de software, ou SCIs, e


baselines, mas Sommerville acaba definindo outros termos ao longo do livro.
terminologia
Item de configuração de software (SCI)
SCIs são informações criadas como parte do processo de engenharia de software.
Eles podem ser um documento, um conjunto de casos de teste ou um componente
de um programa, como um procedimento ou um pacote, que tenha sido colocado
sob controle de configuração.

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.

Sommerville define essa atividade como Gerenciamento de versões, sendo ela a


segunda atividade na sua divisão do processo de gerenciamento de configuração.
Nela, ele salienta a necessidade de manter um registro das mudanças feitas entre as
versões, que é conhecido como "história de derivação de um componente".
Controle de Mudanças
O controle de mudanças combina procedimentos humanos e ferramentas
automatizadas para proporcionar um mecanismo de controle das mudanças.
Sommerville chama essa atividade de Gerenciamento de Mudança, e é a primeira
atividade na sua descrição do processo de gerenciamento de configuração.
O processo de controle de mudanças ocorre da seguinte maneira:
- Um pedido de mudança é feito, submetido e avaliado
- Os resultados da avaliação são apresentados como um relatório de mudança,
que deve ser usado por uma autoridade controlada de mudanças (Change Control
Authority - CCA), que pode ser uma pessoa ou um grupo de pessoas que vão
tomar uma decisão final sobre o status e a prioridade da mudança.
- Uma ordem de mudança de engenharia (Engineering Change Order - ECO) é
gerada para cada mudança aprovada. A ECO descreve a mudança a ser feita, as
restrições que devem ser respeitadas e os critérios de revisão e auditoria.
Controle de Mudanças
- O objeto a ser mudado passa por um check out no banco de dados de projetos e
a mudança a ser feita é implementada e as passa por um processo de Software
Quality Assurance.
- O objeto então passa por um check in no banco de dados e são usados os
mecanismos apropriados de controle de versão para criar uma nova versão do
software.
- A versão é criada e distribuída.

Vale notar que os processos de check in e check out implementam o controle de


acesso, que define quem poderá acessar e modificar o objeto de configuração em
questão, e controle de sincronização, que garante que mudanças paralelas executadas
por pessoas diferentes não se sobreponham uma à outra.
Auditoria de Configuração
A auditoria de configuração de software complementa a revisão técnica formal ao avaliar
um objeto de configuração quanto às características que geralmente não são consideradas
durante a revisão. Isso é feito através das respostas das seguintes questões:

1. A mudança especificada na ordem de mudança foi feita? Outras modificações


adicionais foram incorporadas?
2. Uma revisão técnica formal foi realizada para avaliar a exatidão técnica?
3. Os padrões de engenharia de software foram adequadamente seguidos?
4. A mudança foi realçada no SCI? A data da mudança e o autor da mudança foram
especificados? Os atributos do objeto de configuração refletem a mudança?
5. Os procedimento de GCS para anotar a mudança, registrá-la e relatá-la foram
seguidos?
6. Todos os SCIs relacionados foram adequadamente atualizados?

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.

No que se refere à Construção do Sistema, o Sommerville volta a falar sobre a abertura de


Change Requests e o processo de check-in e check-out, expandindo um pouco na
montagem do sistema baseado nas alterações realizadas e aprovadas e o processo e
técnicas de compilação de um software funcional.

Já o Gerenciamento de Releases envolve a preparação e acompanhamento das versões


do sistema liberadas para uso do cliente.
cONSTRUÇÃO DO SISTEMA - INTEGRAÇÃO CONTÍNUA
Gerenciamento de releases - fatores
03 ferramentas
Controle de Git SVN Mercurial
versão

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.

vantagens Aumento da Melhoria da


colaboração qualidade
e estabilidade de
sistemas de software
e comunicação entre os
ao garantir que todas
membros da equipe,
as alterações sejam
fornecendo um
devidamente
repositório central para
controladas e
artefatos de software.
gerenciadas.
Aumento da
complexidade
e sobrecarga,
especialmente em
sistemas de software
grandes.

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.

● Padrões de Nomenclatura: Estabeleça convenções claras para nomear arquivos, diretórios e


branches. Isso garante consistência e facilita a localização de recursos

● Ambientes Separados: Mantenha ambientes separados para desenvolvimento, teste e produção.


Isso evita conflitos e minimiza o risco de problemas decorrentes de configurações diferentes.

● Automatização de Processos: Utilize ferramentas de automação (como Jenkins, Ansible) para


automatizar tarefas repetitivas, como compilação, testes e implantação. Isso reduz erros humanos e
aumenta a eficiência.
Boas Práticas e Padrões
● Auditoria e Conformidade: Realize auditorias regulares para garantir conformidade com padrões e
regulamentações. Isso ajuda a manter a integridade do sistema e a minimizar riscos de segurança.

● Cumprimento de Padrões Reconhecidos: Os padrões, como o ISO/IEC 12207 e o IEEE 828,


muitas vezes incluem diretrizes e processos comprovados que visam garantir a qualidade do
software. Ao seguir essas diretrizes, as equipes de desenvolvimento podem melhorar a qualidade do
software produzido, reduzindo a incidência de erros e falhas.

● Gestão de Mudanças Controlada: Estabeleça um processo formal para gerenciar mudanças no


software, incluindo avaliação de impacto, aprovação e registro de alterações. Isso ajuda a evitar
mudanças não autorizadas e a manter a estabilidade do sistema.

● Versionamento Semântico: Adote o versionamento semântico para garantir consistência e clareza


nas versões do software. O versionamento semântico segue um padrão específico (X.Y.Z) onde X é
a versão principal, Y é a versão secundária e Z é a correção de bugs.
Desafios e soluções
06 Estudo de caso
● Desafios na gestão de mudanças de aplicativos em rede
global complexa.
● Implementação do GCS como solução.
● Papel do GCS na mediação entre inovação e estabilidade.
● Benefícios: melhoria da qualidade, redução de riscos e
custos de desenvolvimento.
● Impacto na detecção precoce de dependências e desvios de
padrões.
● Padronização e escalabilidade dos processos automatizados
pelo GCS.
● Aceitação positiva dos funcionários e mudança para um
novo modo de trabalho centrado na eficiência.
referências
SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.

PRESSMAN, Roger S. Engenharia de Software. Makron Books, 1995.

GeeksforGeeks. Software Engineering | System Configuration Management


Acesso em: 03 abril 2024.

How Cisco IT Uses Software Configuration Management to Minimize Business Risk


Acesso em: 03 abril 2024

BORGES, V. Melhores Práticas para um Gerenciamento Eficiente de Configuração e


Versionamento de Código
Acesso em: 3 abr. 2024.

CRISTINE. Gerência de Configuração de Software


Acesso em: 3 abr. 2024.
obrigado!Alguma dúvida?

CREDITS: This presentation template


was created by Slidesgo, including
icons by Flaticon, and infographics &
images by Freepik.

Please keep this slide for attribution.

Você também pode gostar