Prévia do material em texto
<p>107</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Unidade III</p><p>5 ESCALANDO O ÁGIL E FERRAMENTAS DE SUPORTE</p><p>Escalar o ágil em grandes organizações representa um desafio significativo, uma vez que os princípios</p><p>e as práticas que funcionam bem em pequenas equipes nem sempre se traduzem facilmente para um</p><p>contexto de larga escala.</p><p>No contexto das metodologias ágeis, escalar refere‑se ao processo de expandir as práticas ágeis de</p><p>uma equipe, ou um conjunto pequeno delas, para um número maior de equipes, abrangendo muitas</p><p>vezes toda a organização. Esse processo é necessário quando uma empresa deseja aplicar os princípios</p><p>e as práticas ágeis em projetos de maior envergadura, que envolvem múltiplas equipes e exigem</p><p>coordenação e integração eficientes para garantir a entrega contínua de valor ao cliente.</p><p>Embora as metodologias ágeis, como Scrum e Kanban, tenham sido originalmente desenvolvidas</p><p>para pequenos projetos e equipes, suas vantagens em termos de flexibilidade, capacidade de resposta</p><p>e melhoria contínua incentivaram muitas organizações a tentar aplicá‑las em projetos maiores. Em</p><p>pequenos projetos, as equipes ágeis podem facilmente se comunicar, colaborar e ajustar suas práticas</p><p>conforme necessário. No entanto, à medida que o número de equipes e a complexidade do projeto</p><p>aumentam, surgem desafios significativos, como a coordenação de esforços entre várias equipes, a</p><p>gestão de dependências e a integração de entregas.</p><p>Para abordar esses desafios, surgiram vários frameworks ágeis destinados especificamente a escalar</p><p>práticas ágeis. Entre eles, destacam‑se: SAFe, LeSS, Nexus e DAD. Cada um desses frameworks oferece</p><p>uma abordagem estruturada para aplicar princípios ágeis em larga escala.</p><p>Além deles, ferramentas digitais desempenham um papel crucial na facilitação da colaboração e</p><p>gestão de projetos em um ambiente ágil, especialmente quando se trata de grandes equipes distribuídas</p><p>geograficamente. Plataformas como Jira, Trello e Asana são amplamente utilizadas para gerenciar</p><p>tarefas, rastrear progresso e facilitar a comunicação entre membros da equipe. O Jira, por exemplo,</p><p>é conhecido por sua capacidade robusta de personalização e integração, permitindo que as equipes</p><p>adaptem o fluxo de trabalho às suas necessidades específicas. O Trello, com sua interface visual baseada</p><p>em cartões, é ideal para a gestão de tarefas de maneira intuitiva, enquanto a Asana proporciona uma</p><p>visão clara das responsabilidades e prazos, promovendo a transparência e responsabilidade entre os</p><p>membros da equipe.</p><p>A automação e as ferramentas para CI/CD são essenciais para manter a qualidade e a velocidade</p><p>de entrega de software em um ambiente ágil. Ferramentas como Jenkins, GitLab CI e CircleCI permitem</p><p>que os desenvolvedores integrem e testem continuamente o código, detectando e corrigindo erros</p><p>rapidamente, antes que eles se tornem problemas maiores. Essas ferramentas automatizam grande</p><p>108</p><p>Unidade III</p><p>parte do processo de desenvolvimento, desde a integração do código até a implantação em ambientes</p><p>de produção, reduzindo significativamente o tempo de ciclo e aumentando a eficiência.</p><p>A seleção e adaptação de ferramentas para equipes ágeis deve ser feita com cuidado, levando em</p><p>consideração as necessidades específicas da equipe e da organização. É importante uma avaliação</p><p>cuidadosa das funcionalidades das ferramentas, sua capacidade de integração com outras soluções</p><p>existentes e a facilidade de uso.</p><p>Além disso, as equipes devem estar abertas a adaptar suas práticas e fluxos de trabalho à medida que</p><p>aprendem mais sobre como utilizar essas ferramentas de maneira eficaz. A adoção de uma abordagem</p><p>iterativa, em que as ferramentas são testadas e ajustadas com base no feedback contínuo da equipe,</p><p>pode ajudar a garantir que elas realmente suportam e melhoram as práticas ágeis, em vez de se tornarem</p><p>um obstáculo.</p><p>5.1 Métodos para escalar ágil em grandes organizações (SAFe, LeSS, Nexus)</p><p>Um dos métodos mais amplamente adotados para alcançar o objetivo da escala ágil em grandes</p><p>organizações é o Scaled Agile Framework (SAFe), que foi desenvolvido para ajudar organizações a</p><p>aplicar práticas ágeis em larga escala, garantindo que possam manter a agilidade e a capacidade de</p><p>responder rapidamente às mudanças, mesmo em contextos complexos e dinâmicos (Leffingwell, 2018).</p><p>Este framework oferece uma abordagem estruturada para a coordenação e alinhamento de múltiplas</p><p>equipes ágeis, promovendo a entrega CD e a melhoria contínua.</p><p>O SAFe é composto por quatro níveis principais: Equipe, Programa, Grande Solução (Large Solution)</p><p>e Portfólio. Cada nível contém um conjunto de papéis, responsabilidades, eventos e artefatos específicos</p><p>que ajudam a facilitar a coordenação e a integração das equipes.</p><p>No nível de Equipe, as práticas ágeis tradicionais, como Scrum e Kanban, são aplicadas a equipes</p><p>individuais, que operam em ciclos curtos e iterativos (sprints ou iterações). Essas equipes são responsáveis</p><p>por entregar incrementos de valor regularmente, trabalhando de maneira colaborativa e autônoma.</p><p>No nível de Programa, o SAFe introduz o conceito de Agile Release Train (ART), que é um conjunto</p><p>de equipes alinhadas em torno de um objetivo comum e que trabalham juntas para entregar soluções</p><p>incrementais. Cada ART é composta por várias equipes ágeis que sincronizam seus esforços através de</p><p>eventos de planejamento de PI (Program Increment). Esses eventos de planejamento são realizados</p><p>em intervalos regulares, geralmente a cada 8 a 12 semanas, e ajudam a alinhar todas as equipes em</p><p>torno de um plano de ação comum, garantindo que todos estejam trabalhando em direção aos mesmos</p><p>objetivos estratégicos.</p><p>O nível de Grande Solução é aplicável a organizações que trabalham em soluções particularmente</p><p>complexas e de grande escala, que exigem a coordenação de múltiplos ARTs. Esse nível introduz papéis</p><p>adicionais, como o Solution Train Engineer, que facilita a integração e a coordenação entre diferentes</p><p>ARTs, garantindo que todas as partes da solução sejam desenvolvidas de maneira coesa e integrada.</p><p>109</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>No nível de Portfólio, o SAFe ajuda a alinhar os investimentos estratégicos da organização com seus</p><p>objetivos de negócio, garantindo que os recursos sejam alocados de maneira eficiente e que as iniciativas</p><p>de maior valor sejam priorizadas. Esse nível utiliza práticas como Lean Portfolio Management (LPM)</p><p>e implementa Kanban em nível de portfólio para gerenciar o fluxo de trabalho estratégico. Ele também</p><p>promove a governança e a transparência, permitindo que a organização tome decisões informadas</p><p>sobre onde investir seus recursos.</p><p>O LPM é uma abordagem essencial dentro do SAFe (Rupp, 2020) que visa alinhar as estratégias e os</p><p>investimentos de uma organização com suas práticas ágeis, promovendo uma gestão eficiente e eficaz</p><p>dos recursos e iniciativas. Ele se concentra em garantir que os portfólios de projetos estejam diretamente</p><p>ligados aos objetivos estratégicos da organização, utilizando princípios lean e ágeis para otimizar o fluxo</p><p>de valor e maximizar a eficiência.</p><p>Em termos estruturais, o LPM é fundamentado em torno de três áreas principais: estratégia e</p><p>financiamento de investimentos, operações de portfólio lean e governança lean. Cada uma dessas</p><p>áreas desempenha um papel essencial na criação de um portfólio de projetos que seja ágil, responsivo</p><p>e alinhado às prioridades da organização.</p><p>A área de estratégia e financiamento de investimentos foca em conectar a estratégia da</p><p>organização com as iniciativas de portfólio. Esse processo envolve a definição de temas estratégicos</p><p>que guiam o direcionamento dos investimentos e a alocação de recursos. O financiamento lean é</p><p>fundamental aqui, pois permite que as decisões de financiamento sejam feitas de modo contínuo</p><p>e dinâmico, em vez de depender de ciclos anuais rígidos. Isso garante que os investimentos possam ser</p><p>ajustados rapidamente em resposta às mudanças no mercado ou nas prioridades da empresa.</p><p>Operações</p><p>e entendermos o contexto de aplicação dessas ferramentas,</p><p>considerando os fatores descritos no quadro apresentado. A partir disso e para ilustrar melhor</p><p>como utilizá‑las, vamos criar, a seguir, quatro cenários de aplicação.</p><p>Exemplo 1</p><p>Desenvolvimento de um aplicativo web para uma startup de tecnologia</p><p>Imaginemos que uma startup de tecnologia está desenvolvendo um novo aplicativo web que</p><p>visa revolucionar a forma como os usuários interagem com a mídia social. Para gerenciar este</p><p>projeto, a equipe decide utilizar um conjunto de ferramentas que suportam metodologias ágeis e</p><p>promovem a automação de processos de desenvolvimento e implantação.</p><p>Ainda sobre o gerenciamento do projeto, a equipe escolhe usar o Jira, devido à sua flexibilidade</p><p>e capacidade de personalização. A plataforma escolhida permite que a equipe configure fluxos</p><p>de trabalho específicos, acompanhe tarefas detalhadamente e integre‑se facilmente com outras</p><p>ferramentas que eles planejam usar. A interface rica e os recursos de relatórios do Jira também são</p><p>cruciais para manter o projeto no caminho certo e identificar rapidamente quaisquer problemas.</p><p>O código‑fonte do projeto será gerido com Git, devido à sua popularidade e eficiência no</p><p>controle de versão distribuído. Assim, a equipe hospeda seus repositórios no GitHub, aproveitando</p><p>a interface amigável e as integrações poderosas. Além disso, ele facilita a colaboração através de</p><p>pull requests, em que os desenvolvedores podem revisar e discutir mudanças antes de integrá‑las</p><p>ao código principal.</p><p>135</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Para CI/CD, a equipe optou pelo Jenkins, pois a extensibilidade e a automação robusta da</p><p>plataforma permitem que eles configurem pipelines complexos que cobrem desde a construção</p><p>do código até sua implantação em ambientes de teste e produção. O Jenkins se integra bem com</p><p>GitHub, automatizando os builds e testes sempre que há novos commits.</p><p>Durante o desenvolvimento do projeto, a equipe utilizou o Selenium para automação de testes</p><p>funcionais, pois ele é um framework ideal para testar a interface do usuário do aplicativo web</p><p>em vários navegadores, garantindo que ele funcione conforme esperado para todos os usuários.</p><p>Os testes unitários, por sua vez, serão realizados com o JUnit, que se integra perfeitamente com</p><p>a pipeline de Jenkins para garantir que todas as funções básicas do código sejam verificadas</p><p>automaticamente.</p><p>Para conteinerização, a plataforma Docker foi a escolha da equipe, pois permite que o aplicativo</p><p>seja empacotado com todas as suas dependências em contêineres isolados, garantindo que ele</p><p>funcione da mesma forma em diferentes ambientes. A orquestração de contêineres é gerida com</p><p>Kubernetes, proporcionando escalabilidade e gestão eficiente dos contêineres em produção.</p><p>Exemplo 2</p><p>Sistema de monitoramento de infraestrutura para uma grande empresa de telecomunicações</p><p>Consideremos agora uma grande empresa de telecomunicações que está implementando um</p><p>sistema de monitoramento de infraestrutura para garantir a alta disponibilidade e o desempenho</p><p>de seus serviços críticos. Este projeto requer uma combinação de ferramentas robustas para</p><p>monitoramento, análise de logs e automação de configuração.</p><p>Para o monitoramento de redes e sistemas, a empresa escolheu o Nagios. A alta customização</p><p>e a comunidade ativa dele permitem que a equipe configure a ferramenta para monitorar uma</p><p>ampla gama de dispositivos e serviços, alertando imediatamente quando são detectados problemas.</p><p>O Nagios é complementado pelo Prometheus, que fornece monitoramento e alerta de sistemas e</p><p>serviços com alta escalabilidade e integração nativa com Kubernetes, essencial para o ambiente de</p><p>contêineres da empresa.</p><p>Os dados de logs são coletados e analisados com o Elasticsearch e visualizados através do</p><p>Kibana. O Elasticsearch foi escolhido por sua alta performance e capacidade de lidar com grandes</p><p>volumes de dados, permitindo buscas rápidas e análises detalhadas. OKibana, por sua vez, oferece</p><p>dashboards interativos que facilitam a visualização e interpretação dos dados, ajudando a equipe</p><p>a identificar tendências e problemas emergentes rapidamente.</p><p>Para a automação da configuração e gestão de infraestrutura, a empresa utiliza o Ansible,</p><p>pois a simplicidade e o fato de não exigir agentes tornam‑no uma escolha ideal para gerenciar</p><p>a configuração de servidores e serviços em todo o ambiente da empresa. O Ansible facilita a</p><p>automação de tarefas repetitivas e a aplicação de configurações consistentes, garantindo que</p><p>todos os sistemas estejam configurados de acordo com os padrões corporativos.</p><p>136</p><p>Unidade III</p><p>Finalmente, para visualização e criação de dashboards de métricas, a empresa usa a Grafana, que</p><p>se integra perfeitamente com o Prometheus e Elasticsearch, permitindo a criação de dashboards</p><p>personalizados que oferecem insights detalhados sobre o estado e o desempenho da infraestrutura.</p><p>Exemplo 3</p><p>Plataforma de comércio eletrônico para uma empresa de varejo</p><p>Agora, imaginemos que uma empresa de varejo está desenvolvendo uma nova plataforma de comércio</p><p>eletrônico para melhorar a experiência de compra de seus clientes. Este projeto envolve várias equipes</p><p>trabalhando em funcionalidades diferentes, exigindo uma abordagem colaborativa e bem organizada.</p><p>Para o gerenciamento de projetos, a empresa optou pelo Trello, pois sua interface intuitiva e a</p><p>facilidade de uso são ideais para organizar as tarefas e acompanhar o progresso de cada equipe. As listas</p><p>e cartões que compõem o layout da plataforma permitem uma visualização clara das etapas do projeto,</p><p>facilitando a comunicação e a colaboração entre os membros da equipe.</p><p>O controle de versão é gerido com o Git e os repositórios são hospedados no GitLab, que não só</p><p>oferece controle de versão, como integra CI/CD, o que permite à equipe automatizar os processos de</p><p>construção, teste e implantação do código. A plataforma DevOps completa do GitLab é utilizada para</p><p>gerenciar todo o ciclo de vida do desenvolvimento do projeto, desde o planejamento até a implantação</p><p>e monitoramento.</p><p>Para construção e gerenciamento de dependências do projeto, a equipe utiliza Maven, pois facilita</p><p>a automação das construções, garantindo que todas as dependências sejam resolvidas corretamente e</p><p>que o projeto possa ser construído de maneira consistente em diferentes ambientes.</p><p>Os testes de interface são realizados com o Selenium, garantindo que a plataforma funcione</p><p>corretamente em diversos navegadores e dispositivos. Já os testes unitários são geridos com JUnit,</p><p>integrando‑se ao pipeline do GitLab para assegurar que todas as funcionalidades básicas sejam testadas</p><p>automaticamente a cada nova mudança de código.</p><p>Para a conteinerização da aplicação, o Docker é utilizado, permitindo que cada componente</p><p>da plataforma de comércio eletrônico seja isolado em contêineres, o que facilita a implantação e a</p><p>escalabilidade. Além disso, o Kubernetes foi escolhido para orquestrar esses contêineres, garantindo que</p><p>a aplicação possa escalar de acordo com a demanda e mantendo a alta disponibilidade.</p><p>Finalmente, para o monitoramento e a visualização, a empresa usa o Prometheus e a Grafana.</p><p>O Prometheus por coletar métricas detalhadas sobre o desempenho e o estado dos serviços, e a Grafana</p><p>por oferecer dashboards interativos que permitem à equipe de operações monitorar a plataforma em</p><p>tempo real e reagir rapidamente a quaisquer problemas que surjam.</p><p>137</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Exemplo 4</p><p>Desenvolvimento de uma plataforma de serviços de saúde digital</p><p>Por fim, consideremos uma empresa de tecnologia da saúde que está desenvolvendo uma nova</p><p>plataforma de serviços de saúde digital, que visa conectar pacientes e profissionais de saúde, oferecendo</p><p>consultas virtuais, agendamento de exames e acesso a registros médicos. O projeto envolve várias</p><p>equipes de desenvolvimento, cada uma focada em diferentes aspectos da plataforma, como interface</p><p>do usuário, back‑end, segurança de dados e integração com sistemas</p><p>de saúde existentes. Para garantir</p><p>um desenvolvimento ágil, colaborativo e de alta qualidade, a empresa selecionou um conjunto de</p><p>ferramentas robustas e bem integradas.</p><p>Para o gerenciamento do projeto, a empresa escolheu o Jira devido à sua flexibilidade e capacidade</p><p>de personalização. A integração do Jira com outras ferramentas facilita a gestão coesa do projeto e</p><p>permite uma visão abrangente do status e do progresso de cada tarefa.</p><p>O controle de versão também é gerido com o Git e os repositórios são hospedados no GitLab, usando</p><p>GitLab CI para a CI/CD. A escolha de GitLab CI, que já integra o Git como controle de versão, oferece</p><p>uma solução coesa e simplificada para gerenciamento de código, pipelines de CI/CD e automação de</p><p>processos. Além disso, o GitLab CI permite configurar pipelines de construção, teste e implantação,</p><p>assegurando que cada mudança no código seja validada automaticamente antes de ser integrada ao</p><p>projeto principal.</p><p>Para a construção do projeto, a equipe utiliza o Maven. Ele é especialmente importante para a gestão</p><p>de dependências e automação de construções em projetos Java, que é a linguagem principal utilizada</p><p>no back‑end da plataforma. O Maven oferece também um gerenciamento eficiente de dependências e</p><p>integração perfeita com GitLab CI, permitindo a execução automática de builds e testes, sempre que há</p><p>novas mudanças no código.</p><p>No que se refere aos testes, a equipe adota Selenium e JUnit. O Selenium é utilizado para automação</p><p>de testes funcionais da interface do usuário, garantindo que a plataforma de saúde funcione corretamente</p><p>em diferentes navegadores e dispositivos, e o JUnit é empregado para testes unitários, essenciais para</p><p>verificar a lógica do código em pequenas unidades, garantindo que cada parte funcione isoladamente</p><p>conforme esperado. Ambos os frameworks de teste são integrados nos pipelines do GitLab CI,</p><p>assegurando que os testes sejam executados automaticamente a cada commit.</p><p>Para a conteinerização e a orquestração, Docker e Kubernetes foram os escolhidos. O Docker</p><p>permite que cada componente da aplicação seja empacotado com todas as suas dependências em</p><p>contêineres isolados, garantindo consistência entre os ambientes de desenvolvimento, teste e produção;</p><p>e o Kubernetes é utilizado para orquestrar esses contêineres, proporcionando escalabilidade, alta</p><p>disponibilidade e gestão eficiente dos recursos. A escolha de Kubernetes facilita a gestão de implantações</p><p>complexas e a automação do escalonamento e recuperação de falhas, assegurando que a plataforma</p><p>possa lidar com variações na carga de trabalho de modo eficiente.</p><p>138</p><p>Unidade III</p><p>Por fim, para monitoramento e visualização, a empresa optou pelo Prometheus e a Grafana, pois esta</p><p>combinação permite monitorar a saúde da aplicação em tempo real, identificar problemas rapidamente</p><p>e tomar ações corretivas antes que afetem os usuários finais. A integração entre Prometheus e Grafana</p><p>proporciona uma solução de monitoramento robusta e personalizável.</p><p>Os quatros cenários apresentados demonstram como um mix adequado de ferramentas pode</p><p>ser escolhido e justificado com base nas necessidades específicas de diferentes tipos de projetos de</p><p>desenvolvimento de software ágil. Cada conjunto de ferramentas é selecionado para maximizar a</p><p>eficiência, a colaboração e a automação, garantindo o sucesso dos projetos em diferentes contextos.</p><p>Para um iniciante no desenvolvimento de software ágil, é fundamental começar com um conjunto</p><p>básico de ferramentas, que são essenciais para entendermos conceitos e práticas fundamentais. Desse</p><p>modo, no quadro a seguir, recomendamos uma lista de ferramentas iniciais, juntamente com uma breve</p><p>explicação de cada uma. É importante testarmos e conhecermos mais essas ferramentas, que darão</p><p>uma base sólida para quem está iniciando seus estudos sobre o desenvolvimento de software ágil e as</p><p>práticas de DevOps.</p><p>Quadro 7 – Ferramentas básicas para iniciantes</p><p>Git</p><p>Propósito: controle de versão distribuído</p><p>Por que usar? O Git é a ferramenta fundamental para controle de</p><p>versão, permitindo rastrear mudanças no código, colaborar com outros</p><p>desenvolvedores e reverter para versões anteriores quando necessário</p><p>Como começar: instale o Git no seu computador e crie um repositório local.</p><p>Familiarize‑se com comandos básicos como git init, git add, git commit, git</p><p>push e git pull</p><p>GitHub</p><p>Propósito: hospedagem de repositórios Git e colaboração</p><p>Por que usar? O GitHub oferece uma interface web para gerenciar repositórios</p><p>Git, revisar código e colaborar com outros desenvolvedores. É amplamente</p><p>usado na indústria</p><p>Como começar: crie uma conta no GitHub e um repositório. Depois, explore</p><p>funcionalidades como pull requests, issues e GitHub Pages</p><p>Visual Studio</p><p>Community</p><p>Propósito: IDE para desenvolvimento em C# e ASP.NET</p><p>Por que usar? O Visual Studio Community é uma IDE poderosa e completa que</p><p>oferece ferramentas específicas para desenvolvimento .NET, incluindo suporte a</p><p>depuração, design de UI, integração com Git e muito mais</p><p>Como começar: instale o Visual Studio Community e crie um novo projeto</p><p>ASP.NET. Explore as funcionalidades de depuração, design de UI e integração</p><p>com Git</p><p>Docker</p><p>Propósito: conteinerização de aplicações</p><p>Por que usar? O Docker permite empacotar aplicações e suas dependências</p><p>em contêineres, garantindo que funcionem da mesma maneira em</p><p>diferentes ambientes</p><p>Como começar: instale o Docker e familiarize‑se com comandos básicos como</p><p>docker build, docker run, docker ps e docker‑compose</p><p>139</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Jenkins</p><p>Propósito: CI/CD</p><p>Por que usar? O Jenkins automatiza a construção, teste e implantação de</p><p>aplicações, promovendo práticas de CI/CD</p><p>Como começar: instale o Jenkins no seu computador ou use uma versão</p><p>em nuvem. Crie um pipeline simples que automatize a construção e teste de</p><p>um projeto</p><p>xUnit ou JUnit</p><p>Propósito: testes unitários</p><p>Por que usar? O xUnit é amplamente utilizado para escrever e executar</p><p>testes unitários em projetos .NET, ajudando a garantir que o código funcione</p><p>conforme esperado. JUnit é usado para projetos com Java</p><p>Como começar: adicione xUnit ao seu projeto .NET (ou JUnit ao seu projeto</p><p>Java) e escreva alguns testes unitários simples. Integre os testes com Jenkins</p><p>para execução automática</p><p>À medida que um iniciante ganha mais experiência, ele pode explorar ferramentas mais avançadas</p><p>e integrar outras conforme necessário. Considerando isso, na figura a seguir oferecemos alguns passos</p><p>adicionais para apoiar o processo inicial em desenvolvimento de projetos.</p><p>Instale todas as ferramentas que considerar relevante.</p><p>A maioria daquelas que foram apresentadas no quadro</p><p>anterior tem instaladores fáceis de usar e boa documentação</p><p>Configure o Visual Studio Community para que funcione</p><p>bem com Git e Docker</p><p>Configuração</p><p>do ambiente</p><p>Siga tutoriais oficiais e cursos on‑line para cada ferramenta.</p><p>A documentação oficial geralmente oferece guias de início</p><p>rápido que são muito úteis</p><p>Existem muitos tutoriais no YouTube e plataformas de aprendizado</p><p>como Coursera, Udemy e Pluralsight que podem ajudar</p><p>Tutoriais e</p><p>documentação</p><p>Comece com projetos simples, como um site estático ou uma</p><p>aplicação web básica em ASP.NET</p><p>Use Git para versionar o código, Docker para criar</p><p>contêineres de desenvolvimento e Jenkins para configurar</p><p>pipelines de CI/CD</p><p>Prática com</p><p>projetos simples</p><p>Junte‑se a fóruns e comunidades on‑lines, como Stack Overflow,</p><p>GitHub Discussions e fóruns específicos de cada ferramenta</p><p>Contribua para projetos open‑source ou crie seus próprios</p><p>repositórios no GitHub</p><p>Participação na</p><p>comunidade</p><p>Experimente diferentes ferramentas e descubra quais</p><p>funcionam melhor para o seu fluxo de trabalho</p><p>Aprenda a integrar essas ferramentas para automatizar o</p><p>máximo possível do seu processo de desenvolvimento</p><p>Experimentação</p><p>e aprendizado</p><p>contínuo</p><p>Figura 25 – Orientações adicionais para iniciantes</p><p>140</p><p>Unidade III</p><p>6 TENDÊNCIAS FUTURAS EM TECNOLOGIA E GESTÃO DE PROJETOS</p><p>No contexto do</p><p>desenvolvimento de software ágil, as tendências futuras em tecnologia e gestão de</p><p>projetos apresentam um panorama dinâmico e transformador, impulsionado por inovações tecnológicas</p><p>e mudanças nos modos de trabalho. Entre as principais tendências, destaca‑se a evolução dos paradigmas</p><p>DevOps e NoOps.</p><p>DevOps, que combina desenvolvimento e operações em uma abordagem colaborativa e contínua,</p><p>tem ganhado tração ao promover integração, automação e monitoramento contínuos em todo o ciclo</p><p>de vida do software. Essa prática tem demonstrado eficiência na redução de tempo de entrega e na</p><p>melhoria da qualidade dos produtos.</p><p>No entanto, a evolução para NoOps, na qual a automação é levada ao extremo a ponto de eliminar</p><p>a necessidade de uma equipe de operações tradicional, começa a emergir. O NoOps visa um ambiente</p><p>no qual a infraestrutura é autogerida e a intervenção humana é mínima, permitindo que as equipes de</p><p>desenvolvimento se concentrem exclusivamente na criação de valor e inovação.</p><p>A IA e o machine learning (ML) também estão revolucionando a gestão de projetos. Essas tecnologias</p><p>permitem a análise preditiva e prescritiva, fornecendo insights valiosos sobre o andamento dos projetos,</p><p>identificando riscos potenciais e recomendando ações corretivas de maneira proativa.</p><p>Ferramentas baseadas em IA podem automatizar tarefas rotineiras, como o acompanhamento de</p><p>prazos e a alocação de recursos, além de melhorar a tomada de decisões estratégicas, através da análise</p><p>de grandes volumes de dados históricos e em tempo real. Assim, a capacidade da IA e da ML de aprender</p><p>e adaptar‑se às nuances de cada projeto pode resultar em uma gestão mais eficiente e personalizada,</p><p>otimizando recursos e maximizando a produtividade.</p><p>O trabalho remoto e a gestão de equipes distribuídas são outras tendências que têm ganhado</p><p>destaque pelas circunstâncias globais recentes. A capacidade de trabalhar remotamente não apenas</p><p>ampliou o pool de talentos disponível para as empresas, permitindo a contratação de profissionais</p><p>qualificados independentemente de sua localização geográfica, mas também desafiou as práticas</p><p>tradicionais de gestão.</p><p>A comunicação e a colaboração eficazes em equipes distribuídas exigem o uso de ferramentas</p><p>digitais avançadas e práticas de gestão adaptativas. Softwares de videoconferência, plataformas de</p><p>colaboração em tempo real e ferramentas de gestão de projetos on‑line tornaram‑se essenciais para</p><p>garantir que as equipes permaneçam alinhadas e produtivas. Além disso, a gestão de equipes remotas</p><p>demanda uma liderança que valorize a flexibilidade, a confiança e a autonomia, incentivando uma</p><p>cultura de transparência e responsabilidade.</p><p>141</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Como essas tendências continuam a se desenvolver, o futuro da tecnologia e da gestão de projetos</p><p>no contexto ágil promete ser caracterizado por mais automação, inteligência e flexibilidade. A integração</p><p>de DevOps e NoOps, juntamente com o uso crescente de IA e ML, permitirá, então, que as empresas</p><p>entreguem softwares de alta qualidade de modo mais rápido e eficiente.</p><p>Ao mesmo tempo, a adaptação às novas realidades do trabalho remoto e das equipes distribuídas</p><p>garantirá que as organizações possam atrair e reter os melhores talentos, mantendo‑se competitivas em</p><p>um mercado globalizado. A evolução contínua dessas práticas e tecnologias redefinirá o modo como os</p><p>projetos são concebidos, geridos e executados, pavimentando o caminho para um futuro mais inovador</p><p>e adaptável.</p><p>6.1 DevOps e NoOps</p><p>Antes do surgimento do DevOps, o mundo ágil já havia promovido mudanças significativas no</p><p>desenvolvimento de software, priorizando a colaboração, a flexibilidade e a entrega contínua de valor</p><p>aos clientes. As metodologias ágeis, como Scrum e Kanban, enfatizavam ciclos de desenvolvimento</p><p>curtos e iterativos, feedbacks frequentes dos clientes e a capacidade de responder rapidamente às</p><p>mudanças nos requisitos. Essas práticas transformaram o modo como as equipes de desenvolvimento</p><p>trabalhavam, aumentando a eficiência e a satisfação dos clientes. No entanto, um desafio persistente</p><p>continuava a afetar a eficiência geral do ciclo de desenvolvimento: a desconexão entre as equipes de</p><p>desenvolvimento e operações.</p><p>No cenário pré‑DevOps, as equipes de desenvolvimento e operações frequentemente trabalhavam</p><p>em silos, com pouca comunicação e colaboração entre elas. Os desenvolvedores se concentravam na</p><p>criação e entrega de novas funcionalidades, enquanto a equipe de operações era responsável por manter</p><p>a infraestrutura e garantir a estabilidade do ambiente de produção. Esse isolamento gerava diversos</p><p>problemas, como atrasos na entrega, dificuldades na implantação e uma tendência a problemas de</p><p>qualidade e estabilidade no ambiente de produção. A transferência de código entre desenvolvimento</p><p>e operações era frequentemente acompanhada de atritos e dificuldades, resultando em um processo</p><p>de entrega de software lento e ineficiente.</p><p>Foi nesse contexto de frustração e ineficiências que surgiu o movimento DevOps. Sua origem pode</p><p>ser rastreada até a necessidade de superar as barreiras entre desenvolvimento e operações, promovendo</p><p>uma cultura de colaboração contínua e integração. A ideia começou a ganhar forma em 2008, quando</p><p>Patrick Debois, um consultor de TI belga, organizou a primeira conferência DevOpsDays em Ghent,</p><p>na Bélgica. Esse evento reuniu profissionais de desenvolvimento e operações para discutir os desafios</p><p>e buscar soluções colaborativas. A partir daí a comunidade DevOps começou a crescer rapidamente,</p><p>impulsionada pela adoção de práticas ágeis e pela necessidade de melhorar a eficiência e a qualidade</p><p>no ciclo de desenvolvimento de software (Debois, 2008).</p><p>No contexto do desenvolvimento de software ágil, o DevOps representa uma evolução significativa</p><p>nas práticas de engenharia de software, combinando desenvolvimento (Dev) e operações (Ops) em um</p><p>único fluxo de trabalho integrado. A prática de DevOps promove uma cultura de colaboração contínua,</p><p>automação e monitoramento em todas as etapas do ciclo de vida de um software, desde a concepção e</p><p>desenvolvimento até a implantação e manutenção.</p><p>142</p><p>Unidade III</p><p>O DevOps é impulsionado por vários princípios fundamentais, entre os quais a automação se destaca</p><p>como um componente central. A automação de processos como a CI e a CD permite que o código</p><p>seja compilado, testado e implantado automaticamente, reduzindo a possibilidade de erros humanos e</p><p>acelerando o ciclo de lançamento. Ferramentas como Jenkins, GitLab CI/CD e CircleCI são amplamente</p><p>utilizadas para suportar essas práticas, permitindo que as equipes de desenvolvimento integrem suas</p><p>mudanças de código com frequência e garantindo que cada alteração passe por uma série de testes</p><p>automatizados antes de ser liberada para produção.</p><p>A integração e o monitoramento contínuos também são elementos cruciais do DevOps.</p><p>O monitoramento contínuo, por exemplo, permite que as equipes detectem e respondam rapidamente a</p><p>problemas em produção, utilizando ferramentas como Prometheus, Grafana e ELK Stack para</p><p>coletar e analisar dados em tempo real. Essa capacidade de monitoramento proativo ajuda a garantir</p><p>a disponibilidade e o desempenho dos sistemas, além de fornecer insights valiosos para a melhoria</p><p>contínua do software.</p><p>Outra característica importante do DevOps é a Infraestrutura como Código (IaC), a qual permite</p><p>que a configuração e a gestão da infraestrutura sejam tratadas da mesma maneira que o código de</p><p>aplicação. Ferramentas como Terraform, Ansible e Chef permitem que a infraestrutura seja provisionada,</p><p>configurada e gerida de maneira automática e consistente, facilitando a escalabilidade e a replicabilidade</p><p>dos ambientes de desenvolvimento, teste e produção. A IaC reduz significativamente o tempo</p><p>necessário para configurar e gerenciar a infraestrutura, além de minimizar a ocorrência de erros devido</p><p>a configurações manuais.</p><p>A cultura DevOps também enfatiza a importância do feedback contínuo e da</p><p>melhoria iterativa.</p><p>Através da adoção de práticas ágeis e da implementação de pipelines de CI/CD, as equipes são</p><p>capacitadas a liberar incrementos de software de modo rápido e confiável, permitindo que os usuários</p><p>forneçam feedbacks em um ritmo mais acelerado. Esse ciclo contínuo permite que as equipes ajustem</p><p>suas práticas e processos com base em dados reais, resultando em produtos que atendam melhor às</p><p>necessidades dos usuários e do mercado.</p><p>Além disso, o DevOps promove uma mentalidade de responsabilidade compartilhada entre</p><p>desenvolvimento e operações. Em vez de transferir a responsabilidade de um para o outro, ambas as</p><p>equipes trabalham juntas para garantir a qualidade e a estabilidade do software. Isso inclui a adoção de</p><p>práticas como o gerenciamento de incidentes colaborativo e o uso de blameless postmortems, no qual</p><p>o foco é aprender com os incidentes e melhorar os processos, em vez de atribuir culpa.</p><p>143</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Saiba mais</p><p>Aqui iremos recomendar dois livros de referência em DevOps que são</p><p>amplamente reconhecidos pela comunidade de desenvolvimento de software.</p><p>O primeiro é um romance que ilustra os desafios e as soluções práticas de</p><p>DevOps através de uma história envolvente. O livro segue a jornada de Bill,</p><p>um gerente de TI que é encarregado de salvar um projeto crítico e, ao fazê‑lo,</p><p>aprende sobre os princípios fundamentais de DevOps. Esta narrativa torna os</p><p>conceitos de DevOps acessíveis e aplicáveis, ajudando os leitores a entender</p><p>como tais práticas podem ser implementadas em suas próprias organizações.</p><p>KIM, G.; BEHR, K.; SPAFFORD, G. O projeto fênix. Um romance sobre TI.</p><p>DevOps e sobre ajudar o seu negócio a vencer. São Paulo: Alta Books, 2020.</p><p>O segundo é um guia abrangente sobre como implementar práticas</p><p>DevOps em uma organização. O livro fornece uma abordagem detalhada e</p><p>prática para criar agilidade, confiabilidade e segurança de classe mundial</p><p>nas organizações de tecnologia. Ele abrange uma ampla gama de tópicos,</p><p>desde a cultura DevOps até a automação e a CI, oferecendo insights valiosos</p><p>e exemplos reais de empresas que implementaram com sucesso essas práticas.</p><p>KIM, G. et al. Manual de DevOps: como obter agilidade, confiabilidade e</p><p>segurança em organizações tecnológicas. São Paulo: Alta Books, 2018.</p><p>Ambos os livros são essenciais para qualquer profissional interessado em</p><p>entender e aplicar os princípios de DevOps em suas equipes e organizações.</p><p>No ambiente ágil, no qual a adaptabilidade e a resposta rápida às mudanças são essenciais, o</p><p>DevOps se alinha perfeitamente com os princípios de entrega rápida e contínua de valor. A combinação</p><p>dessas abordagens permite que as empresas não apenas acelerem o tempo de lançamento no mercado,</p><p>como melhorem a qualidade e a confiabilidade de seus produtos, respondendo de maneira ágil às</p><p>necessidades dos clientes e às condições de mercado em constante mudança. A implementação eficaz</p><p>de DevOps pode, assim, transformar profundamente a maneira como as organizações desenvolvem,</p><p>entregam e mantêm um software, proporcionando uma vantagem competitiva significativa em um</p><p>setor cada vez mais dinâmico e exigente.</p><p>A evolução do DevOps culminou no NoOps como uma progressão natural do desejo de aumentar a</p><p>eficiência, a automação e a agilidade no desenvolvimento e na operação de software. Porém, é preciso</p><p>termos claro que o NoOps não é, necessariamente, substituto do DevOps. Eles representam estágios</p><p>evolutivos diferentes com objetivos alinhados, mas com níveis variados de automação e foco.</p><p>144</p><p>Unidade III</p><p>O DevOps surgiu para resolver a fragmentação entre as equipes de desenvolvimento e operações,</p><p>promovendo a colaboração, a CI e a CD. Já o NoOps, ou No Operations, leva a automação um passo adiante,</p><p>com o objetivo de eliminar a necessidade de uma equipe de operações dedicada. Em um ambiente NoOps, a</p><p>infraestrutura e a gestão das operações são completamente automatizadas, permitindo que as equipes de</p><p>desenvolvimento foquem exclusivamente na entrega de código e funcionalidades. A ideia central do NoOps</p><p>é criar um ambiente em que o software possa ser desenvolvido, testado e implantado de forma autônoma,</p><p>utilizando plataformas de serviços totalmente gerenciadas, além de soluções de automação avançadas.</p><p>O NoOps se torna viável com o avanço de tecnologias como a computação em nuvem, em</p><p>que provedores como AWS, Azure e Google Cloud oferecem serviços gerenciados que abstraem a</p><p>complexidade da infraestrutura. Ferramentas de automação e orquestração, como Kubernetes</p><p>e serverless computing, permitem que as aplicações sejam implantadas e escaladas automaticamente,</p><p>sem a necessidade de intervenção manual constante. A implementação de práticas de IA e machine</p><p>learning para monitoramento e manutenção preditiva também contribui para a realização do NoOps,</p><p>reduzindo ainda mais a necessidade de uma equipe de operações.</p><p>Enquanto o NoOps representa um ideal de automação total, ele não é adequado para todas as</p><p>organizações ou todos os tipos de aplicativos. Em muitos casos, especialmente em empresas com</p><p>requisitos complexos de conformidade, segurança e personalização, uma abordagem DevOps pode</p><p>continuar a ser mais prática e efetiva. O DevOps permite uma integração mais personalizada e um</p><p>controle mais direto sobre a infraestrutura e as operações, o que pode ser crucial em ambientes que</p><p>demandam um alto grau de controle e adaptabilidade.</p><p>Portanto, o NoOps não deve ser visto como um substituto direto para o DevOps, mas sim como uma</p><p>evolução que pode ser adotada quando as condições e os requisitos o permitirem. Em organizações</p><p>onde a automação total é viável e desejável, o NoOps pode trazer benefícios significativos em termos de</p><p>velocidade, eficiência e foco no desenvolvimento de software. No entanto, para muitas outras, o DevOps</p><p>continuará a ser uma prática essencial, proporcionando um equilíbrio entre automação e intervenção</p><p>humana, garantindo que as operações sejam geridas de maneira eficaz e adaptável.</p><p>Em suma, o DevOps e o NoOps representam diferentes níveis de maturidade na jornada de automação</p><p>e integração. A transição de DevOps para NoOps depende das necessidades específicas da organização,</p><p>da maturidade tecnológica e da disposição para adotar uma abordagem mais automatizada. Enquanto</p><p>o NoOps oferece uma visão de futuro em que a infraestrutura é totalmente autônoma, o DevOps</p><p>continuará a ser um pilar na modernização das práticas de desenvolvimento e operações de software.</p><p>Um exemplo prático de DevOps pode ser reconhecido em empresas de desenvolvimento de software</p><p>que utilizam uma combinação de ferramentas e práticas para integrar desenvolvimento e operações de</p><p>maneira eficiente. Imaginemos que uma equipe de desenvolvimento esteja trabalhando em uma aplicação</p><p>web de comércio eletrônico. A equipe adota práticas de CI, e cada vez que os desenvolvedores fazem</p><p>commit de código no repositório Git, um sistema de CI, como Jenkins ou GitLab CI, automaticamente</p><p>compila o código, executa uma série de testes automatizados e notifica a equipe sobre o status da build.</p><p>Isso permite identificar e corrigir problemas rapidamente, garantindo que o código esteja sempre em</p><p>um estado funcional.</p><p>145</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Após a aprovação nos testes, o código é automaticamente implantado em um ambiente de staging</p><p>para revisão. Assim, ferramentas de CD, como Spinnaker ou Jenkins, gerenciam esse processo, garantindo</p><p>que as novas versões sejam entregues rapidamente e com qualidade. A infraestrutura necessária para</p><p>a aplicação é definida e gerida através de códigos, usando ferramentas como Terraform ou Ansible,</p><p>os quais permitem que a configuração da infraestrutura seja versionada e replicada facilmente. Isso</p><p>simplifica a gestão da infraestrutura e reduz a ocorrência de erros de configuração.</p><p>Consideremos também que a empresa utiliza monitoramento contínuo para garantir a estabilidade</p><p>e o desempenho da aplicação. Ferramentas como Prometheus e Grafana são</p><p>usadas para monitorar o</p><p>desempenho da aplicação em tempo real, fornecendo alertas sobre quaisquer anomalias ou problemas de</p><p>desempenho que possam surgir. Esse monitoramento proativo ajuda a equipe a responder rapidamente</p><p>a problemas e a manter a aplicação funcionando de maneira otimizada. Além disso, a equipe valoriza o</p><p>feedback contínuo, utilizando ferramentas de análise de dados para coletar informações sobre o uso</p><p>da aplicação e ajustar suas funcionalidades conforme necessário. Isso garante que a aplicação esteja</p><p>alinhada com as necessidades e expectativas dos usuários.</p><p>Por outro lado, um exemplo prático de NoOps pode ser observado em uma startup que desenvolve</p><p>um serviço de streaming de vídeo utilizando uma abordagem altamente automatizada. Nesta empresa, a</p><p>infraestrutura é totalmente gerida por serviços em nuvem, como AWS Lambda e serviços gerenciados de</p><p>banco de dados como Amazon RDS. Os desenvolvedores escrevem código e o implementam diretamente</p><p>em ambientes serverless, nos quais não há necessidade de gerenciar servidores ou infraestrutura</p><p>subjacente. A automação é tão avançada que o código é implantado automaticamente em resposta</p><p>a eventos específicos, como o upload de um novo vídeo, sem intervenção manual.</p><p>A startup utiliza ferramentas de automação e orquestração, como AWS CloudFormation, para</p><p>definir toda a infraestrutura com códigos. Isso permite que a infraestrutura seja provisionada e</p><p>configurada automaticamente, garantindo consistência e eliminando a necessidade de uma equipe de</p><p>operações dedicada. Monitoramento e alertas são geridos por serviços integrados da nuvem, como AWS</p><p>CloudWatch, que monitoram a saúde dos serviços e enviam notificações automaticamente em caso de</p><p>falhas ou problemas de desempenho. Além disso, a empresa utiliza machine learning para otimizar o</p><p>desempenho e a escalabilidade da aplicação, ajustando automaticamente os recursos de acordo com a</p><p>demanda dos usuários.</p><p>Com o NoOps, os desenvolvedores podem se concentrar exclusivamente na criação de novas</p><p>funcionalidades e na melhoria da experiência do usuário, sem se preocupar com a gestão da infraestrutura.</p><p>Assim, a abordagem altamente automatizada e autogerida permite que a startup inove rapidamente e</p><p>responda às mudanças no mercado de maneira ágil, mantendo custos operacionais baixos e eficiência</p><p>elevada. O NoOps, portanto, representa uma evolução do DevOps, em que a automação total elimina a</p><p>necessidade de operações manuais, permitindo que as equipes de desenvolvimento operem de maneira</p><p>mais autônoma e focada na entrega de valor.</p><p>146</p><p>Unidade III</p><p>6.2 Inteligência artificial e machine learning na gestão de projetos</p><p>No contexto ágil de desenvolvimento de software, a IA está revolucionando a gestão de projetos</p><p>ao oferecer ferramentas e métodos que aumentam a eficiência, precisão e capacidade de adaptação</p><p>das equipes. A aplicação de IA na gestão de projetos vai além da automação de tarefas repetitivas; ela</p><p>permite uma análise preditiva e prescritiva que transforma a maneira como os projetos são planejados,</p><p>monitorados e executados. Ferramentas de IA analisam grandes volumes de dados históricos em tempo</p><p>real para identificar padrões e tendências, fornecendo insights valiosos que ajudam os gestores a tomar</p><p>decisões mais informadas e estratégicas.</p><p>Nos processos de análise realizados pela IA, temos a análise preditiva, que se concentra em prever</p><p>futuros eventos ou resultados com base em dados históricos e atuais. Utilizando técnicas de machine</p><p>learning, estatística e modelagem, a análise preditiva identifica padrões e tendências nos dados que</p><p>podem indicar o que é provável acontecer no futuro. Por exemplo, na gestão de projetos, a análise</p><p>preditiva pode ser usada para estimar prazos de conclusão de tarefas, prever riscos de atraso, ou antecipar</p><p>a necessidade de recursos adicionais. As ferramentas de análise preditiva ajudam os gestores a entender</p><p>potenciais cenários futuros e a se preparar para eles, fornecendo uma visão baseada em probabilidades</p><p>e tendências.</p><p>Em contraste, temos a análise prescritiva, que vai além da previsão para recomendar ações</p><p>específicas que devem ser tomadas para alcançar os melhores resultados possíveis. Enquanto a análise</p><p>preditiva diz o que é provável que aconteça, a análise prescritiva fornece sugestões sobre o que fazer a</p><p>respeito disso. Isso é alcançado combinando insights preditivos com regras de negócio, algoritmos de</p><p>otimização e modelos de simulação.</p><p>Na gestão de projetos, a análise prescritiva pode sugerir ajustes no cronograma, redistribuição de</p><p>recursos ou mudanças na estratégia para mitigar riscos e aproveitar oportunidades identificadas pela</p><p>análise preditiva. A análise prescritiva capacita os gestores a tomar decisões informadas que não só</p><p>antecipam problemas, mas também oferecem soluções concretas.</p><p>Uma das áreas em que a IA vem se destacando é na previsão de prazos e alocação de recursos.</p><p>Algoritmos de machine learning (aprendizado de máquina) podem prever com alta precisão quanto</p><p>tempo cada tarefa levará para ser concluída, considerando variáveis como a complexidade do trabalho,</p><p>a experiência da equipe e os recursos disponíveis. Isso permite uma estimativa de prazos mais realista e</p><p>uma alocação de recursos otimizada, reduzindo o risco de atrasos e sobrecargas. Além disso, a IA pode</p><p>sugerir a redistribuição de tarefas e a reordenação de prioridades com base na análise contínua do</p><p>progresso do projeto e nas mudanças dos requisitos.</p><p>147</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Saiba mais</p><p>A IA é um campo amplo da ciência da computação que se concentra</p><p>em criar sistemas capazes de realizar tarefas que normalmente requerem</p><p>inteligência humana. Assim, o livro indicado a seguir busca abranger diversas</p><p>subdisciplinas da área, incluindo machine learning, visão computacional,</p><p>sistemas especialistas, robótica, entre outros.</p><p>RUSSELL, S.; NORVIG, P. Inteligência Artificial – uma abordagem moderna.</p><p>São Paulo: Grupo GEN, 2022.</p><p>O machine learning, por outro lado, é uma subdisciplina específica dentro</p><p>do campo da IA que se concentra em desenvolver algoritmos e modelos que</p><p>permitem que os computadores aprendam a partir de dados. Considerando</p><p>sua importância em nossos estudos, recomendamos, a seguir, uma leitura</p><p>que explora a integração dos princípios ágeis no desenvolvimento de</p><p>soluções de ML.</p><p>CARTER, E.; HURST, M. Agile machine learning: effective machine learning</p><p>inspired by the Agile Manifesto. [S.l.]: Apress, 2019.</p><p>Além das referências apresentadas, indicamos a leitura do artigo a seguir.</p><p>Ele aborda os benefícios e desafios de integrar IA com metodologias ágeis de</p><p>desenvolvimento de software, com foco na melhoria da CI e da CD. Através</p><p>de uma revisão sistemática da literatura e uma meta‑análise longitudinal dos</p><p>estudos recuperados, o artigo analisa o papel da IA e suas aplicações futuras</p><p>dentro do desenvolvimento ágil de software.</p><p>CABRERO‑DANIEL, B. AI for Agile development: a meta‑analysis. arXiv.</p><p>Cornell University, mai. 2023. Disponível em: https://tinyurl.com/b9u24s6y.</p><p>Acesso em: 3 jul. 2024.</p><p>Outra aplicação prática da IA na gestão de projetos ágeis é a identificação e mitigação de riscos.</p><p>Ferramentas de IA podem monitorar o andamento do projeto em tempo real, detectando sinais de alerta</p><p>que poderiam passar despercebidos por gestores humanos. Por exemplo, um algoritmo pode identificar</p><p>padrões de comportamento que indicam possíveis atrasos, problemas de qualidade ou riscos de</p><p>segurança, alertando a equipe antes que os problemas se tornem críticos. Isso permite uma abordagem</p><p>proativa à gestão de riscos, em que medidas corretivas podem ser implementadas rapidamente para</p><p>manter o projeto nos trilhos.</p><p>148</p><p>Unidade III</p><p>A IA também está transformando a comunicação e a colaboração dentro das equipes ágeis.</p><p>Assistentes virtuais e chatbots alimentados por IA podem fornecer suporte instantâneo aos membros</p><p>da equipe, respondendo a perguntas, fornecendo atualizações de status e até mesmo executando</p><p>tarefas</p><p>administrativas, como o agendamento de reuniões ou a geração de relatórios de progresso. Esses</p><p>assistentes virtuais melhoram a eficiência da equipe, liberando os membros para se concentrarem em</p><p>tarefas de maior valor e reduzindo a carga de trabalho administrativa.</p><p>No mais, a IA pode melhorar significativamente a gestão do conhecimento dentro das</p><p>equipes de projeto. Sistemas baseados em IA podem capturar e analisar o conhecimento gerado durante</p><p>o ciclo de vida do projeto, criando repositórios inteligentes que facilitam o acesso à informação e a</p><p>transferência de conhecimento. Isso é particularmente valioso em ambientes ágeis, nos quais</p><p>a aprendizagem contínua e a adaptação são fundamentais para o sucesso. Com acesso a insights e</p><p>melhores práticas anteriores, as equipes podem tomar decisões mais assertivas e evitar repetição de</p><p>erros passados.</p><p>A implementação de IA na gestão de projetos também permite feedbacks mais rápidos e precisos,</p><p>essenciais para o ciclo iterativo de desenvolvimento ágil. Ferramentas de análise de sentimento</p><p>e feedback podem avaliar automaticamente a satisfação dos stakeholders e o moral da equipe,</p><p>identificando áreas de melhoria e permitindo ajustes rápidos. Isso não só melhora a qualidade dos</p><p>produtos entregues, também aumenta a satisfação e a motivação das equipes, criando um ambiente de</p><p>trabalho mais positivo e produtivo.</p><p>Compreendemos, portanto, que a IA está transformando a gestão de projetos no contexto ágil ao</p><p>fornecer ferramentas que melhoram a previsão, a alocação de recursos, a identificação de riscos, a</p><p>comunicação, a gestão do conhecimento e o feedback. Assim, ao integrar a IA nas práticas de gestão</p><p>de projetos, as organizações podem aumentar a eficiência, reduzir riscos e melhorar a qualidade dos</p><p>resultados, mantendo‑se competitivas em um mercado em constante evolução. A combinação de IA</p><p>e métodos ágeis promete uma nova era de inovação e excelência na entrega de software, na qual a</p><p>capacidade de adaptação e a inteligência dos sistemas trabalham em harmonia para alcançar os</p><p>objetivos organizacionais.</p><p>6.3 Trabalho remoto e gestão de equipes distribuídas</p><p>O trabalho remoto e a gestão de equipes distribuídas emergiram como componentes cruciais,</p><p>moldados por avanços tecnológicos e mudanças nas dinâmicas de trabalho. Ele permite que profissionais</p><p>contribuam de qualquer localização geográfica, fazendo com que empresas expandam seu acesso a</p><p>talentos e promovam maior diversidade nas equipes. Isso se alinha perfeitamente com os princípios</p><p>ágeis de adaptabilidade e colaboração contínua, permitindo que as organizações montem equipes</p><p>altamente qualificadas independentemente de barreiras geográficas.</p><p>149</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Lembrete</p><p>Os ambientes de trabalho físicos, virtuais e híbridos apresentam diversas</p><p>tecnologias de apoio aos diferentes modelos.</p><p>A gestão de equipes distribuídas apresenta desafios únicos, sobretudo em termos de comunicação e</p><p>coesão. No ambiente ágil, a comunicação eficaz é vital para garantir que todos os membros da equipe</p><p>estejam alinhados com os objetivos do projeto e possam colaborar de maneira eficiente. Ferramentas</p><p>de colaboração digital, como Slack, Microsoft Teams e Zoom, têm sido indispensáveis para facilitar</p><p>a comunicação em tempo real e a realização de reuniões virtuais. Essas plataformas permitem que</p><p>as equipes mantenham a visibilidade sobre o progresso do projeto, discutam problemas rapidamente</p><p>e tomem decisões de maneira colaborativa.</p><p>Além da comunicação, a gestão de equipes distribuídas exige uma abordagem consistente para o</p><p>acompanhamento de tarefas e a manutenção da produtividade. Ferramentas de gestão de projetos,</p><p>como Jira, Trello e Asana, desempenham um papel essencial ao fornecer uma visão clara das tarefas,</p><p>prazos e responsabilidades. Além disso, permitem que os gestores de projetos monitorem o andamento</p><p>das atividades e ajustem os recursos conforme necessário, garantindo que os objetivos sejam atingidos</p><p>dentro do cronograma e do orçamento.</p><p>A cultura organizacional também precisa evoluir para apoiar o trabalho remoto e a gestão de</p><p>equipes distribuídas. Por isso, é essencial que os ambientes organizacionais promovam confiança e</p><p>autonomia, nos quais os membros de equipes se sintam empoderados para tomar decisões e inovar.</p><p>Práticas como reuniões de check‑in regulares, retrospectivas e feedbacks contínuos ajudam a manter a</p><p>coesão da equipe e a identificar áreas de melhoria. Assim, a liderança desempenha um papel crucial ao</p><p>estabelecer expectativas claras, fornecer suporte e recursos necessários, além de incentivar uma cultura</p><p>de transparência e responsabilidade.</p><p>A flexibilidade proporcionada pelo trabalho remoto oferece benefícios significativos, como a</p><p>melhoria do equilíbrio entre vida pessoal e profissional, que pode levar a uma maior satisfação e retenção</p><p>de funcionários. A tendência é que trabalhadores remotos relatem níveis mais altos de satisfação e</p><p>produtividade, o que pode resultar em uma força de trabalho mais motivada e engajada. No entanto,</p><p>há desafios nessa modalidade de trabalho, como a sensação de isolamento e a dificuldade em separar</p><p>a vida profissional da pessoal. Por isso, é importante o suporte adequado em termos de bem‑estar</p><p>e saúde mental.</p><p>Dentre os estudos sobre o trabalho remoto, destacamos o artigo publicado em McKinsey & Company</p><p>intitulado “Americans are embrancing flexible work – and they want more of it”, de André Dua et al.</p><p>Nele, os autores apresentam uma análise detalhada sobre a eficácia do trabalho remoto com base em</p><p>uma pesquisa abrangente.</p><p>150</p><p>Unidade III</p><p>A pesquisa, que envolveu uma amostra representativa de trabalhadores nos Estados Unidos, destaca</p><p>diversos aspectos sobre a flexibilidade dos modelos de trabalho. Desse modo, apresentaremos os mais</p><p>relevantes a seguir (Dua et al., 2022).</p><p>• Adoção e preferência pelo trabalho remoto: 87% dos trabalhadores que têm a opção de</p><p>trabalhar remotamente aproveitam essa oportunidade, trabalhando em média três dias por semana</p><p>nessa modalidade. A pesquisa também destaca uma forte preferência por flexibilidade entre os</p><p>trabalhadores, com muitos desejando trabalhar remotamente em tempo integral se possível.</p><p>• Impacto na produtividade e satisfação: a pesquisa sugere que o trabalho remoto pode melhorar</p><p>a produtividade e a satisfação dos funcionários. Trabalhadores remotos relataram gastar parte do</p><p>tempo economizado no deslocamento em atividades relacionadas ao trabalho, o que contribui</p><p>para maior eficiência de suas atividades.</p><p>• Desafios e considerações: apesar dos benefícios, o artigo também aborda os desafios do</p><p>trabalho remoto, incluindo a necessidade de tecnologia adequada e a importância de manter a</p><p>comunicação e a colaboração eficazes entre as equipes. Além disso, destaca que a produtividade</p><p>pode variar entre diferentes grupos de trabalhadores e tipos de funções.</p><p>• Tendências futuras: o estudo indica que a flexibilidade no trabalho está se tornando uma norma</p><p>e as empresas que oferecem opções de trabalho remoto podem ter uma vantagem competitiva</p><p>na atração e retenção de talentos. A pesquisa também aponta que a pandemia acelerou a adoção</p><p>de tecnologias de trabalho remoto, melhorando a produtividade em muitos setores.</p><p>Esse artigo, publicado na McKinsey & Company, confirma, ainda, que o trabalho remoto pode ser</p><p>eficaz e trazer benefícios significativos tanto para os empregados quanto para os empregadores, embora</p><p>exija uma gestão cuidadosa e a implementação de ferramentas adequadas para maximizar seu potencial</p><p>(Dua et al., 2022).</p><p>Outro artigo que também debate sobre a flexibilidade das modalidades de trabalho é “Are we really</p><p>more productive working from home?”, publicado pela Chicago Booth Review (Stropoli, 2021). Nele, a</p><p>autora examina a produtividade dos trabalhadores remotos durante a pandemia de covid‑19, utilizando</p><p>dados de uma pesquisa contínua iniciada em maio de 2020. A seguir, elencamos os principais pontos</p><p>abordados neste estudo (Stropoli, 2021).</p><p>• Distribuição do tempo economizado no deslocamento: os trabalhadores remotos utilizaram</p><p>aproximadamente 35% do tempo economizado com o deslocamento em atividades relacionadas</p><p>ao trabalho, o que contribuiu para um aumento na produtividade. O restante do tempo foi</p><p>dedicado a atividades pessoais, como tarefas domésticas, cuidados com os filhos, atividades de</p><p>lazer e até mesmo trabalhos secundários.</p><p>151</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>• Qualidade do sono e flexibilidade: trabalhadores remotos relataram dormir melhor,</p><p>levantando‑se cerca de 30 minutos mais tarde do que os trabalhadores presenciais. Essa</p><p>melhoria na qualidade do sono pode gerar mais produtividade devido ao melhor descanso e à</p><p>redução do cansaço.</p><p>• Adoção de tecnologia de trabalho remoto: a pandemia acelerou a adoção de tecnologias</p><p>de trabalho remoto, o que melhorou significativamente a produtividade dos trabalhadores que</p><p>puderam trabalhar de casa. A disponibilidade e o uso desses recursos permitiram que o trabalho</p><p>remoto fosse mais eficiente e eficaz do que no passado.</p><p>• Desafios e limitações: apesar dos benefícios observados, o artigo também reconhece que o</p><p>trabalho remoto pode ter desvantagens, como a perda de interações face a face e os desafios de</p><p>comunicação. No entanto, muitos dos entrevistados ainda preferiram a flexibilidade do trabalho</p><p>remoto, mesmo com essas limitações.</p><p>• Impacto a longo prazo: o estudo sugere que, embora a produtividade no trabalho remoto tenha</p><p>aumentado durante a pandemia, os trabalhadores ainda valorizam a flexibilidade e preferem</p><p>manter essa modalidade de trabalho no futuro. Isso aponta para uma mudança significativa no</p><p>modo como as organizações podem estruturar o trabalho atualmente.</p><p>Em termos de segurança, a gestão de equipes distribuídas requer uma abordagem sólida para</p><p>proteger dados e sistemas. Políticas de segurança cibernética rigorosas, uso de VPNs, autenticação</p><p>multifator e treinamento regular em práticas de segurança são essenciais para mitigar riscos associados</p><p>ao trabalho remoto.</p><p>A implementação de políticas de segurança cibernética rigorosas é fundamental para mitigar riscos</p><p>associados a essa modalidade de trabalho. Um exemplo prático é a definição clara de procedimentos para</p><p>o manuseio de dados sensíveis, incluindo a criptografia de dados em trânsito e em repouso. Ferramentas</p><p>como BitLocker e VeraCrypt são comumente utilizadas para criptografar dados armazenados em</p><p>dispositivos locais, enquanto protocolos como HTTPS garantem a criptografia de dados transmitidos</p><p>pela internet.</p><p>O uso de redes privadas virtuais (VPNs) é outro componente essencial para a segurança de equipes</p><p>distribuídas. As VPNs criam um túnel seguro para a transmissão de dados, protegendo a comunicação</p><p>contra interceptações e ataques man‑in‑the‑middle. Ferramentas populares como NordVPN, ExpressVPN</p><p>e Cisco AnyConnect são amplamente utilizadas para garantir que os funcionários acessem recursos</p><p>corporativos de maneira segura, independentemente de sua localização.</p><p>152</p><p>Unidade III</p><p>Observação</p><p>Ataques man‑in‑the‑middle (MITM) são um tipo de ciberataque no</p><p>qual um invasor intercepta e possivelmente altera a comunicação entre</p><p>duas partes que acreditam estar se comunicando diretamente entre si.</p><p>Neste cenário, o atacante posiciona‑se entre o remetente e o destinatário</p><p>da mensagem, sem que nenhum dos dois perceba que a comunicação foi</p><p>comprometida. Esses ataques podem ocorrer de várias maneiras, incluindo</p><p>a interceptação de redes Wi‑Fi não seguras, nas quais o atacante configura</p><p>um ponto de acesso Wi‑Fi que parece legítimo, levando os usuários a se</p><p>conectar a ele. Uma vez conectados, todo o tráfego de internet do usuário</p><p>pode ser monitorado e alterado pelo atacante. Ferramentas como Wireshark</p><p>e Aircrack‑ng são frequentemente usadas para esse propósito.</p><p>A autenticação multifator (MFA) adiciona uma camada extra de segurança ao exigir múltiplas</p><p>formas de verificação antes de conceder acesso a sistemas e dados. Além da tradicional combinação de</p><p>nome de usuário e senha, a MFA pode incluir códigos enviados ao telefone celular por SMS, aplicativos</p><p>autenticadores como Google Authenticator e Microsoft Authenticator, ou até mesmo dispositivos físicos</p><p>como chaves de segurança YubiKey. Esta abordagem reduz significativamente o risco de acesso não</p><p>autorizado, mesmo que as credenciais de um usuário sejam comprometidas.</p><p>O treinamento regular em práticas de segurança é igualmente crucial para manter a segurança</p><p>no ambiente de trabalho remoto. Programas de conscientização sobre segurança cibernética devem</p><p>educar os funcionários sobre as melhores práticas, como a identificação de e‑mails de phishing, a</p><p>criação de senhas fortes e a importância de manter softwares e dispositivos atualizados. Ferramentas</p><p>de treinamento como KnowBe4 e SANS Security Awareness oferecem módulos interativos que ajudam</p><p>a reforçar essas práticas entre os colaboradores.</p><p>153</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Resumo</p><p>No contexto das metodologias ágeis, compreendemos que escalar essas</p><p>práticas em grandes organizações representa um desafio significativo.</p><p>A necessidade de escalar ocorre quando uma empresa deseja aplicar</p><p>princípios ágeis em projetos maiores que envolvem várias equipes. Entre os</p><p>frameworks ágeis desenvolvidos para abordar esses desafios estão o SAFe,</p><p>LeSS, Nexus e DAD, e cada um deles oferece uma abordagem estruturada</p><p>para aplicar princípios ágeis em larga escala.</p><p>Também vimos que ferramentas digitais são cruciais na facilitação</p><p>da colaboração e gestão de projetos em um ambiente ágil. Plataformas</p><p>como Jira, Trello e Asana ajudam a gerenciar tarefas, rastrear progresso e</p><p>facilitar a comunicação entre membros de uma equipe. Discutimos também</p><p>que a automação e as ferramentas para CI e CD são essenciais para manter</p><p>a qualidade e a velocidade de entrega de software. Ferramentas como</p><p>Jenkins, GitLab CI e CircleCI permitem integração e testes contínuos do</p><p>código. Além disso, estudamos que a seleção e adaptação de ferramentas</p><p>para equipes ágeis devem ser feitas com cuidado, considerando as</p><p>necessidades específicas da equipe e da organização. A adoção de uma</p><p>abordagem iterativa para ajustar as ferramentas com base no feedback</p><p>contínuo da equipe é essencial.</p><p>Abordamos as tendências futuras em tecnologia e gestão de projetos no</p><p>contexto do desenvolvimento ágil de software, destacando a evolução dos</p><p>paradigmas DevOps e NoOps. A DevOps promove colaboração contínua</p><p>entre desenvolvimento e operações, enquanto NoOps elimina a necessidade</p><p>de uma equipe de operações tradicional. Adicionalmente, debatemos como a</p><p>IA e o machine learning estão revolucionando a gestão de projetos ao permitir</p><p>análises preditivas e prescritivas, melhorando a eficiência e personalização</p><p>na gestão de projetos. Assim, deixamos claro que ferramentas de IA podem</p><p>automatizar tarefas rotineiras e melhorar a tomada de decisões.</p><p>Outra tendência que destacamos neste livro‑texto é o trabalho remoto e</p><p>a gestão de equipes distribuídas. Assim, foi possível entender que o trabalho</p><p>remoto ampliou o pool de talentos e desafiou as práticas tradicionais</p><p>de gestão, exigindo ferramentas digitais avançadas e práticas de gestão</p><p>adaptativas para garantir a produtividade das equipes distribuídas.</p><p>154</p><p>Unidade III</p><p>Assim, compreendemos que essas tendências continuarão a moldar o</p><p>futuro da tecnologia e da gestão de projetos no contexto ágil, caracterizado</p><p>por mais automação, inteligência e flexibilidade. A integração de DevOps</p><p>e NoOps e o uso crescente de IA e ML melhorarão a eficiência e qualidade,</p><p>enquanto o trabalho remoto ajudará a atrair e reter talentos.</p><p>155</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Exercícios</p><p>Questão 1. (Instituto AOCP/2023, adaptada) A respeito do GitLab, uma plataforma de controle de</p><p>versão distribuído e colaboração de código, avalie as afirmativas a seguir.</p><p>I – O GitLab oferece funcionalidades como controle de versão, integração contínua/distribuição</p><p>contínua (CI/CD) e gerenciamento</p><p>de projetos. Ele pode ser usado tanto na versão SaaS quanto na</p><p>versão on‑premises.</p><p>II – GitLab é um fork do GitHub e, portanto, todas as funcionalidades presentes no GitHub estão</p><p>disponíveis no GitLab.</p><p>III – GitLab é uma plataforma que oferece apenas gerenciamento de projetos ágeis.</p><p>É correto o que se afirma em:</p><p>A) I, apenas.</p><p>B) III, apenas.</p><p>C) I e II, apenas.</p><p>D) II e III, apenas.</p><p>E) I, II e III.</p><p>Resposta correta: alternativa A.</p><p>Análise das afirmativas</p><p>I – Afirmativa correta.</p><p>Justificativa: GitLab é uma plataforma DevOps completa que oferece funcionalidades como controle</p><p>de versão, CI/CD e gerenciamento de projetos. Ela pode ser usada tanto na versão SaaS (Software as</p><p>a Service – na qual os usuários acessam a plataforma pela internet sob demanda) quanto na versão</p><p>on‑premises (na qual o software é adquirido e instalado).</p><p>II – Afirmativa incorreta.</p><p>Justificativa: o GitLab não é um fork do GitHub; são plataformas distintas, com diferentes</p><p>características e funcionalidades, embora ambas sejam baseadas no Git e ofereçam controle de versão.</p><p>156</p><p>Unidade III</p><p>Além disso, o GitHub e o GitLab não são da mesma empresa. O GitHub foi criado em 2008 e, em 2018,</p><p>foi adquirido pela Microsoft. O GitLab é uma empresa independente fundada em 2011.</p><p>III – Afirmativa incorreta.</p><p>Justificativa: o GitLab, que foca em uma solução completa de DevOps, é frequentemente escolhido</p><p>por empresas que buscam uma plataforma integrada para todo o ciclo de vida do desenvolvimento</p><p>de software, desde o planejamento até a implantação e o monitoramento do produto. A plataforma</p><p>combina controle de versão (Git), gerenciamento de projetos e CI/CD. Logo, ela oferece mais do que</p><p>apenas gerenciamento de projetos ágeis.</p><p>Questão 2. No ambiente ágil, em que a adaptabilidade e a resposta rápida às mudanças são</p><p>essenciais, o DevOps alinha‑se perfeitamente com os princípios de entrega rápida e contínua de valor.</p><p>A evolução do DevOps culminou no NoOps, como uma progressão natural do desejo de aumentar a</p><p>eficiência, a automação e a agilidade no desenvolvimento e na operação de software.</p><p>O conceito de NoOps refere‑se a uma abordagem em que:</p><p>A) Não há necessidade de operações de segurança no ambiente de desenvolvimento.</p><p>B) A operação de TI é completamente eliminada e substituída por inteligência artificial.</p><p>C) Operações de infraestrutura e de manutenção são eliminadas.</p><p>D) As operações são integradas diretamente no fluxo de trabalho de desenvolvimento e entrega</p><p>de software.</p><p>E) Não há necessidade de operações de monitoramento após a implantação inicial do software.</p><p>Resposta correta: alternativa D.</p><p>Análise das alternativas</p><p>A) Alternativa incorreta.</p><p>Justificativa: o NoOps não trata de eliminar operações de segurança, mas de automatizar e integrar</p><p>operações de maneira eficiente.</p><p>B) Alternativa incorreta.</p><p>Justificativa: o NoOps não necessariamente substitui toda a operação de TI por IA. A automação da</p><p>operação é desejada, mas não precisa ser exclusivamente baseada em IA.</p><p>157</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>C) Alternativa incorreta.</p><p>Justificativa: o NoOps busca automatizar completamente as operações, incluindo infraestrutura e</p><p>manutenção. No entanto, isso não significa que essas operações são eliminadas, mas que são gerenciadas</p><p>de modo automatizado.</p><p>D) Alternativa correta.</p><p>Justificativa: o NoOps visa integrar as operações diretamente no fluxo de trabalho de desenvolvimento</p><p>e de entrega de software, tornando‑as transparentes para os desenvolvedores.</p><p>E) Alternativa incorreta.</p><p>Justificativa: o monitoramento contínuo é importante, mesmo após a implantação do software.</p><p>de portfólio lean, por sua vez, são a área responsável pela execução e entrega das</p><p>iniciativas de portfólio. Ela envolve a coordenação de múltiplos ARTs e outros fluxos de valor para</p><p>garantir que todos os esforços estejam alinhados com os objetivos estratégicos. As práticas de Kanban</p><p>em nível de portfólio são frequentemente utilizadas para visualizar e gerenciar o fluxo de trabalho,</p><p>permitindo uma identificação rápida de gargalos e oportunidades de melhoria. A operação de portfólio</p><p>lean promove uma cultura de colaboração entre equipes e ARTs, facilitando a comunicação e a resolução</p><p>de problemas de maneira eficaz.</p><p>Por fim, a governança lean é a área que assegura que as práticas e os processos de gestão do</p><p>portfólio sejam sustentáveis e alinhados aos princípios lean e ágeis. Ela inclui a gestão de compliance e</p><p>a monitorização do desempenho do portfólio, garantindo que as iniciativas estejam entregando o valor</p><p>esperado dentro dos limites de custo e tempo estabelecidos. Ferramentas como métricas lean, revisões</p><p>de portfólio e auditorias contínuas são utilizadas para manter a transparência e a responsabilidade.</p><p>110</p><p>Unidade III</p><p>Observação</p><p>Gestão de compliance é o processo de garantir que uma organização</p><p>e seus funcionários estejam em conformidade com todas as leis,</p><p>regulamentos, normas e diretrizes aplicáveis ao seu setor de atuação. Esse</p><p>processo é essencial para evitar riscos legais, financeiros e reputacionais,</p><p>garantindo que a organização opere de maneira ética e dentro dos padrões</p><p>estabelecidos. Ela envolve diversas atividades e práticas que visam assegurar</p><p>que a empresa siga todas as regras externas impostas por entidades</p><p>reguladoras, bem como suas próprias políticas internas.</p><p>Já o termo governança, no contexto do LPM, refere‑se ao conjunto de práticas, processos e</p><p>estruturas que orientam e controlam a execução das iniciativas de portfólio dentro de uma organização</p><p>(Banjanin, 2020). A governança tem o objetivo de garantir que os investimentos e esforços estejam</p><p>alinhados com os objetivos estratégicos da empresa, promovendo a transparência, a responsabilidade e</p><p>a eficácia na gestão dos recursos e das prioridades.</p><p>Uma das principais vantagens do LPM é a capacidade de promover tomadas de decisões</p><p>descentralizadas, na qual as equipes de desenvolvimento têm autonomia para tomar decisões sobre como</p><p>melhor entregar valor dentro dos limites estratégicos definidos. Isso aumenta a agilidade e a capacidade</p><p>de resposta e empodera as equipes, promovendo um ambiente de inovação e melhoria contínua.</p><p>O LPM também enfatiza a importância de um feedback contínuo, no qual as decisões são baseadas</p><p>em dados reais e insights obtidos através de revisões regulares e métricas de desempenho. Isso permite</p><p>que a organização ajuste suas estratégias e investimentos de modo proativo, garantindo que estejam</p><p>sempre alinhados com as necessidades do mercado e dos clientes.</p><p>Além dos quatro níveis principais, o SAFe enfatiza a importância da liderança Lean‑Agile, que</p><p>desempenha um papel crucial na criação de uma cultura de melhoria contínua e inovação (Poppendieck;</p><p>Poppendieck, 2003). Os líderes são incentivados a adotar uma mentalidade ágil e a apoiar as equipes na</p><p>remoção de impedimentos, promovendo um ambiente de aprendizado e crescimento.</p><p>Liderança Lean‑Agile é um conceito fundamental dentro das metodologias ágeis e do Lean. Ela</p><p>enfatiza a importância de líderes que não apenas compreendam os princípios e as práticas ágeis, mas</p><p>também os incorporem em seu estilo de gestão e tomada de decisão. Esses líderes desempenham um</p><p>papel fundamental na criação de um ambiente em que as equipes podem prosperar, inovar e entregar</p><p>valor contínuo aos clientes.</p><p>111</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>A liderança Lean‑Agile se caracteriza por vários aspectos‑chave. Primeiramente, considera os líderes</p><p>facilitadores e servidores das suas equipes, ao invés de gestores tradicionais que simplesmente ditam</p><p>tarefas e supervisionam o trabalho. Eles se concentram em remover obstáculos que possam impedir</p><p>as equipes de realizar seu trabalho de modo eficaz. Isso pode incluir a resolução de problemas de</p><p>comunicação, a eliminação de barreiras burocráticas ou a garantia de que as equipes tenham os recursos</p><p>e as ferramentas necessários para serem produtivas.</p><p>Além disso, líderes Lean‑Agile promovem uma cultura de melhoria contínua e aprendizado constante.</p><p>Eles incentivam as equipes a adotarem práticas de inspeção e adaptação, nas quais o trabalho é</p><p>continuamente revisado e ajustado com base nos feedbacks e nos resultados obtidos. Essa mentalidade</p><p>de melhoria contínua ajuda as equipes a se tornarem mais eficientes e a entregar produtos de mais</p><p>qualidade ao longo do tempo.</p><p>Outro aspecto importante da liderança Lean‑Agile é a capacitação das equipes para tomar decisões.</p><p>Em vez de centralizar a tomada de decisão no topo da hierarquia, líderes Lean‑Agile delegam autoridade</p><p>às equipes, permitindo que elas tomem decisões que estão mais próximas do trabalho real e dos desafios</p><p>que enfrentam. Esse fato aumenta a velocidade de resposta às mudanças, o engajamento e a motivação</p><p>dos membros da equipe, que se sentem mais valorizados e responsáveis por seu trabalho.</p><p>Neste tipo de liderança, os líderes também são modelos de comportamento e cultura organizacional.</p><p>Eles exemplificam os valores e princípios ágeis, como a transparência, a colaboração, a flexibilidade e</p><p>a orientação para o cliente. Ao agir de acordo com esses valores, eles inspiram suas equipes a fazer o</p><p>mesmo, promovendo um ambiente de trabalho positivo e produtivo.</p><p>A liderança Lean‑Agile também envolve a promoção da inovação. Líderes nesse contexto incentivam</p><p>as equipes a experimentarem novas ideias e abordagens, mesmo que isso implique riscos. Eles entendem</p><p>que a inovação muitas vezes requer tentativa e erro, e estão dispostos a aceitar falhas como parte</p><p>do processo de aprendizado. Essa abordagem cria um espaço seguro para a criatividade e a inovação,</p><p>essenciais para o sucesso em ambientes dinâmicos e competitivos.</p><p>Da mesma maneira, líderes Lean‑Agile têm uma visão clara e comunicam‑na de maneira eficaz. Eles</p><p>alinham as metas e os objetivos estratégicos da organização com o trabalho das equipes, garantindo</p><p>que todos estejam trabalhando em direção a um objetivo comum. Essa clareza ajuda as equipes a se</p><p>concentrarem no que é mais importante e a priorizar seu trabalho de acordo.</p><p>Por fim, o SAFe também incorpora práticas de DevOps e CI, que são essenciais para manter a qualidade</p><p>e a velocidade de entrega em um ambiente ágil escalado. Ferramentas e técnicas de automação são</p><p>utilizadas para garantir que o código seja integrado e testado continuamente, reduzindo o tempo de</p><p>ciclo e aumentando a eficiência.</p><p>112</p><p>Unidade III</p><p>O SAFe é amplamente adotado por várias empresas grandes e renomadas em diferentes setores.</p><p>A seguir, listamos alguns exemplos de empresas que o utilizam. Eles demonstram como o SAFe pode ser</p><p>eficaz em diversas indústrias, ajudando empresas a aumentar a produtividade, melhorar a qualidade dos</p><p>produtos e reduzir o tempo de entrega ao mercado.</p><p>• Mercedes‑Benz: utilizou SAFe para transformar sua abordagem de hardware para software,</p><p>permitindo uma adaptação mais rápida às mudanças do mercado.</p><p>• FedEx: implementou SAFe para aumentar o engajamento e a satisfação dos funcionários,</p><p>melhorando também a eficiência operacional.</p><p>• Petrobras: conseguiu a maior transformação ágil em larga escala no Brasil em seu primeiro</p><p>ano com SAFe.</p><p>• Southwest Airlines: utilizou SAFe para entregar mais de 80% de seu valor de negócios de modo</p><p>mais eficiente.</p><p>• Deutsche Telekom: transformou‑se rapidamente, passando de 0 a 130 ARTs em três anos.</p><p>• Porsche: integrou a engenharia de veículos e TI para reimaginar o carro esportivo do futuro.</p><p>• CVS Health: utilizou SAFe para responder à pandemia de covid‑19 de maneira eficaz e urgente.</p><p>• PlayStation Network (Sony Interactive Entertainment): implementou SAFe para coordenar o</p><p>trabalho de mais de mil engenheiros em várias cidades, resultando em uma melhor organização</p><p>e colaboração.</p><p>Uma outra possibilidade para a árdua tarefa de escala ágil é o LeSS, que é um framework projetado</p><p>para escalar o Scrum em grandes organizações, mantendo os princípios de simplicidade e flexibilidade</p><p>que caracterizam o Scrum. Desenvolvido por Craig Larman e Bas Vodde (Larman; Vodde, 2016), LeSS</p><p>oferece uma abordagem estruturada para coordenar o trabalho de múltiplas equipes que colaboram</p><p>em um único produto, garantindo que a agilidade e a eficiência do Scrum sejam mantidas mesmo em</p><p>projetos de grande escala.</p><p>A base do LeSS é a aplicação rigorosa dos princípios e práticas do Scrum, mas em um contexto</p><p>de múltiplas equipes. Em vez de criar novos papéis ou processos complexos, o LeSS enfatiza a</p><p>simplicidade e a transparência, promovendo uma coordenação eficiente e a comunicação direta entre</p><p>as equipes que trabalham juntas em sprints sincronizados, permitindo uma CI e a entrega frequente de</p><p>incrementos de produto.</p><p>Um dos aspectos centrais do LeSS é o uso de um único Product Backlog para todas as equipes que</p><p>trabalham no produto. Isso garante que todas elas estejam alinhadas em torno das mesmas prioridades</p><p>e objetivos estratégicos. O Product Owner é responsável por gerenciar esse backlog, priorizando itens</p><p>com base no valor de negócio e na necessidade do cliente. A presença de um único Product Backlog</p><p>simplifica a coordenação entre equipes e elimina a duplicação de esforços.</p><p>113</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>No LeSS, as equipes são multifuncionais e autogeridas, cada uma delas capaz de completar itens do</p><p>backlog de modo independente. No entanto, para garantir a consistência e a integração do produto final,</p><p>as equipes colaboram estreitamente, realizando reuniões de coordenação e compartilhando práticas e</p><p>padrões de desenvolvimento. As reuniões de Daily Scrum, Sprint Planning e Sprint Review são realizadas</p><p>tanto no nível das equipes individuais quanto, quando necessário, no nível de coordenação entre equipes.</p><p>A Sprint Planning no LeSS é dividida em duas partes. Na primeira, todas as equipes se reúnem</p><p>para discutir o Product Backlog e selecionar os itens que irão trabalhar durante a sprint. Na segunda,</p><p>cada equipe detalha seu próprio plano de trabalho, garantindo que todos os aspectos necessários</p><p>para completar os itens selecionados sejam considerados. Essa abordagem promove a colaboração e a</p><p>alocação eficiente de recursos, alinhando todos os esforços com os objetivos do produto.</p><p>Durante a Sprint Review, todas as equipes se reúnem para apresentar e revisar os incrementos de produto</p><p>desenvolvidos. Isso garante que o feedback do cliente e das partes interessadas sejam integrados rapidamente,</p><p>permitindo ajustes contínuos e melhoria do produto. A Sprint Retrospective também é realizada em dois</p><p>níveis: primeiro, cada equipe realiza sua própria retrospectiva para identificar melhorias locais; em seguida,</p><p>uma retrospectiva conjunta pode ser realizada para discutir e resolver questões que afetam várias equipes.</p><p>Embora o LeSS seja construído sobre os fundamentos do Scrum, ele reconhece a necessidade de</p><p>adaptação e escalabilidade. Portanto, enquanto há um único Product Owner e um único Product</p><p>Backlog para manter a clareza e a prioridade, a função de Scrum Master é multiplicada, com um Scrum</p><p>Master para cada equipe, para assegurar que o suporte e a facilitação sejam adequados e específicos às</p><p>necessidades de cada equipe.</p><p>A presença de um Scrum Master dedicado para cada equipe é importante para garantir que cada</p><p>uma receba o suporte necessário para implementar as práticas ágeis de maneira eficaz e para ajudar a</p><p>remover impedimentos específicos que possam surgir durante o desenvolvimento. Esses Scrum Masters</p><p>facilitam os eventos do Scrum, como as reuniões diárias, a revisão e a retrospectiva da Sprint, além de</p><p>trabalharem para promover a melhoria contínua e a auto‑organização dentro das equipes.</p><p>Além disso, no contexto do LeSS, os Scrum Masters frequentemente colaboram entre si para</p><p>coordenar esforços, compartilhar aprendizados e resolver problemas que afetam várias equipes. Eles</p><p>podem formar uma comunidade de prática para discutir desafios comuns e estratégias de melhoria,</p><p>promovendo, assim, coesão e alinhamento maiores entre todas as equipes envolvidas.</p><p>A transparência é um princípio fundamental do LeSS. Ferramentas visuais, como quadros Kanban</p><p>e gráficos de burndown, são utilizadas para proporcionar visibilidade sobre o progresso e o fluxo de</p><p>trabalho. Isso ajuda a identificarmos rapidamente gargalos e impedimentos, permitindo uma resolução</p><p>proativa e a melhoria contínua.</p><p>Outro elemento‑chave do LeSS é a ênfase na remoção de impedimentos organizacionais que possam</p><p>dificultar a eficácia das equipes ágeis. Isso pode incluir a reestruturação de departamentos, a revisão</p><p>de processos internos e a eliminação de práticas burocráticas desnecessárias. A liderança tem um papel</p><p>crucial nesse aspecto, apoiando as equipes e promovendo uma cultura de agilidade e inovação.</p><p>114</p><p>Unidade III</p><p>O framework LeSS é utilizado por várias grandes empresas para escalar práticas ágeis e melhorar a</p><p>eficiência e a qualidade de seus produtos. A seguir, listamos alguns exemplos de empresas que optaram</p><p>pelo LeSS para aproveitar sua simplicidade e eficácia na coordenação de múltiplas equipes, mantendo</p><p>os princípios fundamentais do Scrum. Cada caso de uso demonstra como o LeSS pode ser adaptado a</p><p>diferentes contextos e setores, promovendo uma cultura de melhoria contínua e colaboração eficiente.</p><p>• Ericsson: adotou o LeSS para transformar seu desenvolvimento de produtos, resultando em maior</p><p>flexibilidade e ciclos de lançamento mais curtos.</p><p>• John Deere: utilizou LeSS para melhorar a precisão das previsões de entrega e resolver problemas</p><p>de qualidade de seus lançamentos.</p><p>• BMW Group: utilizou o LeSS em sua plataforma unificada de vendas e em projetos de condução</p><p>autônoma, aplicando o LeSS Huge para coordenar múltiplas equipes em iniciativas de grande escala.</p><p>• Huawei: implementou o LeSS para transformar sua gestão tradicional, enfrentando desafios de</p><p>coordenação entre equipes e melhorando significativamente a entrega de produtos.</p><p>• Nokia Networks: adotou o LeSS para seu projeto de High Capacity Network Gateway, resultando</p><p>em maior flexibilidade e ciclos de lançamento mais curtos.</p><p>• Agfa Healthcare: utilizou o LeSS para aprimorar seus processos de desenvolvimento de software</p><p>em saúde, melhorando a qualidade e a velocidade de entrega.</p><p>• Port of Rotterdam: aplicou o LeSS para alinhar seus objetivos de negócios com o desenvolvimento</p><p>de software, melhorando a coordenação e a entrega contínua de valor.</p><p>Outra opção é utilizar o Nexus, que é um framework projetado para escalar o Scrum em grandes</p><p>organizações, desenvolvido por Ken Schwaber, cocriador do Scrum. Este framework busca manter a</p><p>simplicidade e a eficácia do Scrum, facilitando a coordenação de várias equipes que trabalham juntas</p><p>em um único produto (Bittner; Kong; West, 2017). Nexus é particularmente adequado para ambientes</p><p>nos quais a CI e a entrega de valor frequente são essenciais, e nos quais a comunicação e a coordenação</p><p>entre equipes são fundamentais.</p><p>O nome Nexus foi escolhido para refletir a ideia central do framework: a conexão e integração de</p><p>múltiplas equipes que trabalham juntas em um único produto. Nexus significa uma ligação ou conexão.</p><p>A escolha deste nome, portanto, enfatiza o foco do framework em coordenar e integrar o trabalho</p><p>de várias equipes Scrum para garantir que elas funcionem como uma unidade coesa.</p><p>O núcleo do Nexus é o conceito de Nexus Integration Team, que é responsável por garantir que</p><p>os incrementos de trabalho das várias equipes sejam integrados de maneira eficiente e contínua. Este</p><p>time atua como facilitador para resolver problemas de integração e remover impedimentos que possam</p><p>afetar a coesão do produto. O Nexus Integration Team inclui membros das equipes</p><p>de desenvolvimento e</p><p>um Nexus Scrum Master, que é responsável por facilitar a integração e a aplicação do framework Nexus.</p><p>115</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Em termos de estrutura, o Nexus mantém os papéis tradicionais do Scrum, como Product Owner e</p><p>Scrum Master, mas adiciona funções e eventos adicionais para lidar com a complexidade da coordenação</p><p>de múltiplas equipes. Há um único Product Owner que gerencia um Product Backlog comum para</p><p>todas as equipes, garantindo que todas as iniciativas estejam alinhadas com os objetivos estratégicos</p><p>do produto. Cada equipe ainda possui seu próprio Scrum Master, mas o Nexus Scrum Master tem a</p><p>responsabilidade adicional de facilitar a colaboração entre as equipes e garantir que os princípios do</p><p>Nexus sejam seguidos.</p><p>Os eventos do Nexus são baseados nos eventos tradicionais do Scrum, mas incluem adaptações para</p><p>lidar com a escala. A Sprint Planning no Nexus é realizada em duas partes: primeiro, todas as equipes</p><p>se reúnem para uma Nexus Sprint Planning, em que identificam os itens do Product Backlog que serão</p><p>abordados no próximo sprint e discutem as dependências entre equipes. Em seguida, cada equipe realiza</p><p>sua própria Sprint Planning para detalhar como irão abordar os itens selecionados.</p><p>Durante o sprint, as equipes realizam suas reuniões diárias de Scrum (Daily Scrum) de modo tradicional,</p><p>mas também há um Nexus Daily Scrum no qual representantes das equipes se reúnem para discutir o</p><p>progresso e resolver impedimentos que afetam a integração entre as equipes. Esse evento adicional</p><p>ajuda a manter a comunicação fluida e a coordenação eficiente entre todas as partes envolvidas.</p><p>A Nexus Sprint Review é outra adaptação importante, em que todas as equipes se reúnem para</p><p>apresentar os incrementos de trabalho completados e receber feedbacks conjuntos das partes interessadas.</p><p>Isso garante que todas as equipes estejam alinhadas com as expectativas dos stakeholders e permite</p><p>ajustes rápidos com base nas informações recebidas. Da mesma forma, a Nexus Sprint Retrospective é</p><p>realizada em duas partes: uma retrospectiva conjunta para discutir questões e melhorias que afetam todas</p><p>as equipes, seguida por retrospectivas individuais em cada equipe para tratar de questões específicas.</p><p>A transparência é um princípio fundamental do Nexus, promovida através de artefatos e ferramentas</p><p>visuais que ajudam a monitorar o progresso e a integração do trabalho. Quadros de integração, gráficos</p><p>de burndown e outras ferramentas são utilizados para proporcionar visibilidade sobre o estado dos</p><p>incrementos de produto e identificar rapidamente quaisquer problemas de integração.</p><p>A ênfase na remoção de impedimentos organizacionais e técnicos é um aspecto crítico do Nexus.</p><p>O Nexus Integration Team trabalha ativamente para identificar e resolver problemas que possam afetar a</p><p>eficiência da integração e a qualidade do produto final. A liderança organizacional também desempenha</p><p>um papel crucial em relação a este aspecto, apoiando as equipes e promovendo uma cultura de melhoria</p><p>contínua e colaboração.</p><p>A seguir, listamos novamente algumas empresas notáveis que implementaram o Nexus para escalar</p><p>suas práticas ágeis.</p><p>• KLM Royal Dutch Airlines: utilizou o Nexus para melhorar a integração e a entrega de suas</p><p>equipes Scrum, especialmente para o desenvolvimento de aplicativos móveis para programas</p><p>de fidelidade. O Nexus ajudou a resolver problemas de dependências múltiplas e dificuldades de</p><p>integração, permitindo entregas mais rápidas e consistentes.</p><p>116</p><p>Unidade III</p><p>• Cathay Pacific: implementou o Nexus para lidar com os desafios de coordenação entre várias equipes</p><p>Scrum, melhorando a comunicação e a eficiência na entrega de incrementos integrados de produto.</p><p>• Net Health: aplicou o Nexus para melhorar a colaboração entre equipes e a qualidade das entregas,</p><p>facilitando a CI dos incrementos de produto.</p><p>• Terminales Portuarios Peruanos: adotou o Nexus para alinhar seus objetivos de negócios</p><p>com o desenvolvimento de software, melhorando significativamente o tempo de mercado e</p><p>a coordenação das equipes. Neste momento e considerando as informações apresentadas,</p><p>é importante compararmos os frameworks para facilitar a fixação dos conceitos. Para comparar</p><p>os frameworks SAFe , LeSS e Nexus, é útil examinarmos suas principais características, estruturas</p><p>e abordagens. O quadro a seguir fornece uma visão geral comparativa desses três frameworks de</p><p>escalonamento ágil.</p><p>Quadro 5 – Comparando os frameworks para escala ágil</p><p>Característica SAFe LeSS Nexus</p><p>Propósito</p><p>Escalar práticas ágeis em toda a</p><p>organização, abrangendo níveis</p><p>de equipe, programa, solução</p><p>e portfólio</p><p>Escalar o Scrum mantendo a</p><p>simplicidade e flexibilidade,</p><p>focado em múltiplas equipes</p><p>trabalhando em um único produto</p><p>Escalar o Scrum com ênfase na</p><p>CI e coordenação entre múltiplas</p><p>equipes em um único produto</p><p>Estrutura</p><p>Quatro níveis: Equipe, Programa,</p><p>Grande Solução (Large Solution)</p><p>e Portfólio</p><p>Dois níveis: equipe e LeSS Huge</p><p>para grandes implementações</p><p>Adiciona o Nexus Integration</p><p>Team para coordenar</p><p>múltiplas equipes</p><p>Papel do</p><p>Product</p><p>Owner</p><p>Um Product Owner por Agile</p><p>Release Train (ART)</p><p>Um único Product Owner para</p><p>todas as equipes</p><p>Um único Product Owner para</p><p>todas as equipes</p><p>Backlog Program Backlog e Team Backlogs Um único Product Backlog para</p><p>todas as equipes</p><p>Um único Product Backlog para</p><p>todas as equipes</p><p>Scrum Master</p><p>Scrum Master para cada equipe, mais</p><p>funções adicionais como RTE (Release</p><p>Train Engineer) no nível do programa</p><p>Scrum Master para cada equipe</p><p>Scrum Master para cada equipe,</p><p>mais um Nexus Scrum Master</p><p>para o Nexus Integration Team</p><p>Eventos de</p><p>planejamento</p><p>Program Increment (PI) Planning no</p><p>nível do programa; Sprint Planning</p><p>no nível da equipe</p><p>Sprint Planning em duas partes:</p><p>primeiro para todas as equipes</p><p>juntas, depois para cada equipe</p><p>individualmente</p><p>Nexus Sprint Planning em</p><p>duas partes: uma para todas as</p><p>equipes juntas e outra para cada</p><p>equipe individualmente</p><p>Integração</p><p>contínua</p><p>Enfatiza práticas DevOps e CI/CD</p><p>para CI</p><p>Foco na CI através de práticas de</p><p>engenharia ágil</p><p>Nexus Integration Team garante a</p><p>integração contínua entre equipes</p><p>Transparência</p><p>Ferramentas visuais como</p><p>PI Objectives, Kanban em nível de</p><p>portfólio e gráficos de burndown</p><p>Ferramentas visuais e reuniões</p><p>conjuntas para promover</p><p>transparência</p><p>Ferramentas visuais e</p><p>reuniões conjuntas para</p><p>promover transparência</p><p>Governança</p><p>Estruturas formais de governança</p><p>em todos os níveis, incluindo Lean</p><p>Portfolio Management</p><p>Menos foco em governança</p><p>formal, mais em auto‑organização</p><p>e simplicidade</p><p>Enfatiza a transparência e a</p><p>remoção de impedimentos</p><p>organizacionais, com menos foco</p><p>em governança formal</p><p>Complexidade</p><p>Estrutura mais complexa e</p><p>abrangente, adequada para grandes</p><p>organizações com múltiplos níveis</p><p>de hierarquia</p><p>Estrutura simples e flexível,</p><p>adequada para organizações</p><p>que desejam escalar mantendo a</p><p>simplicidade do Scrum</p><p>Estrutura focada na integração,</p><p>adequada para organizações que</p><p>precisam coordenar várias equipes</p><p>Scrum em um único produto</p><p>Cultura e</p><p>mentalidade</p><p>Promove uma mentalidade</p><p>Lean‑Agile e a liderança em todos</p><p>os níveis</p><p>Foco na simplicidade, transparência</p><p>e melhoria contínua</p><p>Foco na integração,</p><p>transparência e colaboração</p><p>contínua entre equipes</p><p>117</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>5.2 Ferramentas digitais para colaboração e gestão de projetos</p><p>(Jira, Trello, Asana)</p><p>O Trello é uma ferramenta de gerenciamento de projetos conhecida por sua interface intuitiva e</p><p>visualmente agradável, que facilita a organização e o acompanhamento de tarefas, sobretudo dentro de</p><p>metodologias ágeis. Desenvolvido pela Atlassian, o Trello utiliza um sistema de cartões e quadros que</p><p>permite que as equipes organizem suas atividades de maneira clara e dinâmica. Essa abordagem visual</p><p>é especialmente eficaz para a gestão de projetos ágeis, como Scrum e Kanban, pois proporciona uma</p><p>visão imediata do progresso do trabalho e das tarefas</p><p>pendentes.</p><p>Figura 16 – Exemplo de quadro no Trello</p><p>Uma das principais vantagens do Trello na gestão de projetos ágeis é a sua simplicidade e flexibilidade.</p><p>Nele, os quadros representam projetos, enquanto as listas dentro dos quadros representam etapas do</p><p>fluxo de trabalho, como a fazer, em progresso e concluído, conforme indica a figura ilustrada. Cada</p><p>cartão, dentro de uma lista, representa uma tarefa específica ou um item de trabalho. Isso permite que</p><p>as equipes vejam facilmente quais tarefas estão sendo realizadas, quais estão aguardando e quais foram</p><p>concluídas, facilitando a priorização e a gestão do fluxo de trabalho.</p><p>O recurso de timeline do Trello é uma funcionalidade poderosa que permite aos usuários visualizar e</p><p>gerenciar projetos de maneira mais eficiente, ao apresentar um panorama cronológico das tarefas</p><p>e atividades. Introduzido como parte do conjunto de funcionalidades avançadas do Trello, a timeline</p><p>transforma a tradicional visualização de quadros e cartões em uma linha do tempo interativa, facilitando</p><p>a compreensão do progresso do projeto ao longo do tempo.</p><p>118</p><p>Unidade III</p><p>Ela é particularmente útil para projetos que envolvem múltiplas etapas e dependências complexas,</p><p>oferecendo uma visão clara e organizada de como as tarefas se distribuem ao longo de um período</p><p>específico. Esta funcionalidade permite que os usuários vejam facilmente quando as tarefas estão</p><p>programadas para começar e terminar, identificando rapidamente quaisquer sobreposições ou lacunas</p><p>que possam necessitar de ajustes.</p><p>A visualização em linha do tempo é intuitiva, conforme indica a figura a seguir, e ajuda a</p><p>planejar e coordenar esforços, garantindo que todos os membros da equipe estejam alinhados com</p><p>o cronograma do projeto.</p><p>Figura 17 – Timeline no Trello</p><p>A personalização do Trello é outro aspecto que o torna adequado para a gestão ágil. Os usuários</p><p>podem adicionar etiquetas, datas de vencimento, checklists e anexos aos cartões, proporcionando</p><p>um alto nível de detalhe e controle sobre cada tarefa. Além disso, o Trello oferece uma variedade de</p><p>power‑ups, que são integrações e funcionalidades adicionais que podem ser ativadas para melhorar a</p><p>experiência do usuário. Entre os power‑ups mais úteis para equipes ágeis estão aqueles que permitem</p><p>a integração com ferramentas como Slack, Google Drive e Jira, bem como funcionalidades específicas</p><p>como automação de tarefas com o Butler.</p><p>O Trello também facilita a comunicação e a colaboração dentro das equipes. Cada cartão tem uma</p><p>seção de comentários no qual os membros da equipe podem discutir detalhes, compartilhar atualizações</p><p>e resolver problemas em tempo real. Essa facilidade reduz a necessidade de reuniões frequentes e trocas</p><p>extensivas de e‑mails, permitindo que as equipes mantenham o foco no trabalho produtivo. Além disso,</p><p>as notificações em tempo real garantem que todos estejam atualizados sobre mudanças importantes e</p><p>prazos iminentes.</p><p>119</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Na gestão de projetos ágeis, a transparência e a visibilidade são cruciais, por isso o Trello é uma boa</p><p>escolha que atende a essas necessidades. Os quadros e cartões da ferramenta oferecem uma visão clara</p><p>do estado atual do projeto, permitindo que todos os membros da equipe vejam o que está sendo feito</p><p>e o que precisa ser feito a seguir. Essa funcionalidade é particularmente útil durante as reuniões de</p><p>stand‑up diárias e revisões de sprint, em que a equipe pode rapidamente revisar o progresso e ajustar as</p><p>prioridades conforme necessário.</p><p>Por fim, está é uma ferramenta acessível, tanto em termos de facilidade de uso quanto de custo. Sua</p><p>versão gratuita oferece muitas das funcionalidades necessárias para a gestão eficaz de projetos ágeis e</p><p>as versões pagas adicionam recursos avançados e mais capacidade de integração. Isso torna o Trello uma</p><p>opção atraente para equipes de todos os tamanhos, desde pequenas startups até grandes organizações.</p><p>Saiba mais</p><p>Para conhecer mais e explorar outras funções da ferramenta Trello, acesse:</p><p>Disponível em: https://tinyurl.com/62w9t5bu. Acesso em: 30 jul. 2024</p><p>O Jira também é uma ferramenta de gerenciamento de projetos amplamente utilizada. Foi desenvolvida</p><p>pela Atlassian, que se destaca pela sua flexibilidade e funcionalidade abrangente. Originalmente</p><p>concebido para o rastreamento de bugs e gerenciamento de projetos de desenvolvimento de software,</p><p>o Jira evoluiu para se tornar uma solução robusta que atende diversas indústrias e tipos de projetos.</p><p>A plataforma permite que equipes organizem, planejem, acompanhem e relatem trabalhos de modo</p><p>eficiente, facilitando a colaboração e a transparência em projetos complexos.</p><p>Uma das características mais notáveis do Jira é sua capacidade de personalização. As equipes podem</p><p>configurar fluxos de trabalho que correspondem exatamente às suas necessidades específicas, desde</p><p>simples listas de tarefas até processos de desenvolvimento de softwares altamente complexos. Isso é</p><p>possível graças a uma ampla gama de configurações e opções de automação que podem ser adaptadas</p><p>às necessidades exclusivas de cada projeto. Além disso, o Jira oferece integrações com inúmeras outras</p><p>ferramentas e serviços, permitindo mais sinergia dentro do ecossistema de ferramentas que uma equipe</p><p>pode estar utilizando.</p><p>O Jira também se destaca por sua capacidade de relatório e visualização. A figura a seguir apresenta</p><p>um quadro de visualização das tarefas da equipe. Com ela, notamos que a ferramenta oferece diversos</p><p>tipos de gráficos e relatórios que ajudam as equipes a monitorar o progresso, identificar gargalos e</p><p>melhorar continuamente seus processos.</p><p>120</p><p>Unidade III</p><p>Figura 18 – Quadros Scrum/Kanban no Jira</p><p>Disponível em: https://tinyurl.com/2mzs6wnx. Acesso em: 10 jul. 2024.</p><p>As figuras a seguir, por sua vez, exemplificam relatórios típicos e mostram a funcionalidade de apoio</p><p>à automação, que são funcionalidades particularmente valiosas para equipes que utilizam metodologias</p><p>ágeis, como Scrum ou Kanban, já que permitem a visualização clara das tarefas em andamento,</p><p>concluídas e pendentes, além de facilitar a realização de sprints e a gestão de backlog.</p><p>Figura 19 – Relatórios de progresso e burndown do sprint no Jira</p><p>Disponível em: https://tinyurl.com/mw3ze3xh. Acesso em: 10 jul. 2024.</p><p>121</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Figura 20 – Automação no Jira</p><p>Disponível em: https://tinyurl.com/2ueeep2b. Acesso em: 10 jul. 2024.</p><p>A usabilidade do Jira é outro ponto de destaque. Embora possa parecer intimidador para novos</p><p>usuários, devido à sua vasta gama de funcionalidades, a Atlassian oferece uma série de recursos</p><p>educacionais, incluindo documentação detalhada, tutoriais e uma comunidade ativa de usuários que</p><p>compartilham dicas e melhores práticas. Isso facilita a curva de aprendizado e ajuda as equipes a tirar o</p><p>máximo proveito da ferramenta rapidamente.</p><p>Desse modo, a adoção do Jira pode trazer inúmeros benefícios para as organizações. Ao centralizar o</p><p>gerenciamento de tarefas e projetos em uma única plataforma, ele melhora a comunicação e a colaboração</p><p>entre membros da equipe, reduzindo a necessidade de reuniões extensas e trocas intermináveis de</p><p>e‑mails. Além disso, ao fornecer visibilidade em tempo real sobre o status dos projetos, permite que os</p><p>gestores tomem decisões mais informadas e proativas, ajustando prioridades e alocando recursos de</p><p>maneira mais eficaz.</p><p>Embora o Trello e o Jira compartilhem muitas funcionalidades‑chave, como a organização de tarefas,</p><p>o gerenciamento de projetos e a facilitação da colaboração em equipe, eles diferem significativamente</p><p>em termos de complexidade, personalização e propósito de uso, características que os tornam mais</p><p>adequados para diferentes tipos de projetos e necessidades organizacionais.</p><p>O Trello é conhecido por sua simplicidade e interface visual intuitiva, o que o torna uma excelente</p><p>escolha para equipes que buscam uma solução fácil de usar e rápida de implementar. Sua abordagem,</p><p>baseada em cartões e quadros,</p><p>permite uma organização clara e visual das tarefas, facilitando a</p><p>122</p><p>Unidade III</p><p>compreensão imediata do fluxo de trabalho. Isso o torna particularmente eficaz para equipes que</p><p>trabalham com metodologias ágeis como Kanban, nas quais a visualização do progresso é essencial.</p><p>Por outro lado, o Jira é uma ferramenta mais robusta e complexa, desenvolvida principalmente</p><p>para o gerenciamento de projetos de desenvolvimento de software. Ele oferece uma ampla opção</p><p>de funcionalidades que vai além do que o Trello proporciona, incluindo o suporte avançado para</p><p>metodologias ágeis como Scrum e Kanban, além de funcionalidades específicas para desenvolvimento,</p><p>como rastreamento de bugs, CI e gestão de versões. O Jira permite uma personalização profunda dos</p><p>fluxos de trabalho, com a capacidade de definir estados específicos, regras de transição e automações</p><p>complexas, atendendo, assim, a projetos mais exigentes e complexos.</p><p>Outra diferença relevante é a capacidade de relatórios e análises. Como vimos, o Jira oferece uma</p><p>gama avançada de ferramentas de relatórios e gráficos que permitem uma análise detalhada do progresso</p><p>do projeto, identificação de gargalos e medição de desempenho. Esses recursos são fundamentais para</p><p>grandes equipes e projetos complexos nos quais a visibilidade detalhada e a capacidade de tomar</p><p>decisões baseadas em dados são essenciais. Entretanto, ainda que o Trello também ofereça algumas</p><p>capacidades de relatórios, elas não são tão abrangentes ou detalhadas quanto as disponíveis no Jira.</p><p>A integração com outras ferramentas e sistemas também destaca uma diferença significativa.</p><p>Embora ambos os produtos se integrem bem com várias outras ferramentas, o Jira, sendo uma solução</p><p>mais robusta, oferece integrações mais ricas e específicas para o desenvolvimento de software,</p><p>como integração com repositórios de código, ferramentas de construção e ambientes de testes. Essa</p><p>característica facilita a criação de um ecossistema de desenvolvimento integrado e eficiente, que é</p><p>menos crítico no Trello devido ao seu foco mais generalista.</p><p>Em termos de usabilidade e curva de aprendizado, o Trello se destaca por ser mais acessível e</p><p>intuitivo para novos usuários. A simplicidade de sua interface permite que equipes com pouca ou</p><p>nenhuma experiência em ferramentas de gerenciamento de projetos comecem a usá‑lo imediatamente.</p><p>Em contraste, o Jira pode parecer intimidador para novos usuários devido à sua complexidade e vasta</p><p>gama de funcionalidades. No entanto, para equipes que necessitam de um gerenciamento mais granular</p><p>e sofisticado, o investimento inicial de tempo e aprendizado no Jira pode se traduzir em benefícios</p><p>significativos em termos de controle e eficiência.</p><p>Por fim, trataremos sobre a Asana, que é uma ferramenta de gerenciamento de projetos e tarefas</p><p>que se destaca por sua capacidade de ajudar equipes a planejar, organizar e acompanhar o trabalho</p><p>de maneira eficiente. Fundada em 2008 por Dustin Moskovitz e Justin Rosenstein, ex‑funcionários do</p><p>Facebook, a Asana foi concebida para simplificar a colaboração e aumentar a produtividade, abordando</p><p>os desafios comuns de comunicação e coordenação em equipes de todos os tamanhos.</p><p>Uma das características mais marcantes da Asana é sua interface intuitiva e amigável, que permite</p><p>aos usuários criar e gerenciar projetos com facilidade. As figuras a seguir mostram essa característica.</p><p>A plataforma utiliza uma estrutura baseada em listas e quadros para organizar tarefas, facilitando a</p><p>visualização do trabalho em andamento e a identificação de prioridades. Cada tarefa pode incluir detalhes</p><p>123</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>como descrições, datas de vencimento, responsáveis, subtarefas, comentários e anexos, proporcionando</p><p>um nível de detalhamento que ajuda as equipes a manterem‑se alinhadas e informadas.</p><p>A) B)</p><p>Figura 21 – Interface amigável do Asana</p><p>Disponível em: c. Acesso em: 11 jul. 2024.</p><p>A Asana é especialmente poderosa em sua capacidade de oferecer diferentes visualizações de projeto,</p><p>como listas, quadros Kanban, calendários e cronogramas. Essas visualizações permitem que as equipes</p><p>escolham a melhor maneira de gerenciar seu trabalho, dependendo do contexto e das preferências</p><p>individuais. A visualização de cronograma, por exemplo, é particularmente útil para projetos complexos</p><p>com muitas interdependências, permitindo que os usuários vejam a progressão das tarefas ao longo do</p><p>tempo e façam ajustes conforme necessário.</p><p>Outra vantagem significativa da Asana é sua robusta funcionalidade de colaboração. A plataforma</p><p>permite que os membros da equipe comentem diretamente em tarefas, mencionem colegas, compartilhem</p><p>atualizações e discutam detalhes sem a necessidade de sair da ferramenta. Isso reduz a dependência de</p><p>e‑mails e outras formas de comunicação fragmentadas, centralizando a colaboração e tornando‑a mais</p><p>eficiente e transparente.</p><p>A Asana também se destaca por sua capacidade de automação e integração. A ferramenta oferece</p><p>uma gama de automações que podem ser configuradas para agilizar processos repetitivos, como mover</p><p>tarefas entre projetos, atualizar datas de vencimento ou notificar membros da equipe sobre mudanças.</p><p>No entanto, ela não possui algumas das funcionalidades específicas de desenvolvimento de software que</p><p>o Jira oferece, como integração direta com repositórios de código e ferramentas de CI/CD. Ainda assim,</p><p>a Asana pode ser configurada para suportar muitos dos processos necessários para desenvolvimento de</p><p>software, tornando‑se uma ferramenta útil mesmo para esses ambientes.</p><p>124</p><p>Unidade III</p><p>Diferentemente do Jira, que é especificamente otimizado para o desenvolvimento de software com</p><p>funcionalidades avançadas para rastreamento de bugs, gestão de versões e CI, a Asana foi projetada</p><p>para ser uma solução versátil, que pode ser adaptada a diferentes necessidades organizacionais. Ela</p><p>também se integra com uma ampla variedade de outras ferramentas populares, incluindo Slack, Google</p><p>Drive, Microsoft Teams, e muitas mais, permitindo que as equipes mantenham seus fluxos de trabalho</p><p>conectados e otimizados.</p><p>Em termos de gestão de projetos ágeis, a Asana oferece suporte para metodologias como Scrum e</p><p>Kanban, permitindo que as equipes acompanhem sprints, gerenciem backlogs e visualizem o progresso</p><p>em quadros Kanban. Isso é particularmente útil para equipes de desenvolvimento de software e outras</p><p>que utilizam práticas ágeis, proporcionando uma flexibilidade que pode ser ajustada às necessidades</p><p>específicas do projeto.</p><p>As funcionalidades de relatórios e análise da Asana são outra área de destaque. A plataforma</p><p>oferece uma série de relatórios predefinidos e personalizados que permitem aos gestores acompanhar o</p><p>progresso do projeto, medir a produtividade e identificar possíveis gargalos. Essas ferramentas analíticas</p><p>são essenciais para a tomada de decisões informadas e para o aprimoramento contínuo dos processos</p><p>de trabalho.</p><p>A usabilidade e a acessibilidade da Asana também são destacáveis. A plataforma está disponível em</p><p>versões web, desktop e mobile, permitindo que os usuários acessem e atualizem suas tarefas de qualquer</p><p>lugar. Isso é particularmente benéfico para equipes distribuídas ou que trabalham remotamente,</p><p>garantindo que todos possam se manter conectados e produtivos, independentemente de sua localização.</p><p>Quando se trata de projetos ágeis de desenvolvimento de software, tanto o Trello quanto a Asana</p><p>são ferramentas eficazes, mas não são exatamente equivalentes. Embora ambos possam ser usados,</p><p>a escolha entre eles depende das necessidades específicas da equipe. Para as menores, ou projetos</p><p>menos complexos que valorizam a simplicidade e a visualização intuitiva, o Trello pode ser a escolha</p><p>ideal. Para equipes maiores, ou projetos mais complexos que requerem funcionalidades avançadas de</p><p>gestão, relatórios detalhados e mais integração com outras ferramentas de desenvolvimento, a Asana</p><p>provavelmente será a opção mais adequada.</p><p>125</p><p>GERENCIAMENTO DE PROJETOS DE</p><p>SOFTWARE</p><p>5.3 Automação e ferramentas para CI/CD (Jenkins, GitLab CI)</p><p>O Jenkins é uma ferramenta de automação de código aberto amplamente utilizada para a CI e CD</p><p>no desenvolvimento de software, desempenhando um papel crucial na gestão ágil de seus projetos.</p><p>Criado inicialmente por Kohsuke Kawaguchi em 2004, o Jenkins se tornou um componente essencial em</p><p>pipelines de DevOps, facilitando a implementação de práticas ágeis ao automatizar construção, teste e</p><p>implantação de aplicações. A figura 22 mostra um exemplo de pipeline.</p><p>Figura 22 – Exemplo de pipeline no Jenkins</p><p>Disponível em: https://shre.ink/Dfks. Acesso em: 11 jul. 2024.</p><p>Na gestão ágil de projetos de software, a CI é um princípio fundamental. O Jenkins permite que os</p><p>desenvolvedores integrem suas alterações de código frequentemente em um repositório compartilhado,</p><p>no qual cada integração pode ser verificada por uma construção automatizada. Esse processo ajuda a</p><p>identificar erros de modo rápido, melhorando a qualidade do código e acelerando o ciclo de desenvolvimento.</p><p>Ao automatizar o processo de integração, o Jenkins reduz significativamente o tempo e o esforço</p><p>necessários para detectar e corrigir problemas, permitindo que as equipes de desenvolvimento entreguem</p><p>software de alta qualidade com mais rapidez.</p><p>A CD é outra prática ágil facilitada pelo Jenkins. Através da automação de tarefas repetitivas e</p><p>do gerenciamento de pipelines de entrega, o Jenkins permite que as equipes de desenvolvimento</p><p>automatizem não apenas a construção e o teste, mas também a entrega e implantação de software</p><p>em ambientes de produção. Isso garante que o software esteja sempre em um estado pronto para ser</p><p>liberado, aumentando a frequência e a confiabilidade das entregas. Com o Jenkins, as equipes podem</p><p>configurar pipelines que cobrem todo o ciclo de vida do desenvolvimento, desde a construção inicial até</p><p>a implantação final, garantindo um fluxo contínuo e eficiente de trabalho.</p><p>126</p><p>Unidade III</p><p>Além de suas capacidades de automação, o Jenkins oferece uma vasta gama de plugins que expandem</p><p>sua funcionalidade. Eles permitem a integração com várias outras ferramentas de desenvolvimento,</p><p>como sistemas de controle de versão (Git, SVN), ferramentas de construção (Maven, Gradle), plataformas</p><p>de teste (JUnit, Selenium) e ambientes de implantação (Docker, Kubernetes). Esta extensibilidade torna</p><p>o Jenkins uma ferramenta versátil que pode ser adaptada para atender às necessidades específicas de</p><p>qualquer projeto de desenvolvimento de software.</p><p>Na prática, o uso do Jenkins na gestão ágil de projetos de software proporciona vários benefícios.</p><p>Primeiro, ele melhora a colaboração entre as equipes de desenvolvimento e operações, alinhando‑as</p><p>em torno de processos automatizados e objetivos comuns. Isso é essencial para a implementação</p><p>eficaz de práticas de DevOps, que são fundamentais para a agilidade organizacional. Segundo, ao</p><p>reduzir a necessidade de intervenções manuais, o Jenkins diminui a possibilidade de erros humanos,</p><p>aumentando a consistência e a confiabilidade das entregas de software. Terceiro, ao fornecer feedback</p><p>rápido sobre a qualidade do código e o status das construções, o Jenkins ajuda as equipes a identificar</p><p>e resolver problemas de forma proativa antes que eles se tornem críticos.</p><p>A usabilidade do Jenkins também é um ponto forte. Sua interface web permite que os usuários</p><p>configurem e monitorem pipelines de CI/CD de modo intuitivo, enquanto suas funcionalidades avançadas</p><p>permitem a personalização de tarefas e a configuração de notificações e alertas. Isso garante que todos</p><p>os membros da equipe estejam cientes do estado atual do projeto e possam reagir rapidamente a</p><p>qualquer problema que surja.</p><p>Como podemos constatar, o Jenkins é uma ferramenta essencial para a gestão ágil de projetos</p><p>de software, oferecendo automação robusta para CI/CD, uma vasta extensibilidade através de plugins</p><p>e melhorias significativas na colaboração e eficiência das equipes de desenvolvimento. Ao integrar o</p><p>Jenkins em seus processos, as equipes podem implementar práticas ágeis de modo mais eficaz, garantindo</p><p>entregas de software rápidas, frequentes e de alta qualidade.</p><p>O GitLab CI (Continuous Integration) é uma poderosa ferramenta de CI/CD incluída ao GitLab,</p><p>uma plataforma completa de DevOps que oferece gerenciamento de código‑fonte, controle de versão</p><p>e muitas outras funcionalidades para o ciclo de vida do desenvolvimento de software. O GitLab CI é</p><p>projetado para automatizar construção, teste e implantação de aplicações, facilitando a implementação</p><p>de práticas de CI/CD, promovendo a eficiência e a colaboração nas equipes de desenvolvimento.</p><p>Uma característica importante do GitLab CI é sua integração nativa com o GitLab, o que proporciona</p><p>uma experiência de usuário perfeita. Cada repositório na ferramenta pode ter um arquivo de</p><p>configuração específico, chamado `.gitlab‑ci.yml`, que define o pipeline de CI/CD. Esse arquivo, escrito</p><p>em YAML, permite aos desenvolvedores descrever as etapas do pipeline, incluindo construções, testes e</p><p>implantações. Essa configuração flexível e declarativa facilita a definição e o ajuste dos processos de CI/CD</p><p>conforme necessário.</p><p>YAML (Yet Another Markup Language) é uma linguagem de serialização de dados amigável para</p><p>humanos, com uma sintaxe simples e legível. É amplamente utilizada para escrever arquivos de</p><p>configuração devido à sua clareza e facilidade de leitura. Ao ser comparada com outras linguagens</p><p>127</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>de configuração, como JSON e XML, o YAML se destaca por sua simplicidade e flexibilidade, facilitando</p><p>a leitura e a escrita por parte dos desenvolvedores.</p><p>No contexto do GitLab CI, o arquivo.gitlab‑ci.yml é escrito em YAML e define a configuração do</p><p>pipeline de CI/CD. Esse arquivo descreve as diferentes etapas (jobs) que devem ser executadas, as</p><p>condições para a execução dessas etapas, as variáveis de ambiente, e outros detalhes necessários para</p><p>a automatização do pipeline. Vamos fazer um exemplo simples de um arquivo.gitlab‑ci.yml para um</p><p>projeto de desenvolvimento de software:</p><p>stages:</p><p>‑ build</p><p>‑ test</p><p>‑ deploy</p><p>variables:</p><p>TEST_VARIABLE: “Exemplo”</p><p>before_script:</p><p>‑ echo “Ajustando o ambiente”</p><p>build_job:</p><p>stage: build</p><p>script:</p><p>‑ echo “Fazendo o Building...”</p><p>‑./build_script.sh</p><p>test_job:</p><p>stage: test</p><p>script:</p><p>‑ echo “Executando os testes...”</p><p>‑./run_tests.sh</p><p>artifacts:</p><p>paths:</p><p>‑ test_results/</p><p>only:</p><p>‑ main</p><p>deploy_job:</p><p>stage: deploy</p><p>script:</p><p>‑ echo “Fazendo o Deploy da aplicaçao...”</p><p>‑./deploy_script.sh</p><p>environment:</p><p>name: production</p><p>url: http://exemplo.com.br</p><p>only:</p><p>‑ tags</p><p>128</p><p>Unidade III</p><p>Neste exemplo, o arquivo.gitlab‑ci.yml define três etapas principais no pipeline: build, test e deploy.</p><p>O pipeline do GitLab CI é composto por várias fases, cada uma contendo uma ou mais tarefas</p><p>que são executadas em sequência ou em paralelo. As fases típicas incluem build, test e deploy, mas</p><p>os usuários podem definir fases adicionais de acordo com suas necessidades específicas. Cada tarefa</p><p>dentro de uma fase é executada por um runner, que é um processo que as realiza quando definidas</p><p>no pipeline. O GitLab oferece runners compartilhados, mas as equipes também podem configurar seus</p><p>próprios runners para personalizar o ambiente de execução conforme necessário.</p><p>Um dos principais benefícios do GitLab CI é a sua capacidade de integração com uma ampla variedade</p><p>de ferramentas e serviços. Ele suporta várias linguagens de programação e frameworks, tornando‑o</p><p>uma escolha versátil para equipes de desenvolvimento. Além disso, o GitLab CI pode se integrar com</p><p>serviços de nuvem, ferramentas de conteinerização como Docker e plataformas de orquestração como</p><p>Kubernetes. Essas integrações facilitam a construção de pipelines complexos que cobrem todo o ciclo de</p><p>vida do desenvolvimento de software, desde a codificação até a produção.</p><p>A automação proporcionada pelo GitLab CI reduz significativamente</p><p>a necessidade de intervenções</p><p>manuais, minimizando o risco de erros humanos e aumentando a eficiência. As equipes podem configurar</p><p>gatilhos para iniciar pipelines automaticamente quando commits são feitos, merge requests são criadas</p><p>ou outras condições específicas são atendidas. Isso garante que o código seja constantemente verificado,</p><p>testado e pronto para ser implantado, promovendo uma CD e frequente de software de alta qualidade.</p><p>No contexto do controle de versão e do desenvolvimento colaborativo de software, commits e merge</p><p>requests são conceitos fundamentais que facilitam a gestão eficiente do código‑fonte e a colaboração</p><p>entre desenvolvedores. Um commit é uma ação que registra mudanças no repositório de código‑fonte.</p><p>Quando um desenvolvedor faz um commit, ele salva um instantâneo do estado atual do projeto,</p><p>incluindo adições, modificações ou remoções de arquivos.</p><p>Cada commit tem uma mensagem associada, que descreve as mudanças realizadas e um identificador</p><p>único (hash) que permite rastrear essas mudanças ao longo do tempo. Commits são essenciais para</p><p>manter um histórico detalhado e auditável do desenvolvimento, permitindo que os desenvolvedores</p><p>revisem e revertam mudanças se necessário. Vejamos um exemplo de um commit a seguir.</p><p>git commit ‑m “Corrigido bug no módulo de autenticação”</p><p>Neste exemplo, a mensagem “Corrigido bug no módulo de autenticação” descreve brevemente as</p><p>alterações feitas no código.</p><p>Já uma merge request (ou pull request em algumas plataformas como GitHub) é uma solicitação para</p><p>fundir (merge) as mudanças de uma branch (ramificação) de desenvolvimento para outra, geralmente</p><p>a branch principal (como main ou master). As merge requests são usadas para revisar e discutir as</p><p>mudanças propostas antes de integrá‑las ao código principal. Elas permitem que os desenvolvedores</p><p>colaborem, façam revisões de código, deixem comentários e garantam que o novo código atenda aos</p><p>padrões de qualidade e funcionalidade antes de ser mesclado.</p><p>129</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Além das funcionalidades básicas de CI/CD, o GitLab CI oferece recursos avançados que aumentam</p><p>sua utilidade e flexibilidade. Os pipelines dinâmicos permitem a criação de pipelines condicionais, que</p><p>adaptam sua execução com base em variáveis e condições específicas. Os pipelines de matriz permitem</p><p>a execução de várias combinações de tarefas em paralelo, o que é particularmente útil para testar</p><p>softwares em diferentes ambientes ou configurações.</p><p>As funcionalidades de cache e artefatos ajudam a acelerar o pipeline ao reutilizar resultados de</p><p>construções anteriores e preservar os resultados dos testes para análise posterior. Nas figuras a seguir,</p><p>podemos observar, primeiramente, alguns pipelines, e depois, os detalhes de um pipeline específico.</p><p>Figura 23 – Pipelines no GitLab CI</p><p>Disponível em: https://shre.ink/DfTl. Acesso em: 30 jul. 2024.</p><p>Figura 24 – Detalhes de um pipeline no GitLab CI</p><p>Disponível em: https://shre.ink/DfTm. Acesso em: 30 jul. 2024.</p><p>130</p><p>Unidade III</p><p>A interface de usuário do GitLab CI proporciona uma visualização clara e detalhada do estado</p><p>dos pipelines, permitindo que os desenvolvedores monitorem o progresso de construções, testes e</p><p>implantações em tempo real. Os dashboards fornecem insights sobre falhas e sucessos, facilitando</p><p>a identificação e a resolução de problemas rapidamente. Além disso, a integração com o sistema de</p><p>issues do GitLab permite rastrear o status das tarefas e associá‑las a tickets, promovendo uma gestão</p><p>mais eficiente e transparente do projeto.</p><p>A segurança também é uma prioridade no GitLab CI. A ferramenta oferece várias funcionalidades</p><p>para garantir que os pipelines sejam executados de maneira segura, incluindo a gestão de segredos, a</p><p>execução de pipelines em contêineres isolados e a implementação de políticas de segurança específicas.</p><p>Isso ajuda a proteger os dados sensíveis e a garantir a integridade do processo de desenvolvimento.</p><p>Em resumo, o GitLab CI é uma ferramenta robusta e versátil para CI/CD. Ele proporciona uma</p><p>automação eficiente do ciclo de vida do desenvolvimento de softwares, suportando uma ampla</p><p>variedade de linguagens e frameworks, oferecendo integrações com várias ferramentas e serviços.</p><p>Suas funcionalidades avançadas, interface intuitiva e foco em segurança fazem do GitLab CI uma</p><p>escolha excelente para equipes que buscam implementar práticas de CI/CD e melhorar sua eficiência</p><p>e colaboração.</p><p>Alguns desenvolvedores iniciantes confundem o GitLab com o Git. Assim, deve‑se acentuar que</p><p>Git, GitHub e GitLab são ferramentas que desempenham papéis distintos, mas complementares, no</p><p>desenvolvimento de software, oferecendo uma solução completa para controle de versão, colaboração</p><p>e gestão de projetos.</p><p>O Git é um sistema de controle de versão distribuído, criado por Linus Torvalds em 2005, utilizado</p><p>para rastrear mudanças no código‑fonte durante o desenvolvimento. Com Git, múltiplos desenvolvedores</p><p>podem trabalhar juntos de maneira eficiente, armazenando o histórico completo das mudanças, o</p><p>que possibilita reverter estados anteriores do código, criar branches para novas funcionalidades, ou</p><p>correções, e mesclar essas mudanças de volta ao código principal. A natureza distribuída do Git significa</p><p>que cada cópia de um repositório é completa, incluindo todo o histórico do projeto.</p><p>Já o GitHub, lançado em 2008, é uma plataforma de hospedagem de repositórios Git baseada</p><p>na web. Ele adiciona uma camada social ao Git, facilitando a colaboração entre desenvolvedores e</p><p>oferece uma interface web amigável para gerenciar repositórios, revisar código e colaborar em projetos.</p><p>Além de hospedar repositórios, o GitHub fornece várias funcionalidades adicionais, como sistema de</p><p>acompanhamento de problemas e tarefas, pull requests que permitem revisão e discussão de mudanças</p><p>antes da integração e uma ferramenta de CI/CD para automatizar fluxos de trabalho. O GitHub se tornou</p><p>especialmente popular na comunidade de código aberto, servindo como um hub no qual desenvolvedores</p><p>podem colaborar em projetos públicos e compartilhar código.</p><p>131</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>Lembrete</p><p>O GitLab, que já analisamos anteriormente, é uma plataforma de DevOps</p><p>completa que também oferece hospedagem de repositórios Git, mas com</p><p>um conjunto de funcionalidades mais abrangente. O GitLab não apenas</p><p>facilita a hospedagem e gerenciamento de repositórios de código‑fonte,</p><p>como integra ferramentas de CI/CD, permitindo a automação do ciclo de</p><p>vida do desenvolvimento de software, desde a construção e teste até a</p><p>implantação. A plataforma inclui funcionalidades para planejamento</p><p>de projetos, como gestão de tarefas e acompanhamento de problemas, e</p><p>para segurança, com verificações de vulnerabilidades integradas. GitLab</p><p>é conhecido por sua flexibilidade e capacidade de ser instalado em servidores</p><p>próprios, além de oferecer uma versão baseada na nuvem.</p><p>O GitLab CI, que faz parte do GitLab, refere‑se especificamente às funcionalidades de CI e CD integradas</p><p>na plataforma GitLab. Portanto, GitLab CI não é um produto separado, mas sim um componente crucial</p><p>dentro da plataforma, que é abrangente de DevOps. É importante mencionarmos também que o GitHub e</p><p>GitLab não são da mesma empresa. GitHub foi criado em 2008 e, em 2018, foi adquirido pela Microsoft.</p><p>O GitLab, por outro lado, é uma empresa independente fundada em 2011.</p><p>A relação entre Git, GitHub e GitLab é complementar. Git fornece a base de controle de versão</p><p>distribuído, enquanto GitHub e GitLab estendem essa funcionalidade com interfaces web e ferramentas</p><p>adicionais que facilitam a colaboração e a automação. GitHub é amplamente utilizado para projetos de</p><p>código aberto e colaboração pública, oferecendo uma interface intuitiva e ferramentas sociais.</p><p>Assim, o GitLab, com seu foco em uma solução repleta de DevOps, é frequentemente escolhido</p><p>por empresas que buscam uma plataforma integrada para todo o ciclo de vida do desenvolvimento de</p><p>software, desde o planejamento até</p><p>implantação e monitoramento. Ambas as plataformas aproveitam</p><p>o poder do Git para controle de versão, mas cada uma oferece um conjunto único de funcionalidades</p><p>para atender diferentes necessidades de desenvolvimento e colaboração.</p><p>5.4 Seleção e adaptação de ferramentas para equipes</p><p>A seleção e adaptação de ferramentas para equipes de desenvolvimento de software é um processo</p><p>crítico que pode influenciar diretamente a eficiência, a produtividade e o sucesso dos projetos. Escolher</p><p>as ferramentas adequadas envolve compreender as necessidades específicas da equipe e do projeto,</p><p>avaliando as características e capacidades de cada ferramenta, além de garantir que elas se integrem</p><p>bem ao fluxo de trabalho existente.</p><p>O primeiro passo na seleção de ferramentas é entender profundamente os requisitos do projeto</p><p>e as práticas de trabalho da equipe. Projetos diferentes têm necessidades distintas. Um projeto de</p><p>desenvolvimento de software ágil pode exigir ferramentas robustas de CI/CD, controle de versão</p><p>132</p><p>Unidade III</p><p>distribuído e gestão de projetos, enquanto um projeto focado em manutenção e suporte pode precisar</p><p>de ferramentas de monitoramento e gerenciamento de configuração mais avançadas.</p><p>Lembrete</p><p>É essencial envolver toda a equipe no processo de seleção para</p><p>assegurar que as ferramentas escolhidas atendam necessidades e</p><p>preferências de um projeto.</p><p>Após definir os requisitos, a avaliação das ferramentas deve considerar vários fatores. A usabilidade,</p><p>que é fundamental, além de ferramentas intuitivas e fáceis de usar podem reduzir a curva de aprendizado</p><p>e aumentar a adoção pela equipe. A integração com outras ferramentas já utilizadas pela equipe é</p><p>igualmente importante, pois um ecossistema bem integrado pode evitar redundâncias e facilitar o fluxo</p><p>de trabalho. Além disso, a escalabilidade das ferramentas deve ser considerada, garantindo que elas</p><p>possam crescer junto com o projeto e a equipe.</p><p>A flexibilidade e a personalização das ferramentas também são aspectos cruciais. Ferramentas que</p><p>permitem configurar e adaptar fluxos de trabalho específicos podem melhor atender às necessidades</p><p>únicas de cada equipe. Por exemplo, o Jira oferece uma personalização profunda dos fluxos de trabalho,</p><p>enquanto o Trello proporciona uma abordagem mais visual e flexível para gestão de tarefas.</p><p>Outro fator importante envolve o suporte e a documentação oferecidos pelas ferramentas: com</p><p>comunidade ativa, suporte robusto e documentação extensa, podem facilitar a resolução de problemas</p><p>e a implementação de melhores práticas. Por exemplo, o Jenkins é amplamente suportado por uma</p><p>comunidade ativa e uma vasta gama de plugins, enquanto plataformas como GitHub e GitLab oferecem</p><p>documentação detalhada e suporte empresarial.</p><p>A adaptação das ferramentas ao fluxo de trabalho da equipe pode envolver a configuração inicial,</p><p>integração com outras ferramentas e o treinamento da equipe. Implementar ferramentas de CI/CD</p><p>como Jenkins ou GitLab CI pode exigir a configuração de pipelines personalizados que automatizem a</p><p>construção, o teste e a implantação do software. Ferramentas de monitoramento como Prometheus e</p><p>Grafana podem precisar de configuração de métricas e dashboards específicos para fornecer insights</p><p>relevantes e acionáveis.</p><p>O treinamento da equipe é uma etapa crucial na adaptação das ferramentas. A formação adequada</p><p>garante que todos os membros da equipe saibam como utilizar as ferramentas de modo eficaz,</p><p>maximizando os benefícios de sua adoção. Workshops, tutoriais e documentação interna podem ser</p><p>úteis para familiarizar a equipe com as novas ferramentas e práticas.</p><p>Além disso, é importante monitorar e avaliar continuamente o uso das ferramentas. Coletar feedback</p><p>da equipe sobre a eficácia e os desafios enfrentados com as ferramentas permite ajustes e melhorias</p><p>contínuas. Ferramentas que inicialmente pareciam adequadas podem necessitar de substituições ou</p><p>complementos à medida que o projeto evolui e as necessidades mudam.</p><p>133</p><p>GERENCIAMENTO DE PROJETOS DE SOFTWARE</p><p>O quadro a seguir apresenta uma diversidade de ferramentas comumente usadas no</p><p>desenvolvimento de projetos de software. Cada uma delas tem suas características próprias, propósitos</p><p>e funcionalidades específicas.</p><p>Quadro 6 – Ferramentas envolvidas nos projetos de desenvolvimento de software</p><p>Ferramenta Categoria Propósito Pontos fortes Empresas que utilizam</p><p>Jira Gestão de projetos Gerenciamento de tarefas</p><p>e projetos Flexibilidade e personalização Atlassian, eBay, Airbnb</p><p>Trello Gestão de projetos Organização visual</p><p>de projetos Interface intuitiva e fácil uso Google, Pinterest, Fender</p><p>Asana Gestão de projetos Gerenciamento de</p><p>projetos e tarefas Versatilidade e colaboração Nasa, The New York</p><p>Times, Airbnb</p><p>Jenkins CI/CD Automação de CI/CD Extensibilidade e</p><p>automação robusta Netflix, LinkedIn, Facebook</p><p>GitLab CI/CD Plataforma</p><p>DevOps completa</p><p>Integração completa</p><p>de DevOps Nasa, Sony, CERN</p><p>Git Controle de versão Controle de</p><p>versão distribuído Popularidade e eficiência Microsoft, Google, Facebook</p><p>SVN Controle de versão Controle de</p><p>versão centralizado Simplicidade e estabilidade Apache, Adobe, Mozilla</p><p>Maven Ferramenta</p><p>de construção</p><p>Automação de</p><p>construções e</p><p>dependências Java</p><p>Gerenciamento de</p><p>dependências eficiente Apache, Google, LinkedIn</p><p>Gradle Ferramenta</p><p>de construção</p><p>Automação de</p><p>construções</p><p>e dependências</p><p>Flexibilidade e velocidade Netflix, LinkedIn, Google</p><p>JUnit Plataforma</p><p>de teste Teste unitário para Java Facilidade de uso e</p><p>integração com Java Google, LinkedIn, Facebook</p><p>Selenium Plataforma</p><p>de teste Teste de aplicações web Automação de</p><p>testes funcionais Google, Mozilla, LinkedIn</p><p>Docker Ambiente de</p><p>implantação</p><p>Conteinerização</p><p>de aplicações Isolamento e portabilidade Google, Microsoft, IBM</p><p>Kubernetes Ambiente</p><p>de implantação</p><p>Orquestração</p><p>de contêineres</p><p>Escalabilidade e gestão</p><p>de contêineres Google, Spotify, Red Hat</p><p>CircleCI CI/CD CI/CD baseado em nuvem Facilidade de integração</p><p>e uso Facebook, Spotify, Ford</p><p>Bitbucket Controle de versão Controle de versão e CI/CD Integração com Git e</p><p>ferramentas Atlassian Atlassian, BBC, PayPal</p><p>Travis CI CI/CD CI/CD baseado em nuvem</p><p>Configuração simples e</p><p>uso gratuito para projetos</p><p>open‑source</p><p>IBM, Mozilla, OpenAI</p><p>GitHub Controle de versão</p><p>e CI/CD</p><p>Hospedagem de</p><p>repositórios Git,</p><p>colaboração e CI/CD</p><p>Interface amigável,</p><p>comunidade ativa,</p><p>integrações poderosas</p><p>Microsoft, Airbnb, Nasa</p><p>Grafana Monitoramento</p><p>e visualização</p><p>Monitoramento e</p><p>visualização de métricas</p><p>Dashboards interativos</p><p>e customizáveis PayPal, eBay, Intel</p><p>Prometheus Monitoramento Monitoramento e alerta</p><p>de sistemas e serviços</p><p>Escalabilidade e integração</p><p>com Grafana</p><p>DigitalOcean, Red Hat,</p><p>SoundCloud</p><p>Terraform Infraestrutura</p><p>como código</p><p>Automação de</p><p>provisionamento</p><p>de infraestrutura</p><p>Multi‑cloud, modularidade Uber, Slack, Stripe</p><p>134</p><p>Unidade III</p><p>Ferramenta Categoria Propósito Pontos fortes Empresas que utilizam</p><p>Ansible Gerenciamento</p><p>de configuração</p><p>Automação de</p><p>configuração</p><p>e orquestração</p><p>Simplicidade, sem agente Nasa, GoPro, Capital One</p><p>Chef Gerenciamento</p><p>de configuração</p><p>Automação de</p><p>configuração e gestão</p><p>de infraestrutura</p><p>Extensibilidade,</p><p>comunidade ativa Facebook, Target, Yahoo</p><p>Puppet Gerenciamento</p><p>de configuração</p><p>Automação de</p><p>configuração e gestão</p><p>de infraestrutura</p><p>Grande comunidade,</p><p>escalabilidade Google, Cisco, Spotify</p><p>Splunk Monitoramento e</p><p>log management Coleta e análise de logs Análise em tempo real,</p><p>dashboards avançados Coca‑Cola, 3M, Domino’s</p><p>Nagios Monitoramento Monitoramento de redes,</p><p>sistemas e infraestrutura</p><p>Alta customização,</p><p>comunidade ativa Yahoo, PayPal, Google</p><p>Elasticsearch Pesquisa e análise</p><p>de dados</p><p>Pesquisa e análise de</p><p>grandes volumes de dados</p><p>Alta performance,</p><p>flexibilidade</p><p>Netflix, LinkedIn, Stack</p><p>Overflow</p><p>Kibana Visualização</p><p>de dados</p><p>Visualização de dados</p><p>de Elasticsearch</p><p>Dashboards interativos,</p><p>fácil integração Netflix, LinkedIn, Stack</p><p>Exemplos de aplicação</p><p>É importante conhecermos</p>