Introdução à Gerência de Configuração. Leonardo Gresta Paulino Murta leomurta@ic.uff.br



Documentos relacionados
Introdução ao Controle de Versões. Leonardo Murta

Gerência de Configuração. Leonardo Gresta Paulino Murta

Introdução à Gerência de Configuração. Leonardo Gresta Paulino Murta

GERÊNCIA DE CONFIGURAÇÃO. Isac Aguiar isacaguiar.com.br

Gerência de Projetos e Manutenção de Software Aula 9 Gerência de Configuração e Mudanças Andréa Magalhães Magdaleno andrea@ic.uff.

Gerência de Configuração. Professor: Dr. Eduardo Santana de Almeida Universidade Federal da Bahia

Agenda. Gerência de Configuração de Software. Atividade Sala. Quais os problemas? P1) Duplicidade de Trabalho. P2) Trabalhos Sobrepostos

ISO/IEC 12207: Gerência de Configuração

Gerência de Configuração. Profº Rômulo César

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Controle de Versão. Prof. Msc. Bruno Urbano Rodrigues.

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

Gerência de Configuração de Software Funções

Gestão de Modificações. Fabrício de Sousa

Gerência de Configuração. Leonardo Gresta Paulino Murta

Controle de Versão de Software. Luiz Jácome Júnior

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE

2. GERÊNCIA DE CONFIGURAÇÃO DE SOTWARE

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Versionamento de Código. Núcleo de Desenvolvimento de Software

Gerência de Configuração de Software Introdução

Gerência de Configuração de Software. Msc. Ernani Sales Implementador Oficial MPS.BR

Repositórios de Componentes nas perspectivas de Gerência de Configuração de Software e Reutilização de Software

Salvando modificações localmente (commit) Enviando modificações para o servidor (push) Sinalizando versão estável (tag)

Gerência de Configuração de Software

Controle de Versão com GIT

Sistema de Controle de Versão - CVS

GARANTIA DA QUALIDADE DE SOFTWARE

Integração de Ferramentas de Apoio a Processos Outubro 2010 GUSTAVO VAZ NASCIMENTO

Redmine. Simplificando a gestão de projetos

Atividades da Engenharia de Software GERENCIAMENTO DA CONFIGURAÇÃO DE SOFTWARE. Atividades da Engenharia de Software. Processo de Desenvolvimento de

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Controle de Versão com CVS

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula:

PROJETO CEMEA. Um trabalho educacional

MUDANÇAS NA ISO 9001: A VERSÃO 2015

Gerência de Configuração: Processos e Ferramentas. Leonardo Gresta Paulino Murta

ES06 Especialização em Engenharia de Software Prof.: Misael Santos Ago/2010

Universidade Paulista

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Redmine. Simplificando a gestão de projetos

Projeto SCCM Implantação do ClearCase e ClearQuest UCM

Julio Cezar Fialho Freire de Carvalho 1, Aline Maria Malachini Miotto Amaral 2 1 INTRODUÇÃO

O primeiro passo é habilitar acesso externo através de web service a configuração é bem simples e não exige maiores explicações.

Padrões de configuração GIT

Instruções do Jogo INSTRUÇÕES DO JOGO

Gerência de Configuração: Terminologia. Leonardo Gresta Paulino Murta

ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE LIBERAÇÃO

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Capítulo 25. Gerenciamento de Configuração. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D.

ENGENHARIA DE SOFTWARE I

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

Gerenciamento de Configuração de Software

Fundamentos de Teste de Software

Gerenciamento de software como ativo de automação industrial

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Diretrizes de Qualidade de Projetos

Disciplina de Banco de Dados Introdução

Conceitos de Banco de Dados

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm.

Capítulo X. Gerenciar Mudanças dos Requisitos. Aluizio Saiter, M. Sc.

Engenharia de Software I

ESTUDO E IMPLEMENTAÇÃO DE UM SISTEMA PARA CONTROLE DE VERSÕES

Fundamentos de Gestão de TI

Diferenças da versão 6.3 para a 6.4

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

Manual AGENDA DE BACKUP

Perguntas para avaliar a efetividade do processo de segurança

Profa. Gislaine Stachissini. Unidade III GOVERNANÇA DE TI

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

Introdução ao Git. Laboratório de Programação. Luísa Lima, Pedro Vasconcelos, DCC/FCUP. Março 2015

FANESE Faculdade de Administração e Negócios de Sergipe

Disciplina: Administração de Departamento de TI. Professor: Aldo Rocha. Aula XI - 15/09/2011

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Processos e Threads (partes I e II)

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

GTI2-Tecnologia. <Analisador de logs> Documento Visão. Versão <1.0>

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Empresa de Informática Infinity LTDA. Gerenciamento de Configuração. Sistema de Gerenciamento de Plano Corporativo de Celulares

ADMINISTRAÇÃO DOS RECURSOS DE DADOS

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Considerações no Projeto de Sistemas Cliente/Servidor

Prof. Marcelo Machado Cunha

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

MOD9 Processos de Transição de Serviços

15/03/2010. Análise por pontos de função. Análise por Pontos de Função. Componentes dos Pontos de Função. Componentes dos Pontos de Função

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Arquitetura de Banco de Dados

Prof. Júlio Valente Agosto/2015. CV Resumido

Exame de Fundamentos da ITIL

Transcrição:

Introdução à Gerência de Configuração Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Introdução A Engenharia de Software... Abordagem disciplinada para o desenvolvimento de software Grande diversidade de metodologias Leonardo Murta Introdução à Gerência de Configuração 2

Introdução Ponto em comum nas metodologias: refinamentos sucessivos de artefatos http://www.colegiosaofrancisco.com.br Leonardo Murta Introdução à Gerência de Configuração 3

Mas aonde ficam esses artefatos? Tarefas de Engenharia de Software Artefato Artefato novo Artefato modificado Repositório Leonardo Murta Introdução à Gerência de Configuração 4

O que são repositórios? Repositórios Lugar seguro onde artefatos são depositados Permitem armazenamento, busca e recuperação de artefatos Servem como um ponto de referência Apóiam no aumento da memória organizacional Leonardo Murta Introdução à Gerência de Configuração 5

Gerência de Configuração Gerência de configuração de software é uma disciplina para o controle da evolução de sistemas de software (Susan Dart, 1991) Desenvolvimento Liberação Implantação Produção Gerência de Configuração Leonardo Murta Introdução à Gerência de Configuração 6

Histórico Anos 50 GC para produção de aviões de guerra e naves espaciais Anos 60 e 70 Surgimento de GCS (S = Software) Foco ainda em aplicações militares e aeroespaciais Anos 80 e 90 Mudança de foco (MIL EIA, IEEE, ISO, etc.) Surgimento das primeiras normas internacionais Assimilação por organizações não militares Leonardo Murta Introdução à Gerência de Configuração 7

Sistema de Gerência de Configuração Versão 1 Versão 2 Versão 3 Versão 4 Versão 5 Leonardo Murta Introdução à Gerência de Configuração 8

Sistema de Gerência de Configuração Versão 1 Versão 2 Versão 3 Versão 4 Versão 5 Leonardo Murta Introdução à Gerência de Configuração 9

Sistema de Gerência de Configuração Versão 1 Versão 2 Versão 3 Versão 4 Versão 5 Leonardo Murta Introdução à Gerência de Configuração 10

Sistema de Gerência de Configuração Solicitações Controle de Modificações Artefatos Controle de Versões Construção e Release Leonardo Murta Introdução à Gerência de Configuração 11

Sistema x Funções de GC Espaço de trabalho: Processos: Sistemas: Ambiente de Desenvolvimento de Software Identificação Controle Contabilização Avaliação Liberação Controle de Modificações Controle de Versões Gerenciamento de Construção Perspectiva de integração Perspectiva gerencial Perspectiva de desenvolvimento Este curso será guiado pelos sistemas de controle de modificações e versões! Leonardo Murta Introdução à Gerência de Configuração 12

Exercício 1. Apresentar, na próxima aula, as 5 funções de gerência de configuração, citando exemplos 2. Apresentar, na próxima aula, o sistema de gerenciamento de construção e release, dando algum exemplo usando uma ferramenta (make, ant, maven, etc.) 3. Apresentar, na próxima aula, o que é integração contínua, dando algum exemplo usando uma ferramenta (Cruise Control, Apache Continuum, Hudson, etc.) Leonardo Murta Introdução à Gerência de Configuração 13

Sistema de Gerência de Configuração Solicitações Controle de Modificações Artefatos Controle de Versões Construção e Release Leonardo Murta Introdução à Gerência de Configuração 14

Controle de versões Topologia? Armazenamento? Colaboração? Consulta? Leonardo Murta Introdução à Gerência de Configuração 15

check-in check-in / commit push Topologia Espaço de Trabalho Repositório Espaço de Trabalho check-out / update Repositório Repositório Espaço de Trabalho clone / pull check-out / update Centralizado Distribuído Leonardo Murta Introdução à Gerência de Configuração 16

Armazenamento v.3 v.2 delta 2 3 delta 1 2 v.3 v.1 v.2/3 v.1 v.1 delta 3 2 delta 2 1 v.1/2 v.3 Completo Forward Reverse In-line Leonardo Murta Introdução à Gerência de Configuração 17

Colaboração m.3 m.2 m.1 m.1 junção m.2 m.3 junção m.1 m.2 m.3 Pessimista Otimista Misto Leonardo Murta Introdução à Gerência de Configuração 18

Consulta Repositório (versão 0) 1ª modificação Repositório (versão 1) Artefato1 (versão 1) Artefato2 (versão 1) Artefato3 (versão 1) Repositório (versão 2) Artefato1 (versão 2) Artefato2 (versão 1) Artefato3 (versão 1) 2ª modificação Repositório (versão 3) Artefato1 (versão 2) Artefato2 (versão 3) Artefato3 (versão 1) Artefato4 (versão 3) 3ª modificação 4ª modificação Repositório (versão 4) Artefato1 (versão 4) Artefato2 (versão 3) Artefato3 (versão 4) Artefato4 (versão 3) Consulta por artefato Artefato1 Versão 1 Versão 2 Versão 4 Artefato2 Versão 1 Versão 3 Artefato3 Versão 1 Versão 4 Artefato4 Versão 3 Leonardo Murta Introdução à Gerência de Configuração 19

Consulta Repositório (versão 0) 1ª modificação Repositório (versão 1) Artefato1 (versão 1) Artefato2 (versão 1) Artefato3 (versão 1) Repositório (versão 2) Artefato1 (versão 2) Artefato2 (versão 1) Artefato3 (versão 1) 2ª modificação Repositório (versão 3) Artefato1 (versão 2) Artefato2 (versão 3) Artefato3 (versão 1) Artefato4 (versão 3) 3ª modificação 4ª modificação Repositório (versão 4) Artefato1 (versão 4) Artefato2 (versão 3) Artefato3 (versão 4) Artefato4 (versão 3) Consulta por modificação 1ª modificação Artefato1 adicionado Artefato2 adicionado Artefato3 adicionado 2ª modificação Artefato1 modificado 3ª modificação Artefato2 modificado Artefato4 adicionado 4ª modificação Artefato1 modificado Artefato3 modificado Leonardo Murta Introdução à Gerência de Configuração 20

Ramos (branches) Versões que não seguem a linha principal de desenvolvimento Fornecem isolamento para o processo de desenvolvimento Ramos usualmente são migrados à linha principal de desenvolvimento A migração pode ser complicada no caso de isolamento longo Características dos ramos se comparados a espaços de trabalho compartilhados por outras pessoas (espaços de trabalho são isolados) residem no servidor (espaços de trabalho residem no cliente) históricos (espaços de trabalho são momentâneos) permanentes (espaços de trabalho temporários) Leonardo Murta Introdução à Gerência de Configuração 21

Estratégia básica de Ramificação Manutenção em série Ramo principal: evolução Ramos auxiliares: correções Foco Desenvolvimento in-house Cliente único (e.g.: aplicações Web) Dificuldade de manutenção de várias liberações em paralelo Sistema Desenv. RC1 Evolução RC2 Evolução Rel. 1 Verif. Correção Correção Rel. 2 1.0 1.1 1.2 Verif. Correção 2.0 2.1 Leonardo Murta Introdução à Gerência de Configuração 22

Junção Processo de migração de Espaços de trabalho Ramos Linha 1 Linha 2 Linha 1 Linha 2 Linha 3 Linha 1 Linha 2 Linha 1 Linha 2 Linha 3 Linha 1 Linha 2 <Linha 1> ou <Linha 1 >? Linha 2 <Linha 3> ou nada? 2-way merge Linha 1 Linha 2 Linha 3 3-way merge Leonardo Murta Introdução à Gerência de Configuração 23

Exemplo (junção no Eclipse) Leonardo Murta Introdução à Gerência de Configuração 24

Exemplo de ferramentas de controle de versões Livre Bazaar Git Mercurial Subversion Comercial BitKeeper (BitMover) ClearCase (IBM Rational) Perforce PVCS (Serena) StarTeam (Borland) Synergy/CM (Telelogic) Team Foundation Server (Microsoft) Leonardo Murta Introdução à Gerência de Configuração 25

Sistema de Gerência de Configuração Solicitações Controle de Modificações Artefatos Controle de Versões Construção e Release Leonardo Murta Introdução à Gerência de Configuração 26

Baseline Configuração revisada e aprovada que serve como base para uma próxima etapa de desenvolvimento e que somente pode ser modificada via processo formal de GCS São estabelecidas ao final de cada fase de desenvolvimento Análise (functional) Projeto (allocated) Implementação (product) Momento de criar: balanceamento entre controle e burocracia Leonardo Murta Introdução à Gerência de Configuração 27

Baseline (níveis de controle) Coordenação c/ auditoria Nível de controle Controle Informal: Pré baseline Sem requisição Sem aprovação Sem verificação Ágil Ad-hoc Formal: Pós baseline Com requisição Com aprovação Com verificação Burocrático Planejado Leonardo Murta Introdução à Gerência de Configuração 28

Baseline (níveis de controle) Baseline 1: Requisito 1 Análise Projeto An. Req. 1 Baseline 2: An. Req. 1 Pr. Req. 1 An. Req. 2 Requisito 2 Análise Projeto Tempo Req. Análise Projeto Análise Projeto Análise Projeto 1 Inform. - Formal Inform. Formal Formal 2 - - Inform. - Formal Inform. Leonardo Murta Introdução à Gerência de Configuração 29

Tarefas Controle de modificações Solicitação de modificação Classificação da modificação Análise da modificação Avaliação da modificação Implementação da modificação Verificação da modificação Geração de baseline Leonardo Murta Introdução à Gerência de Configuração 30

Controle de modificações [Leon, 2000] Requisição de modificação Leonardo Murta Introdução à Gerência de Configuração 31

Controle de modificações [White, 2000] Janela de criação de formulários do ClearQuest Leonardo Murta Introdução à Gerência de Configuração 32

Controle de modificações O critério de classificação da modificação deve estar explicitado no plano de GC A classificação visa priorizar modificações mais importantes (críticas, fatais, não fatais, cosméticas) A análise visa relatar os impactos em custo, cronograma, funcionalidades, etc. da implementação da modificação Caso a análise conclua que não existe chance de aprovar a modificação (casos extremos), pode ocorrer rejeição antes da avaliação para poupar custos no processo Leonardo Murta Introdução à Gerência de Configuração 33

Controle de modificações [Leon, 2000] Análise de modificação Leonardo Murta Introdução à Gerência de Configuração 34

Controle de modificações A avaliação utilizará a requisição de modificação e o laudo da análise para tomar a decisão A requisição pode ser aceita, rejeitada ou adiada A implementação deve ser seguida por testes de unidade Durante a verificação, devem ser aplicados testes de sistema Após a geração da nova baseline, deve ser decidido se ela será considerada uma nova liberação Leonardo Murta Introdução à Gerência de Configuração 35

Controle de modificações Caso especial: Correções emergenciais No caso de correções emergenciais, podem ser criados ramos sem a necessidade do processo formal Em algum momento esses ramos deverão sofrer junção para a linha principal de desenvolvimento Esse procedimento deve estar explicitado no processo! Leonardo Murta Introdução à Gerência de Configuração 36

Controle de modificações Caso especial: Defeitos Alguns sistemas tratam defeitos de forma diferente das demais requisições A correção de defeitos é um tratamento sintomático É importante descobrir o real motivo para o acontecimento do defeito para possibilitar a prevenção de defeitos futuros A análise de causa é útil para descobrir falhas no processo de desenvolvimento (e.g. falta de treinamento, padrões inadequados, ferramentas inadequadas) Leonardo Murta Introdução à Gerência de Configuração 37

Contabilização da situação Tarefas Armazenamento das informações geradas Propagação dessas informações aos interessados através de relatórios Metáfora de conta bancária para item de configuração Permite que métricas sejam utilizadas com o intuito de melhoria do processo e estimativa de custos futuros Fornece relatórios gerenciais ad-hoc Leonardo Murta Introdução à Gerência de Configuração 38

Contabilização da situação Resultado do relatório no modo tabular no Bugzilla Leonardo Murta Introdução à Gerência de Configuração 39

Contabilização da situação Resultado do relatório no modo de gráfico de pizza no Bugzilla Leonardo Murta Introdução à Gerência de Configuração 40

Contabilização da situação Resultado da consulta sobre séries no Bugzilla Leonardo Murta Introdução à Gerência de Configuração 41

Exemplo de ferramentas de controle de modificações Livre Bugzilla Mantis Redmine Trac Comercial ClearQuest (IBM Rational) JIRA (Atlassian) StarTeam (Borland) Synergy/Change (Telelogic) TeamTrack (Serena) Team Foundation Server (Microsoft) Leonardo Murta Introdução à Gerência de Configuração 42

Sistema de Gerência de Configuração Solicitações Controle de Modificações Artefatos Controle de Versões Construção e Release Leonardo Murta Introdução à Gerência de Configuração 43

Auditoria da configuração Deve ocorrer ao menos antes de uma liberação (release) Tarefas Verificação funcional, assegurando que a baseline cumpre o que foi especificado Verificação física, assegurando que a baseline é completa (todos os itens de configuração especificados) Auditorias servem para garantir que os procedimentos e padrões foram aplicados Leonardo Murta Introdução à Gerência de Configuração 44

Auditoria da configuração A auditoria funcional ocorre através da revisão dos planos, dados, metodologia e resultado dos teste, para verificar se são satisfatórios A auditoria física examina a estrutura de todos os itens de configuração que compõem a baseline A auditoria física é efetuada após a auditoria funcional Podem ocorrer auditorias no próprio sistema de GC pelos mantenedores do plano de GC, para verificar se as políticas e procedimentos estão sendo cumpridos Leonardo Murta Introdução à Gerência de Configuração 45

Gerenciamento de releases Descrição de como construir, liberar e entregar o sistema Linguagem natural (conhecimento) Linguagem computacional (automação) Manter os descritores e documentos sob gerência de configuração! Definição das situações onde o processo pode ser temporariamente desviado Cuidado: Releases muito curtas podem levar a círculo-vicioso de defeitos... Leonardo Murta Introdução à Gerência de Configuração 46

Gerenciamento de releases Necessidade de novas releases Releases Curtas + Testes manuais + Equipe pequena Baixa cobertura dos testes Solicitações de correção dos defeitos Defeitos no produto final Leonardo Murta Introdução à Gerência de Configuração 47

Exemplo de ferramentas de controle de construção e liberação Livre Ant NAnt Make Maven Rake Comercial ClearMake (IBM Rational) MSBuild (Microsoft) Synergy/CM Object Make (Telelogic) Leonardo Murta Introdução à Gerência de Configuração 48

Analisando mais a fundo uma ferramenta popular... Leonardo Murta Introdução à Gerência de Configuração 49

Histórico Projeto iniciado em 2000 Iniciativa da CollabNet Open-Source Intuito de substituir o CVS Similar no uso Melhor na implementação Auto controlado desde agosto de 2001 Leonardo Murta Introdução à Gerência de Configuração 50

Características Versionamento de diretórios Copia, renomeação e movimentação com histórico Check-ins atômicos Versionamento de meta-dados Acesso via http/https Uso extensivo de deltas Delta de binários Delta bidirecional na comunicação cliente/servidor Leonardo Murta Introdução à Gerência de Configuração 51

Problema da concorrência Leonardo Murta Introdução à Gerência de Configuração 52

Política pessimista Leonardo Murta Introdução à Gerência de Configuração 53

Política pessimista Problemas administrativos Bloqueios esquecidos podem atrasar o andamento do projeto Problemas de serialização desnecessária Em alguns casos, as modificações atuam sobre partes independentes dos arquivos bloqueados Falsa sensação de segurança Dependências semânticas podem cruzar a fronteira de arquivos Bloqueios são necessários Quando se trata de arquivos que não podem ser combinados Leonardo Murta Introdução à Gerência de Configuração 54

Política otimista (1/2) Leonardo Murta Introdução à Gerência de Configuração 55

Política otimista (2/2) Leonardo Murta Introdução à Gerência de Configuração 56

Controle de concorrência no Subversion Política pessimista e otimista em conjunto Qualquer artefato pode ser sujeito a bloqueio Artefatos podem ser demarcados com necessita de bloqueio Artefatos bloqueados por um desenvolvedor podem ser editados por outros O commit dos outros somente ocorrerá depois do término do bloqueio Os outros deverão fazer merge Artefatos bloqueados podem ser roubados Bloqueio apoia à comunicação Bloqueio não engessa o processo Leonardo Murta Introdução à Gerência de Configuração 57

Repositório Sistema de arquivos versionado Check-in equivale a uma foto do sistema de arquivos num dado momento Versionamento global Número de versão dado por commit Identificador implícito de conjunto de modificações Algoritmo Bubble up Economia de espaço Velocidade na atualização Controle do histórico Leonardo Murta Introdução à Gerência de Configuração 58

Dimensão ESPAÇO Sistema de arquivos tradicional Leonardo Murta Introdução à Gerência de Configuração 59

Dimensão ESPAÇO Sistema de arquivos versionado Dimensão TEMPO Leonardo Murta Introdução à Gerência de Configuração 60

Versionamento global O repositório é mais que um conjunto de arquivos independentes Mudança de versionamento de arquivos para versionamento do repositório Versão N é o estado do repositório depois do commit N Versão 5 do arquivo X passa a ser lido como arquivo X na versão 5 do repositório Leonardo Murta Introdução à Gerência de Configuração 61

Comando log Fornece um relatório sobre as versões do repositório Por arquivo Por commit Exibe, para cada versão Identificação (número da modificação) Quem (autor) Quando (data) Onde (caminhos) Como (ação nos caminhos) O que (mensagem) Por que (número da solicitação de modificação) Leonardo Murta Introdução à Gerência de Configuração 62

Comando log Sintaxe svn log [-q] [-v] [-r VERSÃO] [URL] Exemplo svn log -q https://reuse.cos.ufrj.br/svn/brecho/trunk/build.xml r92 ronaldo 2007-04-01 17:28:55-0300 (dom, 01 abr 2007) r91 paulacibele 2007-03-19 12:53:47-0300 (seg, 19 mar 2007) r90 paulacibele 2007-03-19 12:44:20-0300 (seg, 19 mar 2007) r51 marinho 2006-01-18 19:03:39-0200 (qua, 18 jan 2006) r47 alexrd 2006-01-07 10:44:46-0200 (sáb, 07 jan 2006) r37 mlopes 2005-09-27 00:46:04-0300 (ter, 27 set 2005) r31 alexrd 2005-09-12 11:15:33-0300 (seg, 12 set 2005)... Leonardo Murta Introdução à Gerência de Configuração 63

Comando log Sintaxe svn log [-q] [-v] [-r VERSÃO] [URL] Exemplo svn log -v -r 92 https://reuse.cos.ufrj.br/svn/brecho r92 ronaldo 2007-04-01 17:28:55-0300 (dom, 01 abr 2007) 1 line Caminhos mudados: M /trunk/build.xml M /trunk/src/br/ufrj/cos/reuse/biblioteca/category/categoryutil.java A /trunk/src/br/ufrj/cos/reuse/biblioteca/category/suggestions.java M /trunk/src/br/ufrj/cos/reuse/biblioteca/category/dao/hibernatecategorydao.java Issue #234: Troca do algoritmo de sugestão de categorias Leonardo Murta Introdução à Gerência de Configuração 64

Algoritmo Bubble up Mecanismo interno do Subversion para controle do repositório Entender esse mecanismo ajuda a entender o funcionamento do Subversion Para um dado commit as ações são Aplicadas nas folhas Propagadas para os diretórios pais Arquivos e diretórios não afetados pelas modificações são preservados Algoritmo utilizado para armazenamento Reverse delta Leonardo Murta Introdução à Gerência de Configuração 65

Repositório inicial 1 Repositório Diretório 1 Arquivo 1 Diretório 2 Arquivo 2 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 66

Commit: modificação em um único arquivo 1 Repositório Diretório 1 Arquivo 1 Diretório 2 Arquivo 2 Arquivo 3 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 67

Propagação para o diretório pai 1 Repositório Diretório 1 Arquivo 1 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 68

Criação da nova versão 1 2 Repositório Diretório 1 Arquivo 1 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 69

Commit: adição de um novo arquivo 1 2 Repositório Diretório 1 Arquivo 1 Arquivo 4 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 70

Propagação para o diretório pai 1 2 Repositório Diretório 1 Arquivo 1 Diretório 1 Arquivo 4 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 71

Criação da nova versão 1 2 Repositório 3 Diretório 1 Arquivo 1 Diretório 1 Arquivo 4 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Arquivo 3 Leonardo Murta Introdução à Gerência de Configuração 72

Cópia barata O projeto interno do Subversion visa prover cópias baratas de diretório Os dados não são duplicados Conceito semelhante a hard-link do unix Somente quando há mudanças, o link é quebrado Tempo constante gasto para cópias Mecanismo utilizado para Etiquetas (tags) Ramos (branches) Leonardo Murta Introdução à Gerência de Configuração 73

Versão atual do repositório 5 Repositório Diretório 1 Arquivo 1 Diretório 2 Arquivo 2 Arquivo 3 Diretório 3 Arquivo 4 Leonardo Murta Introdução à Gerência de Configuração 74

Diretório 2 copiado para dentro do Diretório 1 com outro nome 5 Repositório Diretório 1 Arquivo 1 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Diretório 3 Arquivo 4 Leonardo Murta Introdução à Gerência de Configuração 75

Conteúdo idêntico ao original 5 Repositório Diretório 1 Arquivo 1 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Diretório 3 Arquivo 4 Leonardo Murta Introdução à Gerência de Configuração 76

Propagação para o diretório pai 5 Repositório Diretório 1 Diretório 1 Arquivo 1 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Diretório 3 Arquivo 4 Leonardo Murta Introdução à Gerência de Configuração 77

Criação da nova versão 5 6 Diretório 1 Repositório Diretório 1 Arquivo 1 Diretório 2 Diretório 2 Arquivo 2 Arquivo 3 Diretório 3 Arquivo 4 Leonardo Murta Introdução à Gerência de Configuração 78

Layout do repositório Layout é uma convenção Permite mais de um projeto por repositório Ajuda a organizar cada projeto Layout sugerido Um diretório por projeto na raiz do repositório Layout para cada projeto Um diretório para o ramo principal: trunk Um diretório para os ramos: branches Um diretório para as etiquetas: tags Leonardo Murta Introdução à Gerência de Configuração 79

Layout do repositório https://svn.ic.uff.br/ proj1/ trunk/ branches/ tags/ dissertacoes/ fulano/ trunk/ branches/ tags/ beltrano/ trunk/ branches/ tags/... Leonardo Murta Introdução à Gerência de Configuração 80

Etiquetas e Ramos Etiquetas (tags) Cópias baratas do trunk para o diretório tags Troca de nome pelo nome da etiqueta Por convenção, nenhuma edição é feita sobre esse diretório copiado Ramos (branches) Cópias baratas do trunk para o diretório branches Troca de nome pelo nome do ramo Edição no diretório copiado Leonardo Murta Introdução à Gerência de Configuração 81

Comando copy Copia um arquivo ou diretório com histórico entre caminhos no repositório ou espaço de trabalho Casos típicos URL URL: cópia executada atomicamente no servidor, utilizada usualmente para criar etiquetas e ramos Diretório local diretório local: cópia feita no cliente e adição (com histórico) agendada para o próximo commit Leonardo Murta Introdução à Gerência de Configuração 82

Comando copy Sintaxe svn copy ORIGEM DESTINO [-m MENSAGEM] Exemplo svn copy dir1 dir2/novo_dir_1 svn copy https://svn.ic.uff.br/proj1/trunk https://svn.ic.uff.br/proj1/branches/1.0.x -m Criação do ramo 1.0.x svn copy https://svn.ic.uff.br/proj1/branches/1.0.x https://svn.ic.uff.br/proj1/tags/1.0.1 -m Criação da etiqueta 1.0.1 Leonardo Murta Introdução à Gerência de Configuração 83

Espaço de trabalho Diretório comum no sistema de arquivos local Guarda uma cópia limpa do checkout (.svn) Permite algumas operações off-line Permite transmissão de diffs para o servidor Área isolada das modificações de outros desenvolvedores Suas modificações podem ser publicadas com commit Modificações de outros podem ser incorporadas com update Um usuário pode ter vários espaços de trabalho para um mesmo projeto Leonardo Murta Introdução à Gerência de Configuração 84

Comando check-out Constrói um espaço de trabalho a partir de uma versão do repositório (ou parte dela) Leonardo Murta Introdução à Gerência de Configuração 85

Comando check-out Sintaxe svn checkout [-r VERSÃO] URL [CAMINHO] Exemplo svn checkout https://svn.ic.uff.br/proj1/trunk svn checkout -r 15 https://svn.ic.uff.br/proj1/trunk svn checkout https://svn.ic.uff.br/proj1/tags/1.0.3 rel1.0.3 Leonardo Murta Introdução à Gerência de Configuração 86

Comando commit Envia modificações do espaço de trabalho para o repositório Detecta automaticamente o que mudou Libera todos os bloqueios Aplica a modificação de forma atômica no repositório Pode não conseguir enviar caso algum outro usuário tenha dado commit Necessário um update Leonardo Murta Introdução à Gerência de Configuração 87

Comando commit Sintaxe svn commit [-m MENSAGEM] [CAMINHO] Exemplo svn commit -m Adição da versão 1.4.5 do modelo svn commit -m Issue #34: Correção de erro de digitação src Leonardo Murta Introdução à Gerência de Configuração 88

Comando update Atualiza o espaço de trabalho com as últimas modificações existentes no repositório Pode encontrar conflitos durante a atualização É importante verificar cada um dos arquivos atualizados Ações sobre o espaço de trabalho Adição de arquivos (A) Remoção de arquivos (D) Atualização de arquivos (U) Arquivos com conflito (C) Arquivos combinados (G) Leonardo Murta Introdução à Gerência de Configuração 89

Comando update Sintaxe svn update [-r VERSÃO] [CAMINHO] Exemplo svn update svn update -r 12 svn update dir1 Leonardo Murta Introdução à Gerência de Configuração 90

Comportamento dos comandos Arquivo modificado localmente Arquivo modificado no repositório Comando commit Não Não Nenhuma ação Não Sim Nenhuma ação Sim Não Publica a versão local no repositório Sim Sim Falha, avisando que o arquivo está desatualizado Commando update Nenhuma ação Versão local substituída pela versão do repositório Nenhuma ação Versão local combinada com a versão do repositório Leonardo Murta Introdução à Gerência de Configuração 91

Ciclo básico de trabalho Implementação Construção do espaço de trabalho svn checkout svn update svn switch svn add svn delete svn copy svn move svn lock svn blame svn log Verificação svn status svn diff svn revert Integração svn update svn resolved svn commit Leonardo Murta Introdução à Gerência de Configuração 92

Junção de ramos Deve ser feita em um espaço de trabalho limpo Check-out do destino da junção Deve ser entendida como diff & apply Diff é dependente de ordem Diff(A, B): ações necessárias para transformar o caminho A no caminho B O diff pode atuar tanto no espaço quanto no tempo Espaço: diff entre dois diretórios (copiados de um lugar comum) Tempo: diff entre duas versões de um mesmo diretório Leonardo Murta Introdução à Gerência de Configuração 93

Merge no tempo Normalmente usado para ramos trunk 1 2 6 8 11 13 14 15 branches/1.0.x 3 1 = diff(v4, v10) 4 5 7 9 10 12 apply: 1 Espaço de trabalho Leonardo Murta Introdução à Gerência de Configuração 94

Merge no espaço Normalmente usado para etiquetas trunk 1 2 6 8 11 13 14 15 branches/1.0.x 3 4 5 7 9 10 12 tags 1.0.0 1 = diff(1.0.0, 1.0.1) 1.0.1 apply: 1 Espaço de trabalho Leonardo Murta Introdução à Gerência de Configuração 95

Comando merge Aplica a diferença entre dois caminhos no espaço de trabalho svn merge A B Calcula as ações que precisam ser feitas para transformar o caminho A no B Aplica essas ações no espaço de trabalho Leonardo Murta Introdução à Gerência de Configuração 96

Sintaxe Exemplo Comando merge svn merge [-c VERSÃO -r VERSÃO1:VERSÃO2] CAMINHO svn merge CAMINHO1 CAMINHO2 svn merge -c 23 https://svn.ic.uff.br/proj1/branches/1.0.x svn merge -c -23 https://svn.ic.uff.br/proj1/branches/1.0.x svn merge -r 23:29 https://svn.ic.uff.br/proj1/branches/1.0.x svn merge https://svn.ic.uff.br/proj1/tags/1.0.1 https://svn.ic.uff.br/proj1/tags/1.0.2 Leonardo Murta Introdução à Gerência de Configuração 97

Ciclo básico de junção Construção do espaço de trabalho svn checkout svn update svn switch Junção svn merge svn blame svn log Verificação svn status svn diff svn revert Integração svn update svn resolved svn commit Leonardo Murta Introdução à Gerência de Configuração 98

Propriedades Cada diretório ou arquivo pode ter metadados anexados a ele Tuplas <nome, valor> Versionados Algumas propriedades built-in svn:mime-type: tipo do arquivo svn:ignore: elementos que não devem ser versionados em um diretório svn:needs-lock: indica que o arquivo precisa de política de controle de concorrência pessimista Leonardo Murta Introdução à Gerência de Configuração 99

Principais Referências Bibliográficas Alexis Leon, A Guide to Software Configuration Management, Artech House Publishers, 2000. Anne Hass, Configuration Management Principles and Practices, Boston, MA, Pearson Education, Inc. Dart, S., 1991, Concepts in Configuration Management Systems, International Workshop on Software Configuration Management (SCM), Trondheim, Norway (June), pp. 1-18. Pressman, R. S. (1997). Software Engineering: A Practitioner's Approach, McGraw-Hill. http://svnbook.red-bean.com/en/1.4 http://subversion.tigris.org/design.html Leonardo Murta Introdução à Gerência de Configuração 100

Introdução à Gerência de Configuração Leonardo Gresta Paulino Murta leomurta@ic.uff.br