GERÊNCIA DE CONFIGURAÇÃO Lílian Simão Oliveira Itens de configuração O que é um item de 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.” Configuração Então, o que é configuração? “É a designação geral para o conjunto de itens de configuração de um projeto de software.” Itens de Configuração de Software É a informação criada como parte do processo de engenharia de software. (Pressman, 2006) É a designação geral de qualquer artefato ou produto de software mantido sob gestão de configuração/mudança. 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 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 Itens de Configuração 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... Gestão de Configuração de Software Controla os 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. Versionamento Versão: Estado definido de um objeto num dado momento. “Fotografia” do objeto. Versionamento Árvore de Versionamento 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 Repositório Repositório 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 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. Ferramentas de Controle de Versão Existem diversas ferramentas de mercado: Rational ClearCase CVS (Concurrent Versions System) Subversion (SVN) Git Espaço de Trabalho (workspace) 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 Workspace Funções: Centralizado checkout commit update Distribuído Descrição clone criação da cópia de trabalho/repositório commit envia alterações para o repositório, criando uma revisão update atualiza a cópia/área de trabalho em uma revisão pull importa revisões feitas em outro repositório push envia revisões locais para outro repositório (1) Duas cópias de trabalho são criadas a partir do comando checkout. As duas iniciam no mesmo estado. (2) Os dois desenvolvedores executam modificações nas suas cópias de trabalho, mas Aline publica antes no repositório. (3) Roberto tenta publicar suas alterações, mas o controle de versão recusa justificando que as alterações foram baseadas em arquivos desatualizados. No caso, um ou mais arquivos alterados por Roberto já haviam sido alterados por Aline antes (4) Na atualização da cópia de trabalho, o controle de versão já mescla automaticamente as revisões. (5) Após conferir se a atualização e a mesclagem produziram o resultado desejado, Roberto envia as mudanças ao repositório. Enquanto isso, Aline já trabalha em outra tarefa, executando novas alterações. Baseline É uma configuração formalmente aprovada para servir de referência para o desenvolvimento posterior do sistema. “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 no. 610.12-1990) Baseline Subversion (SVN) 1. 2. 3. 4. 5. The essential Subversion lifecycle is the following: Check out a project (a directory path) from a repository.In that project directory, create or edit files and subdirectories. Update your local copy from the repository, picking up changes your team members may have made since your last update. Go to step 2. If you're ready to commit your changes, go to step 5. Commit your changes to the repository. Go to step 2. SVN – Alguns Conceitos Trunk: É o repositório de trabalho dos desenvolvedores, nele fica armazenado a versão “suja” de desenvolvimento, onde a qualquer momento podem acontecer mudanças, caracteriza-se pela versão menos estável. Mas a partir do Trunk geramos Branches e também Tags detalhadas a seguir. Branches: São ramificações do seu projeto, ou seja, antes de iniciar o desenvolvimento de um novo módulo, é recomendado que seja criado um Branche, para separar essas modificações até que elas estejam estáveis o suficiente para serem integradas ao Trunk, usando o recurso de Merge. SVN – Alguns Conceitos Tags: São na teoria versões estáveis do software, as tags podem ser originadas de um branche ou do trunk, a nomenclatura para as Tags seguem um padrão do tipo “1.2.3″, isso corresponde a: 1.2.3: Versão reescrita na integra do projeto, entre uma versão 1.0 e 2.0 necessariamente deve ter sido reconstruído partes significativas do software. 1.2.3: Corresponde a implementação de novos módulos. 1.2.3: São versões de correção de bugs ou pequenos ajustes.