Sei sulla pagina 1di 54

Contexto para Gerncia de

Configurao

1/113

Gerncia de Configurao e
mudana
Objetivo
Compreender a importncia do uso de
mecanismos de gerncia de configurao e de
mudana, seus mtodos, processos e ferramentas.
Fornecer os principais conceitos relacionados a
GC.
Criar uma viso geral de como GC pode ser
aplicada a um projeto de software.
2/113

Problema da Quebra de Comunicao


Desenvolvedor A

Desenvolvedor B

Desenvolvedor C

3/113

Problema da Quebra de
Comunicao (continuao)

Falhas de comunicao em equipes


Ocorre pelas mais diversas razes:

Vocabulrios incompatveis
Culturas de desenvolvimento diferentes
Distncia geogrfica
Dificuldade de expresso

Quando este problema acontece:

Os sistemas produzidos no atendem aos requisitos


Fora de trabalho desperdiada
4/113

Problema dos Dados Compartilhados


Desenvolvedor A

Programa de A
A1

A2

A3

Desenvolvedor B

Componente
Compartilhado

Programa de B
B1
B2
B3

5/113

Problema dos Dados


Compartilhados - Cenrio

O desenvolvedor A modifica o componente


compartilhado
Mais tarde, o desenvolvedor B realiza algumas
alteraes no mesmo
Ao tentar compilar o componente, erros so
apontados pelo compilador, mas nenhum deles
ocorre na parte que B alterou
O desenvolvedor B no tem a menor idia
sobre a causa do problema
6/113

Problema dos Dados


Compartilhados - Soluo simplista

Soluo simplista:
cada desenvolvedor trabalha em uma cpia
local do componente
resolve o Problema dos Dados Compartilhados,
mas cria um novo problema

7/113

Problema da Manuteno Mltipla


Desenvolvedor A

Programa de A
A1

A2

A3

Componente
Compartilhado

Verso de A do
Componente
Compartilhado

Desenvolvedor B

Componente
Compartilhado

Verso de B do
Componente
Compartilhado

Programa de B
B1 B2 B3

8/113

Problema da Manuteno Mltipla


(continuao)

Ocorre quando cada desenvolvedor trabalha com uma


cpia local do que seria o mesmo componente
Dificuldade para saber:

Que funcionalidades foram implementadas em quais


verses do componente
Que defeitos foram corrigidos

Evitado atravs de uma biblioteca central de


componentes compartilhados

Nesse esquema, cada componente copiado para a


biblioteca sempre que alterado
Resolve o Problema da Manuteno Mltipla, mas...
9/113

Problema da Atualizao Simultnea


Biblioteca Central de
Recursos Compartilhados

Desenvolvedor A

Desenvolvedor B
Componente
Compartilhado

Programa de A
A1

A2

A3

Verso de A do
Componente
Compartilhado

Verso de B do
Componente
Compartilhado

Programa de B
B1 B2 B3
10/113

Problema da Atualizao
Simultnea Cenrio 1

O desenvolvedor A encontra e corrige um


defeito em sua verso do componente
compartilhado
Uma vez corrigido, o componente modificado
copiado para a biblioteca central
O desenvolvedor B encontra e corrige o
mesmo defeito em sua verso do componente
por no saber que A j tinha feito isso
O trabalho de A desperdiado
11/113

Problema da Atualizao
Simultnea Cenrio 2

O desenvolvedor A encontra e corrige um defeito em sua verso


do componente compartilhado
Uma vez corrigido, o componente modificado copiado para a
biblioteca central
O desenvolvedor B encontra e corrige um outro defeito em sua
verso do componente, sem saber do defeito corrigido por A
O desenvolvedor B copia sua verso do componente para a
biblioteca central
Alm de o trabalho de A ser desperdiado, a verso do
componente que se encontra na biblioteca central continua
apresentando um defeito
O desenvolvedor A julga o problema como resolvido
12/113

Como Resolver?

O problema da atualizao simultnea no


pode ser resolvido simplesmente copiando
componentes compartilhados para uma
biblioteca central
Algum mecanismo de controle necessrio
para gerenciar a entrada e sada dos
componentes

13/113

O que Gerncia de Configurao?

Gerncia de configurao (GC) o processo


de identificar, organizar e controlar
modificaes ao software sendo construdo
A idia maximizar a produtividade
minimizando os enganos

14/113

Objetivos de GC

Definir o ambiente de desenvolvimento


Definir polticas para controle de verses,
garantindo a consistncia dos artefatos
produzidos
Definir procedimentos para solicitaes de
mudanas
Administrar o ambiente e auditar mudanas
Facilitar a integrao das partes do sistema
15/113

Benefcios

Aumento de produtividade no desenvolvimento


Menores Custos de Manuteno
Reduo de defeitos
Maior rapidez na identificao e correo de
problemas

16/113

Conceitos Bsicos

17/113

Configurao

Um projeto de desenvolvimento de software


produz os seguintes itens:
Programas (cdigo fonte, programas
executveis, bibliotecas de componentes, etc.)
Documentao (manuais do usurio, documento
de requisitos, modelo de anlise e projeto, etc.)
Dados (dados de teste e do projeto)

Esses conjuntos de itens so chamados,


coletivamente, de configurao do software
18/113

Item de Configurao

Um conjunto de itens de hardware e/ou software


vistos como uma entidade nica para fins de
gerncia de configurao
Um item de configurao est sujeito a mudanas
e essas devem obedecer s polticas
estabelecidas
Normalmente, um item de configurao
estabelecido para cada pedao de software que
pode ser projetado, implementado e testado de
forma independente
19/113

Configurao de Software
item

fluxo de desenvolvimento

tempo
20/113

Baseline

Uma especificao ou produto que foi formalmente


revisado e aceito

Serve como base para os passos posteriores do


desenvolvimento

A configurao do software em um ponto discreto no


tempo
S pode ser modificado atravs de procedimentos
formais (solicitaes de mudana)
Um artefato ou conjunto de artefatos s se torna um
item de configurao depois que um baseline
estabelecido
21/113

Baseline
item
fluxo de desenvolvimento

tempo
22/113

Razes para Criar um Baseline


Reproducibilidade a habilidade de
reproduzir uma verso anterior do sistema
Rastreabilidade Estabelece uma relao
predecessor-sucessor entre artefatos do
projeto (projeto satisfaz requisitos, cdigo
implementa projeto, etc.)
Gerao de Relatrios A comparao dos
contedos de dois baselines ajuda na
depurao e criao de documentao
Controle de Mudanas referencial para
comparaes, discusses e negociaes
23/113

Baselines importantes

Baselines so considerados marcos no


processo de desenvolvimento:
Funcional : requisitos
De Produto : releases, iteraes

24/113

Repositrio

Local (fsico e lgico) onde os itens de um


sistema so guardados
Pode conter diversas verses do sistema
Utiliza mecanismos de controle de acesso

Desenvolvedor

Repositrio

25/113

Lock

Resolve a Atualizao Simultnea


Garante que apenas o usurio que detm o
lock pode alterar o arquivo
Problema: serializa o trabalho dos
desenvolvedores

26/113

Check-Out
Check-out

cliente

Repositrio

27/113

Check-Out (continuao)

Recupera a (ltima) verso de um item de


configurao guardada no repositrio

Escrita
Verifica que ningum detm o lock do item de
configurao
Obtm o lock do item
Cria uma cpia, para edio, no cliente

Leitura
Verifica que algum j detm o lock
Cria uma cpia, apenas para leitura, no cliente

28/113

Check-In
Check-in

cliente

Repositrio

29/113

Check-In (continuao)

Ao de inserir/atualizar um item de
configurao no repositrio
Verifica o lock do item de configurao, caso o
mesmo j exista
Verifica e incrementa a verso do item
Registra informaes das mudanas (autor,
data, hora, comentrios)
Inclui/atualiza o item

30/113

Build

Representa uma verso ainda incompleta do sistema


em desenvolvimento, mas com certa estabilidade
Costuma apresentar limitaes conhecidas
Espao para integrao de funcionalidades
Inclue no s cdigo fonte, mas documentao,
arquivos de configurao, base de dados, etc.
A poltica de gerao dos builds deve ser bem definida
na estruturao do ambiente

31/113

Os Problemas na Gerao de
Builds

Fazer os builds do sistema manualmente


muito demorado
Pode ser difcil saber qual a verso correta de
um arquivo
Os pedaos do sistema podem estar em
diversos locais diferentes

Alguns arquivos podem ser esquecidos

32/113

Os Problemas na Gerao de
Builds

A integrao das partes de um sistema em


desenvolvimento normalmente :
Realizada poucas vezes, apenas perto de sua
implantao
Feita em freqncia inversamente proporcional
complexidade do sistema

Integrar as partes de um sistema uma tarefa


trabalhosa e sujeita a erros

Quanto maior o sistema, mais difcil


33/113

Os Problemas na Gerao de
Builds

Consequncia: problemas de integrao


tornam-se difceis de detectar cedo no
desenvolvimento
Costumam ser encontrados muito depois de sua
introduo
muito difcil rastrear suas causas

34/113

Gerao de Buils atravs da


Integrao Contnua

Gerao freqente (pelo menos diria) de builds do


sistema

As partes do sistema so integradas constantemente


Problemas de integrao passam a ser encontrados logo
que introduzidos, na maioria dos casos

Considerada uma das melhores prticas no


desenvolvimento de software
A gerao de builds deve ser automatizada e
realizada com freqncia adequada

35/113

Release

Identificao e empacotamento de artefatos entregues


ao cliente (interno ou externo) ou ao mercado
Um release implica no estabelecimento de um novo
baseline, de produto
Produto de software supostamente sem erros

Verso do sistema validada aps os diversos tipos de teste


Garantia de que todos os itens de configurao foram
devidamente testados, avalidos, aceitos e esto disponveis no
novo baseline

Processo iterativo/incremental produz, em geral, mais


de um release
36/113

Tipos de release

Normalmente, releases esto associados aos


milestones do plano de projeto
Internos

Controle de qualidade, acompanhamento de


projeto, controle de riscos, aceitao, aquisio
de conhecimento atravs da coleta de
feedbacks, desenho da estratgia de
implantao

Externos

Implantado e utilizado pelo cliente


37/113

Tags

Rtulos que so associados a conjuntos de


arquivos
Um tag referencia um ou mais arquivos em um
ou mais diretrios

Costuma-se usar tags para:


Denominar projeto rotulando todos os arquivos
associados ao projeto
Denominar uma verso do projeto (um build ou
release) rotulando todos os arquivos associados
ao build ou release

38/113

Tags Cenrio 1
raiz
file2
file3

subdir1

file1
file4

file6
subdir2

tag1

tag2

file5
file7

file8

file9
39/113

Tags Cenrio 2

1.1

1.2

1.3

release_1
Histrico
de um
arquivo

1.4
release_2

tag

40/113

Branch

Criao de um fluxo alternativo para


atualizao de verses de itens de
configurao
Recurso muito poderoso
Devem existir regras bem definidas para
criao de branches
Por que e quando devem ser criados?
Quais os passos?
Quando retornar ao fluxo principal?

41/113

Branch (continuao)

Uso de lock inviabiliza a criao de branches


Branches normalmente se originam de
correes em verses anteriores

42/113

Branch (exemplo)
Maria

hello.c

hello.h

Jos

hello.c

3.m.1 3.m.2 3.m.3

hello.h

2.m.1

3
2

2.m.2

hello.c

3.j.1

hello.h

2.j.1

6
4

3.j.2

3.j.3
2.j.2
43/113

Merge

Unificao de diferentes verses de um mesmo item de


configurao
Integrao dos itens de configurao de um branch
com os itens de configurao do fluxo principal
Check-out atualizando a rea local
Algumas ferramentas fornecem um mecanismo
automtico para realizao de merges

Mesmo com o uso de ferramentas, em vrios casos h


necessidade de interveno humana

44/113

Merge (exemplo)
Maria

hello.c

hello.h

Jos

hello.c

3.m.1 3.m.2 3.m.3

hello.h

2.m.1

hello.c

3.j.1

hello.h

2.j.1

2.m.2
4

3.j.2

3.j.3

3.j.4

2.j.2

2.j.3
45/113

Branching e Merging: esquema


grfico
patch

rel
_1
_ fi
x

Branch

1.1

1.2.2.1

1.2

tag

1.2.2.2

1.3

1.4
release_2

release_1
Tronco principal
de
desenvolvimento

tag

Merge

46/113

Oportunidades criadas com GC

Reuso de itens de software

Automao de processo

Artefatos
Componentes
Construo de builds
Gerao de releases
Testes
Integrao

Aumento da produtividade das equipes


Reduo de re-trabalho
Melhoria do acompanhamento do projeto
47/113

Controle de Mudanas

48/113

Contexto

Desenvolvimento iterativo/incremental
Novos conjuntos de requisitos, detalhados a
cada iterao
Mudanas em estratgias de negcio
motivadas pelas mais diversas fontes:
mercado, cultura, leis, etc

49/113

Problemas

Controle do escopo do projeto

Modificaes podem ampliar o leque de funcionalidades


e aumentar significativamente o custo do projeto
Atrasos em entregas planejadas

Controle de consistncia dos artefatos

Uma mudana aparentemente localizada pode causar


muito mais impacto do que o previsto
Degradao da qualidade do software (ex: abandono dos
testes automatizados devido inconsistncia dos dados
de teste)
Retrabalho
50/113

O que Gerncia de Mudanas?

Gerncia de Mudanas o processo de avaliar,


coordenar e decidir sobre a realizao de
mudanas propostas a itens de configurao
(ICs)
Mudanas aprovadas so implementadas nos
itens de configurao e nos dados e
documentos relacionados

51/113

Objetivos da Gerncia de Mudanas

Garantir que os artefatos do sistema alcanam e


mantm uma estrutura definida atravs do seu ciclo de
vida
Definir procedimentos e documentao necessrios
para realizar modificaes a ICs
Prover os mecanismos necessrios para
conduzir mudanas de uma maneira
controlada

52/113

Benefcios

Controle sobre o escopo do projeto


Mais produtividade

cada solicitao ser tratada de forma coordenada


Reduo dos problemas de comunicao entre membros
da equipe

Mais qualidade, uma vez que cada mudana, antes de


ser realizada, tem seu impacto avaliado
Gerao de dados para o acompanhamento (tracking)
do projeto

53/113

Controle do caos
Controle de mudanas
Solicitao de mudana

Projeto

Organizao

54/113

Potrebbero piacerti anche