Engenharia de Software
Gerência de Configuração
e Mudanças
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Isso acontece?
• Como assim? Você não tem como
recuperar aquela versão do sistema do
mês passado?
• Onde está aquele relatório que eu criei
ontem?
• Quem foi que mudou essa tela?
• Ei, aquele defeito que a gente tinha
consertado apareceu de novo!!
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Isso acontece?
• A funcionalidade mudou? Quem mandou
mudar? Ah, o cliente... Por que ninguém me
avisou?
• Mas vai dar um trabalhão pra mudar esse
negócio!!
• Não, não, não salva agora não!!! Vai
sobrescrever meu arquivo!
• Ops, a mudança não deu certo. Como é que
isso estava antes mesmo?
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Isso acontece?
- Já fiz aquela mudança que você pediu.
- Mas eu não pedi mudança nenhuma.
- Bem, alguém deve ter pedido
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições
• Gerência de Configuração é a disciplina
que trata
– da realização de mudanças de forma
planejada e sistemática
– do controle formal da integridade de artefatos
e atividades
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Benefícios
•
•
•
•
Estabilidade
Confiabilidade
Tomada de decisões mais seguras
Padronização
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos
•
•
•
•
GC é reativo
GC é um gargalo
GC é custoso
GC atrasa a resolução de problemas
(liberação de patches)
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Sem Gerência de Configuração
•
•
•
•
•
•
Atrasos no projeto
Falta de visibilidade das mudanças
Altos custos de manutenção
Surpresas desagradáveis
Falta de qualidade nos serviços
Eterna dependência dos “donos” do
sistema
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Gerenciamento de Mudanças
Conceitos
• Baseline
– Uma versão estável e aprovada do sistema
• Change Request (CR) / Requisição de
Mudanças
– Um pedido formal para que uma mudança em uma
baseline seja realizada
• Configuration Control Board (CCB)
– Grupo que analisa a viabilidade, prioridade e
necessidade das mudanças solicitadas, autoriza a
criação de baselines etc.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Processo de Mudanças
Pergunta fundamental: a mudança afeta
baselines?
Sim: tratamento formal
Não: tratamento informal (não é sinônimo de
bagunça!!)
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Alteração em
baseline
Sem alteração em
baseline
Requisição informal
de mudança
Requisição formal de
mudança
Análise informal de
impacto
Análise formal de
impacto
Aprovação do
CCB
Realização da
mudança
Comunicação formal
da mudança
Comunicação
informal da mudança
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Ferramentas para
gerenciamento de mudanças
•
•
•
•
•
•
•
Bugzilla
Mantis
Request Tracker
Clear Quest
Jira
EasyTrack
Planilha eletrônica
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Problemas tratados pelo
Controle de Versões
• Atualizações simultâneas
– Várias pessoas atualizando os mesmos
artefatos
• Notificações limitadas
– Modificações são realizadas, mas as pessoas
afetadas não são comunicadas
• Múltiplas versões
– Lidar com várias versões de artefatos e do
próprio sistema
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de versões
• Item de configuração: produto ou conjunto de
produtos de trabalho gerenciado pelo processo
de Gerência de Configuração
• Repositório central: repositório, normalmente
localizado em um servidor, onde as mudanças
efetuadas nos repositórios locais são
consolidadas
• Repositório local: repositório, normalmente
localizado nos clientes, onde as mudanças são
realizadas antes de serem enviadas ao
repositório central
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de versões
• Módulo: conjunto de itens de configuração. Em
geral, corresponde ao diretório mais externo da
“árvore” de diretórios do projeto e possui
submódulos que correspondem aos
subdiretórios
• Import: adição de um módulo ao repositório
central
• Checkout: fazer o “download” de um módulo do
repositório central para o repositório local
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de versões
• Commit: atualizar o repositório central com os
arquivos modificados no repositório local
• Update: atualizar o repositório local com a
versão mais recente do repositório central
• Tag: um “label” que identifica um conjunto de
itens de configuração com suas respectivas
versões. Uma “fotografia” do repositório em um
dado momento
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de versões
• Tronco, tronco principal: principal “galho” da
“árvore” de versões., principal linha de
desenvolvimento
• Branch: um “galho”, uma linha alternativa de
desenvolvimento
• Merge: consolidação de duas versões diferentes do
mesmo arquivo, preservando as alterações feitas
em cada uma das versões
• Conflito: possível conseqüência de um merge,
quando não é possível preservar as alterações
feitas em ambos os arquivos
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de versões
Consolidação Centralizada
Modificações Distribuídas
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de Versões
Novo item
Import
Cliente
Servidor
(Repositório Central)
Cliente
(Repositório Local)
Checkout
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Controle de Versões
Atualização de item
Update
Servidor
(Repositório Central)
Cliente
(Repositório Local)
Commit
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Aplicação dos conceitos
tag
1.1
branch
Versao_4_0
1.2.1
1.2
1.2.2
1.3
1.2.3
conflito?
1.4
merge
1.5
Atenção:
Não confundir versão
do item com versão
do produto
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Dicas
• Updates e commits constantes. Cópias locais
muito desatualizadas causam um número
grande de conflitos.
• Resolver conflitos com a participação de todos
os interessados.
• Não criar muitos branches. Em especial, não
criar muitos níveis de branches.
• Não “comitar” código instável.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Ferramentas de controle de
versões
•
•
•
•
•
•
CVS
VSS
PVCS
SubVersion
ClearCase
Confusão de diretórios, backups...
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Responsabilidades do Gerente
de Configuração
• Configurar, manter e dar suporte ao uso de
ferramentas de configuração
• Criar e manter estrutura de diretórios e controle
de acesso
• Criar e manter um processo de “build”, de
preferência automatizado
• Criar e manter branches e tags
• Estabelecer baselines
• Preparar e liberar releases
• Fazer auditorias de configuração
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Download

Gerencia de Configuracao e Mudancas - fa7