Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com “Milhares de árvores são plantadas nas florestas do mundo graças aos esquilos; para se prevenir no inverno eles enterram suas nozes em diversos locais e simplesmente as esquecem...” “Milhares de árvores são plantadas nas florestas do mundo graças aos esquilos; para se prevenir no inverno eles enterram suas nozes em diversos locais e simplesmente as esquecem...” “Gerenciar é conduzir ações que viabilizem expectativas em realizações sustentáveis, envolvendo:Planejamento, Monitoração, Controle (trabalho das pessoas) e Processos”. Pressman “Gerenciar é conduzir ações que viabilizem expectativas em realizações sustentáveis, envolvendo:Planejamento, Monitoração, Controle (trabalho das pessoas) e Processos”. Pressman Introdução Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Um repositUm repositóório rio éé definido em termos definido em termos de Metamodelo no qual as de Metamodelo no qual as informainformaçções são armazenadas o ões são armazenadas o dados podem ser visualizados e dados podem ser visualizados e acessados pelas ferramentas e pelos acessados pelas ferramentas e pelos engenheiros de softwareengenheiros de software Mantida a seguranMantida a segurançça e a integridade a e a integridade dos dados e com que facilidade o dos dados e com que facilidade o modelo existente pode ser estendido modelo existente pode ser estendido para satisfazer a novas para satisfazer a novas necessidades.necessidades. O RepositO Repositóóriorio Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Nos primeiros tempos da engenharia Nos primeiros tempos da engenharia de software, o repositde software, o repositóório era sem rio era sem ddúúvida uma pessoa vida uma pessoa —— o o programador que tinha de se lembrar programador que tinha de se lembrar da localizada localizaçção de todas as ão de todas as informainformaçções relevantes a um projeto ões relevantes a um projeto de software, aquele que tinha de se de software, aquele que tinha de se lembrar de todas as informalembrar de todas as informaçções que ões que nunca foram escritas e reconstruir nunca foram escritas e reconstruir informainformaçções perdidas.ões perdidas. O RepositO Repositóório SCM rio SCM –– Origens Origens Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Nos primNos primóórdios da engenharia de rdios da engenharia de software, os itens de configurasoftware, os itens de configuraçção ão eram mantidos na forma de eram mantidos na forma de documentos impressos (ou documentos impressos (ou cartões perfurados!), colocados cartões perfurados!), colocados em pastas de arquivos ou em pastas de arquivos ou naquelas pastas de três furos, e naquelas pastas de três furos, e armazenados em armarmazenados em armáários de arios de açço. o. O RepositO Repositóório SCMrio SCM Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Infelizmente, o uso de uma pessoa Infelizmente, o uso de uma pessoa como como ““centro de centro de armazenamentoarmazenamento””(embora esteja de (embora esteja de acordo com a definiacordo com a definiçção Websterão Webster’’s s Dictionary) não funciona muito bem. Dictionary) não funciona muito bem. Hoje, o repositHoje, o repositóório rio éé uma uma ““coisacoisa”” —— um banco de dados que age como o um banco de dados que age como o centro de armazenagem de centro de armazenagem de informainformaçções de engenharia de ões de engenharia de software. O papel da pessoa (o software. O papel da pessoa (o engenheiro de software) engenheiro de software) éé interagir interagir com o repositcom o repositóório usando ferramentas rio usando ferramentas integradas com ele.integradas com ele. O RepositO Repositóório SCMrio SCM Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com LocalizaLocalizaçção ão -- (1) encontrar um item de (1) encontrar um item de configuraconfiguraçção quando necessão quando necessáário era muitas rio era muitas vezes difvezes difíícil, cil, Confiabilidade Confiabilidade -- (2) determinar quais itens (2) determinar quais itens foram alterados, quando e por quem, era em foram alterados, quando e por quem, era em geral um desafio, geral um desafio, Versionamento (3) Versionamento (3) -- criar uma nova versão de criar uma nova versão de um programa existente era um processo um programa existente era um processo demorado e sujeito a erros e demorado e sujeito a erros e IntegraIntegraçção ão -- (4) descrever rela(4) descrever relaçções detalhadas ões detalhadas ou complexas entre itens de configuraou complexas entre itens de configuraçção era ão era praticamente imposspraticamente impossíível.vel. Essa abordagem de arquivos fEssa abordagem de arquivos fíísicos era problemsicos era problemáática por diversas razões:tica por diversas razões: Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com AlAléém das Item de Configuram das Item de Configuraçção (SCI)s derivadas ão (SCI)s derivadas dos artefatos de software, muitas organizados artefatos de software, muitas organizaçções ões de engenharia de software tambde engenharia de software tambéém colocam m colocam ferramentas de software sob o controle de ferramentas de software sob o controle de configuraconfiguraçção. ão. Isto Isto éé, são versões espec, são versões especííficas de editores, ficas de editores, compiladores, browsers e outras ferramentas compiladores, browsers e outras ferramentas automautomááticas são ticas são ““congeladascongeladas”” como parte da como parte da configuraconfiguraçção do software. ão do software. Itens de configuraItens de configuraçção de softwareão de software Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Os Item de ConfiguraOs Item de Configuraçção ão (SCI)s são organizados para (SCI)s são organizados para formar objetos de formar objetos de configuraconfiguraçção que devem ser ão que devem ser catalogados no banco de catalogados no banco de dados do projeto com um dados do projeto com um nome nome úúnico. nico. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Atualmente,os Item de Atualmente,os Item de ConfiguraConfiguraçção (SCI)s são ão (SCI)s são mantidos em um banco de dados mantidos em um banco de dados de projeto ou repositde projeto ou repositóório. rio. O DicionO Dicionáário Webster define a rio Webster define a palavra repository (repositpalavra repository (repositóório) rio) como como ““qualquer coisa ou pessoa qualquer coisa ou pessoa considerada um centro de considerada um centro de acumulaacumulaçção ou armazenagemão ou armazenagem””. . O RepositO Repositóório SCMrio SCM Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O RepositO Repositóório SCMrio SCM Um objeto de configuraUm objeto de configuraçção tem um ão tem um nome, atributos e nome, atributos e éé ““conectadoconectado”” a a outros objetos por relaoutros objetos por relaçções. Cada ões. Cada um dos objetos estum dos objetos estáá relacionado relacionado com os outros, como mostram as com os outros, como mostram as setas. Uma seta curva indicauma setas. Uma seta curva indica uma relarelaçção de composião de composiçção.ão. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Objetos de Configuração Objetos de Configuração Especificação do Projeto Modelo de Dados Especificação de Testes Componente N Código Fonte Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O papel do repositO papel do repositóóriorio O repositO repositóório de SCM rio de SCM éé um conjunto um conjunto de mecanismos e estruturas de dados de mecanismos e estruturas de dados que permitem a uma equipe de que permitem a uma equipe de software possa conduzir e gerenciar software possa conduzir e gerenciar alteraalteraçções de maneira eficaz. ões de maneira eficaz. Isso inclui funIsso inclui funçções comuns num ões comuns num sistema moderno de gestão de banco sistema moderno de gestão de banco de dados garantida a integridade dos de dados garantida a integridade dos dados, compartilhamento e dados, compartilhamento e integraintegraçção. ão. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O papel do RepositO papel do Repositóóriorio Um repositUm repositóório de SCM provê um rio de SCM provê um centralizador (hub) para a centralizador (hub) para a integraintegraçção das ferramentas de ão das ferramentas de software, no centro do fluxo do software, no centro do fluxo do processo de software e pode processo de software e pode impor estrutura e formato impor estrutura e formato uniformes para os artefatos.uniformes para os artefatos. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com As caracterAs caracteríísticas e o contesticas e o conteúúdo do do do repositrepositóório são mais bem rio são mais bem compreendidas quando são compreendidas quando são observadas a partir de duas observadas a partir de duas perspectivas: perspectivas: 1 1 -- o que deve ser armazenado no o que deve ser armazenado no repositrepositóório rio 2 2 -- Quais os serviQuais os serviçços especos especííficos que ficos que são fornecidos pelo repositsão fornecidos pelo repositóório. rio. Uma divisão detalhada dos tipos de representaUma divisão detalhada dos tipos de representaçções, documentos e outros ões, documentos e outros produtos que são armazenados no repositprodutos que são armazenados no repositóório tb devem ser rio tb devem ser disponibilizados. .disponibilizados. . CaracterCaracteríísticas gerais e contesticas gerais e conteúúdo do Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Um repositUm repositóório robusto proporciona rio robusto proporciona duas classes diferentes de serviduas classes diferentes de serviçços:os: (1) servi(1) serviçços que podem ser os que podem ser esperados de qualquer sistema esperados de qualquer sistema sofisticado de gerenciamento de sofisticado de gerenciamento de banco de dadosbanco de dados (2) servi(2) serviçços que são especos que são especííficos ao ficos ao ambiente de engenharia de software.ambiente de engenharia de software. CaracterCaracteríísticas gerais e contesticas gerais e conteúúdo do Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Um repositUm repositóório rio úútil til àà equipe de engenharia de equipe de engenharia de software deve tambsoftware deve tambéém ter as seguintes m ter as seguintes caractercaracteríísticas:sticas: (1) integrar ou suportar diretamente as (1) integrar ou suportar diretamente as funfunçções de gestão de processo, ões de gestão de processo, (2) suportar regras espec(2) suportar regras especííficas que governam ficas que governam a funa funçção SCM e os dados mantidos no ão SCM e os dados mantidos no repositrepositóório, rio, (3) proporcionar uma interface para outras (3) proporcionar uma interface para outras ferramentas de engenharia de software, e ferramentas de engenharia de software, e (4) acomodar o armazenamento de objetos de (4) acomodar o armazenamento de objetos de dados sofisticados (por exemplo, texto, dados sofisticados (por exemplo, texto, grgrááficos, vficos, víídeo, deo, ááudio, etc).udio, etc). CaracterCaracteríísticas gerais e contesticas gerais e conteúúdo do Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com CaracterCaracteríísticas gerais e contesticas gerais e conteúúdo do Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Para suportar a SCM, o repositPara suportar a SCM, o repositóório deve ter rio deve ter um conjunto de ferramentas que proporcione um conjunto de ferramentas que proporcione suporte para as seguintes caractersuporte para as seguintes caracteríísticas:sticas: Versionamento Versionamento -- ÀÀ medida que um projeto medida que um projeto avanavançça, serão criadas muitas versões (dos a, serão criadas muitas versões (dos artefatos individuais. artefatos individuais. RecuperaRecuperaçção ão -- O repositO repositóório deve ser capaz rio deve ser capaz de salvar todas essas versões para de salvar todas essas versões para possibilitar uma gestão eficaz das versões do possibilitar uma gestão eficaz das versões do produto e permitir aos desenvolvedores produto e permitir aos desenvolvedores retroceder a versões anteriores durante o retroceder a versões anteriores durante o teste e depurateste e depuraçção.ão. CaracterCaracteríísticas gerais e contesticas gerais e conteúúdo do Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Controle Controle -- O repositO repositóório deve ser capaz de rio deve ser capaz de controlar uma grande variedade de tipos de controlar uma grande variedade de tipos de objetos, incluindo texto, grobjetos, incluindo texto, grááficos, bitmaps, ficos, bitmaps, documentos complexos e objetos especiais documentos complexos e objetos especiais como definicomo definiçções de tela e relatões de tela e relatóório, arquivos rio, arquivos de objeto, dados de testes e resultados. Um de objeto, dados de testes e resultados. Um repositrepositóório desenvolvido rastreia versões rio desenvolvido rastreia versões de objetos com nde objetos com nííveis arbitrveis arbitráários de rios de granularidade; por exemplo, podem ser granularidade; por exemplo, podem ser rastreados uma definirastreados uma definiçção de dados especial ão de dados especial ou um conjunto de mou um conjunto de móódulos.dulos. CaracterCaracteríísticas gerais e contesticas gerais e conteúúdo do Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O repositO repositóório gerencia uma grande rio gerencia uma grande variedade de relavariedade de relaçções entre os ões entre os elementos de dados armazenados nele. elementos de dados armazenados nele. Isso inclui relaIsso inclui relaçções entre entidades e ões entre entidades e processos corporativos, entre as partes processos corporativos, entre as partes do projeto de uma aplicado projeto de uma aplicaçção, entre ão, entre componentes de projeto e arquitetura de componentes de projeto e arquitetura de informainformaçções corporativas, entre ões corporativas, entre elementos de projeto e outros artefatos, elementos de projeto e outros artefatos, e assim por diante. Algumas dessas e assim por diante.Algumas dessas relarelaçções são meramente associaões são meramente associaçções e ões e outras são relaoutras são relaçções de dependências ou ões de dependências ou de obrigatoriedade.de obrigatoriedade. Acompanhamento de dependências e gestão de alteraAcompanhamento de dependências e gestão de alteraçções.ões. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com A habilidade em manter controle de todas A habilidade em manter controle de todas as relaas relaçções ões éé crucial para a integridade das crucial para a integridade das informainformaçções armazenadas no repositões armazenadas no repositóório e rio e para a gerapara a geraçção de outros produtos ão de outros produtos baseados nele e uma das contribuibaseados nele e uma das contribuiçções ões mais importantes do conceito de repositmais importantes do conceito de repositóório rio para o aperfeipara o aperfeiççoamento do processo de oamento do processo de software. software. Por exemplo, se um diagrama de classe Por exemplo, se um diagrama de classe UML UML éé modificado, o repositmodificado, o repositóório pode rio pode detectar se as classes relacionadas, as detectar se as classes relacionadas, as descridescriçções de interface e os componentes ões de interface e os componentes de cde cóódigo tambdigo tambéém requerem modificam requerem modificaçções e ões e podem chamar a atenpodem chamar a atençção do desenvolvedor ão do desenvolvedor para as Casses afetadas.para as Casses afetadas. Acompanhamento de dependências e gestão de alteraAcompanhamento de dependências e gestão de alteraçções.ões. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Essa funEssa funçção especial depende da ão especial depende da gestão de link e proporciona a gestão de link e proporciona a habilidade para controlar todos os habilidade para controlar todos os componentes de projeto e componentes de projeto e construconstruçção e outros produtos que ão e outros produtos que resultam de uma especificaresultam de uma especificaçção ão especial de requisitos especial de requisitos (acompanhamento adiante). (acompanhamento adiante). AlAléém disso, ela proporciona a m disso, ela proporciona a habilidade para identificar que habilidade para identificar que requisitos geraram determinado requisitos geraram determinado produto (retroacompanhamento).produto (retroacompanhamento). Controle de requisitos.Controle de requisitos. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Uma pista de auditoria estabelece Uma pista de auditoria estabelece informainformaçções adicionais sobre ões adicionais sobre quando, por que e por quem foram quando, por que e por quem foram feitas as alterafeitas as alteraçções. As ões. As informainformaçções sobre a origem das ões sobre a origem das alteraalteraçções podem ser colocadas ões podem ser colocadas como atributos de objetos como atributos de objetos especespecííficos no repositficos no repositóório. rio. Pistas de auditoria.Pistas de auditoria. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Um mecanismo de disparo do Um mecanismo de disparo do repositrepositóório rio éé úútil para avisar o til para avisar o desenvolvedor ou a ferramenta que desenvolvedor ou a ferramenta que estestáá sendo usada para iniciar a sendo usada para iniciar a aquisiaquisiçção de informaão de informaçções de ões de auditoria (como, por exemplo, a auditoria (como, por exemplo, a razão de uma alterarazão de uma alteraçção) sempre ão) sempre que um elemento de projeto for que um elemento de projeto for modificado.modificado. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O Processo SCMO Processo SCM O processo de gestão de configuraO processo de gestão de configuraçção de software ão de software define uma sdefine uma séérie de tarefas que têm quatro objetivos rie de tarefas que têm quatro objetivos primprimáários: rios: (1) identificar todos os itens que coletivamente (1) identificar todos os itens que coletivamente definem a configuradefinem a configuraçção do software,ão do software, (2) gerenciar altera(2) gerenciar alteraçções de um ou mais desses ões de um ou mais desses itens, itens, (3) facilitar a constru(3) facilitar a construçção de diferentes versões de ão de diferentes versões de uma aplicauma aplicaçção e ão e (4) assegurar que a qualidade do software seja (4) assegurar que a qualidade do software seja mantida mantida àà medida que a configuramedida que a configuraçção evolui com o ão evolui com o tempo. tempo. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O Processo SCMO Processo SCM Um processo que atinja Um processo que atinja esses objetivos não precisa esses objetivos não precisa ser burocrser burocráático ou pesado, tico ou pesado, mas deve ser caracterizado mas deve ser caracterizado de maneira que permita a de maneira que permita a equipe de software equipe de software desenvolver respostas a uma desenvolver respostas a uma sséérie de questões rie de questões complexas:complexas: Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O Processo SCMO Processo SCM Como uma equipe de software identifica os Como uma equipe de software identifica os elementos discretos de uma configuraelementos discretos de uma configuraçção de ão de software?software? •• Como uma organizaComo uma organizaçção lida com as vão lida com as váárias rias versões de um programa (e sua documentaversões de um programa (e sua documentaçção) ão) de maneira que venha a permitir que a alterade maneira que venha a permitir que a alteraçção ão seja acomodada eficientemente?seja acomodada eficientemente? •• Como uma organizaComo uma organizaçção controla alteraão controla alteraçções ões antes e depois que o software antes e depois que o software éé entregue ao entregue ao cliente?cliente? •• Quem tem a responsabilidade de aprovar e Quem tem a responsabilidade de aprovar e classificar as alteraclassificar as alteraçções solicitadas?ões solicitadas? •• Como podemos assegurar que as alteraComo podemos assegurar que as alteraçções ões foram feitas corretamente?foram feitas corretamente? •• Que mecanismo Que mecanismo éé usado para alertar outras usado para alertar outras pessoas sobre as alterapessoas sobre as alteraçções que são feitas?ões que são feitas? Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O Processo SCMO Processo SCM Um registro da Item de Um registro da Item de ConfiguraConfiguraçção (SCI) inclui ão (SCI) inclui nome, data de crianome, data de criaçção, ão, designadesignaçção da versão etc. ão da versão etc. para fins de auditoria da para fins de auditoria da configuraconfiguraçção e relato para ão e relato para aqueles que precisam ter aqueles que precisam ter conhecimento. conhecimento. E para fins de auditoria da E para fins de auditoria da configuraconfiguraçção e relato para ão e relato para aqueles que precisam ter aqueles que precisam ter conhecimento. conhecimento. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Camadas do Processo SCMCamadas do Processo SCM Versões Versões de 1 a Nde 1 a N Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Controle de VersãoControle de Versão O controle de versão combina procedimentos e Ocontrole de versão combina procedimentos e ferramentas para gerenciar diferentes ferramentas para gerenciar diferentes versões dos objetos de configuraversões dos objetos de configuraçção ão criados durante o processo de software. criados durante o processo de software. Um sistema de controle de versão Um sistema de controle de versão implementa ou estimplementa ou estáá diretamente integrado diretamente integrado com quatro recursos principais: com quatro recursos principais: (1)(1) uma banco de dados de projeto uma banco de dados de projeto (reposit(repositóório) que armazena todos os rio) que armazena todos os objetos de configuraobjetos de configuraçção relevantes, ão relevantes, (2) um recurso de gestão de versão que (2) um recurso de gestão de versão que armazena todas as versões de um objeto armazena todas as versões de um objeto de configurade configuraçção (ou permite que qualquer ão (ou permite que qualquer versão seja construversão seja construíída usando diferenda usando diferençças as das versõesdas versões anteriores), anteriores), Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Controle de VersãoControle de Versão Uma facilidade de construir que permite Uma facilidade de construir que permite coletar todos os objetos de configuracoletar todos os objetos de configuraçção ão relevantes e construir uma versão relevantes e construir uma versão especespecíífica do software. Alfica do software. Aléém disso, os m disso, os sistemas de controle de versão e sistemas de controle de versão e controle de alteracontrole de alteraçção muitas vezes ão muitas vezes implementam um recurso chamado implementam um recurso chamado acompanhamento de tacompanhamento de tóópicos (tambpicos (tambéém m conhecido como acompanhamento de conhecido como acompanhamento de bug), que permite bug), que permite àà equipe de software equipe de software registrar e acompanhar o status de todos registrar e acompanhar o status de todos os problemas pendentes associados com os problemas pendentes associados com cada objeto de configuracada objeto de configuraçção.ão. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Alguns sistemas de controle de Alguns sistemas de controle de versão criam um conjunto de versão criam um conjunto de modificamodificaçções ões —— uma coleuma coleçção de ão de todas as alteratodas as alteraçções (em relaões (em relaçção a ão a alguma configuraalguma configuraçção referencial) que ão referencial) que são necesssão necessáárias para criar uma rias para criar uma versão especversão especíífica do software. fica do software. Dart [Dar91] observa que um conjunto Dart [Dar91] observa que um conjunto de modificade modificaçções ões ““captura todas as captura todas as alteraalteraçções a todos os arquivos na ões a todos os arquivos na configuraconfiguraçção juntamente com a razão ão juntamente com a razão para aquelas alterapara aquelas alteraçções e os detalhes ões e os detalhes de quem as fez e quandode quem as fez e quando””.. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Uma abordagem de modelagem de Uma abordagem de modelagem de sistema contsistema contéém: m: (1)(1) um gabarito que inclui um gabarito que inclui hierarquia de componentes e hierarquia de componentes e uma uma ““ordem de construordem de construççãoão”” para os componentespara os componentes descrevendo como o sistema deve descrevendo como o sistema deve ser construser construíído, do, (2) regras de constru(2) regras de construçção ão e e (3) regras de verifica(3) regras de verificaçção.ão. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Durante as Durante as úúltimas dltimas déécadas cadas foram propostas muitas foram propostas muitas abordagens automabordagens automááticas ticas diferentes para o controle de diferentes para o controle de versão. A diferenversão. A diferençça prima primáária ria entre as abordagens entre as abordagens éé a a sofisticasofisticaçção dos atributos ão dos atributos usados para construir versões usados para construir versões especespecííficas e variantes de um ficas e variantes de um sistema e os mecanismos do sistema e os mecanismos do processo de construprocesso de construçção.ão. Controle de Versão de ProgramasControle de Versão de Programas Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com CVS (*) um sistema de controle de versão CVS (*) um sistema de controle de versão predominante de cpredominante de cóódigo aberto digo aberto transparente transparente àà rede [que] rede [que] éé úútil para til para qualquer um, desde desenvolvedores qualquer um, desde desenvolvedores individuais atindividuais atéé grandes equipes grandes equipes distribudistribuíídasdas”” [CVS07]. [CVS07]. Sua estrutura clienteSua estrutura cliente--servidor permite aos servidor permite aos usuusuáários acessar arquivos via conexões na rios acessar arquivos via conexões na Internet, e sua filosofia de cInternet, e sua filosofia de cóódigo aberto o digo aberto o torna dispontorna disponíível vel ààs plataformas mais s plataformas mais populares. O CVS estpopulares. O CVS estáá dispondisponíível sem vel sem custo para ambientes Windows, Mac OS, custo para ambientes Windows, Mac OS, LINUX e UNIX. LINUX e UNIX. Controle de Versão de Controle de Versão de Programas Programas -- CVSCVS (*) System version Control(*) System version Control Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com A realidade do controle de alteraA realidade do controle de alteraçções em um moderno ões em um moderno contexto de engenharia de softwarecontexto de engenharia de software foi resumida elegantemente por James Bach [Bac98]:foi resumida elegantemente por James Bach [Bac98]: O controle de alteraO controle de alteraçções ões éé vital. Mas as forvital. Mas as forçças que o as que o tornam necesstornam necessáário tambrio tambéém o tornam inconveniente.m o tornam inconveniente. Temos medo das alteraTemos medo das alteraçções porque uma pequena ões porque uma pequena perturbaperturbaçção no cão no cóódigo pode criar uma enormedigo pode criar uma enorme falha no produto. Elas podem reparar uma grande falha no produto. Elas podem reparar uma grande falha ou habilitar novos e maravilhososfalha ou habilitar novos e maravilhosos recursos. Temos medo das alterarecursos. Temos medo das alteraçções porque um ões porque um úúnico nico desenvolvedor irresponsdesenvolvedor irresponsáável poderia afundar ovel poderia afundar o projeto todo; embora ideias brilhantes possam surgir projeto todo; embora ideias brilhantes possam surgir nas mentes desses brincalhões, um controle denas mentes desses brincalhões, um controle de processo de alteraprocesso de alteraçções pesado poderia efetivamente ões pesado poderia efetivamente desencorajdesencorajáá--los no seu trabalho criativo.los no seu trabalho criativo. Controle de alteraControle de alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Bach reconhece que temos aqui uma lei de equilBach reconhece que temos aqui uma lei de equilííbrio. brio. Se tivermos muito controle das alteraSe tivermos muito controle das alteraçções,ões, criaremos problemas. Se tivermos pouco controle, criaremos problemas. Se tivermos pouco controle, criaremos outros problemas. Em um grande projeto de criaremos outros problemas. Em um grande projeto de software, alterasoftware, alteraççõesnão controladas levam ões não controladas levam rapidamente ao caos.rapidamente ao caos. Para projetos assim, o controle de alteraPara projetos assim, o controle de alteraçções combina ões combina procedimentos humanos e ferramentasprocedimentos humanos e ferramentas automatizadas, proporcionando um mecanismo para o automatizadas, proporcionando um mecanismo para o controle de alteracontrole de alteraçções. O processo deões. O processo de controle de alteracontrole de alteraçções estões estáá ilustrado ilustrado esquematicamente na Figura 22.5. esquematicamente na Figura 22.5. Controle de alteraControle de alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Uma solicitaUma solicitaçção de alteraão de alteraçção ão éé apresentada e apresentada e avaliada para determinar o mavaliada para determinar o méérito trito téécnico, efeitos cnico, efeitos colaterais potenciais, impacto global sobre outros colaterais potenciais, impacto global sobre outros objetos de configuraobjetos de configuraçção e funão e funçções do sistema e o ões do sistema e o custo projetado da alteracusto projetado da alteraçção. ão. Os resultados da avaliaOs resultados da avaliaçção são apresentados ão são apresentados como um relatcomo um relatóório de alterario de alteraçções, usado por uma ões, usado por uma autoridade de controle de alteraautoridade de controle de alteraçções (change ões (change control authority control authority —— CCA) CCA) —— uma pessoa ou grupo uma pessoa ou grupo de pessoas que toma a decisão fi nal sobre o de pessoas que toma a decisão fi nal sobre o status e prioridade da alterastatus e prioridade da alteraçção.ão. Uma ordem de alteraUma ordem de alteraçção de engenharia ão de engenharia (engineering change order (engineering change order -- ECO) ECO) éé gerada para gerada para cada alteracada alteraçção aprovada. A ECO descreve a ão aprovada. A ECO descreve a alteraalteraçção a ser feita, as restrião a ser feita, as restriçções que devem ser ões que devem ser respeitadas e o critrespeitadas e o critéério para revisar e auditar.rio para revisar e auditar. Controle de alteraControle de alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Os objetos a ser alterados podem ser Os objetos a ser alterados podem ser colocados em um diretcolocados em um diretóório que rio que éé controlado controlado apenas pelo engenheiro de software que estapenas pelo engenheiro de software que estáá fazendo a alterafazendo a alteraçção. Um sistema de controle ão. Um sistema de controle de versão (ver o quadro Ferramentas de de versão (ver o quadro Ferramentas de software sobre CVS) atualiza o arquivo software sobre CVS) atualiza o arquivo original logo que a alteraoriginal logo que a alteraçção foi feita. Como ão foi feita. Como alternativa, os objetos a ser alterados podem alternativa, os objetos a ser alterados podem ser ser ““retiradosretirados”” do banco de dadosdo banco de dados do projeto (repositdo projeto (repositóório), as alterario), as alteraçções ser ões ser feitas e aplicadas feitas e aplicadas ààs atividades SQA s atividades SQA apropriadas. apropriadas. Controle de alteraControle de alteraççõesões Os objetos são Os objetos são ““colocadoscolocados”” no banco de dados e usados mecanismos de controle de no banco de dados e usados mecanismos de controle de versão apropriados para criar a prversão apropriados para criar a próóxima versão do software.xima versão do software. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Esses mecanismos de controle de Esses mecanismos de controle de versão, integrados ao processo de versão, integrados ao processo de controle de alteracontrole de alteraçções,ões, implementam dois elementos implementam dois elementos importantes da gestão de alteraimportantes da gestão de alteraçções ões —— controle de acesso e controlecontrole de acesso e controle de sincronizade sincronizaçção. ão. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com O controle de acesso identifica quais O controle de acesso identifica quais os engenheiros de software têm os engenheiros de software têm autoridade para acessar e modifi car autoridade para acessar e modifi car um objeto de configuraum objeto de configuraçção em ão em particular. O controle de sincronizaparticular. O controle de sincronizaççãoão ajuda a assegurar que alteraajuda a assegurar que alteraçções ões paralelas, executadas por duas paralelas, executadas por duas pessoas diferentes, de modo que nãopessoas diferentes, de modo que não sobrescrevam uma sobrescrevam uma àà outra.outra. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Os desenvolvedores para WebApp muitas vezes Os desenvolvedores para WebApp muitas vezes usam um modelo de processo iterativo, usam um modelo de processo iterativo, incremental, que aplica muitos princincremental, que aplica muitos princíípios pios derivados do desenvolvimento derivados do desenvolvimento áágil de software gil de software (Cap(Capíítulo 3). Por meio dessa abordagem, uma tulo 3). Por meio dessa abordagem, uma equipe de engenharia muitas vezes desenvolve equipe de engenharia muitas vezes desenvolve um incremento para WebApp em um perum incremento para WebApp em um perííodo de odo de tempo muito curto usando uma abordagem tempo muito curto usando uma abordagem focada no cliente. focada no cliente. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Incrementos subsequentes Incrementos subsequentes adicionam conteadicionam conteúúdo e do e funcionalidade, e cada um deles funcionalidade, e cada um deles tende a implementar alteratende a implementar alteraçções que ões que levam a um contelevam a um conteúúdo aperfeido aperfeiççoado, oado, melhor utilizamelhor utilizaçção, melhor estão, melhor estéética, tica, melhor navegamelhor navegaçção, melhor ão, melhor desempenho e maior segurandesempenho e maior segurançça. a. Portanto, no mundo Portanto, no mundo áágil das gil das WebApps, a alteraWebApps, a alteraçção ão éé vista de vista de forma um tanto diferente.forma um tanto diferente. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Controle de AlteraControle de Alteraççõesões Sem controles eficazes, alteraSem controles eficazes, alteraçções ões imprimpróóprias a uma WebApp podem levar prias a uma WebApp podem levar a: uma colocaa: uma colocaçção não autorizada de ão não autorizada de informainformaçções sobre novos produtos, ões sobre novos produtos, funcionalidade errônea ou mal testada funcionalidade errônea ou mal testada que causa frustraque causa frustraçção nos visitantes de ão nos visitantes de um site, brechas na seguranum site, brechas na segurançça que a que põem em risco os sistemas internos da põem em risco os sistemas internos da empresa e outras consequências empresa e outras consequências economicamente desagradeconomicamente desagradááveis ou atveis ou atéé mesmo desastrosas.mesmo desastrosas. Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com As estratAs estratéégias gerais para gias gerais para gestão de configuragestão de configuraçção de ão de software (SCM) descritas software (SCM) descritas são aplicsão aplicááveis, veis,observando que as observando que as ttááticas e as ferramentas ticas e as ferramentas devem ser adaptadas de devem ser adaptadas de acordo com a natureza as acordo com a natureza as aplicaaplicaçções orientadas ões orientadas para WEB ( WebApps). para WEB ( WebApps). Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Na medida em que as WebApps se Na medida em que as WebApps se tornam cada vez mais importantes tornam cada vez mais importantes para a sobrevivência dos negpara a sobrevivência dos negóócios, cios, crescem as necessidades da gestão crescem as necessidades da gestão de configurade configuraçção. ão. . As estrat. As estratéégias gerais para gestão de gias gerais para gestão de configuraconfiguraçção de software (SCM) são ão de software (SCM) são aplicaplicááveis, mas as tveis, mas as tááticas e as ticas e as ferramentas devem ser adaptadas ferramentas devem ser adaptadas para se conformarem com a natureza para se conformarem com a natureza especial das WebApps. especial das WebApps. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Quatro aspectos [Dar99] deverão ser Quatro aspectos [Dar99] deverão ser considerados ao desenvolvermos tconsiderados ao desenvolvermos tááticas ticas para gestão de configurapara gestão de configuraçção de WebApp.ão de WebApp. ConteConteúúdo. Uma WebApp tdo. Uma WebApp tíípica contpica contéém um m um vasto conjunto de contevasto conjunto de conteúúdo do —— texto, texto, grgrááficos, applets, scripts, arquivos de ficos, applets, scripts, arquivos de ááudio/vudio/víídeo, formuldeo, formuláários, elementos de rios, elementos de ppáágina ativos, tabelas, dados encadeados e gina ativos, tabelas, dados encadeados e muitos outros. muitos outros. O desafio O desafio éé organizar esse mar de conteorganizar esse mar de conteúúdo do em um conjunto racional de objetos de em um conjunto racional de objetos de configuraconfiguraçção e, então, estabelecer ão e, então, estabelecer mecanismos de controle de configuramecanismos de controle de configuraçção ão apropriados para esses objetos. apropriados para esses objetos. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Uma abordagem Uma abordagem éé modelar o contemodelar o conteúúdo do da Webda Web--App usando tApp usando téécnicas cnicas convencionais de modelagem de dados, convencionais de modelagem de dados, anexando um conjunto de propriedades anexando um conjunto de propriedades especializadas a cada objeto. A natureza especializadas a cada objeto. A natureza estestáática/dinâmica de cada objeto e sua tica/dinâmica de cada objeto e sua longevidade projetada (por exemplo, longevidade projetada (por exemplo, objeto temporobjeto temporáário, de existência fixa ou rio, de existência fixa ou permanente) são exemplos de permanente) são exemplos de propriedades necesspropriedades necessáárias para rias para estabelecer uma abordagem de SCM estabelecer uma abordagem de SCM eficaz. eficaz. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Quatro aspectos [Dar99] deverão ser Quatro aspectos [Dar99] deverão ser considerados ao desenvolvermosconsiderados ao desenvolvermos ttááticas para gestão de configuraticas para gestão de configuraçção de WebApp.ão de WebApp. Pessoas. Devido ao fato de que uma Pessoas. Devido ao fato de que uma porcentagem significativa do desenvolvimento de porcentagem significativa do desenvolvimento de WebApp continua a ser executada de maneira ad WebApp continua a ser executada de maneira ad hoc, qualquer pessoa envolvida na WebApp pode hoc, qualquer pessoa envolvida na WebApp pode criar contecriar conteúúdo (e frequentemente o faz). Muitos do (e frequentemente o faz). Muitos criadores de contecriadores de conteúúdo não possuem do não possuem conhecimentos em engenharia de software e conhecimentos em engenharia de software e ignoram completamente a necessidade de gestão ignoram completamente a necessidade de gestão de configurade configuraçção. Consequentemente, a aplicaão. Consequentemente, a aplicaçção ão cresce e cresce e éé alterada de maneira não controlada.alterada de maneira não controlada. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Escalabilidade. As tEscalabilidade. As téécnicas e controles aplicados cnicas e controles aplicados a uma pequena WebApp não são bem escala uma pequena WebApp não são bem escalááveis. veis. Não Não éé raro uma simples WebApp crescer raro uma simples WebApp crescer significativamente enquanto são implementadas significativamente enquanto são implementadas interconexões com sistemas de informainterconexões com sistemas de informaçção ão existentes, bancos de dados, armazexistentes, bancos de dados, armazéém de dados e m de dados e gateways e portais. gateways e portais. ÀÀ medida que cresce o tamanho e a medida que cresce o tamanho e a complexidade, pequenas mudancomplexidade, pequenas mudançças podem ter as podem ter efeitos amplos e inesperados que podem se efeitos amplos e inesperados que podem se tornar problemtornar problemááticos. Portanto, o rigor dos ticos. Portanto, o rigor dos mecanismos de configuramecanismos de configuraçção deverão deveráá ser ser diretamente proporcional diretamente proporcional àà escala de aplicaescala de aplicaçção.ão. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com PolPolííticas. Quem ticas. Quem éé o o ““donodono”” de uma WebApp? Essa de uma WebApp? Essa éé uma pergunta feita em empresas grandes e pequenas, uma pergunta feita em empresas grandes e pequenas, e sua resposta tem um impacto significativo sobre as e sua resposta tem um impacto significativo sobre as atividades de gerenciamento e controle. Em alguns atividades de gerenciamento e controle. Em alguns casos os desenvolvedores para Web estão instalados casos os desenvolvedores para Web estão instalados fora da organizafora da organizaçção de TI, criando dificuldades ão de TI, criando dificuldades potenciais de comunicapotenciais de comunicaçção. Dart [Dar99] sugere as ão. Dart [Dar99] sugere as seguintes perguntas para ajudar a entender as polseguintes perguntas para ajudar a entender as polííticas ticas associadas com engenharia para Web:associadas com engenharia para Web: Quem assume a responsabilidade pela exatidão das Quem assume a responsabilidade pela exatidão das informainformaçções no site?ões no site? •• Quem garante que os processos de controle de Quem garante que os processos de controle de qualidade foram obedecidos antes que as informaqualidade foram obedecidos antes que as informaçções ões fossem publicadas no site?fossem publicadas no site? •• Quem Quem éé responsresponsáável por fazer alteravel por fazer alteraçções?ões? •• Quem assume o custo da alteraQuem assume o custo da alteraçção?ão? Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com As respostas a essas perguntas ajudam a determinar As respostas a essas perguntas ajudam a determinar as pessoas na organizaas pessoas na organizaçção que devem adotar um ão que devem adotar um processo de gestão de configuraprocesso de gestão de configuraçção para WebApps.ão para WebApps. A gestãode configuraA gestão de configuraçção para WebApps continua a ão para WebApps continua a evoluir (por exemplo, [Ngu06]). Um processo de SCM evoluir (por exemplo, [Ngu06]). Um processo de SCM convencional pode ser muito desajeitado, mas uma convencional pode ser muito desajeitado, mas uma nova geranova geraçção de ferramentas de gestão de conteão de ferramentas de gestão de conteúúdo do especificamente projetadas para a engenharia surgiu especificamente projetadas para a engenharia surgiu nos nos úúltimos anos.ltimos anos. Essas ferramentas estabelecem um processo que Essas ferramentas estabelecem um processo que adquire as informaadquire as informaçções existentes (de uma ampla ões existentes (de uma ampla variedade de objetos WebApp), gerencia as alteravariedade de objetos WebApp), gerencia as alteraçções ões nos objetos, estrutura essas alteranos objetos, estrutura essas alteraçções para que ões para que possam ser apresentadas a um usupossam ser apresentadas a um usuáário final e as rio final e as apresenta ao ambiente do lado do cliente para ser apresenta ao ambiente do lado do cliente para ser exibidas.exibidas. Controle de AlteraControle de Alteraççõesões Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com A gestão de conteA gestão de conteúúdo estdo estáá relacionada relacionada com a gestão de configuracom a gestão de configuraçção no ão no sentido de que um sistema de gestão de sentido de que um sistema de gestão de conteconteúúdo (CMS) estabelece um do (CMS) estabelece um processo (suportado por ferramentas processo (suportado por ferramentas apropriadas) que adquire o conteapropriadas) que adquire o conteúúdo do existente (de uma ampla variedade de existente (de uma ampla variedade de objetos de configuraobjetos de configuraçção de WebApp), ão de WebApp), estrutura esse conteestrutura esse conteúúdo de maneira que do de maneira que ele possa ser apresentado a um usuele possa ser apresentado a um usuáário rio final e, então, fornecefinal e, então, fornece--o ao ambiente no o ao ambiente no lado do cliente para ser exibido. lado do cliente para ser exibido. ConclusãoConclusão Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Gerenciamento de Configuração de SoftwareGerenciamento de Configuração de Software luther.fernandes@gmail.com Estudo de CasoEstudo de Caso
Compartilhar