A Metodologia Agile é normalmente usada como uma palavra de propaganda que a indústria de TI usa para descrever um método alternativo de desenvolvimento de software.
Agile é um processo que ajuda as equipas a fornecer respostas rápidas e imprevisíveis ao feedback que recebem no seu projeto. Cria oportunidades para avaliar a direção de um projeto durante o ciclo de desenvolvimento. As equipas avaliam o projeto em reuniões regulares chamadas sprints ou iterações.
Agile é um processo muito capacitador que ajuda as empresas a projetar e construir o produto certo. O processo de gestão é muito benéfico para as empresas de software porque ajuda-as a analisar e a melhorar os seus produtos durante todo o seu desenvolvimento. Isto permite que as empresas produzam um produto altamente valioso para que se mantenham competitivas no mercado.
Em 2001, um pequeno grupo de pessoas, cansado da abordagem tradicional para gerir projetos de desenvolvimento de software, projetou o manifesto Agile. É um método mais aprimorado para gerir o progresso de projetos de software.
O manifesto Agile tem quatro valores importantes:
Existem 12 princípios de desenvolvimento Agile de software:
Existem diferentes métodos de agilidade que promovem os valores e princípios do manifesto. Scrum e XP são dois exemplos bem conhecidos.
Os principais desenvolvedores de software desenvolveram reuniões ágeis. Depois de experimentar repetidamente desafios e limitações do tradicional desenvolvimento em cascata em projetos reais, queriam criar um processo mais eficiente para analisar o desenvolvimento de projetos.
A abordagem usada analisa diretamente as questões relativas às filosofias e processos dos métodos tradicionais. Existem muitos benefícios para o desenvolvimento de Software Agile:
Envolvimento e Satisfação das Partes Interessadas
O processo Agile cria muitas oportunidades ao longo de cada reunião sprint para um envolvimento genuíno entre a equipa e as partes interessadas. Como o cliente está envolvido ativamente em todo o projeto, há um nível contínuo de colaboração entre todas as partes. Isto dá à equipa a hipótese de entender completamente a visão do cliente.
Ao fornecer software de trabalho de alta qualidade com frequência, as partes interessadas desenvolvem rapidamente um relacionamento confiável e autêntico com a equipa. Isto também promove ainda mais o envolvimento entre o cliente e a equipa.
Transparência
A Metodologia Agile envolve ativamente o cliente durante todo o projeto, incluindo o planeamento de iteração, sessões de revisão e novas construções de recursos no software. Os clientes, no entanto, devem entender que durante a transparência do projeto, estão a ver um trabalho em andamento e não o produto final.
Entrega Antecipada e Previsível
Sprints são realizadas num cronograma fixo com uma duração de 1 a 4 semanas. Usando este método de caixa de tempo, a previsibilidade é alta, pois novos recursos podem ser entregues às partes interessadas com rapidez e frequência. Também permite que a equipa beta teste ou libere o software mais rapidamente se tiver valor comercial suficiente.
Custos e Programação Previsíveis
Como os Sprints estão num cronograma fixo, os custos são limitados e previsíveis e baseados na quantidade de trabalho realizado. Combinando os custos estimados antes de cada Sprint, o cliente vai entender melhor os custos aproximados de cada recurso. Isto oferece oportunidades de tomada de decisão mais aprimoradas ao priorizar os recursos ou adicionar iterações.
Priorização Flexível
As metodologias Scrum permitem mais flexibilidade, priorizando os recursos orientados para o cliente. A equipa tem mais controlo na gestão das unidades de trabalho que podem ser expedidas com cada limite sprint; fazendo progresso contínuo em direção à etapa do produto final. Para obter um RIO imediato da engenharia, o trabalho precisa de ser enviado antecipadamente aos clientes para que estes percebam o valor dos recursos.
Permite a Mudança
Embora o foco deva ser entregar o subconjunto dos recursos de produtos, os processos Ágeis criam uma oportunidade de priorizar e refinar continuamente a carteira do produto. Estas alterações podem ser adicionadas à próxima iteração para que as novas alterações possam ser introduzidas dentro de algumas semanas.
Concentra-se no Valor de Negócios
A equipa tem um melhor entendimento do que é mais importante para os negócios do cliente e pode fornecer recursos que agregam mais valor aos negócios.
Concentra-se nos Utilizadores
As histórias do utilizador costumam ser usadas para definir os recursos do produto relacionados com critérios de aceitação com foco nos negócios. Concentrando-se nas necessidades do utilizador, cada recurso oferece valor real e não apenas um componente de TI.
Fornece uma oportunidade melhor para obter feedback valioso por meio de teste beta do software após cada Sprint. Isto fornece um feedback vital no início do projeto para que as alterações possam ser feitas conforme necessário.
Melhora a Qualidade
Os projetos são divididos em unidades geríveis, tornando mais fácil para a equipa ou o foco em desenvolvimento, teste e colaboração de alta qualidade. Ao criar construções e conduzir testes ou revisões durante a iteração, os defeitos e as incompatibilidades podem ser encontrados e corrigidos precocemente, melhorando a qualidade geral.
Dá Propósito à sua Equipa
A maioria dos processos ágil concentra-se na criação de um sentido partilhado de propriedade e metas para todos os membros da equipa. Isto dá à sua equipa um propósito ao invés de criar um falso sentido de urgência. Equipas com propósito são mais produtivas e desafiam-se a serem mais rápidas e eficientes.
A gestão ágil reduz os riscos comuns associados à entrega, ao alcance e ao orçamento do projeto.
Incentiva a colaboração entre o cliente e a equipa; oferecendo benefícios mútuos na mitigação de altos riscos durante o desenvolvimento do software.
Em 2009, o Dr. David F Rico comparou o Agile com os métodos tradicionais de gestão de projetos de software. Durante a sua investigação e síntese, analisou 23 processos Ágeis, comparando-os com 7 500 projetos tradicionais.
Encontrou 20 benefícios para os projetos ágil:
Existem várias Metodologias Agile; todas partilham filosofias, características e práticas semelhantes. No entanto, a partir do ponto de implementação, cada Metodologia Agile tem as suas próprias práticas, terminologia e táticas. Alguns dos principais componentes da metodologia de desenvolvimento de software ágil incluem:
O Scrum é uma estrutura de gestão com competências de longo alcance para controlar e gerir as iterações e incrementos em todos os tipos de projetos. São leves e podem ser usados com outras Metodologias Agile para várias práticas de engenharia. O Scrum cresceu em popularidade dentro da comunidade ágil de desenvolvimento de software porque são simples e têm uma taxa de produtividade comprovada.
O desenvolvimento de software Lean é uma metodologia de iteração originalmente desenvolvida por Mary e Tom Poppendieck. Muitos dos princípios e práticas do Desenvolvimento de Software Lean vieram do movimento empresarial Lean e foram usados pela primeira vez por grandes empresas como a Toyota.
Este método baseado em valor concentra-se em fornecer ao cliente um mecanismo eficiente de “fluxo de valor” que entrega valor ao projeto.
Os principais princípios desta metodologia são:
Ao escolher apenas os recursos que têm valor real para o sistema, priorizá-los e distribuí-los em pequenos lotes elimina o desperdício. Em vez disso, a metodologia Lean enfatiza a velocidade e a eficiência; contando com feedback rápido e confiável entre os clientes e programadores.
Centra-se na ideia de que as solicitações do cliente “puxam” o produto. O foco é mais sobre as competências de tomada de decisão mais rápidas e mais eficientes de indivíduos ou equipas pequenas, em vez de um método controlado por hierarquia.
Esta metodologia concentra-se nas eficiências dos recursos da sua equipa, garantindo que todos são o mais produtivos possível sempre.
As organizações usam o método Kanban para gerir a criação do projeto, enfatizando a entrega contínua e não sobrecarregando a equipa de desenvolvimento. Como o Scrum, os processos Kanban são projetados para ajudar as equipas a trabalhar de forma mais eficiente em conjunto.
Existem três princípios:
O método Kanban promove a colaboração contínua do cliente e da equipa. Incentiva a aprendizagem contínua e melhorias para fornecer o melhor fluxo de trabalho possível para a equipa.
A Program ação Extrema (XP) foi originalmente descrita por Kent Beck. É uma das Metodologias Agile mais populares e controversas. O XP é um método altamente disciplinado de fornecer continuamente software de alta qualidade mais rapidamente.
O cliente está ativamente envolvido com a equipa unida para realizar um planeamento contínuo, testes e feedback rápido para entregar software de trabalho com frequência. O software deve ser entregue em intervalos de três semanas.
O método original do XP é baseado em quatro valores simples:
Tem 12 práticas de suporte:
A metodologia Crystal é uma das abordagens mais leves e adaptáveis no desenvolvimento de software. É composta por vários processos Ágeis, incluindo Clear, Crystal Yellow, Crystal Orange e outros métodos característicos exclusivos. Existem vários fatores que impulsionam estes processos, incluindo: tamanho da equipa, criticidade do sistema e prioridades do projeto.
A família Crystal foca na perceção de que cada projeto tem características únicas, portanto, as políticas e práticas devem ser personalizadas para acomodar estes recursos.
O método Crystal tem vários princípios essenciais, incluindo:
Este processo ágil, como outras metodologias, promove a entrega antecipada e frequente de software funcional. Estimula o alto envolvimento do utilizador, a adaptabilidade e a eliminação de distrações e burocracia.
A Metodologia de Desenvolvimento de Sistemas Dinâmicos (DSDM - Dynamic Systems Development Method) surgiu em 1994 para fornecer uma estrutura padrão do setor para a entrega de projetos para o que era então conhecido como Desenvolvimento Rápido de Aplicações (RAD). Embora tenha sido muito popular nos anos 90, a abordagem RAD desenvolveu-se de forma não-estruturada.
Desde o seu início, a DSDM evoluiu e amadureceu; fornece uma base abrangente no planeamento, gestão, execução e dimensionamento dos projetos Ágeis de processos e iterações.
A DSDM tem seis princípios-chave que giram em torno das necessidades do negócio:
A DSDM usa uma abordagem de “adequação à finalidade de negócios” para os critérios de entrega e aceitação. Concentra-se na fórmula: 80% de implantação do sistema em 20% do tempo.
Jeff De Luca, juntamente com os colaboradores A.m. Rajashima, Lim Bak Wee, Paul Szego, Jon Kern e Stehen Palmer desenvolveram o Desenvolvimento Guiado por Funcionalidades (FDD – Feature-Driven Development). Trata-se de um processo de iteração curto, orientado por modelo, que começa por estabelecer primeiro o formato do modelo ágil.
Iterações em “design por recurso, construir por recurso” são realizadas quinzenalmente. Os recursos atraem os clientes porque são pequenos e úteis.
O design e desenvolvimento do FDD são fornecidos usando estas oito práticas:
No processo de desenvolvimento ágil, o Scrum define mais claramente o que é Agile na gestão de produtos. Existem três funções no projeto Scrum: Product Owner, Scrum Master e membros da equipa.
O Product Owner supervisiona todas as condições comerciais do projeto para garantir que o produto certo é construído e está na ordem correta. Um bom Product Owner equilibra as prioridades concorrentes, está disponível para a equipa e toma decisões sobre o projeto.
O Scrum Master é o coach da equipa; ajuda a equipa a trabalhar em conjunto de forma eficaz. Os Scrum Masters prestam serviço à equipa removendo barreiras que prejudicam o progresso, facilitando reuniões e grupos de discussão, acompanhando o progresso, a resolução de problemas e realizando outras tarefas de gestão de projetos.
A equipa trabalha em conjunto para determinar a melhor abordagem para atingir as metas de produto descritas pelo Product Owner. A equipa decide quais os membros que vão gerir tarefas específicas e delinea as práticas técnicas necessárias para atingir as metas desejadas.
Onde se encaixa a função Scrum Master no Desenvolvimento de Software Ágil?
Em práticas ágil de gestão de projetos, o Scrum Master é a versão do gestor de projetos do século XXI. No entanto, ao contrário dos gestores de projetos tradicionais, o Scrum Master não tem o crédito ou a culpa pelo sucesso ou fracasso do projeto.
A sua autoridade só se estende ao processo. A experiência do Scrum Master no processo motiva e orienta a equipa a realizar o seu mais alto nível. Outras funções tradicionais de gestão, como alcance, custo, pessoal e gestão de riscos do projeto, ainda são de responsabilidade do gestor do projeto.
Surpresa: As Organizações Ágeis São Hierárquicas!
Um equívoco comum sobre as organizações Ágeis é que não são hierárquicas ou simples. Nada poderia estar mais longe da verdade. Os gestores de topo ainda definem a direção e o tom para o resto da organização e as pessoas ainda são demitidas por não fazerem o seu trabalho. A pressão por um desempenho mais alto é ainda mais implacável do que nas organizações burocráticas tradicionais.
Numa burocracia, funcionários com desempenho mau podem esconder-se nos cantos e recantos do sistema. Mas, numa organização ágil, há uma transparência radical que responsabiliza todos os pares pelas suas ações.
A hierarquia numa organização ágil é muito diferente de uma agência burocrática. A hierarquia ágil é baseada em competência, não em autoridade. O desempenho não se baseia em agradar o chefe, mas sim em agregar valor ao cliente. A organização usa uma abordagem dinâmica de comunicação horizontal e vertical que é muito interativa.
As ideias podem vir de qualquer pessoa em qualquer posição, incluindo o cliente. É uma rede que está continuamente a crescer, a aprender e a adaptar-se ao fluxo constante; agrega novo valor aos clientes, explorando as oportunidades apresentadas. Se feito corretamente, a entrega contínua de mais valor aos clientes através de menos trabalho resulta em retornos mais generosos para a organização.
O ágil distingue claramente as diferenças entre exploração e aproveitamento. Numa organização ágil, todos os membros estão constantemente a explorar maneiras de agregar mais valor ao cliente. Durante os primeiros anos da Gestão Ágil, os críticos acreditavam que as pequenas equipas nunca podiam lidar com problemas grandes e complexos. Mas estavam errados.
Todas as equipas fazem parte de uma rede interligada que é impulsionada por conversas contínuas entre todas as partes que se concentram em objetivos comuns. Os ritmos comuns e consistentes de todas as partes fornecem uma plataforma sólida que permite que as equipas menores giram problemas mais complexos. Este é, de longe, um sistema muito melhor que o método burocrático.
O processo ágil divide um projeto de software maior em várias partes menores que podem ser desenvolvidas em incrementos e iterações. Estudos comprovam que existe uma correlação negativa entre o tamanho do projeto e o sucesso (ou seja, quanto menor o projeto, maior a taxa de sucesso).
A abordagem ágil reduz o tamanho do projeto criando vários projetos menores. Esta abordagem de iteração distingue a gestão ágil de outros métodos de gestão.
Ao contrário de outros métodos, a gestão Ágil usa iterações durante as fases de planeamento e desenvolvimento. Cada iteração geralmente dura uma semana. Durante essas sessões, a equipa do projeto e a equipa do cliente colaboram para priorizar o que precisa de ser adicionado à iteração. O resultado final é um software de trabalho entregue rapidamente ao cliente num ambiente de produção.
Os clientes podem testar o programa e fazer alterações, se necessário. Muitas versões são feitas durante todo o processo, conforme são feitas alterações no programa. Este processo de iteração é repetido até que o projeto esteja concluído.
A programação de software é um componente crítico para quase todos os negócios atualmente. Isto significa que o Ágil é um processo essencial para todo tipo de organização e forma de trabalho.
As metodologias Ágil, que incorporam novos valores, práticas, princípios e benefícios, são uma alternativa melhor ao tradicional estilo de comando e controlo de gestão de projetos. O processo ágil está a espalhar-se em diferentes setores e funções, incluindo C-suites.
No entanto, embora muitas empresas estejam a adotar alguns processos Ágil, ainda estão a operar com um método burocrático de cima para baixo. Na atual economia dominante digital, é vital que as empresas desenvolvam práticas de gestão ágil. Mas muitas empresas ainda lutam contra essa transição e operam numa cultura de estilo de comando. Isto reflete-se na mentalidade e nas competências da gestão sénior e é o maior obstáculo que as empresas enfrentam atualmente.
Existem muitas práticas Ágil diferentes; muitas não são usadas por praticantes Ágil. Aqueles que querem converter-se para usar o processo Ágil, devem entender as diferentes práticas para ajudar como podem aplicar a prática ao seu ambiente. Os exemplos a seguir ajudam a ilustrar como as práticas Ágil podem ser aplicadas.
As reuniões diárias em pé também são chamadas reuniões diárias Scrum. As sessões Scrum são realizadas diariamente pela equipa para que possa partilhar informações pertinentes. Estas reuniões são projetadas para manter todos os membros da equipa igualmente informados e atualizados sobre o estado do projeto. A chave para cada reunião é a brevidade. Durante as reuniões diárias, cada membro deve responder a estas três perguntas:
Uma história do utilizador é uma breve descrição da função desejada pelo utilizador final. Existem três elementos para a história do utilizador. São:
As histórias são escritas da perspetiva do utilizador final e usam a linguagem que entendem. As histórias funcionam como moeda entre desenvolvedores e clientes; ambas as partes claramente as entendem. Pode ler mais sobre 4 motivos pelos quais as Histórias de Utilizador não estão a ser “feitas”.
A implementação de testes automatizados formais e completos é uma parte vital do processo ágil. Os testes localizam e eliminam defeitos na origem para garantir que um pacote de software funcional é entregue ao cliente. Os desenvolvedores podem criar o código de teste numa rede de segurança usando uma variedade de estruturas disponíveis enquanto, simultaneamente, desenvolvem o código do software. Este método protege outras características ao fazer alterações no software. É também uma maneira mais rápida e eficiente de encontrar bugs no programa.
Um princípio chave para metodologias Ágil é ter software em execução em todos os momentos. Na prática, a única maneira de fazer isto é garantir que todo o desenvolvimento de software é compilado, construído, implantado e testado de forma regular e automática. Isto geralmente é feito várias vezes ao dia e pelo menos cada vez que um desenvolvedor insere código como parte principal do ramo de desenvolvimento.
Existem três níveis de planeamento de desenvolvimento Ágil: liberação, iteração e tarefa. Nos estados iniciais, os desenvolvedores de projetos e os clientes encontram-se para discutir as principais histórias de utilizador necessárias para o software. O foco inicial da reunião está nos recursos essenciais para estimar e priorizar o que precisa de ser feito.
O planeamento de liberação é uma sessão de planeamento conduzida pelo cliente. Os clientes e desenvolvedores escolhem uma data para a primeira série de lançamentos dos produtos. Decidem colaborativamente que histórias devem ser incorporadas durante cada lançamento. Os desenvolvedores concentram-se nos esforços de estimativa da história, enquanto os clientes se concentram nas seleções da história. Há uma variedade de formas de esforços de estimativa que são determinadas pelas necessidades e desejos das equipas de clientes e de desenvolvimento.
O planeamento de iteração exige esforços de colaboração entre clientes e desenvolvedores para iniciar parte do plano de liberação. Durante as iterações, o cliente define e prioriza as histórias do utilizador, enquanto os desenvolvedores estimam quanto esforço é necessário para desenvolver cada história. O cronograma é muito menor para as iterações, levando apenas semanas em vez de meses.
O planeamento da tarefa ocorre após o planeamento da iteração. As histórias são divididas numa série de etapas viáveis pela equipa de desenvolvimento. As listas de tarefas são desenvolvidas e publicadas na sala do projeto para que sejam claramente visíveis para todos os membros do grupo. As ferramentas comuns usadas durante esta sessão de planeamento incluem notas post-it e quadros brancos. Cada desenvolvedor voluntaria-se para executar uma tarefa e atribuiu-lhe uma estimativa.
Na programação em pares, dois desenvolvedores trabalham em equipa numa tarefa de programação. Uma pessoa é o Condutor, a pessoa que insere o código, enquanto a segunda pessoa é o Navegador, aquele que planeia as próximas etapas enquanto ajusta o código a toda a visão.
Uma queixa comum para emparelhar a programação é o desperdício de recursos humanos para realizar a tarefa. Não deve haver duas pessoas a fazer um trabalho que pode ser feito por uma pessoa. No entanto, enquanto a programação usa mais força de trabalho, o produto final justifica a despesa. Um estudo recente descobriu que a programação em par usa 15% a mais de esforço, mas produz 15% a menos de defeitos.
Embora os resultados possam variar de caso para caso, os desenvolvedores geralmente acham que a redução de erros vale os recursos extras usados. Outro benefício é que o emparelhamento não é necessário em tempo integral. As equipas podem estabelecer as suas próprias regras e agendas ao decidir se é melhor parear.
Durante a integração contínua, as equipas de desenvolvimento inserem o seu código no sistema várias vezes ao longo do dia. Uma série de testes é executada antes de o código ser adicionado para garantir que não danifica outros testes ou funções pré-existentes no sistema. O desenvolvedor deve executar primeiro todos os testes do sistema e corrigir quaisquer problemas antes de integrar os outros códigos. Quanto mais códigos são integrados no software, mais rápido e fácil é fundir e detetar erros.
Retrospetivas são reuniões realizadas no final de um projeto ou perto do fim. Dão a todas as partes envolvidas a hipótese de olhar para trás e refletir sobre o trabalho realizado durante o processo. Toda a equipa analisa o que correu bem, o que não foi feito, onde podem ser feitas melhorias e, o mais importante, como podem alcançar as lições aprendidas e transformá-las em mudanças acionáveis.
A Metodologia Agile é uma abordagem interessante e fascinante para o desenvolvimento de software. Ao integrar os desenvolvedores de produtos e clientes nos processos de planeamento e implementação, o resultado é uma experiência mais gratificante para todos os envolvidos.
Quando a programação ágil é feita de forma adequada, as organizações podem encontrar continuamente formas de aumentar o valor para os clientes.
Dá mais sentido àqueles que estão a trabalhar ativamente no projeto e cria uma experiência mais positiva para o cliente, produzindo resultados finais mais generosos para a empresa.
Habilitamos líderes a se tornarem altamente valorizados e reconhecidos para ter um impacto no Mundo, ajudando-os a desenhar Companhias de Produto Digital que prosperarão, fazemos isso aplicando nossa própria ADAPT Methodology®.
Se quiser saber como podemos ajudá-lo a iniciar sua transformação, por favor, veja o nosso: Treino De Projeto Para Produto.
Se estiver interessado em fazer uma transformação na sua empresa, por favor, veja a nossa: Consultoria.