Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ferramentas de gerenciamento de configuração de Software APRESENTAÇÃO As ferramentas de gerenciamento de configuração de software apresentam destaque especial na atualidade, porém elas já são utilizadas, de forma menos intensa, há muitos anos como suporte para algumas atividades do desenvolvimento de software. Elas contribuem para a melhoria de todo o processo de desenvolvimento e para a garantia da qualidade do software. Com o aumento de equipes multidisciplinares e geograficamente espalhadas, as ferramentas de configuração de software trazem melhoria aos processos de comunicação, gestão de controle de versões, empacotamento e distribuição do software, bem como tornam a rastreabilidade das mudanças e a manutenção de erros e falhas muito mais eficientes. Nesta Unidade de Aprendizagem, você vai aprender como as ferramentas são organizadas dentro da gestão de configuração de software, como podem ser escolhidas e implantadas, além de algumas características e funcionalidades atuais. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Identificar a função das ferramentas de gerenciamento de configuração de software.• Listar as ferramentas de gerenciamento de configuração de software.• Utilizar ferramentas de gerenciamento de configuração de software.• DESAFIO Ferramentas de gestão de configuração de software automatizam as atividades de desenvolvimento de software, gestão de manutenções e garantia da qualidade de software. O processo de configuração de software torna-se mais ágil, confiável e rastreável, garantindo aos líderes dos projetos mais tempo para desenvolverem outras atividades mais gerenciais. E, como no caso de todas as aplicações, a todo momento surgem novas ferramentas de gestão de configuração de software, além de outras plataformas compatíveis. Caso nenhuma seja compatível, qual outra ferramenta poderia ser utilizada? INFOGRÁFICO A gerência de configuração de software está fortemente ligada à gestão de qualidade de software . As empresas que estão em busca de adoção de modelos e padrões de qualidade geralmente adotam processos como CMMI ou MPS.BR. Seguindo a ideia da CMMI, seu segundo nível já exige que processos de gestão de configuração de software estejam funcionando para apoiar os processos de qualidade. É nesse momento que as ferramentas de configuração se tornam importantes. As ferramentas garantirão que todo o processo seja documentado no repositório de configuração de software, subsidiando, assim, os relatórios e resultados importantes para garantia da qualidade. O Infográfico a seguir faz uma associação entre a CMMI e a aplicação de ferramentas de gerência de configuração de software: CONTEÚDO DO LIVRO Com a busca pela excelência na garantia da qualidade de processos de desenvolvimento de software, com o objetivo final da entrega de um produto de fato usável, livre de falhas e erros, as ferramentas de configuração assumem uma importância maior na vida dos profissionais da arte de fabricar software. No capítulo Ferramentas de gerenciamento de configuração de software, da obra Testes de software e gerência de configuração, base teórica desta Unidade de Aprendizagem, você vai compreender melhor o que são as ferramentas, como elas estão organizadas, bem como suas principais funcionalidades. Também terá oportunidade de conhecer as ferramentas que estão em alta no mundo do desenvolvimento de software e como elas estão relacionadas com a qualidade de software. Boa leitura. TESTES DE SOFTWARE E GERÊNCIA DE CONFIGURAÇÃO Maristela Regina Weinfurter Teixeira Ferramentas de gerenciamento de configuração de software Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Identificar a função das ferramentas de gerenciamento de configu- ração de software. Listar as principais ferramentas de gerenciamento de configuração de software. Utilizar ferramentas de gerenciamento de configuração de software. Introdução Nas últimas décadas, com as inovações tecnológicas e os novos com- portamentos sociais, as equipes de desenvolvimento de software têm se tornado multidisciplinares e independentes geograficamente. Nesse cenário, as ferramentas de gerenciamento de configuração de software (GCSs) se destacam, pois automatizam o processo de desenvolvimento de softwares. As GCSs estabelecem e mantêm a integridade e a rastreabi- lidade de todo o processo de mudanças, contribuindo no monitoramento da qualidade e do ciclo de vida do software. Neste capítulo, você vai verificar como o uso adequado de ferramentas de GCS agiliza, automatiza e garante a qualidade em todo o processo de desenvolvimento de softwares. Função Você já deve ter ouvido falar sobre ferramentas de confi guração de software. Elas aparecem muitas vezes em contextos profi ssionais, mas é comum que não haja muita referência ao modo como se integram e se organizam conceitual- mente. De acordo com o Swebok elaborado pela IEEE Computer Society, a GCS é bastante alinhada à garantia da qualidade de software (GQS), produzindo conhecimento e informações importantes para todo o gerenciamento do ciclo de vida do software, bem como para a aplicação de melhorias continuadas (BOURQUE; FAIRLEY, 2014). Atingir as metas da GQS exige a manipulação de um volume considerável de dados, que podem ser suportados por meio do uso de ferramentas de GCS, capazes de tornar a tarefa mais ágil. O Instituto de Engenheiros Eletricistas e Eletrônicos (IEEE) é uma organização profissional sem fins lucrativos que promove o conhecimento nas áreas de engenharia elétrica, eletrônica e computação. Ele foi fundado nos Estados Unidos. Por sua vez, o Swebok (Guide to the Software Engineering Body of Knowledge) é um documento criado pelo IEEE que serve como referência para a comunidade de engenharia de software (BOURQUE; FAIRLEY, 2014). O Swebok define a divisão dos tópicos da GCS conforme a Figura 1. As atividades são organizadas em: gestão dos processos de GCS, identificação de configuração de software (CS), controle de CS, medições e correções de CS, auditoria de CS, gestão de controle de versões e distribuição e a própria gestão das ferramentas de GCS (BOURQUE; FAIRLEY, 2014). Figura 1. Organização das áreas de GCS. Fonte: Adaptada de Bourque e Fairley (2014, documento on-line). Ferramentas de gerenciamento de configuração de software2 À medida que a complexidade do desenvolvimento de softwares aumenta, faz-se cada vez mais necessária a implementação tanto de processos de GCS quanto de ferramentas que automatizem os processos. Com essa implemen- tação, cada alteração no software fica vinculada a registros dentro das ferra- mentas de GCS, garantindo a rastreabilidade de todas as mudanças e maior qualidade nos serviços e produtos entregues (PRESSMAN; MAXIM, 2016). Assim, a GCS é importante para a garantia da qualidade de software, a sua verificação e a sua validação, bem como para as revisões e auditorias. O uso de ferramentas de GCS não é recente. Essas ferramentas são utilizadas para controle de revisão há muito tempo no ambiente UNIX, com funções mais limitadas e simplificadas (LEON, 2015). Seu foco baseava-se na gestão dos códigos, mas, com o passar do tempo, as ferramentas se tornaram mais completas, gerenciando várias funcionalidades do processo de desenvolvimento de softwares. O aumento na busca por ferramentas de GCS pode ser atribuído a alguns fatores. Por exemplo: redução do tempo de desenvolvimento do software, melhoria na produtividade, agilidade no rastreamento de problemas, agilidade na liberação de novos softwares, redução de erros e maior integração das informações para auditorias (LEON, 2015). Todas as características e funcionalidades existentes e a serem implemen- tadas em ferramentas de GCS serão inúteis se as equipes de desenvolvimento não garantirem a atualização e o uso correto das ferramentas. Aideia de que o desenvolvimento de softwares pode ser feito por um único programador ficou no passado. E todas as vezes em que duas ou mais pessoas estão en- volvidas num mesmo trabalho, um fator crucial para o bom desempenho das atividades é a comunicação interpessoal, que é gerenciada pela maioria das ferramentas de GCS. Como você sabe, processos repetitivos que envolvem documentação, mo- dificações, rastreamento, revisões e correções de problemas consomem muito tempo dos desenvolvedores. É por isso que, se bem utilizada, a ferramenta de GCS agiliza os trabalhos e garante a produtividade (LEON, 2015). Automatização As ferramentas que automatizam os processos de GCS se baseiam na organi- zação proposta na Figura 1. Ou seja, cada uma das atividades é composta por um conjunto de tarefas que defi nem e manipulam os itens de confi guração 3Ferramentas de gerenciamento de configuração de software (ICs). Os ICs podem ser documentos de quaisquer tipos, casos de testes, códigos de programas, componentes, bibliotecas, frameworks, modelos de bancos de dados, entre tantos outros artefatos próprios ao desenvolvimento de softwares (PRESSMAN; MAXIM, 2016). A seguir, você vai conhecer mais sobre a estruturação da GCS (BOURQUE; FAIRLEY, 2014). Gestão de processos de GCS: descreve padrões e procedimentos usados na definição da configuração do software (como o que será gerenciado), identifica os atores responsáveis por cada atividade, ide- aliza o cronograma, define a estrutura de repositório, estabelece as políticas de trabalho, determina as linhas de base e a sua estrutura e determina quais ferramentas são importantes para o auxílio de toda a gestão. É responsável pela organização do contexto, pela definição de regras e guias para todo o processo de GCS, pelo planejamento e pela supervisão da GCS. Identificação de GCS: controla e administra os itens de configuração de software de acordo com a especificação a seguir. ■ Identificação de cada item de configuração. ■ Relacionamento entre os itens. ■ Versões de software. ■ Linha de base e aquisição de artefatos de configuração. Controle de CS: realiza a gestão durante o ciclo de vida, determinando quais mudanças serão realizadas. Autoriza e aprova as alterações, apoiando a implementação das mudanças. Medições de correções de CS: controlam a correção de defeitos e erros durante o processo de desenvolvimento do software. Auditoria de CS: avalia a conformidade dos produtos de software, bem como os processos de regulamentação deles. Gestão de versões e distribuição: é a gestão do controle de versões de todos os artefatos, em especial do software desenvolvido, garantindo que os artefatos sejam liberados e documentados com confiabilidade. Inclui também o empacotamento das versões para instalação, bem como seus testes. Gestão de ferramentas de configuração: é responsável pelas definições e pela administração do uso das ferramentas mais adequadas para apoio a todo o processo de gestão de configuração. Ferramentas de gerenciamento de configuração de software4 Há três situações diferentes em relação à adoção de ferramentas de GCS: aquisição de ferramenta proprietária; adoção de ferramenta de código aberto (open source); implementação conforme os requisitos particulares do projeto. Há certa variedade de ferramentas de GCS tanto proprietárias quanto de código aberto. Um dos aspectos importantes da análise e da definição de ferramentas é per- ceber o que é mais adequado a cada projeto. Muitas empresas optam por desenvolver uma metodologia de configuração por conta da complexidade e do alto custo do processo de GCS. Outras resolvem comprar ferramentas de empresas, muitas vezes consolidadas e que geram certa segurança no momento de treinamento e suporte. Finalmente, há a opção pelas ferramentas de código aberto, que são baixadas gratui- tamente e que podem contar com suporte e treinamento ou não. Antes de adotar ferramentas de GCS, é importante compreender todos os processos e atividades que devem ser automatizados no projeto de desenvol- vimento de softwares. Não é indicado adotar uma alternativa simplesmente porque o mercado a utiliza. Ferramentas, repositório e equipe de trabalho Além de todos os requisitos necessários para a adoção de ferramentas de con- fi guração, as próprias ferramentas devem estar sob a gestão de confi guração — ou seja, é necessário atentar a ambientes de desenvolvimento integrado (integrated development environment — IDEs), compiladores, navegadores, pacotes, bibliotecas e outros ICs. Deve-se propor o congelamento de versões no repositório de confi guração para que se estabeleça um conjunto de itens que estejam em pleno funcionamento (PRESSMAN; MAXIM, 2016). Assim, os repositórios de configuração de software devem também con- templar o gerenciamento das ferramentas de desenvolvimento e os testes em suas versões compatíveis. Isso é importante para o bom andamento do ciclo de desenvolvimento do software e do processo de configuração. Uma alternativa interessante para que haja cobertura de tais dependências é a comunicação eletrônica padronizada, por meio de e-mails, wikis, gerenciadores de conteúdos 5Ferramentas de gerenciamento de configuração de software e mídias sociais internas (LEON, 2015). O repositório de GCS centraliza a integração das ferramentas, dos artefatos e de toda a comunicação, gerando um centro de fluxo do processo e das informações em formato uniforme e padronizado. De nada adiantam esforço, padronização, documentação e comunicação se a equipe não estiver alinhada às atividades de configuração para garantir que cada alteração seja devidamente adicionada no repositório de CS. Ferramentas, cenários, planejamento e funcionalidades Um processo de confi guração pode ser burocrático e exigir muito trabalho em paralelo ao próprio projeto de desenvolvimento de softwares. É por isso que as empresas planejam a confi guração antes da escolha das ferramentas. Há ferramentas para todos os tamanhos de negócios e necessidades. Em alguns casos, devido à complexidade da ferramenta e de seu destaque no mercado de confi guração de software, há treinamentos e certifi cações dos produtos. A seguir, você vai ver um panorama sobre questões mais práticas. Primeira- mente, define-se um cenário por meio de uma simples pergunta: quando se deve de fato implementar um sistema de gerenciamento de configuração? Não existe uma resposta única e exata, porém um bom momento é quando se agregam várias pessoas à equipe, que por vezes trabalham dispersas geograficamente. Assim, várias questões surgem, envolvendo autoria, políticas, orçamentos, cronogramas, a própria coordenação do time e dos processos e, finalmente, os custos envolvidos diante das constantes mudanças (LEON, 2015). No roteiro de questionamentos importantes para o planejamento, podem constar as perguntas listadas a seguir (BOURQUE; FAIRLEY, 2014). 1. Organização: quais são as motivações para a aquisição das ferramentas? 2. Ferramentas: serão adquiridas ou desenvolvidas? 3. Ambiente: quais regras organizacionais e técnicas estarão no contexto do uso das ferramentas? 4. Legado: como os projetos futuros usarão ou não as ferramentas? Ferramentas de gerenciamento de configuração de software6 5. Financeiro: quem pagará pela aquisição, pela manutenção, pelo treina- mento e pela customização das ferramentas? 6. Escopo: como as ferramentas serão implantadas em toda a organização e em cada projeto específico? 7. Responsabilidades: quem será responsável pela introdução de novas ferramentas? 8. Futuro: quais são os planos para as ferramentas no futuro? 9. Mudanças: quão adaptáveis são as ferramentas? 10. Divisões e fusões: as ferramentas são compatíveis com os planejamentos de divisões organizacionais e as estratégias de fusão? 11. Integração: já há alguma ferramenta em uso? As ferramentas escolhidas, bem como as existentes, possuem mecanismos de integração? 12. Migração: é possívelfazer a migração dos repositórios existentes para outras ferramentas enquanto ocorre a manutenção completa de todo o histórico de registros? Um detalhe não menos importante é o tamanho atual da equipe e as pros- pecções futuras de crescimento. Ao serem respondidas algumas questões, é indicado o início do planejamento, mesmo que minimalista, seguindo um padrão público ou uma metodologia própria de gestão de mudanças. Em linhas gerais, definem-se as pessoas envolvidas e as suas devidas responsabilidades. Também é importante estabelecer uma linha de base com especificações de tempo, fixação de políticas de controle de versões, definição das ferramentas básicas e do que será atualizado no repositório de configuração (LEON, 2015). Um passo importante para complementar a base do planejamento é a for- mulação de um comparativo de ferramentas prontas, propondo um plano de aderência aos processos de GCS que serão implantados. Nesse caso, o Quadro 1 serve de modelo, considerando ferramentas proprietárias e de código aberto. Esse quadro traz algumas das funcionalidades mais importantes da automação do GCS das ferramentas elencadas. O primeiro ponto a ser considerado é a questão de código aberto ou pro- prietário. Isso faz diferença principalmente para pequenas empresas, que possuem um orçamento enxuto. Empresas de médio a grande porte já podem considerar o pagamento de ferramentas, dando preferência à adoção de uma opção mais completa, por exemplo, o que pode simplificar o processo de treinamento e implantação. Solucionado esse ponto, a segunda consideração é relativa ao alcance da ferramenta no mercado. Por exemplo, grande parcela de desenvolvedores possui experiência com a ferramenta GIT, utilizando-a geralmente em associação 7Ferramentas de gerenciamento de configuração de software à plataforma GitHub. Quanto mais usuários proficientes numa determinada ferramenta existem, mais agilidade há na equipe de trabalho. O Quadro 1, a seguir, não contém todas as ferramentas existentes, porém considera as mais utilizadas e que estão em destaque no mercado. Ferramenta Funcionalidades Nome Pr oc es so s Id en ti fi ca çã o Co nt ro le M ed iç õe s A ud it or ia Ve rs õe s D is tr ib ui çã o O /P Ansible Configuration Tool (ANSIBLE, 2019) √ √ √ √ P CFEngine Configuration Tool (CFEngine, 2019) √ √ √ P/O CHEF Configuration Tool (CHEF, 2019) √ √ √ √ √ √ √ P ConfigHub (2018) √ √ √ √ √ √ √ O GIT (2019c) √ O IBM Rational ClearCase (IBM, 2019) √ √ √ √ √ √ √ P JIRA (ATLASSIAN, 2019) √ √ √ √ P JUJU Configuration Tool (CANONICAL LTD., 2018) √ √ √ √ √ √ √ O Octopus Deploy (2019) √ √ √ √ √ √ P Puppet Labs (PUPPET, 2019) √ √ √ O RUDDER (2019) √ √ √ √ √ √ √ O SALTSTACK Configuration Tool (SALTSTACK, 2018) √ √ √ √ √ √ √ P SubVersion (2018) √ O TeamCity Configuration Tool (KHALUSOVA, 2015) √ √ √ √ √ √ O Quadro 1. Comparativo de ferramentas de configuração de software Ferramentas de gerenciamento de configuração de software8 Para conhecer melhor as ferramentas apresentadas no Quadro 1, você pode conferir as páginas de cada uma delas na internet. Nelas, você vai encontrar documentação e tutoriais de instalação e uso. Estudo de caso A seguir, você vai conhecer melhor três ferramentas de gerenciamento de confi guração: Git/GitHub, Puppet e TeamCity. O Git/GitHub é responsável pelo controle de versões de códigos. Já o Puppet ocupa-se do gerenciamento da infraestrutura. Finalmente, o TeamCity automatiza o processo de empa- cotamento e distribuição do software. Os exemplos a seguir consideram um cenário hipotético de uma pequena empresa. A ideia é que você perceba como a implantação e a integração das ferramentas podem ser planejadas. Durante a apresentação do estudo de caso, você vai conhecer algumas funcionalidades das três ferramentas. Git e GitHub: controle de versões e trabalho colaborativo O GitHub é uma plataforma que simplifi ca o controle de versões de código e facilita a colaboração entre equipes de desenvolvimento de software. Ela é associada à ferramenta Git e ajuda na construção de um repositório centra- lizado, no qual todos os desenvolvedores podem trabalhar simultaneamente baixando, editando e gerenciando códigos de programas. O GitHub documenta quando e o que cada pessoa atualizou no mesmo código, simultaneamente ou não, ajudando no rastreamento das alterações por pessoas e por data (GIT, 2019a, 2019b, 2019c). Seja para trabalhar com um grupo de desenvolvedores ou para criar um repositório com seu portfólio profissional, o GitHub é uma ferramenta interes- sante. Ele permite que seus repositórios estejam abertos à colaboração geral ou fechados para que somente você e seus colegas de projeto os enxerguem. Fazendo uma busca rápida em páginas de empresas de recursos humanos na internet, você vai ver que várias empresas de tecnologia solicitam que o profissional tenha o seu próprio repositório, compondo um portfólio de trabalhos feitos. Assim, o GitHub acaba se tornando uma grande rede social 9Ferramentas de gerenciamento de configuração de software de profissionais ligados ao desenvolvimento de software e que prezam pela colaboração. Você pode criar o seu perfil e os seus repositórios nessa ferramenta a qualquer momento, o que pode alavancar a sua carreira profissional. Além disso, com custo zero, pequenas empresas de desenvolvimento de software podem iniciar a automatização de processos de controle de versões e implantar os primeiros passos do gerenciamento de configuração de software. Exemplo A empresa Algoritmos Integrados Associados iniciou suas atividades há menos de um ano e já conta com uma pequena equipe multidisciplinar de 10 profi ssionais. Como a estrutura é pequena e inicial, a organização pretende trilhar caminhos mais automatizados no que diz respeito à qualidade e à gerência de confi guração de software. Depois de algumas reuniões para decisões sobre vários assuntos, mas prin- cipalmente focando na certeza de que precisam utilizar ferramentas de código aberto, os membros da equipe esperam desenhar uma trajetória de sucesso nos processos e aplicações. Para isso, eles optaram pela ferramenta de controle de versões Git, acompanhada da plataforma GitHub. Tal decisão se deu pelo fato de que esse processo de controle de versões é reconhecidamente o mais difícil de se gerir quando a equipe e a complexidade dos requisitos aumentam. Havia outras ferramentas disponíveis, como a SubVersion, porém, após a análise de uma tabela que comparava todas as ferramentas de controle de versões, a empresa optou pelo Git. A oferta de mão de obra que já tem experiência e utiliza a ferramenta para a colaboração em códigos foi um fator decisivo para que a Algoritmos Integrados Associados finalizasse a sua decisão. A equipe definiu e estabeleceu os seus repositórios no GitHub. Antes de tudo, todos participaram de estudos e treinamentos, tentando aumentar a produtividade com o uso adequado das ferramentas. Toda documentação, os tutoriais e as demais informações técnicas foram extraídas das próprias páginas do Git e do GitHub. A ferramenta Git conta com um livro eletrônico considerando os primeiros passos e demais funcionalidades (GIT, 2019a, 2019b, 2019c). Também há muitas plataformas de ensino a distância oferecendo cursos básicos gratuitamente e com os custos mais variados. Não foi difícil optar pelos melhores cursos, uma vez que a Algoritmos Integrados possui um forte foco em estudos colaborativos entre os profissionais da equipe. Como você sabe, é imprescindível para empresas de desenvolvimento de softwares o estudo contínuo de ferramentas, tecnologias e metodologias de trabalho. Ferramentas de gerenciamento de configuração de software10 Como tarefa inicial, após os treinamentos, todos os profissionais criaram os seus perfis e se propuseram a colaborar com códigos abertos e pequenos tutoriais para fomentar a área de desenvolvimento de software. Os repositórios proprietáriosforam definidos como privados para garantir o sigilo dos trabalhos da empresa. Além de tudo, os membros da equipe se propuseram a conectar as suas IDEs padrões (Visual Studio Code e Sublime Text) à ferramenta Git. Puppet: arquitetura e integração O Puppet é uma ferramenta de código aberto direcionada à administração e à confi guração de servidores, bem como à infraestrutura da tecnologia da informação (TI). Sua estrutura básica é composta por recursos e seus relaciona- mentos; estes são comparados com o estado atual do sistema e fazem alterações automaticamente, em conformidade com um catálogo preestabelecido. Essa ferramenta simula mudanças de confi guração, faz o rastreamento do histórico do sistema em todo o seu ciclo de vida e identifi ca se um código ainda produz o mesmo estado do software. Sua arquitetura é representada por três camadas (PUPPET, 2019): linguagem de configuração; camada de transação; camada de abstração de recursos. A camada de linguagem de configuração é uma interface com linguagem natural que o ser humano pode compreender, e não uma linguagem de pro- gramação ou de modelo de dados. Ela foi elaborada para facilitar a interação. Já a camada de transação é considerada o motor da ferramenta. Ela é responsável por interpretar e compilar a configuração, enviá-la para o agente, aplicá-la ao nó e relatar os resultados para o servidor. Tudo isso é feito por meio de um grafo que contém a lista de todos os recursos e de todos os seus relacionamentos. O grafo permite que a decisão seja ordenada para a aplicação da configuração com base nos relacionamentos configurados pelo adminis- trador da ferramenta (PUPPET, 2019). Finalmente, a camada de abstração de recursos simplifica o trabalho do administrador do sistema, que muitas vezes precisa lidar com diversos sistemas operacionais. Lembre-se de que cada sistema operacional gerencia arquivos, pacotes, processos e serviços em execução, programas, contas de usuários, grupos, entre outros elementos. A ferramenta Puppet compreende todos esses elementos como recursos. 11Ferramentas de gerenciamento de configuração de software Exemplo Alguns meses se passaram na Algoritmos Integrados Associados e o controle de versões começou a ter bons resultados. A equipe aumentava e sentia-se a necessidade de contratar um profi ssional para DevOps. Novamente, depois de reuniões, foi contratado um profi ssional com experiência na ferramenta Puppet. Sua função era trabalhar em tudo o que se referisse à infraestrutura de TI da Algoritmos Integrados. Um dos critérios utilizados para a implantação do Puppet foi a sua inte- gração com ferramentas de controle de versões, entre elas o Git. A equipe elaborou então um esquema básico (Figura 2) de como a integração se daria e do que seria prioritário no gerenciamento pelo novo integrante da equipe. Figura 2. Funcionalidades básicas do Puppet integrado a um gerenciador de versões Git ou SubVersion. Fonte: Adaptada de Puppet (2019, documento on-line). O Puppet é geralmente usado como cliente/servidor, de acordo com o ciclo de operação a seguir. Cada cliente, também conhecido como nó, tem um aplicativo (agente) instalado e em execução, que se conecta com o servidor periodicamente. O tempo é configurado, mas o padrão é que a conexão ocorra de 30 em 30 minutos. Ferramentas de gerenciamento de configuração de software12 Uma vez que atinja o tempo de sincronização, o nó envia a sua confi- guração atual compilada para o servidor. Cada configuração compilada é conhecida como “chamada de catálogo”. O resultado no ato da sincronização é relatado ao servidor, demonstrando se há ou não divergências entre ele e o cliente. A configuração do código do Puppet é armazenada num sistema de controle de versão como Git ou SubVersion. Um aspecto que a empresa considerou ao optar pelo Puppet foi a vasta lite- ratura, os tutoriais e principalmente o fato de saber que havia uma comunidade brasileira (Puppet–BR) engajada em disseminar conteúdos sobre a ferramenta. TeamCity: distribuição e integração A ferramenta TeamCity tem por fi nalidade gerenciar a distribuição da constru- ção de testes e a integração contínua. Ela possui compatibilidade com várias tecnologias, como Java, .NET, Docker, SubVersion, Git, JIRA, Octopus, entre outras. Também possui plug-ins de fácil confi guração para serviços de nuvem, como Aws, Azure, entre outros. Diferentemente do Git/GitHub e do Puppet, essa ferramenta possui dois tipos de licenças de uso: profissional (gratuita) e enterprise (paga/proprietária). Empresas pequenas podem iniciar a utilização pela versão profissional, uma vez que esta dá direito a 10 configurações de build. A persistência dos dados é feita por meio de um gerenciador de banco de dados MySQL, PostgreSQL, Oracle ou MS SQL. A TeamCity possui ainda uma wiki com muitos detalhes sobre todas as possibilidades de integração com outras ferramentas, seja por meio de APIs, XML ou JSON (KHALUSOVA, 2015). Um conceito muito importante para a ferramenta é o build, uma vez que o seu foco principal é justamente o gerenciamento das entregas das aplicações. Ao empacotar o software para distribuição por meio do TeamCity, você pode acionar o gerenciamento de disparo de comunicação para os integrantes da equipe por meio de e-mail, Slack, Telegram e outros plug-ins. À primeira vista, utilizar uma ferramenta de distribuição parece gerar um trabalho duplicado, porque o processo manual de implantação de software parece ser bem mais simples. No entanto, conforme a equipe de desenvolvi- mento torna-se maior, o TeamCity auxilia na distribuição de versões corretas e garante a rastreabilidade por meio de relatórios e métricas. A partir disso, é possível identificar problemas em testes e no próprio empacotamento do software para distribuição. 13Ferramentas de gerenciamento de configuração de software Exemplo Depois do sucesso alcançado com a implantação do Puppet e do Git como ferramentas de GCS na Algoritmos Integrados Associados, novamente, após exaustivas reuniões e defi nições, a equipe optou por implantar uma ferramenta para cuidar do empacotamento e da distribuição de seus aplicativos. A TeamCity foi a ferramenta escolhida depois de uma seleção minuciosa. O número de clientes aumentava e, consequentemente, cresciam os trabalhos de distribuição das aplicações, de acordo com todos os requisitos de entrega necessários. Embora a TeamCity se torne paga depois de determinado número de projetos, ainda sim a escolha foi vantajosa de acordo com a lista de requisitos. Logo, a equipe identificou que seria necessário elaborar um plano de boas práticas para o uso correto da ferramenta. Então, criou um pequeno manual de boas práticas, com os itens listados a seguir. Após a instalação do TeamCity, o administrador de configurações de software criará um repositório que conterá um projeto. O projeto poderá ser acessado e configurado num repositório manual ou em outro repositório, como no GitHub. Todo projeto receberá um Project ID preenchido automaticamente. Ele será um identificador para as configurações da própria ferramenta e gerará uma URL apontando para tal Project ID. Uma implantação futura será o Container Docker, pois ambos trabalham muito bem em conjunto. Sempre é necessária a realização de backups e a configuração de noti- ficações de builds para a geração de relatórios de controle. Outra parametrização importante na ferramenta é a implementação de medidas para a resolução de falhas nos builds. A integração com um sistema de controle de versão gera maior confia- bilidade nos artefatos gerados em cada build; nesse caso, o Git. Para maiores informações sobre conceitos, instalação e uso do TeamCity, siga corretamente os manuais e tutoriais disponibilizados pelo desenvolvedor. Mais agilidade nos processos de controle de versões, infraestrutura e distribuição garantiram resultados importantes à empresa, como maior produ-tividade dos desenvolvedores e maior confiabilidade na liberação de versões e aplicativos para seus clientes. Agora, a Algoritmos Integrados almeja alçar novos voos. Para isso, está estudando outros recursos, bibliotecas e frameworks que possam colaborar na automatização de suas ferramentas de GCS. Ferramentas de gerenciamento de configuração de software14 O Docker é uma plataforma (de código aberto) criada pelo Google para facilitar o processo de virtualização. Ele facilita a criação e a administração de ambientes para a disponibilização mais rápida de programas para os clientes. O Docker cria, testa e implementa aplicações num ambiente chamado container. O desenvolvedor empacota o seu aplicativo de forma padronizada e o disponibiliza para execução. Empacotar prevê colocar no container os códigos, as bibliotecas, algum runtime (se houver) e outras ferramentas necessárias para a execução do software. Saiba mais no link a seguir. https://qrgo.page.link/ihbS4 Como você viu, o mundo do gerenciamento de configuração de software é extremamente amplo. Assim, é importante que as equipes de desenvolvi- mento de software busquem periodicamente apoio e informações sobre novas plataformas, frameworks, bibliotecas e tudo mais que automatize o processo de configuração. ANSIBLE. [Site]. 2019. Disponível em: https://www.ansible.com/. Acesso em: 26 jun. 2019. ATLASSIAN. Jira software. c2019. Disponível em: https://www.atlassian.com/software/ jira/. Acesso em: 27 jun. 2019. BOURQUE, P.; FAIRLEY, R. E. D. (ed.). Swebok v3.0: guide to the software engineering body of knowledge. Piscataway: IEEE, 2014. Disponível em: https://ieeecs-media.computer. org/media/education/swebok/swebok-v3.pdf. Acesso em: 26 jun. 2019. CANONICAL LTD. Juju. c2018. Disponível em: https://jujucharms.com/. Acesso em: 27 jun. 2019. CFENGINE. [Site]. c2019. Disponível em: https://cfengine.com/. Acesso em: 26 jun. 2019. CHEF. [Site]. [2019]. Disponível em: https://www.chef.io/. Acesso em: 26 jun. 2019. CONFIGHUB. [Site]. c2018. Disponível em: https://www.confighub.com/. Acesso em: 26 jun. 2019. GIT. [Site]. [2019c]. Disponível em: https://git-scm.com/. Acesso em: 26 jun. 2019. 15Ferramentas de gerenciamento de configuração de software GIT. Primeiros passos: sobre controle de versão. [2019a]. Disponível em: https://git-scm. com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Vers%C3%A3o. Acesso em: 26 jun. 2019. GITHUB. [Site] c2019b. Disponível em: https://github.com/puppet-br/apostila-puppet/ releases. Acesso em: 26 jun. 2019. IBM. [Site]. [2019]. Disponível em: https://www.ibm.com/us-en/marketplace/rational- -clearcase. Acesso em: 26 jun. 2019. KHALUSOVA, M. Getting started with TeamCity. 2015. Disponível em: https://confluence. jetbrains.com/display/TCD9/Getting+Started+with+TeamCity. Acesso em: 26 jun. 2019. LEON, A. Software configuration management handbook. 3rd ed. Norwood: Artech House, 2015. OCTOPUS DEPLOY. [Site]. c2019. Disponível em: https://octopus.com. Acesso em: 27 jun. 2019. PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. PUPPET. [Site]. [2019]. Disponível em: http://puppet-br.org/. Acesso em: 26 jun. 2019. RUDDER. [Site]. 2019. Disponível em: http://www.rudder-project.org/. Acesso em: 27 jun. 2019. SALTSTACK. [Site]. c2018. Disponível em: https://www.saltstack.com/. Acesso em: 27 jun. 2019. SUBVERSION. Apache™ Subversion®. c2018. Disponível em: https://subversion.apache. org/. Acesso em: 27 jun. 2019. Leituras recomendadas FERNANDES, J. M. Metodologia para a implantação de gerência de configuração de software em empresas de médio porte. 2011. Dissertação (Mestrado em Computação Aplicada) – Centro de Ciências e Tecnologia, Universidade Estadual do Ceará, Rio de Janeiro, 2011. MUNDO DOCKER. [Site]. c2019. Disponível em: https://www.mundodocker.com.br/ tag/docker-brasil/. Acesso em: 27 jun. 2019. SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson, 2011. THE ITIL Open Guide. [2019]. Disponível em: https://www.itlibrary.org/. Acesso em: 27 jun. 2019. Ferramentas de gerenciamento de configuração de software16 DICA DO PROFESSOR Ferramentas de configuração de software geralmente são integradas com outros tipos de ferramentas ou plataformas. Isso ocorre porque muitas vezes não há possibilidade de se adquirir ferramentas que abordem todas as atividades da gestão de manutenção. Na Dica do Professor, a seguir, você vai compreender como a integração entre ferramentas de gestão de projetos, segundo metodologias ágeis, pode ser incorporada a ferramentas de configuração de software. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) O gerenciamento de configuração de software (GCS) é uma área que atua em conjunto com todo o ciclo de desenvolvimento de software. Ou seja, todas as etapas do desenvolvimento estão cobertas pelo GCS. Mas há um processo que recebe mais informações e resultados provenientes do GCS. Qual é esse processo dentro do ciclo de vida do desenvolvimento de software? A) O GCS serve de alicerce principalmente para o processo de requisitos. B) O GCS gera excelente alinhamento com o planejamento do projeto. C) O GCS alicerça, em especial, o processo de gerência de qualidade de software. D) O GCS serve como base para a adoção de ferramentas de infraestrutura. E) O GCS alicerça, em especial, a fase de empacotamento e entrega do software. 2) As ferramentas que automatizam os processos de GCS estão divididas em subáreas. Cada subárea apresenta atividades que estabelecem o controle de versões, de avaliação de conformidade dos produtos, das definições e uso de ferramentas, entre outras tantas atividades. Quais são as principais atividades da subárea de gestão de versões e distribuição? A) A gestão de controle de versões e distribuição garante o controle das versões do código, bem como o empacotamento e a implantação dos aplicativos. B) A gestão de controle de versões e distribuição é responsável pelos testes dos códigos e correção de erros. C) A gestão de controle de versões e distribuição é responsável pela conformidade dos códigos e sua regulamentação. D) A gestão de controle de versões e distribuição controla a correção de defeitos e erros durante o processo de desenvolvimento de software. E) A gestão de controle de versões e distribuição testa a versão final dos códigos antes da distribuição, bem como aponta suas possíveis falhas. 3) As ferramentas de GCS automatizam várias atividades do processo de mudança, como, por exemplo, o versionamento de código, o empacotamento e a distribuição do software, documentos, entre outros itens de configuração. Todas as ferramentas de GCS existentes, tanto de código aberto quanto proprietárias, suprem todas as necessidades de quaisquer tipos de projetos? Qual a justificativa para tal resposta? A) Sim. Todas as ferramentas de GCS existentes conseguem automatizar exatamente todas as necessidades do processo de qualquer tipo de projeto ou empresa, conseguindo otimizar todas as atividades. Não. Somente as ferramentas proprietárias conseguem automatizar exatamente todas as B) necessidades do processo de qualquer tipo de projeto, devido ao custo de desenvolvimento de tais ferramentas. C) Sim. Todas as ferramentas existentes, tanto de código aberto quanto proprietárias, têm características que podem ser estudadas e alinhadas a qualquer tipo de projeto. D) Não. Somente ferramentas customizadas de acordo com metodologias de GCS conseguem dar o devido suporte, pois são construídas para suprir todas as atividades do processo de desenvolvimento. E) Não. Muitas empresas optam por desenvolver ferramentas totais ou complementares porque não conseguem alinhar a automação do processo de GCS somente com ferramentas existentes (código aberto ou pagas). 4) As ferramentas de GCS existentes podem ser de código aberto ou proprietárias. As ferramentas proprietáriascomercializam a licença de uso, garantindo sua propriedade intelectual. Para empresas de pequeno porte, qual o tipo de ferramenta de GCS que mais adequada e quais os motivos? A) Empresas de pequeno porte podem optar por quaisquer tipos de ferramentas de GCS, e não há nenhuma restrição, seja ela financeira, seja de complexidade do processo. B) Empresas de pequeno porte só podem optar por ferramentas de GCS de código aberto porque nunca têm orçamento suficiente para a adoção de ferramentas proprietárias. C) Empresas de pequeno porte podem optar por quaisquer tipos de ferramentas de GCS; no entanto, as ferramentas de código aberto geralmente são as mais adotadas porque não há necessidade de desembolso financeiro para sua adoção. D) Empresas de pequeno porte optam por ferramentas de GCS de código aberto porque a complexidade dos projetos é mínima, e eles geralmente são bem atendidos. E) Empresas de pequeno porte não utilizam nenhum tipo de ferramenta de GCS. 5) Há um número grande de ferramentas de GCS existentes, além de outras que são desenvolvidas para serem mais adequadas à complexidade do processo de GCS das empresas e dos projetos. Pensando nisso, quando uma empresa opta por ferramentas de GCS existentes, é aconselhável que adote no máximo quantas? A) O ideal é que se adotem, no máximo, sete ferramentas de GCS que tenham alguma forma de integração. B) Nunca mais de três ferramentas de GCS, para que se possa ter uma gestão menos burocrática e mais efetiva. C) Quando for necessário utilizar mais do que três ferramentas existentes, aconselha-se que seja desenvolvida internamente a ferramenta de GCS. D) Tudo dependerá do orçamento previsto para a adoção das ferramentas de GCS, observando-se, no máximo, nove ferramentas diferentes. E) Não há número máximo de ferramentas a serem utilizadas. O importante é que todas as ferramentas adotadas possam ser integradas. NA PRÁTICA Quanto mais completas forem as ferramentas de configuração de software, mais informações referentes ao mesmo projeto você terá em um único repositório. Por que isso é interessante? Gera maior confiabilidade e integralidade das informações da gestão de mudanças. Bitbucket é uma ferramenta que abrange várias atividades do gerenciamento de configuração de software, além de fazer integração com outras ferramentas, tanto de configuração quanto de gerenciamento de projetos. Com ela, é possível gerenciar várias equipes, para vários projetos, gerando um repositório rico de informações de rastreabilidade, versões corretas, testes elaborados e acompanhamento de todos os aplicativos enviados aos clientes. Na Prática, você irá conhecer um pouco sobre as funcionalidades e as características da ferramenta Bitbucket. Conteúdo interativo disponível na plataforma de ensino! SAIBA MAIS Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Avaliação de integração de sistemas webclonados Leia esta dissertação de Mestrado, que trata da importância do gerenciamento da configuração de software. Conteúdo interativo disponível na plataforma de ensino! Uma ferramenta de gerência de configuração integrada a um ambiente de desenvolvimento de software Este artigo demonstra o uso de gerenciamento de configuração integrado a um ambiente de desenvolvimento de software baseado em ontologias. Conteúdo interativo disponível na plataforma de ensino! Sete ferramentas para criar uma cultura eficiente de DevOps Este artigo traz um conteúdo específico para ferramentas de gerência de configuração de software ligadas à infraestrutura, o que auxilia as atividades do profissional de DevOps. Conteúdo interativo disponível na plataforma de ensino! MPS.BR — melhoria de processo do software brasileiro Confira o guia completo do Modelo MPS, que especifica exatamente como o uso dos processos de configuração de software atua em cada nível de maturidade desse processo de gestão de qualidade de software. Conteúdo interativo disponível na plataforma de ensino! Integração contínua e testes automatizados com Selenium e Azure DevOps — Milton Câmara Gomes Este vídeo traz um conteúdo muito interessante sobre ferramenta de configuração de software, com foco na área de testes automatizados. As ferramentas utilizadas são Selenium e Azure DevOps. Conteúdo interativo disponível na plataforma de ensino!
Compartilhar