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