SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
Gerenciamento de
configuração e mudança
Centro de Informática - Universidade Federal de Pernambuco
Kiev Gama
kiev@cin.ufpe.br
Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio, Vinicius Garcia e Kiev Gama
O autor permite o uso e a modificação dos slides para fins didáticos
Gerenciamento de configuração
• Novas versões de sistemas de software são
criadas quando eles:
– Mudam para máquinas/OS diferentes;
– Oferecem funcionalidade diferente;
– São configurados para requisitos de usuários
particulares.
2
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Gerenciamento de configuração
• O gerenciamento de configuração exerce
controle sobre os artefatos produzidospelo
desenvolvimento de software:
– Mudança de sistema é uma atividade de equipe;
– O CM (change management) tem por objetivo
controlar os custos e o esforço envolvidos na
realização das mudanças em um sistema.
3
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Gerenciamento de configuração
• Envolve o desenvolvimento e a aplicação de
procedimentos e padrões para gerenciar um
produto de software em evolução.
• O CM pode ser visto como parte de um
processo mais geral de gerenciamento do
projeto.
• Artefatos que estão sob gerenciamento de
configuração são chamados de itens de
configuração
4
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Atividades do Gerenciamento de configuração
5
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Famílias de Sistemas
6
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
Construção frequente do sistema
• É mais fácil encontrar problemas que surgem das
interações de componentes no início do
processo.
– Em especial quando usa-se incrementos pequenos e
builds frequentes
• Isso encoraja o uso de testes automatizados – os
desenvolvedores estão sob pressão para não
‘quebrar a construção’.
• O processo de gerenciamento de mudanças
precisa alcançar equilíbrio:
– Burocracia vs. Rastreabilidade
7
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Construção frequente do sistema
• É mais fácil encontrar problemas que surgem das
interações de componentes no início do
processo.
– Em especial quando usa-se incrementos pequenos e
builds frequentes
• Isso encoraja o uso de testes automatizados – os
desenvolvedores estão sob pressão para não
‘quebrar a construção’.
• O processo de gerenciamento de mudanças
precisa alcançar equilíbrio:
– Burocracia vs. Rastreabilidade
8
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Construção frequente do sistema
• É mais fácil encontrar problemas que surgem das
interações de componentes no início do
processo.
– Em especial quando usa-se incrementos pequenos e
builds frequentes
• Isso encoraja o uso de testes automatizados – os
desenvolvedores estão sob pressão para não
‘quebrar a construção’.
• O processo de gerenciamento de mudanças
precisa alcançar equilíbrio:
– Burocracia vs. Rastreabilidade
9
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Planejamento de gerenciamento de
configuração
• Todos os produtos do processo de software
podem ser gerenciados:
– Especificações;
– Projetos;
– Programas;
– Dados de teste;
– Manuais de usuário.
• Milhares de artefatos separados podem ser
gerados para um sistema grande e complexo de
software.
• É necessário definir quais estão sujeitos ao
gerenciamento de configuração
10
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Planejamento de gerenciamento de
configuração
• Todos os produtos do processo de software
podem ser gerenciados:
– Especificações;
– Projetos;
– Programas;
– Dados de teste;
– Manuais de usuário.
• Milhares de artefatos separados podem ser
gerados para um sistema grande e complexo de
software.
• É necessário definir quais estão sujeitos ao
gerenciamento de configuração
11
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Principais Atividades do Gerenciamento
de Configuração
• Controle de Versões
• Gerenciamento e Registro de Mudanças
• Organização e Geração dos Builds do Sistema
12
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Gerenciamento de mudanças
• Sistemas de software estão sujeitos a solicitações
contínuas de mudanças:
– De usuários;
– De desenvolvedores;
– De forças de mercado.
• O gerenciamento de mudanças está relacionado à
manutenção da rastreabilidade dessas mudanças, de
modo que:
– Reparos realmente corrijam falhas
– Novas falhas introduzidas por reparos possam ser
identificadas rapidamente
– Seja fácil descobrir quais mudanças foram implementadas
e quando
13
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Gerenciamento de mudanças
• Sistemas de software estão sujeitos a solicitações
contínuas de mudanças:
– De usuários;
– De desenvolvedores;
– De forças de mercado.
• O gerenciamento de mudanças está relacionado à
manutenção da rastreabilidade dessas mudanças, de
modo que:
– Reparos realmente corrijam falhas
– Novas falhas introduzidas por reparos possam ser
identificadas rapidamente
– Seja fácil descobrir quais mudanças foram implementadas
e quando
14
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Processo de Gerenciamento de Mudanças
15
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
16
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software,
8ª. edição. Capítulo 29
17
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software,
8ª. edição. Capítulo 29
O formulário já dá uma boa idéia sobre como
o processo de gerenciamento de mudanças
funciona.
18
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Acompanhamento de mudanças
• O maior problema no gerenciamento de mudanças é o
acompanhamento do status da mudança.
• Ferramentas de gerenciamento de mudanças fornecem
meios para se acompanhar a situação de cada
solicitação de mudança
– Automaticamenteenviam solicitações de mudança para as
pessoas certas no tempo certo.
• São integrados a sistemas de e-mail, permitindo a
distribuição eletrônica da solicitação de mudança.
– Mesmo assim, é comum que solicitações de mudanças
sejam sumariamente ignoradas
19
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Acompanhamento de mudanças
• O maior problema no gerenciamento de mudanças é o
acompanhamento do status da mudança.
• Ferramentas de gerenciamento de mudanças fornecem
meios para se acompanhar a situação de cada
solicitação de mudança
– Automaticamenteenviam solicitações de mudança para as
pessoas certas no tempo certo.
• São integrados a sistemas de e-mail, permitindo a
distribuição eletrônica da solicitação de mudança.
– Mesmo assim, é comum que solicitações de mudanças
sejam sumariamente ignoradas
20
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Acompanhamento de mudanças
• O maior problema no gerenciamento de mudanças é o
acompanhamento do status da mudança.
• Ferramentas de gerenciamento de mudanças fornecem
meios para se acompanhar a situação de cada
solicitação de mudança
– Automaticamenteenviam solicitações de mudança para as
pessoas certas no tempo certo.
• São integrados a sistemas de e-mail, permitindo a
distribuição eletrônica da solicitação de mudança.
– Mesmo assim, é comum que solicitações de mudanças
sejam sumariamente ignoradas
21
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Comitê de controle de mudanças
• As mudanças podem ser revisadas por um grupo
externo, que
– decide se elas são ou não adequadas em termos de
custo,tempo e risco
– ponto de vista estratégico ou organizacional ao invés
de um ponto de vista técnico.
• O grupo deve ser independente do responsável
de projeto pelo sistema. Esse grupo é, algumas
vezes, chamado de comitê de controle de
mudanças (CCB).
• O CCB pode conter representantes do cliente e do
pessoal fornecedor.
22
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Comitê de controle de mudanças
• As mudanças podem ser revisadas por um grupo
externo, que
– decide se elas são ou não adequadas em termos de
custo,tempo e risco
– ponto de vista estratégico ou organizacional ao invés
de um ponto de vista técnico.
• O grupo deve ser independente do responsável
de projeto pelo sistema. Esse grupo é, algumas
vezes, chamado de comitê de controle de
mudanças (CCB).
• O CCB pode conter representantes do cliente e do
pessoal fornecedor.
23
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Procedência histórica
• É um registro das mudanças realizadas em um
documento ou um componente de código.
• Deve registrar, em linhas gerais, a mudança
feita, a lógica da mudança,quem fez a
mudança e quando foi implementada.
• Pode ser incluída como um comentário no
código.
– Se um estilo de cabeçalho padrão é usado para a
procedência histórica, as ferramentas podem
processar isso automaticamente.
24
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Procedência histórica
• É um registro das mudanças realizadas em um
documento ou um componente de código.
• Deve registrar, em linhas gerais, a mudança
feita, a lógica da mudança,quem fez a
mudança e quando foi implementada.
• Pode ser incluída como um comentário no
código.
– Se um estilo de cabeçalho padrão é usado para a
procedência histórica, as ferramentas podem
processar isso automaticamente.
25
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Procedência histórica
• É um registro das mudanças realizadas em um
documento ou um componente de código.
• Deve registrar, em linhas gerais, a mudança
feita, a lógica da mudança,quem fez a
mudança e quando foi implementada.
• Pode ser incluída como um comentário no
código.
– Se um estilo de cabeçalho padrão é usado para a
procedência histórica, as ferramentas podem
processar isso automaticamente.
26
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Informação de cabeçalho de
componente
27
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
Algumas Ferramentas de Gerenciamento
de Mudanças
• Bugzilla
• IBM Rational ClearCase
• Mantis
• Também é possível usar um Wiki com esse fim
28
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Gerenciamento de versões e releases
• Elaborar um esquema de identificação para
versões de sistema.
• Planejar quando uma nova versão de sistema
será produzida.
• Assegurar que procedimentose ferramentas
de gerenciamento das versões sejam
adequadamente aplicados.
• Planejar e distribuir releases da nova versão
do sistema.
29
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Versões/variantes/releases
• Versão
– É uma instância de um sistema que é funcionalmente
distinta, de alguma maneira, de outras instâncias de um
sistema.
• Variante
– Uma versão de um sistema que tem apenas pequenas
diferenças com relação a outras instâncias (normalmente
devido a diferenças no hardware/software alvo)‫‏‬
– Ex.: O Office para MacOS é uma variante do Office para
Windows
• Release
– É uma instância de um sistema distribuída para os usuários
fora da equipe de desenvolvimento.
– Ex. Office 2007
30
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Versões/variantes/releases
• Versão
– É uma instância de um sistema que é funcionalmente
distinta, de alguma maneira, de outras instâncias de um
sistema.
• Variante
– Uma versão de um sistema que tem apenas pequenas
diferenças com relação a outras instâncias (normalmente
devido a diferenças no hardware/software alvo)‫‏‬
– Ex.: O Office para MacOS é uma variante do Office para
Windows
• Release
– É uma instância de um sistema distribuída para os usuários
fora da equipe de desenvolvimento.
– Ex. Office 2007
31
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Versões/variantes/releases
• Versão
– É uma instância de um sistema que é funcionalmente
distinta, de alguma maneira, de outras instâncias de um
sistema.
• Variante
– Uma versão de um sistema que tem apenas pequenas
diferenças com relação a outras instâncias (normalmente
devido a diferenças no hardware/software alvo)‫‏‬
– Ex.: O Office para MacOS é uma variante do Office para
Windows
• Release
– É uma instância de um sistema distribuída para os usuários
fora da equipe de desenvolvimento.
– Ex. Office 2007
32
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Baseline (linha de base)
• Codeline
– Conjunto de versões de um determinado componente
• Baseline
– Coleção de versões de componentes que constituem um sistema
• Mainline
– Sequência de baselines representando diferentes versões do sistema
33
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Identificação de versões
• Os procedimentospara identificação de
versões devem definir uma maneira não-
ambígua de identificar versões
• Algumas técnicas básicas para identificação de
componentes:
– Numeração de versões;
– Identificação baseada em atributos;
34
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Numeração de versões
• É um esquema simples de numeração usa uma
derivação linear
– major.minor[.build[.revision]]
– <major>.<minor>.<patch>[-<type>-<attempt>]
– V1, V1.1, V1.2, V2.1, V2.2 etc.
• A estrutura de derivação real é uma árvore ou
uma rede, e não uma seqüência.
• Os nomes não são significativos.
• Um esquema de hierarquia de atribuição de
nomes conduz a poucos erros na identificação de
versões.
35
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Um Exemplo: Números de Versões no
Linux
• A.B.C[.D]
– A – versão do kernel (apenas duas mudanças: em
1994 e em 1996)‫‏‬
– B – revisão importante do kernel
– C – mudanças menores: novos drivers e novas
funcionalidades individuais
– D – atualizações de segurança e correções de bugs
• Exemplo de versão: 2.6.27.1
36
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Terminologias de tipos de versão
• Alpha
• Beta
• Snapshot
• Release candidate
• Official release
37
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Identificação baseada em atributos
• Os atributos podem ser associados a uma
versão com a combinação de atributos que a
identificam.
– Exemplos de atributos são Data, Criador,
Linguagem de Programação, Cliente, Status, etc.
• É mais flexível do que um esquema explícito
de atribuição de nomes para recuperação de
versões;
• Na prática, uma versão também necessita de
um nome que facilite a referência
38
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Identificação baseada em atributos
• Os atributos podem ser associados a uma
versão com a combinação de atributos que a
identificam.
– Exemplos de atributos são Data, Criador,
Linguagem de Programação, Cliente, Status, etc.
• É mais flexível do que um esquema explícito
de atribuição de nomes para recuperação de
versões;
• Na prática, uma versão também necessita de
um nome que facilite a referência
39
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Consultas baseadas em atributos
• Identificação baseada em atributos pode
apoiar consultas
– Ex. ‘a mais recente versão em Java’, etc.
• A consulta seleciona uma versão dependendo
dos valores de atributos
– Ex.: (linguagem =Java, plataforma = XP, data = Jan
2003).
40
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Branching e Merging
• Um elemento fundamental do gerenciamento de
configuração
– O livro não fala sobre!
• Compromisso entre produtividade e risco
• Branching: Consiste em usar diferentes “ramos”
de desenvolvimento para aumentar o paralelismo
– Cada ramo é chamada de branch
– Código não é compartilhado entre branches
• Merging: a combinação de uma desses ramos
com o ramo principal
– Diferenças entre os branches combinados precisam
ser resolvidas
41
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Branching e Merging
• Um elemento fundamental do gerenciamento de
configuração
– O livro não fala sobre!
• Compromisso entre produtividade e risco
• Branching: Consiste em usar diferentes “ramos”
de desenvolvimento para aumentar o paralelismo
– Cada ramo é chamada de branch
– Código não é compartilhado entre branches
• Merging: a combinação de uma desses ramos
com o ramo principal
– Diferenças entre os branches combinados precisam
ser resolvidas
42
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Branching e Merging
• Um elemento fundamental do gerenciamento de
configuração
– O livro não fala sobre!
• Compromisso entre produtividade e risco
• Branching: Consiste em usar diferentes “ramos”
de desenvolvimento para aumentar o paralelismo
– Cada ramo é chamada de branch
– Código não é compartilhado entre branches
• Merging: a combinação de uma desses ramos
com o ramo principal
– Diferenças entre os branches combinados precisam
ser resolvidas
43
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Algumas Razões para se Criar um
Branch
• Implementar uma solicitação de mudança
• Implementar uma funcionalidade pontual
• Paralelizar o desenvolvimento dos
componentes do sistema
– Também aplicável ao desenvolvimento paralelo de
diferentes versões do sistema
– Atribuição de tarefas a diferentes partes da
equipe de desenvolvimento
44
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Branch-per-Release e Code-Promotion-
Branches
45
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Branch-per-Component e Branch-per-
Technology
46
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Anti-Padrões de Branching e Merging
• Merge-Paranoia
• Merge-Mania
• Big-Bang-Merge
• Branch-Mania
• Cascading Branches
• Vejam “A Branching & Merging Primer”, de Chris
Birmele
– Parte do material desta aula foi tirada desse tutorial
47
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Funcionalidadesde um Sistema de Controle de
Versões
• Manutenção de um repositório de itens de
configuração
– Com suporte ao checkin e ao checkout distribuídos
• Criação e manutenção de múltiplas versões
– Armazenamento de informações sobre cada versão
• Criação e merging de branches
• Capacidade de realizar consultas sobre versões
dos sistemas, com base em seus atributos
48
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Funcionalidadesde um Sistema de Controle de
Versões
• Manutenção de um repositório de itens de
configuração
– Com suporte ao checkin e ao checkout distribuídos
• Criação e manutenção de múltiplas versões
– Armazenamento de informações sobre cada versão
• Criação e merging de branches
• Capacidade de realizar consultas sobre versões
dos sistemas, com base em seus atributos
49
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Funcionalidadesde um Sistema de Controle de
Versões
• Manutenção de um repositório de itens de
configuração
– Com suporte ao checkin e ao checkout distribuídos
• Criação e manutenção de múltiplas versões
– Armazenamento de informações sobre cada versão
• Criação e merging de branches
• Capacidade de realizar consultas sobre versões
dos sistemas, com base em seus atributos
50
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Funcionalidadesde um Sistema de Controle de
Versões
• Manutenção de um repositório de itens de
configuração
– Com suporte ao checkin e ao checkout
distribuídos
51
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Funcionalidadesde um Sistema de Controle de
Versões (cont.)
• Criação e manutenção de múltiplas versões
– Armazenamento de informações sobre cada
versão
• Criação e merging de branches
• Capacidadede realizar consultas sobre
versões dos sistemas, com base em seus
atributos
52
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Construção (build) de sistemas
• É o processo de compilação e ligação de
componentesde software em um sistema
executável.
– Pode incluir a execução de testes
• Sistemas diferentes são construídosa partir de
combinaçõesdiferentes de componentes.
• Esse processo é, atualmente, sempre apoiado
por ferramentas automatizadas que são
dirigidas por ‘scripts de construção’.
53
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Construção (build) de sistemas
• É o processo de compilação e ligação de
componentesde software em um sistema
executável.
– Pode incluir a execução de testes
• Sistemas diferentes são construídosa partir de
combinaçõesdiferentes de componentes.
• Esse processo é, atualmente, sempre apoiado
por ferramentas automatizadas que são
dirigidas por ‘scripts de construção’.
54
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Construção de sistemas
• A construção de um sistema grande é
computacionalmente dispendiosa e pode
levar várias horas.
• Centenas de arquivos podem estar envolvidos.
• As ferramentas de construção de sistemas
podem fornecer:
– Uma linguagem de especificação de dependência
e um interpretador associado;
– Seleção de ferramentas e apoio à instanciação;
– Compilação distribuída;
55
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Construção de sistemas
• A construção de um sistema grande é
computacionalmente dispendiosa e pode
levar várias horas.
• Centenas de arquivos podem estar envolvidos.
• As ferramentas de construção de sistemas
podem fornecer:
– Uma linguagem de especificação de dependência
e um interpretador associado;
– Seleção de ferramentas e apoio à instanciação;
– Compilação distribuída;
56
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Dependências entre componentes
57
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
Algumas Ferramentas de Controle de
Versões e Geração de Builds
Controle de Versão
• CVS (+ WinCVS)
• SVN
• Git
• IBM Rational ClearCase
• Mercurial
Builds
• Ant
• Maven
• GNU Make
58
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Leituras recomendadas
• SOMMERVILLE, I. Engenharia de Software. 9ª.
Ed. São Paulo: Pearson Education, 2011
– Capítulo 29
• Branching and Merging Primer (Chris Birmele)
– http://bit.ly/GBwF5B
59
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Mais conteúdo relacionado

Mais procurados

Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de softwareJoao Johanes
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Erivelton Silva Rocha
 
Tipos de Manutenção
Tipos de ManutençãoTipos de Manutenção
Tipos de ManutençãoLucas Costa
 
Gerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptxGerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptxRoberto Nunes
 
Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2
Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2
Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2Rafael Lima
 
Gestão de materiais
Gestão de materiaisGestão de materiais
Gestão de materiaisEduardoBus
 

Mais procurados (20)

ALM focado em resultados
ALM focado em resultadosALM focado em resultados
ALM focado em resultados
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptx
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptx
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
IBM Rational Unified Process
IBM Rational Unified ProcessIBM Rational Unified Process
IBM Rational Unified Process
 
Aula 02
Aula 02Aula 02
Aula 02
 
ISO/IEC 9241-11
ISO/IEC 9241-11ISO/IEC 9241-11
ISO/IEC 9241-11
 
Qualidade de Software: MPS.BR
Qualidade de Software: MPS.BRQualidade de Software: MPS.BR
Qualidade de Software: MPS.BR
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1
 
Tipos de Manutenção
Tipos de ManutençãoTipos de Manutenção
Tipos de Manutenção
 
Gerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptxGerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptx
 
Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2
Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2
Dsn05 s1 valcimarcosta_rafaellima_orleanribeiro_tpo2
 
Gestão de materiais
Gestão de materiaisGestão de materiais
Gestão de materiais
 
Ciclo de Vida
Ciclo de VidaCiclo de Vida
Ciclo de Vida
 
ISO/IEC 12207
ISO/IEC 12207ISO/IEC 12207
ISO/IEC 12207
 

Destaque

Relatório de gerenciamento de mudanças
Relatório de gerenciamento de mudançasRelatório de gerenciamento de mudanças
Relatório de gerenciamento de mudançasFernando Palma
 
Exemplo de Requisição de Mudança ITIL
Exemplo de Requisição de Mudança ITILExemplo de Requisição de Mudança ITIL
Exemplo de Requisição de Mudança ITILFernando Palma
 
ITIL - Gestão de Mudanças
ITIL - Gestão de MudançasITIL - Gestão de Mudanças
ITIL - Gestão de MudançasJamildo Feitosa
 
Metodologia para gestão de mudanças organizacionais - Change Management
Metodologia para gestão de mudanças organizacionais - Change ManagementMetodologia para gestão de mudanças organizacionais - Change Management
Metodologia para gestão de mudanças organizacionais - Change ManagementEdson Carli
 
Gestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docGestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docneyfds
 

Destaque (8)

Mudanças itil
Mudanças itilMudanças itil
Mudanças itil
 
Gerenciamento de Escopo em Projetos
Gerenciamento de Escopo em ProjetosGerenciamento de Escopo em Projetos
Gerenciamento de Escopo em Projetos
 
Relatório de gerenciamento de mudanças
Relatório de gerenciamento de mudançasRelatório de gerenciamento de mudanças
Relatório de gerenciamento de mudanças
 
Exemplo de Requisição de Mudança ITIL
Exemplo de Requisição de Mudança ITILExemplo de Requisição de Mudança ITIL
Exemplo de Requisição de Mudança ITIL
 
ITIL - Gestão de Mudanças
ITIL - Gestão de MudançasITIL - Gestão de Mudanças
ITIL - Gestão de Mudanças
 
Metodologia para gestão de mudanças organizacionais - Change Management
Metodologia para gestão de mudanças organizacionais - Change ManagementMetodologia para gestão de mudanças organizacionais - Change Management
Metodologia para gestão de mudanças organizacionais - Change Management
 
Gestao de Mudanças
Gestao de MudançasGestao de Mudanças
Gestao de Mudanças
 
Gestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docGestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_doc
 

Semelhante a Gerenciamento Configuração

Aula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdfAula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdfFChico2
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcadosJunior Gomes
 
Lecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de SoftwareLecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de SoftwareRogerio P C do Nascimento
 
05 Dicas de Gestão em Automação
05 Dicas de Gestão em Automação05 Dicas de Gestão em Automação
05 Dicas de Gestão em Automaçãoeduardovieira
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...Guilherme Veras
 
05 Dias para a Gestão de Automação
05 Dias para a Gestão de Automação05 Dias para a Gestão de Automação
05 Dias para a Gestão de Automaçãoeduardovieira
 
Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)djadrianodez
 
aula7 software ciclo de vida analise req
aula7 software ciclo de vida analise reqaula7 software ciclo de vida analise req
aula7 software ciclo de vida analise reqpatriciaalipiosilva
 
Aula 7 - Ciclo de vida do software.pptx
Aula 7 - Ciclo de vida do software.pptxAula 7 - Ciclo de vida do software.pptx
Aula 7 - Ciclo de vida do software.pptxAlexandreLisboadaSil
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1Tiago Vizoto
 
Implantação de sistemas web
Implantação de sistemas webImplantação de sistemas web
Implantação de sistemas webCleiton Vogel
 
Live 1.pptx
Live 1.pptxLive 1.pptx
Live 1.pptxlfvl
 

Semelhante a Gerenciamento Configuração (20)

Aula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdfAula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdf
 
Aula2
Aula2Aula2
Aula2
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcados
 
Capitulo 02 sommerville
Capitulo 02 sommervilleCapitulo 02 sommerville
Capitulo 02 sommerville
 
Analise sistemas 05
Analise sistemas 05Analise sistemas 05
Analise sistemas 05
 
Lecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de SoftwareLecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de Software
 
05 Dicas de Gestão em Automação
05 Dicas de Gestão em Automação05 Dicas de Gestão em Automação
05 Dicas de Gestão em Automação
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
 
05 Dias para a Gestão de Automação
05 Dias para a Gestão de Automação05 Dias para a Gestão de Automação
05 Dias para a Gestão de Automação
 
Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
aula7 software ciclo de vida analise req
aula7 software ciclo de vida analise reqaula7 software ciclo de vida analise req
aula7 software ciclo de vida analise req
 
Aula 7 - Ciclo de vida do software.pptx
Aula 7 - Ciclo de vida do software.pptxAula 7 - Ciclo de vida do software.pptx
Aula 7 - Ciclo de vida do software.pptx
 
Aula 2 final
Aula 2 finalAula 2 final
Aula 2 final
 
347842.ppt
347842.ppt347842.ppt
347842.ppt
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1
 
Implantação de sistemas web
Implantação de sistemas webImplantação de sistemas web
Implantação de sistemas web
 
Live 1.pptx
Live 1.pptxLive 1.pptx
Live 1.pptx
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
ES4.ppt
ES4.pptES4.ppt
ES4.ppt
 

Gerenciamento Configuração

  • 1. Gerenciamento de configuração e mudança Centro de Informática - Universidade Federal de Pernambuco Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio, Vinicius Garcia e Kiev Gama O autor permite o uso e a modificação dos slides para fins didáticos
  • 2. Gerenciamento de configuração • Novas versões de sistemas de software são criadas quando eles: – Mudam para máquinas/OS diferentes; – Oferecem funcionalidade diferente; – São configurados para requisitos de usuários particulares. 2 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 3. Gerenciamento de configuração • O gerenciamento de configuração exerce controle sobre os artefatos produzidospelo desenvolvimento de software: – Mudança de sistema é uma atividade de equipe; – O CM (change management) tem por objetivo controlar os custos e o esforço envolvidos na realização das mudanças em um sistema. 3 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 4. Gerenciamento de configuração • Envolve o desenvolvimento e a aplicação de procedimentos e padrões para gerenciar um produto de software em evolução. • O CM pode ser visto como parte de um processo mais geral de gerenciamento do projeto. • Artefatos que estão sob gerenciamento de configuração são chamados de itens de configuração 4 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 5. Atividades do Gerenciamento de configuração 5 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 6. Famílias de Sistemas 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
  • 7. Construção frequente do sistema • É mais fácil encontrar problemas que surgem das interações de componentes no início do processo. – Em especial quando usa-se incrementos pequenos e builds frequentes • Isso encoraja o uso de testes automatizados – os desenvolvedores estão sob pressão para não ‘quebrar a construção’. • O processo de gerenciamento de mudanças precisa alcançar equilíbrio: – Burocracia vs. Rastreabilidade 7 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 8. Construção frequente do sistema • É mais fácil encontrar problemas que surgem das interações de componentes no início do processo. – Em especial quando usa-se incrementos pequenos e builds frequentes • Isso encoraja o uso de testes automatizados – os desenvolvedores estão sob pressão para não ‘quebrar a construção’. • O processo de gerenciamento de mudanças precisa alcançar equilíbrio: – Burocracia vs. Rastreabilidade 8 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 9. Construção frequente do sistema • É mais fácil encontrar problemas que surgem das interações de componentes no início do processo. – Em especial quando usa-se incrementos pequenos e builds frequentes • Isso encoraja o uso de testes automatizados – os desenvolvedores estão sob pressão para não ‘quebrar a construção’. • O processo de gerenciamento de mudanças precisa alcançar equilíbrio: – Burocracia vs. Rastreabilidade 9 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 10. Planejamento de gerenciamento de configuração • Todos os produtos do processo de software podem ser gerenciados: – Especificações; – Projetos; – Programas; – Dados de teste; – Manuais de usuário. • Milhares de artefatos separados podem ser gerados para um sistema grande e complexo de software. • É necessário definir quais estão sujeitos ao gerenciamento de configuração 10 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 11. Planejamento de gerenciamento de configuração • Todos os produtos do processo de software podem ser gerenciados: – Especificações; – Projetos; – Programas; – Dados de teste; – Manuais de usuário. • Milhares de artefatos separados podem ser gerados para um sistema grande e complexo de software. • É necessário definir quais estão sujeitos ao gerenciamento de configuração 11 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 12. Principais Atividades do Gerenciamento de Configuração • Controle de Versões • Gerenciamento e Registro de Mudanças • Organização e Geração dos Builds do Sistema 12 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 13. Gerenciamento de mudanças • Sistemas de software estão sujeitos a solicitações contínuas de mudanças: – De usuários; – De desenvolvedores; – De forças de mercado. • O gerenciamento de mudanças está relacionado à manutenção da rastreabilidade dessas mudanças, de modo que: – Reparos realmente corrijam falhas – Novas falhas introduzidas por reparos possam ser identificadas rapidamente – Seja fácil descobrir quais mudanças foram implementadas e quando 13 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 14. Gerenciamento de mudanças • Sistemas de software estão sujeitos a solicitações contínuas de mudanças: – De usuários; – De desenvolvedores; – De forças de mercado. • O gerenciamento de mudanças está relacionado à manutenção da rastreabilidade dessas mudanças, de modo que: – Reparos realmente corrijam falhas – Novas falhas introduzidas por reparos possam ser identificadas rapidamente – Seja fácil descobrir quais mudanças foram implementadas e quando 14 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 15. Processo de Gerenciamento de Mudanças 15 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 16. 16 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
  • 17. 17 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29 O formulário já dá uma boa idéia sobre como o processo de gerenciamento de mudanças funciona.
  • 18. 18 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 19. Acompanhamento de mudanças • O maior problema no gerenciamento de mudanças é o acompanhamento do status da mudança. • Ferramentas de gerenciamento de mudanças fornecem meios para se acompanhar a situação de cada solicitação de mudança – Automaticamenteenviam solicitações de mudança para as pessoas certas no tempo certo. • São integrados a sistemas de e-mail, permitindo a distribuição eletrônica da solicitação de mudança. – Mesmo assim, é comum que solicitações de mudanças sejam sumariamente ignoradas 19 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 20. Acompanhamento de mudanças • O maior problema no gerenciamento de mudanças é o acompanhamento do status da mudança. • Ferramentas de gerenciamento de mudanças fornecem meios para se acompanhar a situação de cada solicitação de mudança – Automaticamenteenviam solicitações de mudança para as pessoas certas no tempo certo. • São integrados a sistemas de e-mail, permitindo a distribuição eletrônica da solicitação de mudança. – Mesmo assim, é comum que solicitações de mudanças sejam sumariamente ignoradas 20 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 21. Acompanhamento de mudanças • O maior problema no gerenciamento de mudanças é o acompanhamento do status da mudança. • Ferramentas de gerenciamento de mudanças fornecem meios para se acompanhar a situação de cada solicitação de mudança – Automaticamenteenviam solicitações de mudança para as pessoas certas no tempo certo. • São integrados a sistemas de e-mail, permitindo a distribuição eletrônica da solicitação de mudança. – Mesmo assim, é comum que solicitações de mudanças sejam sumariamente ignoradas 21 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 22. Comitê de controle de mudanças • As mudanças podem ser revisadas por um grupo externo, que – decide se elas são ou não adequadas em termos de custo,tempo e risco – ponto de vista estratégico ou organizacional ao invés de um ponto de vista técnico. • O grupo deve ser independente do responsável de projeto pelo sistema. Esse grupo é, algumas vezes, chamado de comitê de controle de mudanças (CCB). • O CCB pode conter representantes do cliente e do pessoal fornecedor. 22 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 23. Comitê de controle de mudanças • As mudanças podem ser revisadas por um grupo externo, que – decide se elas são ou não adequadas em termos de custo,tempo e risco – ponto de vista estratégico ou organizacional ao invés de um ponto de vista técnico. • O grupo deve ser independente do responsável de projeto pelo sistema. Esse grupo é, algumas vezes, chamado de comitê de controle de mudanças (CCB). • O CCB pode conter representantes do cliente e do pessoal fornecedor. 23 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 24. Procedência histórica • É um registro das mudanças realizadas em um documento ou um componente de código. • Deve registrar, em linhas gerais, a mudança feita, a lógica da mudança,quem fez a mudança e quando foi implementada. • Pode ser incluída como um comentário no código. – Se um estilo de cabeçalho padrão é usado para a procedência histórica, as ferramentas podem processar isso automaticamente. 24 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 25. Procedência histórica • É um registro das mudanças realizadas em um documento ou um componente de código. • Deve registrar, em linhas gerais, a mudança feita, a lógica da mudança,quem fez a mudança e quando foi implementada. • Pode ser incluída como um comentário no código. – Se um estilo de cabeçalho padrão é usado para a procedência histórica, as ferramentas podem processar isso automaticamente. 25 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 26. Procedência histórica • É um registro das mudanças realizadas em um documento ou um componente de código. • Deve registrar, em linhas gerais, a mudança feita, a lógica da mudança,quem fez a mudança e quando foi implementada. • Pode ser incluída como um comentário no código. – Se um estilo de cabeçalho padrão é usado para a procedência histórica, as ferramentas podem processar isso automaticamente. 26 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 27. Informação de cabeçalho de componente 27 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
  • 28. Algumas Ferramentas de Gerenciamento de Mudanças • Bugzilla • IBM Rational ClearCase • Mantis • Também é possível usar um Wiki com esse fim 28 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 29. Gerenciamento de versões e releases • Elaborar um esquema de identificação para versões de sistema. • Planejar quando uma nova versão de sistema será produzida. • Assegurar que procedimentose ferramentas de gerenciamento das versões sejam adequadamente aplicados. • Planejar e distribuir releases da nova versão do sistema. 29 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 30. Versões/variantes/releases • Versão – É uma instância de um sistema que é funcionalmente distinta, de alguma maneira, de outras instâncias de um sistema. • Variante – Uma versão de um sistema que tem apenas pequenas diferenças com relação a outras instâncias (normalmente devido a diferenças no hardware/software alvo)‫‏‬ – Ex.: O Office para MacOS é uma variante do Office para Windows • Release – É uma instância de um sistema distribuída para os usuários fora da equipe de desenvolvimento. – Ex. Office 2007 30 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 31. Versões/variantes/releases • Versão – É uma instância de um sistema que é funcionalmente distinta, de alguma maneira, de outras instâncias de um sistema. • Variante – Uma versão de um sistema que tem apenas pequenas diferenças com relação a outras instâncias (normalmente devido a diferenças no hardware/software alvo)‫‏‬ – Ex.: O Office para MacOS é uma variante do Office para Windows • Release – É uma instância de um sistema distribuída para os usuários fora da equipe de desenvolvimento. – Ex. Office 2007 31 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 32. Versões/variantes/releases • Versão – É uma instância de um sistema que é funcionalmente distinta, de alguma maneira, de outras instâncias de um sistema. • Variante – Uma versão de um sistema que tem apenas pequenas diferenças com relação a outras instâncias (normalmente devido a diferenças no hardware/software alvo)‫‏‬ – Ex.: O Office para MacOS é uma variante do Office para Windows • Release – É uma instância de um sistema distribuída para os usuários fora da equipe de desenvolvimento. – Ex. Office 2007 32 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 33. Baseline (linha de base) • Codeline – Conjunto de versões de um determinado componente • Baseline – Coleção de versões de componentes que constituem um sistema • Mainline – Sequência de baselines representando diferentes versões do sistema 33 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 34. Identificação de versões • Os procedimentospara identificação de versões devem definir uma maneira não- ambígua de identificar versões • Algumas técnicas básicas para identificação de componentes: – Numeração de versões; – Identificação baseada em atributos; 34 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 35. Numeração de versões • É um esquema simples de numeração usa uma derivação linear – major.minor[.build[.revision]] – <major>.<minor>.<patch>[-<type>-<attempt>] – V1, V1.1, V1.2, V2.1, V2.2 etc. • A estrutura de derivação real é uma árvore ou uma rede, e não uma seqüência. • Os nomes não são significativos. • Um esquema de hierarquia de atribuição de nomes conduz a poucos erros na identificação de versões. 35 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 36. Um Exemplo: Números de Versões no Linux • A.B.C[.D] – A – versão do kernel (apenas duas mudanças: em 1994 e em 1996)‫‏‬ – B – revisão importante do kernel – C – mudanças menores: novos drivers e novas funcionalidades individuais – D – atualizações de segurança e correções de bugs • Exemplo de versão: 2.6.27.1 36 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 37. Terminologias de tipos de versão • Alpha • Beta • Snapshot • Release candidate • Official release 37 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 38. Identificação baseada em atributos • Os atributos podem ser associados a uma versão com a combinação de atributos que a identificam. – Exemplos de atributos são Data, Criador, Linguagem de Programação, Cliente, Status, etc. • É mais flexível do que um esquema explícito de atribuição de nomes para recuperação de versões; • Na prática, uma versão também necessita de um nome que facilite a referência 38 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 39. Identificação baseada em atributos • Os atributos podem ser associados a uma versão com a combinação de atributos que a identificam. – Exemplos de atributos são Data, Criador, Linguagem de Programação, Cliente, Status, etc. • É mais flexível do que um esquema explícito de atribuição de nomes para recuperação de versões; • Na prática, uma versão também necessita de um nome que facilite a referência 39 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 40. Consultas baseadas em atributos • Identificação baseada em atributos pode apoiar consultas – Ex. ‘a mais recente versão em Java’, etc. • A consulta seleciona uma versão dependendo dos valores de atributos – Ex.: (linguagem =Java, plataforma = XP, data = Jan 2003). 40 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 41. Branching e Merging • Um elemento fundamental do gerenciamento de configuração – O livro não fala sobre! • Compromisso entre produtividade e risco • Branching: Consiste em usar diferentes “ramos” de desenvolvimento para aumentar o paralelismo – Cada ramo é chamada de branch – Código não é compartilhado entre branches • Merging: a combinação de uma desses ramos com o ramo principal – Diferenças entre os branches combinados precisam ser resolvidas 41 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 42. Branching e Merging • Um elemento fundamental do gerenciamento de configuração – O livro não fala sobre! • Compromisso entre produtividade e risco • Branching: Consiste em usar diferentes “ramos” de desenvolvimento para aumentar o paralelismo – Cada ramo é chamada de branch – Código não é compartilhado entre branches • Merging: a combinação de uma desses ramos com o ramo principal – Diferenças entre os branches combinados precisam ser resolvidas 42 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 43. Branching e Merging • Um elemento fundamental do gerenciamento de configuração – O livro não fala sobre! • Compromisso entre produtividade e risco • Branching: Consiste em usar diferentes “ramos” de desenvolvimento para aumentar o paralelismo – Cada ramo é chamada de branch – Código não é compartilhado entre branches • Merging: a combinação de uma desses ramos com o ramo principal – Diferenças entre os branches combinados precisam ser resolvidas 43 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 44. Algumas Razões para se Criar um Branch • Implementar uma solicitação de mudança • Implementar uma funcionalidade pontual • Paralelizar o desenvolvimento dos componentes do sistema – Também aplicável ao desenvolvimento paralelo de diferentes versões do sistema – Atribuição de tarefas a diferentes partes da equipe de desenvolvimento 44 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 45. Branch-per-Release e Code-Promotion- Branches 45 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 46. Branch-per-Component e Branch-per- Technology 46 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 47. Anti-Padrões de Branching e Merging • Merge-Paranoia • Merge-Mania • Big-Bang-Merge • Branch-Mania • Cascading Branches • Vejam “A Branching & Merging Primer”, de Chris Birmele – Parte do material desta aula foi tirada desse tutorial 47 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 48. Funcionalidadesde um Sistema de Controle de Versões • Manutenção de um repositório de itens de configuração – Com suporte ao checkin e ao checkout distribuídos • Criação e manutenção de múltiplas versões – Armazenamento de informações sobre cada versão • Criação e merging de branches • Capacidade de realizar consultas sobre versões dos sistemas, com base em seus atributos 48 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 49. Funcionalidadesde um Sistema de Controle de Versões • Manutenção de um repositório de itens de configuração – Com suporte ao checkin e ao checkout distribuídos • Criação e manutenção de múltiplas versões – Armazenamento de informações sobre cada versão • Criação e merging de branches • Capacidade de realizar consultas sobre versões dos sistemas, com base em seus atributos 49 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 50. Funcionalidadesde um Sistema de Controle de Versões • Manutenção de um repositório de itens de configuração – Com suporte ao checkin e ao checkout distribuídos • Criação e manutenção de múltiplas versões – Armazenamento de informações sobre cada versão • Criação e merging de branches • Capacidade de realizar consultas sobre versões dos sistemas, com base em seus atributos 50 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 51. Funcionalidadesde um Sistema de Controle de Versões • Manutenção de um repositório de itens de configuração – Com suporte ao checkin e ao checkout distribuídos 51 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 52. Funcionalidadesde um Sistema de Controle de Versões (cont.) • Criação e manutenção de múltiplas versões – Armazenamento de informações sobre cada versão • Criação e merging de branches • Capacidadede realizar consultas sobre versões dos sistemas, com base em seus atributos 52 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 53. Construção (build) de sistemas • É o processo de compilação e ligação de componentesde software em um sistema executável. – Pode incluir a execução de testes • Sistemas diferentes são construídosa partir de combinaçõesdiferentes de componentes. • Esse processo é, atualmente, sempre apoiado por ferramentas automatizadas que são dirigidas por ‘scripts de construção’. 53 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 54. Construção (build) de sistemas • É o processo de compilação e ligação de componentesde software em um sistema executável. – Pode incluir a execução de testes • Sistemas diferentes são construídosa partir de combinaçõesdiferentes de componentes. • Esse processo é, atualmente, sempre apoiado por ferramentas automatizadas que são dirigidas por ‘scripts de construção’. 54 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 55. Construção de sistemas • A construção de um sistema grande é computacionalmente dispendiosa e pode levar várias horas. • Centenas de arquivos podem estar envolvidos. • As ferramentas de construção de sistemas podem fornecer: – Uma linguagem de especificação de dependência e um interpretador associado; – Seleção de ferramentas e apoio à instanciação; – Compilação distribuída; 55 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 56. Construção de sistemas • A construção de um sistema grande é computacionalmente dispendiosa e pode levar várias horas. • Centenas de arquivos podem estar envolvidos. • As ferramentas de construção de sistemas podem fornecer: – Uma linguagem de especificação de dependência e um interpretador associado; – Seleção de ferramentas e apoio à instanciação; – Compilação distribuída; 56 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 57. Dependências entre componentes 57 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 29
  • 58. Algumas Ferramentas de Controle de Versões e Geração de Builds Controle de Versão • CVS (+ WinCVS) • SVN • Git • IBM Rational ClearCase • Mercurial Builds • Ant • Maven • GNU Make 58 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
  • 59. Leituras recomendadas • SOMMERVILLE, I. Engenharia de Software. 9ª. Ed. São Paulo: Pearson Education, 2011 – Capítulo 29 • Branching and Merging Primer (Chris Birmele) – http://bit.ly/GBwF5B 59 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE