Gestão de Configuração de Software - Conceitos Principais - ES06 – Especialização em Engenharia de Software Prof.: Misael Santos (misael@gmail.com) Ago/2010
Configuração Itens de Configuração Versionamento Repositório Espaço de Trabalho ( Workspace ) Baselines Build Reproducibilidade CCB Agenda Gestão de Configuração de Software Copyright © 2010 Misael Santos
Configuração Os itens que compreendem toda a  informação  produzida como parte do processo de software são chamados coletivamente de  configuração de software . Gestão de Configuração de Software Copyright © 2010 Misael Santos
Configuração É a designação geral para o conjunto de  itens de configuração*  de um projeto de software. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Itens de Configuração de Software É a  informação  criada como parte do processo de engenharia de software.  ( SCI , Pressman, 2006) É a designação geral de qualquer  artefato ou produto de software  mantido sob gestão de configuração/mudança. São  itens de informação  selecionados. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Itens de Configuração de Software Em geral é: Um produto de software ou Um produto de desenvolvimento de software Deve possuir uma identificação única Regras de Nomenclatura devem ser utilizadas Gestão de Configuração de Software Copyright © 2010 Misael Santos
Itens de Configuração de Software Exemplos: um plano de projeto um cronograma uma especificação de caso de uso um modelo ou parte de um modelo código-fonte * um módulo executável ou componente,  um arquivo de help um script de teste Gestão de Configuração de Software Copyright © 2010 Misael Santos
Itens de Configuração de Software Muitas organizações colocam também ferramentas de software sob controle de configuração. Ex: Versões específicas de editores Compiladores Navegadores Outras ferramentas... Importante para a  Reproducibilidade * Gestão de Configuração de Software Copyright © 2010 Misael Santos
Itens de Configuração de Software Itens de Configuração podem ser agrupados em  Objetos de Configuração. Especificação de Projeto Projeto de dados Projeto arquitetônico Projeto de interface Modelo de Dados Especificação de Teste Plano de testes Scripts de testes Casos de teste Códig-Fonte Inter-relacionamento Inter-relacionamento Composição Gestão de Configuração de Software Copyright © 2010 Misael Santos
Itens de Configuração de Software Gestão de Configuração de Software Copyright © 2010 Misael Santos Gestão de Configuração de Software Configuração do Software Objeto de Configuração  de Software Objeto de Configuração  de Software Objeto de Configuração de Software Itens de Configuração Itens de Configuração Itens de Configuração
Versionamento Versionamento é a disciplina através da qual são preservadas as versões de um artefato, de modo sistemático e seguro, não limitado em número de versões. A cada alteração consolidada no repositório uma nova versão do item deve ser gerada. Todas as versões devem ser armazenadas e identificadas. Revisões = versões individuais de cada item. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Versionamento Versão : Estado definido de um objeto num dado momento. “ Fotografia” do objeto. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Tipos de versionamento: Delta Negativo  -  armazena-se integralmente a versão mais recente e as diferenças (deltas) existentes até então. ( Mais Implementado ) Delta Positivo  - armazena-se a versão mais antiga e, para montar as versões mais recentes, processam-se as diferenças (deltas) armazenadas. Versionamento Copyright © 2010 Misael Santos Gestão de Configuração de Software
Versionamento >_ arquivo1.c document2.doc classeA.java 1 1 1 2 2 2 3 3 4 4 5 6 Gestão de Configuração de Software Copyright © 2010 Misael Santos
Versionamento Árvore de versões  do ClearCase Gestão de Configuração de Software Copyright © 2010 Misael Santos
Versionamento Deve ser possível recuperar versões anteriores de um item. Além de artefatos, podemos versionar configurações completas ou parciais de um software É, portanto, aceitável falar-se em: Versão de um artefato (documento, cronograma, modelo, programa, etc) Versão de um sistema Gestão de Configuração de Software Copyright © 2010 Misael Santos
Repositório Gestão de Configuração de Software Copyright © 2010 Misael Santos
Repositório repositório - cria elementos - atualiza elementos recupera elementos - realiza testes - corrige elementos elabora planos - verifica elementos - acompanha o andamento recupera elementos - integra elementos - publica elementos recupera elementos - realiza testes automáticos Gestão de Configuração de Software Copyright © 2010 Misael Santos
Repositório É o conjunto de mecanismos e estruturas de dados que permite a uma equipe de software gerir modificação de modo efetivo. É um local sob controle de acesso onde são armazenados os itens de configuração. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Repositório Deve permitir: Controle de acesso O versionamento dos elementos Representar marcos de projeto ou versões de produção específicas Pistas de auditoria das modificações O que, quando, quem e por que. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Repositório Existem diversas ferramentas de mercado: Rational ClearCase CVS ( Concurrent Versions System ) Subversion Git Mercurial Gestão de Configuração de Software Copyright © 2010 Misael Santos
Espaço de Trabalho ( Workspace ) Gestão de Configuração de Software Copyright © 2010 Misael Santos
Espaço de Trabalho ( Workspace ) Um lugar onde o desenvolvedor possa  trabalhar isoladamente  sobre os seus artefatos enquanto ele finaliza uma tarefa  sem interferências externas . Utilizado para: Criação/edição de artefatos Operações de gerenciamento Consultas Gestão de Configuração de Software Copyright © 2010 Misael Santos
Espaço de Trabalho ( Workspace ) Visões de Imagem  (ou Visão Estática ou Snapshots):   Apresenta ao desenvolvedor um ambiente de trabalho estável e isento de mudanças.  Quando um desenvolvedor deseja “enxergar” mudanças realizadas por outros grupos, ele pode atualizar sua visão.  Este formato de trabalho é conhecido por “modelo pull”, orientando sempre pela busca da informação desejada, ao invés de empurrar as mudanças. Visões Dinâmicas :   Não armazenam nada localmente, dependem de atualizações imediatas realizadas através da rede. São recomendadas nas seguintes situações: Espaço restrito no ambiente do desenvolvedor Necessidade de compartilhamento de certos objetos  Membros de grupos virtuais necessitam trabalhar com as últimas versões de um código Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines Também chamadas de: Referenciais ( Pressman ) Linhas de Referências Linhas de Base Linhas-base Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines “ Uma especificação ou produto que foi  formalmente revisto e aprovado , o qual daí em diante  serve como base  para o desenvolvimento futuro e que pode ser modificado apenas por meio de  procedimentos formais de controle de modificação .“  (IEEE Std n o . 610.12-1990) Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines Uma baseline é uma “fotografia” de um conjunto de itens de configuração em um determinado momento do processo de desenvolvimento. A configuração do software em um ponto discreto no tempo. Normalmente é gerada ao final de uma fase do desenvolvimento ou demandada pelo líder do projeto. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines Representam Marcos no Projeto ( Milestones ), ex: Final de especificação dos requisitos Modelos documentados e revisados Final da implementação de um módulo (incremento) Erros encontrados e corrigidos (Testes, Homologação) Implantação de uma Versão do Sistema Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines Origem da versão de todos os ambientes: Testes Homologação Produção Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines Software Alterações Revisão/Aprovação Software Baseline Solicitar  Alterações Demandar Alterações Aprovadas Atender  Solicitações Gestão de Configuração de Software Copyright © 2010 Misael Santos Analista  Analista Gerente de  Projetos (ou CCMS)
Baselines Ferramentas possuem recursos próprios para a administração de baselines CVS, Subversion tag ClearCase Apply Label Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines no CVS bash-2.05a$  cvs tag pre_alpha_0-1   cvs server: Tagging .  T Changelog  T INSTALL  T Makefile  T README  T TODO  cvs server: Tagging doc  cvs server: Tagging doc/design  T doc/design/AcceptanceTest.doc  T doc/design/Analysis.rtf  T doc/design/Requirements.doc  T doc/design/Specification.rtf  cvs server: Tagging doc/plan  T doc/plan/Schedule.rtf  cvs server: Tagging lib  cvs server: Tagging man cvs server:  Tagging src  T src/config.h  T src/main.c  Gestão de Configuração de Software Copyright © 2010 Misael Santos
Baselines no ClearCase Gestão de Configuração de Software Copyright © 2010 Misael Santos
Build Representa uma versão que pode ser ainda incompleta do sistema em desenvolvimento, mas com certa estabilidade Costuma apresentar limitações conhecidas Pode incluir código-fonte, documentação, arquivos de configuração, base de dados, etc A política de geração das builds deve ser bem definida na estruturação do ambiente Gestão de Configuração de Software Copyright © 2010 Misael Santos
Build Durante o projeto podem ser criadas várias  builds A freqüência varia de acordo com a necessidade do projeto A  build  é o resultado principal de uma integração Pode ser gerada automaticamente com a utilização de ferramentas Gestão de Configuração de Software Copyright © 2010 Misael Santos
Integração Atividade que consiste em “juntar” partes do software conforme vão ficando prontas Participam da atividade de integração itens já testados isoladamente (teste de unidade) A integração pode incluir sincronização entre modelo e código O produto principal da integração é uma  build Gestão de Configuração de Software Copyright © 2010 Misael Santos
Reproducibilidade A habilidade de reproduzir/gerar uma versão anterior do sistema. A partir do conteúdo de uma baseline conseguir obter uma versão estável do produto. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Reproducibilidade The Baseline Reproducibility Principle : Uma baseline deve ser reproduzível. Devemos ser capazes de reproduzir a “configuração" e o conteúdo de todos os elementos necessários para reproduzir uma versão “liberada“ ( released ) do produto.   (Brad Appleton) Gestão de Configuração de Software Copyright © 2010 Misael Santos
CCB Configuration Control Board  – Comitê de Controle da Configuração Ou ainda CMCS (Comitê de Mudanças na Configuração do Software) Gestão de Configuração de Software Copyright © 2010 Misael Santos
CCB Têm autoridade para aprovar ou rejeitar solicitações de alterações. Gestão de Configuração de Software Copyright © 2010 Misael Santos
CCB Responsabilidades: Analisar as solicitações de mudança Controlar o escopo do projeto Reuniões com freqüência adequada ao ritmo das solicitações de mudança Envolver  stakeholders  no processo de priorização e 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 Gestão de Configuração de Software Copyright © 2010 Misael Santos
Características do CCB Composição multidisciplinar SQA, gerente, cliente, arquiteto Profissionais com grande capacidade de comunicação e negociação Pode apresentar uma estrutura hierarquica dependendo do tamanho e da quantidade de  stakeholders  e sistemas envolvidos Em pequenos projetos pode ser representando unicamente pelo Lider de Projeto ou outro profissional designado. Gestão de Configuração de Software Copyright © 2010 Misael Santos
Referências PRESSMAN, R. S.,  Engenharia de Software , 6ª. ed., 2006. HASS A. M. J. ,  Configuration Management Principles and Practice , Addison Wesley, 432p, 2002. FREDERICKS T.   Software Configuration and Integration Management , Marquette University, 2001. PSDS – Processo SERPRO de Desenvolvimento de Soluções , SERPRO, 2006. Brad Appleton's ACME Blog, disponível em:  http://bradapp.blogspot.com Gestão de Configuração de Software Copyright © 2010 Misael Santos

GCS - Aula 02 - Conceitos Principais

  • 1.
    Gestão de Configuraçãode Software - Conceitos Principais - ES06 – Especialização em Engenharia de Software Prof.: Misael Santos (misael@gmail.com) Ago/2010
  • 2.
    Configuração Itens deConfiguração Versionamento Repositório Espaço de Trabalho ( Workspace ) Baselines Build Reproducibilidade CCB Agenda Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 3.
    Configuração Os itensque compreendem toda a informação produzida como parte do processo de software são chamados coletivamente de configuração de software . Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 4.
    Configuração É adesignação geral para o conjunto de itens de configuração* de um projeto de software. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 5.
    Itens de Configuraçãode Software É a informação criada como parte do processo de engenharia de software. ( SCI , Pressman, 2006) É a designação geral de qualquer artefato ou produto de software mantido sob gestão de configuração/mudança. São itens de informação selecionados. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 6.
    Itens de Configuraçãode Software Em geral é: Um produto de software ou Um produto de desenvolvimento de software Deve possuir uma identificação única Regras de Nomenclatura devem ser utilizadas Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 7.
    Itens de Configuraçãode Software Exemplos: um plano de projeto um cronograma uma especificação de caso de uso um modelo ou parte de um modelo código-fonte * um módulo executável ou componente, um arquivo de help um script de teste Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 8.
    Itens de Configuraçãode Software Muitas organizações colocam também ferramentas de software sob controle de configuração. Ex: Versões específicas de editores Compiladores Navegadores Outras ferramentas... Importante para a Reproducibilidade * Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 9.
    Itens de Configuraçãode Software Itens de Configuração podem ser agrupados em Objetos de Configuração. Especificação de Projeto Projeto de dados Projeto arquitetônico Projeto de interface Modelo de Dados Especificação de Teste Plano de testes Scripts de testes Casos de teste Códig-Fonte Inter-relacionamento Inter-relacionamento Composição Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 10.
    Itens de Configuraçãode Software Gestão de Configuração de Software Copyright © 2010 Misael Santos Gestão de Configuração de Software Configuração do Software Objeto de Configuração de Software Objeto de Configuração de Software Objeto de Configuração de Software Itens de Configuração Itens de Configuração Itens de Configuração
  • 11.
    Versionamento Versionamento éa disciplina através da qual são preservadas as versões de um artefato, de modo sistemático e seguro, não limitado em número de versões. A cada alteração consolidada no repositório uma nova versão do item deve ser gerada. Todas as versões devem ser armazenadas e identificadas. Revisões = versões individuais de cada item. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 12.
    Versionamento Versão :Estado definido de um objeto num dado momento. “ Fotografia” do objeto. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 13.
    Tipos de versionamento:Delta Negativo - armazena-se integralmente a versão mais recente e as diferenças (deltas) existentes até então. ( Mais Implementado ) Delta Positivo - armazena-se a versão mais antiga e, para montar as versões mais recentes, processam-se as diferenças (deltas) armazenadas. Versionamento Copyright © 2010 Misael Santos Gestão de Configuração de Software
  • 14.
    Versionamento >_ arquivo1.cdocument2.doc classeA.java 1 1 1 2 2 2 3 3 4 4 5 6 Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 15.
    Versionamento Árvore deversões do ClearCase Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 16.
    Versionamento Deve serpossível recuperar versões anteriores de um item. Além de artefatos, podemos versionar configurações completas ou parciais de um software É, portanto, aceitável falar-se em: Versão de um artefato (documento, cronograma, modelo, programa, etc) Versão de um sistema Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 17.
    Repositório Gestão deConfiguração de Software Copyright © 2010 Misael Santos
  • 18.
    Repositório repositório -cria elementos - atualiza elementos recupera elementos - realiza testes - corrige elementos elabora planos - verifica elementos - acompanha o andamento recupera elementos - integra elementos - publica elementos recupera elementos - realiza testes automáticos Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 19.
    Repositório É oconjunto de mecanismos e estruturas de dados que permite a uma equipe de software gerir modificação de modo efetivo. É um local sob controle de acesso onde são armazenados os itens de configuração. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 20.
    Repositório Deve permitir:Controle de acesso O versionamento dos elementos Representar marcos de projeto ou versões de produção específicas Pistas de auditoria das modificações O que, quando, quem e por que. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 21.
    Repositório Existem diversasferramentas de mercado: Rational ClearCase CVS ( Concurrent Versions System ) Subversion Git Mercurial Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 22.
    Espaço de Trabalho( Workspace ) Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 23.
    Espaço de Trabalho( Workspace ) Um lugar onde o desenvolvedor possa trabalhar isoladamente sobre os seus artefatos enquanto ele finaliza uma tarefa sem interferências externas . Utilizado para: Criação/edição de artefatos Operações de gerenciamento Consultas Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 24.
    Espaço de Trabalho( Workspace ) Visões de Imagem (ou Visão Estática ou Snapshots): Apresenta ao desenvolvedor um ambiente de trabalho estável e isento de mudanças. Quando um desenvolvedor deseja “enxergar” mudanças realizadas por outros grupos, ele pode atualizar sua visão. Este formato de trabalho é conhecido por “modelo pull”, orientando sempre pela busca da informação desejada, ao invés de empurrar as mudanças. Visões Dinâmicas : Não armazenam nada localmente, dependem de atualizações imediatas realizadas através da rede. São recomendadas nas seguintes situações: Espaço restrito no ambiente do desenvolvedor Necessidade de compartilhamento de certos objetos Membros de grupos virtuais necessitam trabalhar com as últimas versões de um código Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 25.
    Baselines Também chamadasde: Referenciais ( Pressman ) Linhas de Referências Linhas de Base Linhas-base Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 26.
    Baselines “ Umaespecificação ou produto que foi formalmente revisto e aprovado , o qual daí em diante serve como base para o desenvolvimento futuro e que pode ser modificado apenas por meio de procedimentos formais de controle de modificação .“ (IEEE Std n o . 610.12-1990) Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 27.
    Baselines Uma baselineé uma “fotografia” de um conjunto de itens de configuração em um determinado momento do processo de desenvolvimento. A configuração do software em um ponto discreto no tempo. Normalmente é gerada ao final de uma fase do desenvolvimento ou demandada pelo líder do projeto. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 28.
    Baselines Representam Marcosno Projeto ( Milestones ), ex: Final de especificação dos requisitos Modelos documentados e revisados Final da implementação de um módulo (incremento) Erros encontrados e corrigidos (Testes, Homologação) Implantação de uma Versão do Sistema Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 29.
    Baselines Origem daversão de todos os ambientes: Testes Homologação Produção Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 30.
    Baselines Software AlteraçõesRevisão/Aprovação Software Baseline Solicitar Alterações Demandar Alterações Aprovadas Atender Solicitações Gestão de Configuração de Software Copyright © 2010 Misael Santos Analista Analista Gerente de Projetos (ou CCMS)
  • 31.
    Baselines Ferramentas possuemrecursos próprios para a administração de baselines CVS, Subversion tag ClearCase Apply Label Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 32.
    Baselines no CVSbash-2.05a$ cvs tag pre_alpha_0-1 cvs server: Tagging . T Changelog T INSTALL T Makefile T README T TODO cvs server: Tagging doc cvs server: Tagging doc/design T doc/design/AcceptanceTest.doc T doc/design/Analysis.rtf T doc/design/Requirements.doc T doc/design/Specification.rtf cvs server: Tagging doc/plan T doc/plan/Schedule.rtf cvs server: Tagging lib cvs server: Tagging man cvs server: Tagging src T src/config.h T src/main.c Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 33.
    Baselines no ClearCaseGestão de Configuração de Software Copyright © 2010 Misael Santos
  • 34.
    Build Representa umaversão que pode ser ainda incompleta do sistema em desenvolvimento, mas com certa estabilidade Costuma apresentar limitações conhecidas Pode incluir código-fonte, documentação, arquivos de configuração, base de dados, etc A política de geração das builds deve ser bem definida na estruturação do ambiente Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 35.
    Build Durante oprojeto podem ser criadas várias builds A freqüência varia de acordo com a necessidade do projeto A build é o resultado principal de uma integração Pode ser gerada automaticamente com a utilização de ferramentas Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 36.
    Integração Atividade queconsiste em “juntar” partes do software conforme vão ficando prontas Participam da atividade de integração itens já testados isoladamente (teste de unidade) A integração pode incluir sincronização entre modelo e código O produto principal da integração é uma build Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 37.
    Reproducibilidade A habilidadede reproduzir/gerar uma versão anterior do sistema. A partir do conteúdo de uma baseline conseguir obter uma versão estável do produto. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 38.
    Reproducibilidade The BaselineReproducibility Principle : Uma baseline deve ser reproduzível. Devemos ser capazes de reproduzir a “configuração" e o conteúdo de todos os elementos necessários para reproduzir uma versão “liberada“ ( released ) do produto. (Brad Appleton) Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 39.
    CCB Configuration ControlBoard – Comitê de Controle da Configuração Ou ainda CMCS (Comitê de Mudanças na Configuração do Software) Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 40.
    CCB Têm autoridadepara aprovar ou rejeitar solicitações de alterações. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 41.
    CCB Responsabilidades: Analisaras solicitações de mudança Controlar o escopo do projeto Reuniões com freqüência adequada ao ritmo das solicitações de mudança Envolver stakeholders no processo de priorização e 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 Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 42.
    Características do CCBComposição multidisciplinar SQA, gerente, cliente, arquiteto Profissionais com grande capacidade de comunicação e negociação Pode apresentar uma estrutura hierarquica dependendo do tamanho e da quantidade de stakeholders e sistemas envolvidos Em pequenos projetos pode ser representando unicamente pelo Lider de Projeto ou outro profissional designado. Gestão de Configuração de Software Copyright © 2010 Misael Santos
  • 43.
    Referências PRESSMAN, R.S., Engenharia de Software , 6ª. ed., 2006. HASS A. M. J. , Configuration Management Principles and Practice , Addison Wesley, 432p, 2002. FREDERICKS T. Software Configuration and Integration Management , Marquette University, 2001. PSDS – Processo SERPRO de Desenvolvimento de Soluções , SERPRO, 2006. Brad Appleton's ACME Blog, disponível em: http://bradapp.blogspot.com Gestão de Configuração de Software Copyright © 2010 Misael Santos