Upload
buicong
View
218
Download
3
Embed Size (px)
Citation preview
Gerência de Projetos e Manutenção de Software
Aula 9 – Gerência de Configuração e Mudanças
Andréa Magalhães [email protected]
2017.01
2GPMS 2017.01
Agenda
• O Problema
• Gerência de Configuração
• Conceitos Básicos
• Processos• Controle de Versões
• Gestão de Mudanças
• Construção e Release
4GPMS 2017.01
Problema da Quebra de Comunicação
• Falhas de comunicação em equipes
• Ocorre pelas mais diversas razões:• Vocabulários incompatíveis
• Culturas de desenvolvimento diferentes
• Distância geográfica
• Dificuldade de expressão
• Quando este problema acontece:• Os sistemas produzidos não atendem aos requisitos
• Força de trabalho é desperdiçadaDesenvolvedor A Desenvolvedor B
Desenvolvedor C
Problema dos Dados Compartilhados
ComponenteCompartilhado
Desenvolvedor A Desenvolvedor B
A1 A2 A3
Programa de A Programa de B
B1 B2 B3
6GPMS 2017.01
Problema dos Dados Compartilhados Cenário
• O desenvolvedor A modifica o componente compartilhado
• Mais tarde, o desenvolvedor B realiza algumas alterações no mesmo
• Ao tentar compilar o componente, erros são apontados pelo compilador, mas nenhum deles ocorre na parte que B alterou
• O desenvolvedor B não tem a menor ideia sobre a causa do problema
7GPMS 2017.01
Problema dos Dados Compartilhados Solução
• Cada desenvolvedor trabalha em uma cópia “local” do componente
• Resolve o Problema dos Dados Compartilhados, mas cria um novo problema...
Problema da Manutenção Múltipla
ComponenteCompartilhado
Desenvolvedor A Desenvolvedor B
A1 A2 A3 B1 B2 B3
Programa de A Programa de BComponenteCompartilhado
Versão de A do Componente
Compartilhado
ComponenteCompartilhado
ComponenteCompartilhado
Versão de B do Componente
Compartilhado
9GPMS 2017.01
Problema da Manutenção Múltipla Cenário• Ocorre quando cada desenvolvedor trabalha com uma
cópia “local” do que seria o mesmo componente
• Dificuldade para saber:• Qual a versão mais “atualizada” do componente?• Que funcionalidades foram implementadas em quais
versões do componente?• Que defeitos foram corrigidos?• Qual versão do componente deve ser utilizada?
• A situação torna-se mais crítica, quão maior for o tamanho da equipe.
10GPMS 2017.01
Problema da Manutenção Múltipla Solução
• Criação de uma biblioteca central de componentes compartilhados• Nesse esquema, cada componente é copiado para a
biblioteca sempre que alterado
• Nessa biblioteca deve sempre estar disponível a versão mais nova do componente.
• Resolve o Problema da Manutenção Múltipla, mas...
Problema da Atualização Simultânea
Versão de A do Componente
Compartilhado
Desenvolvedor A Desenvolvedor B
A1 A2 A3 B1 B2 B3
Programa de A Programa de BVersão de B do Componente
Compartilhado
Biblioteca Central de Recursos Compartilhados
ComponenteCompartilhado
12GPMS 2017.01
Problema da Atualização Simultânea Cenário 1
• O desenvolvedor A encontra e corrige um defeito em sua versão 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 versão do componente por não saber que A já tinha feito isso
• O trabalho de A é desperdiçado
13GPMS 2017.01
Problema da Atualização Simultânea Cenário 2• O desenvolvedor A encontra e corrige um defeito em sua versão 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 versão do componente, sem saber do defeito corrigido por A
• O desenvolvedor B copia sua versão do componente para a biblioteca central
• Além de o trabalho de A ser desperdiçado, a versão do componente que se encontra na biblioteca central continua apresentando um defeito
• O desenvolvedor A julga o problema como resolvido
14GPMS 2017.01
Problema da Atualização SimultâneaSolução
• O problema da atualização simultânea não pode ser resolvido simplesmente copiando componentes compartilhados para uma biblioteca central
• Algum mecanismo de controle é necessário para gerenciar a entrada e saída dos componentes
16GPMS 2017.01
Gerência de Configuração (GC)
Desenvolvimento Liberação Implantação Produção
Gerência de Configuração
Gerência de Configuração de Software (GCS) é uma disciplinapara o controle da evolução de sistemas de software
(Susan Dart, 1991)
17GPMS 2017.01
Gerência de Configuração (GC)
• Engenharia de Software envolve refinamentos sucessivos de artefatos
Tarefas de Engenharia de
Software
Artefato novo
Repositório
Artefato modificado
Artefato
18GPMS 2017.01
Objetivos de GC
• Definir o ambiente de desenvolvimento
• Definir políticas para controle de versões, garantindo a consistência dos artefatos produzidos
• Definir procedimentos para solicitações de mudanças
• Administrar o ambiente e auditar mudanças
• Facilitar a integração das partes do sistema
19GPMS 2017.01
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• Surgimento das primeiras normas internacionais• Assimilação por organizações não militares
20GPMS 2017.01
Sistema de Gerência de Configuração
Artefatos
Controle de Versões
Construção e Release
Controle de Modificações
Solicitações
21GPMS 2017.01
Problemas pela falta de GC
• Perda de código-fonte
• Impossibilidade de determinar o que aconteceu com um programa, ou parte dele
• Impossibilidade de determinar quem, porque e quando foram efetuadas modificações
• Requisitos já documentados desaparecem
• Requisitos implementados desaparecem do código
• O programa em execução e o seu código fonte estão em diferentes versões
23GPMS 2017.01
Conceitos Básicos
• Repositórios– Lugar seguro onde versões
de artefatos são depositadas
– Permitem armazenamento, busca e recuperação
– Servem como um ponto de referência
– Apoiam no aumento da memória organizacional
24GPMS 2017.01
Check-Out
• Processo de requisição de modificações, aprovação e cópia de um item de configuração do repositório
Check-out
RepositórioCliente
25GPMS 2017.01
Check-Out
• Recupera a (última) versão de um item de configuração guardada no repositório• Escrita
• Verifica que ninguém detém o lock do item de configuração
• Obtém o lock do item• Cria uma cópia, para edição, no cliente
• Leitura• Verifica que alguém já detém o lock• Cria uma cópia, apenas para leitura, no cliente
26GPMS 2017.01
Check-In
• Processo de revisão, aprovação e cópia de um item de configuração para o repositório
Check-in
RepositórioCliente
27GPMS 2017.01
Check-In
• Ação de inserir/atualizar um item de configuração no repositório• Verifica o lock do item de configuração, caso
o mesmo já exista
• Verifica e incrementa a versão do item
• Registra informações das mudanças (autor, data, hora, comentários)
• Inclui/atualiza o item
29GPMS 2017.01
Tipos de Versão
VersãoVersão
RevisãoRevisão VarianteVarianteCooperação (Rascunho)Cooperação (Rascunho)
(Conradi e Westfechtel 1998)
32GPMS 2017.01
Cooperação (versões rascunho)
Espaço de trabalho do João
Espaço de trabalho da Maria
Espaço de trabalho do Pedro
Versão base
33GPMS 2017.01
Versões de rascunho podem ser combinadas (operação de merge)
João Maria Pedro
Revisões
35GPMS 2017.01
Outras duas operações importantes…
… para guardar, transferir e compreender versões.
Diff =
Patch =
36GPMS 2017.01
Mas afinal, para que servem versões?
• Sincronizar equipes• Reproduzir configurações passadas• Explorar possibilidades• Segregar desenvolvedores• Customizar produtos (LPS)• Rastrear a introdução de bugs• Entender a evolução de software• Auditar mudanças
37GPMS 2017.01
Tratamento de variantes em 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 para a 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)
38GPMS 2017.01
Tratamento de variantes em ramos (branches)• Recurso muito poderoso• Branches normalmente se originam de correções em versões
anteriores• Devem existir regras bem definidas para criação de branches
• Por que e quando devem ser criados?
• Em que circunstâncias é justificável criar um novo branch? Apenas para correção de
bugs? Para realizar melhorias solicitadas pelos usuários?
• Quais os passos?
• Que procedimentos devem ser seguidos para criar um branch? Deve ser feita uma
solicitação formal? Um backup do item de configuração deve ser realizado? Algum
membro da equipe deve ser notificado?
• Quando retornar ao fluxo principal?
• Quando pode se considerar o branch como encerrado?
• Se foi para remover defeitos, o branch deve acabar assim que esses defeitos tenham
sido corrigidos, ou deve ser mantido para corrigir novos defeitos que foram
descobertos?
39GPMS 2017.01
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
Rel. 11.0 1.1 1.2
Rel. 22.0 2.1
Verif. Verif.
1.0 RC 2.0 RCEvolução EvoluçãoDesenv.
Correção Correção Correção
40GPMS 2017.01
Merge
• Unificação de diferentes versões de um mesmo item de configuração
• Integração dos itens de configuração de um branchcom os itens de configuração do fluxo principal
• Checkout atualizando a área local
• Algumas ferramentas fornecem um mecanismo automático para realização de merges• Mesmo com o uso de ferramentas, em vários casos há
necessidade de intervenção humana
42GPMS 2017.01
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
• A atualização de uma baseline consiste em check-out seguido de modificações e check-in
• 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
43GPMS 2017.01
Baseline (níveis de controle)
Coordenação c/ auditoria
Controle
Pré baseline:
•Informal•Sem requisição•Sem aprovação•Sem verificação•Ágil•Ad-hoc
Pós baseline:
•Formal•Com requisição•Com aprovação•Com verificação•Burocrático•Planejado e Controlado
Nível de controle
44GPMS 2017.01
Baseline (níveis de controle)
Req. Análise Projeto Análise Projeto Análise Projeto
1 Inform. - Formal Inform. Formal Formal
2 - - Inform. - Formal Inform.
Requisito 1 Análise ProjetoBaseline 1:
•An. Req. 1
Requisito 2 Análise Projeto
Tempo
Baseline 2:
•An. Req. 1•Pr. Req. 1•An. Req. 2
45GPMS 2017.01
Plano de GC
• O plano de gerência de configuração de software é o documento utilizado para descrever como será utilizada a disciplina de gerencia de configuração no projeto em questão
• Pode ser definido um plano padrão para a organização
• Esse plano padrão deverá ser adaptado para cada novo projeto, levando em consideração as suas peculiaridades
46GPMS 2017.01
Plano de GC - Exemplo
BASELINES
BASELINE: Dt PREVISTA: Dt REAL:
BASELINE: Dt PREVISTA: Dt REAL:
BASELINE: Dt PREVISTA: Dt REAL:
BASELINE: Dt PREVISTA: Dt REAL:
Sist. ID Item Ext. Título Resp. Resp. Implantação
Incluído Versão Incluído Versão Incluído Versão Incluído Versão
49GPMS 2017.01
Motivação
• Mudança é inevitável
• Mudar é fácil – controlar diversas mudanças simultâneas é difícil
• A gerência de mudanças introduz controle sobre as mudanças de maior relevância• Todas as mudanças são analisadas• Apenas as aprovadas são realizadas• Sempre se sabe quem modificou o que, onde e
quando
50GPMS 2017.01
Problemas
• Controle do escopo do projeto• Modificações podem ampliar o leque de funcionalidades
e aumentar significativamente o custo do projeto• Atrasos em entregas planejadas
• Controle de consistência dos artefatos• Uma mudança aparentemente localizada pode causar
muito mais impacto do que o previsto• Degradação da qualidade do software (ex: abandono dos
testes automatizados devido à inconsistência dos dados de teste)
• Retrabalho
51GPMS 2017.01
O que é Gestão de Mudanças?
• Gestão de Mudanças é o processo de avaliar, coordenar e decidir sobre a realização de mudanças propostas a itens de configuração (ICs)
• Mudanças aprovadas são implementadas nos itens de configuração e nos dados e documentos relacionados
52GPMS 2017.01
Objetivos da Gestão de Mudanças
• Garantir que os artefatos do sistema alcançam e mantêm uma estrutura definida através do seu ciclo de vida
• Definir procedimentos e documentação necessários para realizar modificações nos itens de configuração
• Prover os mecanismos necessários para conduzir mudanças de uma maneira controlada
53GPMS 2017.01
Change Control Board (CCB)• Analisar as solicitações de mudança
• Controlar o escopo do projeto
• Reuniões com frequência adequada ao ritmo das solicitações de mudança
• Envolver stakeholders no processo de priorização e de decisão
• Balanço entre o nível de controle desejado e overhead suportado• Questões menores devem ser resolvidas pelo líder do projeto junto
à equipe, reduzindo o overhead do CCB
• Composição multidisciplinar• SQA, gerente, cliente, arquiteto
• Profissionais com grande capacidade de comunicação e negociação
54GPMS 2017.01
Análise de impacto
• Mudanças de grande impacto devem ser comunicadas aos stakeholders envolvidos
• Análises de custo x benefício produzidas pelos stakeholders
• Priorização de mudanças
• Mudança pode ser rejeitada se o CCB perceber que o custo será mais caro que o benefício percebido
• Por questões de eficiência, algumas solicitações de mudança podem ser agrupadas por tema, subsistema ou área de negócio
55GPMS 2017.01
Gestão de Mudanças
• Tarefas• 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
56GPMS 2017.01
Gestão de Mudanças
• Solicitação de Modificação• Identificação única
• Solicitante
• Sistema/Projeto
• Item a ser modificado
• Classificação (melhoria, correção de defeito, outra)
• Prioridade
• Descrição
• Situação (nova, atribuída, finalizada, verificada, fechada)
58GPMS 2017.01
Gestão de Mudanças
• 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
60GPMS 2017.01
Gestão de Mudanças
• 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
61GPMS 2017.01
Gestão de Mudanças
• 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!
• Defeitos não são normalmente processados pelo CCB
• Mesmo nessas situações, porém, é muito importante que seja criada uma solicitação de mudança
62GPMS 2017.01
Gestão de Mudanças
• 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
– Falta de treinamento, padrões inadequados, ferramentas inadequadas
63GPMS 2017.01
Gestão de Mudanças
• Acompanhamento - Tarefas
• Armazenamento das informações geradas
• Propagação dessas informações aos interessados
através de relatórios
• Permite que métricas sejam utilizadas com o intuito de
melhoria do processo e estimativa de custos futuros
• Fornece relatórios gerenciais ad-hoc
65GPMS 2017.01
Auditoria da configuração
• Deve ocorrer ao menos antes de uma liberação
(release)
• Tarefas
• Verificação funcional, assegurando que a baselinecumpre 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
66GPMS 2017.01
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
67GPMS 2017.01
Gestão de MudançasFerramentas• Livre
• Bugzilla• Mantis• Redmine• Trac
• Comercial• ClearQuest (IBM Rational)• JIRA (Atlassian)• StarTeam (Borland)• Synergy/Change (Telelogic)• TeamTrack (Serena)• Team Foundation Server (Microsoft)
69GPMS 2017.01
Terminologia
• Construção (Building): processo de compilação do sistema a partir dos itens fonte para uma configuração alvo;• Utiliza arquivo de comandos que descreve como
deve ocorrer a construção
• Exemplo: makefile• Os arquivos de comandos também devem ser
considerados itens de configuração
70GPMS 2017.01
Terminologia
• Release: • Conjunto de produtos que deve ser entregue ao
cliente
• Releases diferem de versões, pois versões podem ser somente para uso interno ao projeto
71GPMS 2017.01
Problemas na Geração de Builds• Fazer os builds do sistema manualmente é muito demorado• Pode ser difícil saber qual a versão “correta” de um arquivo• Os pedaços do sistema podem estar em diversos locais
diferentes• Alguns arquivos podem ser esquecidos
• A integração das partes de um sistema em desenvolvimento normalmente é:• Realizada poucas vezes, apenas perto de sua implantação• Feita em frequência inversamente proporcional à complexidade do
sistema
• Integrar as partes de um sistema é uma tarefa trabalhosa e sujeita a erros• Quanto maior o sistema, mais difícil
72GPMS 2017.01
Problemas na Geração de Builds
• Consequência: problemas de integração tornam-se difíceis de detectar cedo no desenvolvimento• Costumam ser encontrados muito depois de
sua introdução
• É muito difícil rastrear suas causas
73GPMS 2017.01
Geração de Builds através da Integração Contínua• Geração frequente (pelo menos diária) de builds do
sistema• As partes do sistema são integradas constantemente
• Problemas de integração passam a ser encontrados logo que introduzidos, na maioria dos casos
• Considerada uma das “melhores práticas” no desenvolvimento de software
• A geração de builds deve ser automatizada e realizada com frequência adequada
74GPMS 2017.01
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...
75GPMS 2017.01
Exemplo de ferramentas de build e release
• Livre• Ant• NAnt• Make• Maven• Rake
• Comercial• ClearMake (IBM Rational)• MSBuild (Microsoft)• Synergy/CM Object Make (Telelogic)
78GPMS 2017.01
Collaborative Lifecycle Management(CLM)
COS 823 - Aula 6 78Out 2013
RequisitosPlanejamento de Testes
Gerenciamento de Defeitos
Gerência de Configuração
79GPMS 2017.01
Exercício
• Elaborar o plano de configuração do projeto informando no mínimo:• Quais artefatos serão colocados sob
gerência de configuração?
• Quais baselines serão estabelecidas e quais os itens de configuração de cada uma dela?
• Como deve funcionar o processo de gestão de mudanças?
81GPMS 2017.01
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.
• Conradi, R. and Westfechtel, B. Version Models for Software Configuration Management. ACM Computing Surveys, v.30, n.2, p. 232-282, 1998.
• 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'sApproach”, McGraw-Hill.
82GPMS 2017.01
Próxima Aula
Gerência de Configuração
Garantia de Qualidade
Verificação, Validação e Testes
Planejamento de Projetos
Gerência de Riscos
Monitoramento e Controle
Reutilização
Medição e Análise
Levantamento de Requisitos
Análise de Requisitos
Projeto Codificação
Comunicação
AtividadesGerenciais
Atividades de Desenvolvimento
Atividades de Apoio
Aquisição
Gerência de Projetos e Manutenção de Software
Aula 9 – Gerência de Configuração e Mudanças
Andréa Magalhães [email protected]
2017.01