Baixe o app para aproveitar ainda mais
Prévia do material em texto
FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE - FANESE CURSO SUPERIOR DE TECNOLOGIA EM SISTEMA PARA INTERNET ENGENHARIA DE SOFTWARE II PROF. JOSÉ HENRIQUE Gerência de Configurações e Mudanças Desenvolvido por: Alex Freire Carlos Lindberg Elber Magno Leandro Oliveira ABRIL de 2014 Aracaju - SE Introdução sobre gerência de configuração e mudança. A gerência de configuração é uma área da engenharia de software que visa o apoio ao desenvolvimento de software. Estabelecer processos úteis que visam facilitar bem como prover um desenvolvimento adequada de cada função do programa. Segundo Roger Pressman, pode ser resumida em: “conjunto de atividades projetadas para controlar as mudanças pela identificação dos produtos do trabalho que serão alterados, estabelecendo um relacionamento entre eles, definindo o mecanismo para o gerenciamento de diferentes versões destes produtos, controlando as mudanças impostas, e auditando e relatando as mudanças realizadas”. Descrição do processo de gerência de mudanças. Objetivos e Características. Tem como objetivo prover processos de mudanças e atualização de softwares cada vez melhores. É um processo que permite saber o motivo no qual uma configuração foi mudada para outra configuração. Papel do comitê de controle de mudanças. É um grupo responsável pela avaliação do impacto das mudanças nos projetos bem como sua garantia de eficiência. O grupo deve ser composto de várias pessoas técnicas e até mesmo clientes, que fornecerão assessoria ao Gerente de Mudanças sobre quais mudanças devem ser aprovadas e auxiliarão na programação das mudanças. Geralmente o CCM se reúne como uma determinada frequência para discutir todas as mudanças novas e em andamento. Etapas do processo. As etapas do processo são: identificação, documentação, controle e auditoria. Análise de impacto. A análise de impacto é um estudo profundo que define os seus processos de negócio críticos bem como os recursos necessários para os suportar. A análise incide sobre perdas financeiras e intangíveis que podem ocorrer caso estes sistemas, ativos e dados fiquem indisponíveis numa emergência. Documento de solicitações de mudanças. É o documento no qual servirá de comunicação entre um membro da equipe ou toda ela para com o gerente visando a aprovação de uma mudança. Conceitos de gerência de configuração. Baseline. É um conceito que nos ajuda a controlar as mudanças no software, sem impedir a aplicação de mudanças justificáveis. Repositório. É o nome que se dá ao lugar onde você irá guardar o seu projeto. Na prática, é um diretório, uma pasta qualquer guardada ou no seu computador, ou no seu pendrive. O repositório registra cada alteração realizada em cada arquivo e diretório controlado. À medida que o projeto evolui, o repositório passa a guardar múltiplas versões dos arquivos que compõem o projeto. Branching. É uma técnica de ramificação que ajuda na concorrência do manuseio/uso do sistema de gerência. Locking. É o travamento ou bloqueio de um processo. Release. Representa a notificação formal e distribuição de uma versão aprovada do software. Build. É uma versão compilada de um software ou parte dele que contém um conjunto de recursos que poderão integrar um produto final. Merge. É a fusão de várias diretivas de software. Diff. É uma técnica de diferenciação na qual se cria modelos diferentes do mesmo software. Tagging. É uma técnica de marcação onde se associa um termo a uma informação. Check-out. Retirar itens do sistema. Check-in. Incluir itens no sistema. Comparativo entre as ferramentas. CVS O CVS, ou ConcurrentVersion System (Sistema de Versões Concorrentes) é um sistema de controle de versão que permite que se trabalhe com diversas versões de arquivos organizados em um diretório e localizados local ou remotamente, mantendo-se suas versões antigas e os logs de quem e quando manipulou os arquivos. É especialmente útil para se controlar versões de um software durante seu desenvolvimento, ou para composição colaborativa de um documento. A exemplo de outros softwares usados neste projeto, o CVS pode ser baixado gratuitamente e tem o seu código aberto. Funcionamento CVS utiliza uma arquitetura cliente-servidor: um servidor armazena a(s) versão(ões) atuais do projeto e seu histórico, e os clientes se conectam a esse servidor para obter uma cópia completa do projeto, trabalhar nessa cópia e então devolver suas modificações. Vários clientes podem editar cópias do mesmo projeto de maneira concorrente. Quando eles confirmam suas alterações, o servidor tenta fazer uma fusão delas. Se isso não for possível, por exemplo, porque mais de um cliente tentou executar alterações na mesma linha do documento, o servidor apenas executa a primeira alteração e informa ao responsável pela segunda alteração que houve conflito, e que é necessária uma intervenção humana. Se a validação da alteração for bem sucedida, o número de versão de cada cliente arquivo envolvido é incrementado, e o servidor CVS escreve uma linha de observação (fornecida pelo usuário), a data e o autor das alterações em seus arquivos de log. Clientes podem comparar diferentes versões de um arquivo, pedir um histórico completo das alterações, ou baixar uma determinada versão do projeto, ou de uma data específica, não necessariamente a versão mais atual. Clientes também podem usar o comando "update" para manter suas cópias locais atualizadas com a última versão do servidor. Isso elimina a necessidade de se fazer diversos downloads de todo o projeto. Terminologia Checkout: normalmente é usado para denominar o primeiro download de um módulo inteiro a partir do repositório CVS. Commit: envio das modificações feitas pelo usuário ao repositório CVS. Export: é o download de um módulo inteiro a partir de um repositório CVS, sem os arquivos administrativos CVS. Módulos exportados não ficam sob controle do CVS. Import: geralmente é usado para designar a criação de um módulo inteiro dentro de um repositório CVS através do upload de uma estrutura de diretórios. Module: é uma hierarquia de diretórios. Geralmente um projeto de software existe como um simples módulo dentro do repositório. Release: é a versão de um produto inteiro. Revision: é a numeração atribuída pelo CVS a cada modificação de um arquivo. Tag: é um nome simbólico dado para um conjunto de arquivos em um instante específico durante o desenvolvimento. Branch: é uma ramificação no desenvolvimento, usada para descrever o processo de divisão dos arquivos de um projeto em linhas de desenvolvimento independentes. Podendo servir para teste de uma nova funcionalidade ou para projetos destinados a um cliente específico. Update: atualização da cópia local do trabalho através do download das modificações feitas por outros usuários no repositório. Merge: é a fusão de modificações feitas por diferentes usuários na cópia local de um mesmo arquivo. Sempre que alguém altera o código, é necessário realizar um update antes do commit, de modo que seja feito o merge — ou a fusão — das mudanças. Limitações Os arquivos em um repositório CVS não podem ser renomeados, eles devem ser explicitamente removidos e readicionados. O protocolo do CVS não permite que os diretórios sejam movidos ou renomeados. Cada arquivo do subdiretório em questão deve ser individualmente removido e readicionado. Alguns dos principais desenvolvedores que trabalharam no CVS são atualmente responsáveis pelo Subversion (SVN), lançado no começo de 2004 e cujo objetivo é substituir o CVS ao lidar com algumas de suas limitações. Configurando CVS no Eclipse O plugin para utilização do CVS no Eclipse fornece toda a funcionalidade de um cliente de CVS convencional agregado às vantagens de estar integrado a IDE de desenvolvimento. Para começar a utilização do CVS, primeiro deve ser configurado um repositório, o que pode ser feito em “Window”, “Show View” e “Other...”. Criando um novo respositório Abra a perspectiva 'CVSRepositoryExploring'. Escolha 'New ->RepositoryLocation...' na view'CVS Repositories'. O diálogo'Add CVS Repository' aparecerá. Digite as informações para a conexão nos campos relacionados. Host: O host que roda o servidor. Repository Path: O repositório que será utilizado no servidor. Authentication: O servidor pode ser configurado para utilizar autenticação dos usuários. Connection: Protocolo e porta que devem ser utilizados para conectar com o servidor. Selecione o checkbox 'Validate Connection on Finish' e Pressione Finish. Se todas as informações foram digitadas corretamente, aparecerá o repositório: CONCLUSÃO Otimizar o processo de sincronização do código. Colocar tudo que for de poder de todos no CVS: site, código, artefatos. CVS não é a solução para todos os problemas. CVS não substitui o diálogo e reuniões da equipe. SVN – Subversion Subversion (SVN) sistema de controle de versão com a plataforma Eclipse. Usando o plug-in Subversive, você pode trabalhar com projetos armazenados em repositórios Subversion diretamente a partir do trabalho do Eclipse de uma forma similar de trabalhar com outros provedores de controle de versão do Eclipse, como CVS e Git. Conceitos Básicos Repositório -> É o local onde estão contidos todos os arquivos do projeto. É armazenado no banco de dados do SVN. Working Copy -> Literalmente, uma cópia de trabalho local na qual o desenvolvedor atua. É criada sempre que é feito checkout de algum projeto. Revision -> Número que identifica cada uma das alterações ou conjunto de alterações realizadas em um repositório. Tal número é obtido a partir de uma sequência a qual é compartilhada por todos os diretórios do repositório. Estrutura Trunk -> O trunk contém os projetos que estão em desenvolvimento. Todas as atualizações efetuadas dia-a-dia são armazenadas na pasta trunk. Branches -> Quando o projeto está estável e completo de acordo com o escopo definido, a pasta trunk é copiada para uma dentro da pasta branches e com o nome de versão. Este branch é congelado e geralmente não sofre mais alterações, apenas correções e ajustes. Nos branches também podem conter pastas com linhas de desenvolvimento de tal projeto, que entre elas podem haver poucas diferenças, porém uma independe da outra. Tags -> Quando os testes efetuados encima de um branch estão completos, a versão que se encontra no branch é copiada para a pasta tags, formando assim um release ou uma versão liberada. Esta pasta tag é empacotada e enviada para o cliente. Qualquer modificação em branch, deve ser copiada para a pasta de tags, após todos os testes. Comandos Básicos Checkout -> Ato de fazer download de um projeto para a máquina local, de modo que seus arquivos estejam vinculados ao SVN e passíveis de manipulação. O projeto para o qual será feito o checkout deve existir no repositório. Commit -> Comando para enviar as modificações realizadas localmente para o servidor SVN. Update -> Comando para baixar atualizações presentes do servidor SVN para a cópia local Merge -> Comando para a mesclagem de arquivos. Sempre deve ser realizada com a working copy apontando para o destino do merge. Relocate -> Realocação do endereço de um repositório. Apenas atualiza o endereço, sem realizar nenhum tipo de atualização nos arquivos. Instalando o SVN no Eclipse Vá na opção Help - > Softwares e Updates na aba Available Software -> Add Site... URL: http://subclipse.tigris.org/update_1.6.x Selecione o subeclipse e em seguida Install Click em NEXT. Aguarde o download dos pacotes assim como a instalação, isso poderá levar alguns minutos. No final ele irá solicitar que reinicie o JS, aceite. Pronto o SVN vai esta configurado no Eclipse. CVS x SVN. A utilização de sistemas de controle de versões é uma atividade essencial da gerência de configurações, para realizar monitoramento das mudanças realizadas em projetos de desenvolvimento de softwares, e controlar o desenvolvimento paralelo. Dentre as soluções existentes atualmente para realizar o controle de versões, merecem destaque o CVS e o Subversion, objetos desta pesquisa, por ambos serem baseados em código aberto, possuírem qualidade e notoriedade no uso em projetos de softwares. CARACTERÍSTICAS CVS SVN Commit atômico Não possui Possui Controle de diferentes tipos de arquivos Possui Possui Controle de Mudanças Possui Possui Controle de Permissões Possui Possui Merges e Braches Possui Possui Portabilidade Possui Possui Renomeações de arquivos Não possui Possui Suporte Possui Possui Integração Atende totalmente Atende totalmente Aplicabilidade Atende totalmente Atende totalmente Extensibilidade Não atende Não atende Suporte a equipe Atende totalmente Atende totalmente Usabilidade Atende parcialmente Atende parcialmente Maturidade Atende totalmente Atende totalmente Suporte a configurações Atende totalmente Atende totalmente Treinamento Não atende Não atende Integração: O nível de integração com outras ferramentas. Extensibilidade: A capacidade de personalizar e configurar. Suporte a equipe: A capacidade de oferecer suporte a uma equipe de usuários que está geograficamente distribuída. Usabilidade: A facilidade de aprender e usar. Maturidade: O nível de maturidade da ferramenta. Suporte a configurações: Suporte disponível para instalação, configuração e uso. Treinamento: Treinamento disponibilizado pelo fornecedor. Commit atômico Garantir a atomicidade das atualizações no repositório. Controle de diferentes tipos de arquivos: Além do ASCII, permitir controle de arquivos em diversos formatos tais como Unicode e binário. Controle de mudanças: Prover informações sobre quais itens estão em alteração por algum membro da equipe. Controle de permissões: Atribuir de permissões individuais de leitura e gravação aos membros de equipe. Merges e Braches: Permitir realizar junções e realizar de maneira satisfatória os braches (Quando a linha de desenvolvimento precisa ser dividida em duas ou mais). Portabilidade: Suportar a integração de itens oriundos de clientes com ambientes operacionais distintos. Renomeações de arquivos: Permitir renomear arquivos no repositório. Suporte: Identificar distintas versões de arquivos que compõem uma distribuição e recuperação da mesma CONCLUSÃO O comparativo realizado demonstra que o sistema Subversion atendeu a um maior número dos critérios adotados. Embora o Subversion atenda parcialmente o critério de usabilidade, e não atenda aos critérios de extensibilidade e treinamento, atende totalmente a todos os outros critérios estabelecidos destacando-se quando se trata de atomicidade de commits, renomeações de arquivos e controle de diferentes tipos de arquivos. Podendo o mesmo, ser uma boa indicação para a gerência de configuração no momento da escolha de um sistema de controle de versões, enquanto o sistema CVS, além de não atender aos critérios de extensibilidade e treinamento, atende parcialmente ao critério de usabilidade e ao critério de características e funções, o qual se apresenta como essencial para um bom desempenho do sistema em projetos de softwares.
Compartilhar