Você está na página 1de 48

Gerncia de

Configurao e
Mudanas
Prof. Gustavo Carvalho
ghcc@cin.ufpe.br
1

Quem esse cara?

Bacharel em Cincias da Computao. Unip. 2004.


Especialista em Engenharia de Software. FBV. 2008.
Mestrando em Cincias da Computao. UFPE.
Experincia Profissional:

Webmaster do Jornal O Norte S/A Joo Pessoa. 2002 2004


Analista de Sistemas da Secretaria da Fazenda do Estado da Paraba.
2005
Analista de Sistemas da Confederao das Unimeds Norte Nordeste
Joo Pessoa. 2005 2007.
Professor de Graduao em Sistemas de Informao das Faculdades
Joaquim Nabuco e FASE. Desde 2009.
Professor de Ps-Graduao em Engenharia de Software da CEUT
Teresina. 2010.
Gerente de Configurao do C.E.S.A.R Recife. Desde 2007.

E Torcedor do melhor time de Pernambuco...

Programa das Aulas


Introduo e Conceitos Bsicos
Padres de Gerncia de Configurao
Controle de Mudanas - Mantis
Controle de Verso CVS, SVN
Processo de Gerncia de Configurao
Integrao Contnua
Avaliao

Vamos comear?
5

Quando no existe Gerncia de


Configurao...

Bugs corrigidos reaparecem


Funcionalidades j testadas somem de repente.
Um programa deixa de funcionar
Problema de coordenao de trabalhos paralelos
Descontrole sobre o que deve ser empacotado no
ltimo release do sistema
Erros que ocorrem em produo no conseguem ser
reproduzidos em desenvolvimento.
6

Falha de Comunicao

Quanto mais canais de comunicao (mais


gente), mais problemas com a comunicao!

( 1 pessoa )
Nenhum canal
de comunicao

( 2 pessoas )
2 canais
de comunicao

( 3 pessoas )
6 canais
de comunicao

Falha de Comunicao (Cont.)

Principais razes:
Vocabulrios

incompatveis;
Culturas diferentes;
Conhecimentos tcnicos diferentes;
Distncia geogrfica;
Dificuldade de expresso e entendimento;

Conseqncias:
Os

sistemas produzidos no atendem aos


requisitos;
Esforo desperdiado;
8

Dados Compartilhados

Componente A1

Componente B1

Componente A2

Componente B2

Componente C
Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo
Componente
Compartilhado com
o Desenvolvedor B

Dados Compartilhados

Cenrio
O

desenvolvedor A modifica o componente C;


O desenvolvedor B modifica o componente C;
Quando o desenvolvedor A tenta compilar o componente,
acontece erros, mas em partes diferente das partes alteradas;
Ningum tem idia da causa do problema;

Soluo
Cada

desenvolvedor faz uma cpia do componente C para o seu


ambiente local;

Consequncias...

10

Dados Compartilhados

Componente A1

Componente B1

Componente A2

Componente B2

Componente C
(verso de A)

Componente C
(verso de B)

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

Verses diferentes do componente


que deveria ser nico

11

Dados Compartilhados

Cenrio
Quando

cada desenvolvedor trabalha isoladamente com


uma cpia do componente que deveria ser nico.
Dificuldade para saber:

Que funcionalidades foram implementadas nas vrias verses do


componente;
Que defeitos foram corrigidos;

Soluo
Criao

de uma biblioteca central de componentes

Os componentes modificados so copiados para a biblioteca


sempre que alterados;

Conseqncias...
12

Manuteno Mltipla

Componente C
Componente A1

Componente B1

Componente A2

Componente B2

Componente C

Componente C

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

13

Manuteno Mltipla

Componente C
Componente A1

Componente B1

Componente A2

Componente B2

Componente C
(verso de A)

Componente C

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

Desenvolvedor A altera o Componente C na sua mquina, gerando


uma nova verso do componente.

14

Manuteno Mltipla

Componente C
(verso de A)
Componente A1

Componente B1

Componente A2

Componente B2

Componente C
(verso de A)

Componente C

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

Desenvolvedor A copia a sua verso do Componente C inteiro para a biblioteca central.

15

Manuteno Mltipla

Componente C
(verso de A)
Componente A1

Componente B1

Componente A2

Componente B2

Componente C
(verso de A)

Componente C
(verso de B)

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

Desenvolvedor B altera o Componente C na sua mquina, gerando


uma outra verso do componente.

16

Manuteno Mltipla

Componente C
(verso de B)
Componente A1

Componente B1

Componente A2

Componente B2

Componente C
(verso de A)

Componente C
(verso de B)

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

Desenvolvedor B copia sua verso do Componente C inteiro para a biblioteca central.

17

Manuteno Mltipla

Componente C
(verso de B)
Componente A1

Componente B1

Componente A2

Componente B2

Componente C
(verso de A)

Componente C
(verso de B)

Desenvolvedor A
programando seu
mdulo

Desenvolvedor B
programando seu
mdulo

Se o erro consertado por A diferente do erro consertado por B, a correo de A foi sobreposta!
Se no, o trabalho de B foi duplicado!

18

Concluses
Mudanas no controladas, so geralmente
causas significativas para grandes mudanas
em cronograma e custo;
Uma infra-estrutura bsica para o
desenvolvimento concorrente imprescindvel;
necessria uma linguagem comum aos
times de desenvolvimento;
necessria uma coordenao entre equipes
para minimizar os esforos aleatrios;

19

Gerncia de Configurao
Em qualquer time, um certo grau de confuso inevitvel. O
objetivo minimizar a confuso de modo que mais trabalho
possa ser feito.
A arte de coordenar o desenvolvimento de software para
minimizar esse tipo particular de confuso chamada de
Gerncia de Configurao.
W.A. Babich, Software Configuration Management.
Addison-Wesley, 1986.

20

Gerncia de Configurao
o conjunto de atividades projetadas para
controlar as mudanas pela identificao dos
produtos do trabalho que sero alterados,
estabelecendo um relacionamento entre eles,
definindo o mecanismo para o gerenciamento de
diferentes verses destes produtos, controlando as
mudanas impostas, e auditando e relatando
as mudanas realizadas.

Roger Pressman, Software Engineering: A Practitioner's Approach

21

Objetivos da Gerncia de Configurao


Definir polticas para controle de verses
garantindo a consistncia dos artefatos
produzidos
Definir procedimentos para solicitaes de
mudanas
Administrar e auditar o ambiente de GC
Facilitar e automatizar a gerao de build do
sistema
Facilitar a gerao de Release

22

Benefcios
Reduo de defeitos;
Diminuio dos custos para manuteno;
Melhora no gerenciamento do projeto;

Rastreabilidade;
Reproducibilidade;
Confiabilidade;
Visibilidade

das mudanas;

Melhora na produtividade do desenvolvimento;


Melhor retorno do investimento;

23

reas envolvidas com GC


Gerncia de Configurao
(processos, padres e ferramentas)

Controle de
Verso

Controle de
Mudanas

Gerenciamento
de Builds

24

Conceitos Bsicos

25

Configurao de Software

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

O conjunto destes itens chamado de


configurao do software
26

Workspace

Todos os artefatos necessrios para a


execuo de uma tarefa.
O

desenvolvedor pode exercer vrias tarefas, e


ter consequentemente vrios workspaces.

O workspace uma cpia associada a uma


verso especfica dos artefatos.

27

Item de Configurao
Um conjunto de artefatos de software, que
representa uma entidade nica para gerncia
de configurao;
Um item de configurao est sujeito a
mudanas e essas devem obedecer s
polticas estabelecidas.

28

Codeline
Uma codeline a progresso de um conjunto
de arquivos referente s mudanas atribudas
ao software no decorrer do tempo. Cada
mudana cria uma nova reviso de um
determinado artefato.
As codelines armazenam todas as mudanas.

Arq.java

1.1

1.2

1.3
Codeline

Arq2.java

1.1

1.2

29

Codeline

Verso (ou reviso ou bolha)


Uma

instncia de um item de configurao;


Verses diferentes normalmente possuem
contedos diferentes;
Uma identificao numrica atribuda a cada
verso de artefato

30

Baseline

Conceitualmente, uma configurao


comprovadamente estvel.
Serve

como base para os passos posteriores do


desenvolvimento
S pode ser modificada atravs de procedimentos formais
(solicitaes de mudana)
Uma baseline uma 'imagem' de uma verso de cada
artefato no repositrio do projeto

Um artefato s se torna um
item de configurao depois que ele
faz parte da baseline.
31

Baseline

Benefcios
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.)

Controle

de Mudanas

Referencial para comparaes, discusses e


negociaes
32

Baseline

Quais dos artefatos de trabalho deveriam


fazer parte da baseline?
Documento

de Especificao de Requisitos
Documento de Caso de Uso
Cdigo Fonte
Documento de Projeto de Testes

33

Repositrio
Conjunto de ferramentas auxiliares para o
armazenamento fsico e lgico dos itens de
configurao e controle de suas mudanas;
Utiliza mecanismos de controle de acesso

Desenvolvedor

Repositrio

34

Checkout

Recupera a (ltima) verso de um item de


configurao guardada no repositrio
Cria

uma cpia, para edio, no workspace.

Checkout
Desenvolvedor

Repositrio

35

Check-in

Insere(atualiza) um item de configurao no


repositrio
Verifica

e incrementa a verso do item


Registra informaes das mudanas (autor, data,
hora, comentrios)

Check-in
Desenvolvedor

Repositrio

36

Tags
Rtulos que so associados a conjuntos de
arquivos
Uma tag referencia um ou mais arquivos em
um ou mais diretrios, mas em somente UMA
verso de cada arquivo.
Usa-se tags, por exemplo, para a
implementao das baselines;

37

Tags
Arq1.java

1.1
1.2

BASELINE-001

1.3
1.4

BASELINE-002

1.5

38

Branches
Criao de uma codeline alternativa.
Mecanismo utilizado para o desenvolvimento
concorrente e isolado;
Deve-se ter regras bem definidas para criao
de branches

Por

que e quando devem ser criados?


Quais os passos?
Quando retornar ao fluxo principal?
39

Branches
Arq1.java

1.1
1.2

BASELINE-001

1.3
branch_gustavo

1.4

1.4.1

1.5

BASELINE-002

1.4.2

40

Merge

Unificao de diferentes verses de um mesmo


arquivo.
Geralmente o merge ocorre de um branch para a
codeline principal.
Algumas ferramentas fornecem um mecanismo
automtico para realizao de merges
Mesmo com o uso de ferramentas, em vrios casos
h necessidade de interveno manual

Up-Merge

Sentido inverso do Merge, ocorre da codeline


principal para um branch.
41

Merge
Arq1.java

1.1
1.2

BASELINE-001

1.3
1.4

branch_gustavo
1.4.1
1.4.2

Merge

BASELINE-002

1.5
1.6

Resultado da unificao das


verses 1.4.2 com a 1.5

42

Up-Merge
Arq1.java

1.3
1.4

branch_gustavo
1.4.1

Up-Merge

BASELINE-002

1.5

1.4.2
1.4.3

Resultado da unificao das


verses 1.5 com a 1.4.2

43

Build
Representa uma verso ainda incompleta do
sistema em desenvolvimento, mas com certa
estabilidade
Costumam apresentar limitaes conhecidas
Geralmente os testes formais so realizados
em builds estveis (baseline).
A poltica de gerao de builds deve ser bem
definida na estruturao do ambiente.
A gerao de builds deve ser automatizada e
realizada com uma frequncia adequada ao
projeto.
44

Release
Entrega, liberao.
Verso do sistema validada aps os diversos
tipos de teste.
Release nada mais que uma baseline
testada e aprovada.
Supostamente sem erros
Entregue ao cliente ou ao mercado
Processo iterativo/incremental produz, em
geral, mais de um release

45

Vimos que...

Gerncia de Configurao no (ou pelo


menos no deveria ser):
Difcil,

montona e demorada
Apenas para desenvolvedores
Apenas para Engenheiros de Configurao
Apenas para controlar cdigo fonte
Apenas para obter CMMi, Mps.Br, ISO, etc.

46

Concluses
Gerncia de Configurao um fluxo de
apoio ao projeto como um todo
Passos iniciais para a adoo de um
processo de software
Requer uma certa disciplina na manipulao
de itens de configurao
Deve-se ter apoio de ferramentas sempre que
possvel

47

Exerccio
Quais os objetivos e benefcios de se usar
Gerncia de Configurao?
Sobre os conceitos abaixo, defina:

Item

de Configurao

Tag
Branch
Merge

e Up-Merge
Release
48

Você também pode gostar