O que é Metodologia Ágil?

Metodologias Ágeis são abordagens ao desenvolvimento de produtos que estão alinhadas com os valores e princípios descritos no Manifesto Ágil para o desenvolvimento de software. As metodologias ágeis têm como objetivo entregar o produto certo, com entrega incremental e frequente de pedaços de funcionalidades, através de equipes auto-organizadas e multifuncionais, permitindo um feedback constante do cliente e correção do rumo conforme necessário.

Ao fazer isso, a agilidade busca corrigir os desafios enfrentados pelas abordagens tradicionais de “cascata” de entrega de grandes produtos em longos períodos de tempo, durante os quais os requisitos do cliente mudavam com frequência, resultando na entrega de produtos que não atendiam as necessidades.

Agile Methodology

Learn Agile
Aplicação da Metodologia Ágil

Durante a maior parte de sua breve história (desde 1999-2000), “Agile” tem sido predominantemente uma abordagem ao desenvolvimento de software e projetos de TI. Desde então, porém, agora se estende também a outros campos, especialmente nas áreas de conhecimento e serviços.

Agile é atender ao mercado e ao cliente, atendendo rapidamente às suas necessidades e demandas e sendo capaz de mudar de direção conforme a situação exige. Seja TI ou desenvolvimento de software ou qualquer outro campo onde haja um fluxo de trabalho e entrega de itens de trabalho, os métodos Ágeis são aplicáveis. Os métodos ágeis tentam maximizar a entrega de valor ao cliente e minimizar o risco de construir produtos que não atendem – ou não atendem mais – às necessidades do mercado ou do cliente.

Eles fazem isso dividindo o ciclo de entrega tradicionalmente longo (típico dos “métodos de cascata” legados) em períodos mais curtos, chamados de sprints ou iterações. A iteração contínua fornece a cadência para a entrega ao cliente de um produto que esteja funcionando, obtendo feedback e fazendo mudanças com base no feedback. Assim, a agilidade procura reduzir os tempos de entrega (entregando antecipadamente e com frequência) para garantir que pedaços funcionais menores do produto cheguem ao mercado, permitindo que os clientes forneçam feedback antecipadamente e garantindo que o produto que eles finalmente recebem atenda suas necessidades.

“Agilidade é principalmente uma questão de mentalidade, não de práticas.” – Jim Highsmith Click To Tweet

Ágil tornou-se um termo guarda-chuva para uma variedade de métodos/frameworks e processos de planejamento, gerenciamento e técnicas para gerenciar projetos, desenvolver software e outros produtos e serviços de forma iterativa. Estes frameworks incluem Scrum, de longe o método mais prevalente e popular para software, XP (eXtreme Programming), e mais recentemente Kanban.

Os métodos ágeis também incluem práticas técnicas – a maioria das quais se enquadra no termo de referência DevOps – que permitem Automação de Testes, Integração Contínua/ Entrega Contínua/ Implantação (CI/ CD) e, de modo geral, um ciclo de entrega cada vez mais curto para software e outros produtos e serviços.

O uso do Agile como uma abordagem ao gerenciamento de projetos tem aumentado drasticamente nos últimos anos. O Gartner prevê que métodos de desenvolvimento ágil serão usados em breve em 80% de todos os projetos de desenvolvimento de software.

What is the Agile Manifesto?

O Manifesto Ágil é uma declaração de valores e princípios fundamentais para o desenvolvimento de software. O Manifesto Ágil para o desenvolvimento de software foi criado em 2001 e é uma declaração de 4 regras vitais e 12 princípios que servem como guia para as pessoas no desenvolvimento ágil de software. Foi criado por 17 profissionais que já praticavam métodos ágeis como XP, DSDM, SCRUM, FDD, etc., reunidos nas montanhas nevadas do estado americano de Utah, convocados por Kent Beck.

Agile Manifesto

Source: LynneCazaly

4 Valores Centrais do Manifesto Ágil

Indivíduos e interações sobre processos e ferramentas – O primeiro valor enfatiza o trabalho em equipe e a comunicação. Devemos entender que o desenvolvimento de software é uma atividade humana e que a qualidade da interação entre as pessoas é vital. As ferramentas são uma parte importante do desenvolvimento de software, mas fazer um grande software depende muito mais do trabalho em equipe do que das ferramentas que a equipe possa utilizar.

Software funcionando sobre documentação abrangente – Documentação tem seu lugar e pode ser um grande recurso ou referência tanto para usuários quanto para colegas de trabalho. O principal objetivo do desenvolvimento de software, entretanto, é desenvolver software que ofereça benefícios comerciais ao invés de documentação abrangente.

Colaboração com o cliente sobre a negociação de contratos – As equipes de desenvolvimento devem trabalhar de perto e se comunicar com seus clientes com frequência. Ao ouvir e obter feedback, as equipes entenderão o que todas as partes interessadas realmente querem.

Responder às mudanças sobre seguir um plano – As mudanças são uma realidade no desenvolvimento de Software, uma realidade que seu processo de Software deve refletir. Um plano de projeto deve ser flexível o suficiente para mudar, como a situação exige.

“Inteligência é a capacidade de se adaptar à mudança” – Stephen Hawking Click To Tweet

O que é Metodologia Ágil?

12 Princípios do Manifesto Ágil
  • Nossa maior prioridade é satisfazer o cliente através da entrega antecipada e contínua de software.
  • Mudanças de requisitos são bem vindas, mesmo atrasando o desenvolvimento. Processos ágeis aproveitam a mudança como uma vantagem competitiva do cliente.
  • Entregue software funcional frequentemente, de algumas semanas a alguns meses, com preferência pelo menor prazo.
  • Áreas de negócio e desenvolvedores devem trabalhar em conjunto diariamente durante todo o projeto.
  • Construir projetos em torno de indivíduos motivados. Dê-lhes o ambiente e o apoio de que precisam, e confie neles para que o trabalho seja feito.
  • O método mais eficiente e eficaz de transmitir informações para e dentro de uma equipe de desenvolvimento é a conversação cara a cara.
  • O software funcionando é a principal medida de progresso.
  • Os processos ágeis promovem o desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.
  • A atenção contínua à excelência técnica e ao bom design aumenta a agilidade.
  • Simplicidade – a arte de maximizar a quantidade de trabalho que não se faz – é essencial.
  • As melhores arquiteturas, requisitos e projetos emergem de equipes auto-organizadoras.
  • Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz, depois afina e ajusta seu comportamento de acordo.
Principais Metodologias Ágeis

Agile é um termo guarda-chuva para vários métodos e práticas. Vejamos algumas das metodologias populares:

  • Framework SCRUM
  • Extreme Programming (XP)
  • Desenvolvimento de software adaptativo (ASD)
  • Método de Desenvolvimento Dinâmico de Software (DSDM)
  • Desenvolvimento Orientado por Funcionalidades (FDD)
  • Método Kanban
  • Desenvolvimento Orientado por Comportamento (BDD)

Agile-Methodology

Framework Scrum

O Framework Scrum é uma estrutura simples para trabalhar com projetos complexos, e foi criada por Ken Schwaber e Jeff Sutherland.

As metodologias ágeis de desenvolvimento de software são iterativas, o que significa que o trabalho é dividido em iterações, que são chamadas Sprints no caso do Scrum. Scrum é executado por pequenas equipes de 7 a 9 pessoas, incluindo um Scrum Master e um Product Owner.

No Scrum, os projetos são divididos em ciclos (normalmente ciclos de 2 ou 3 semanas) chamados Sprints. O Sprint representa uma caixa de tempo dentro da qual um conjunto de características deve ser desenvolvido. Vários sprints podem ser combinados para formar um Release – onde a entrega formal de software/produto é feita ao cliente/ mercado.

scrum-process

A funcionalidade geral do produto é dividida pelo Product Owner em características menores (tipicamente descritas como Épicos e Histórias de Usuários – ou apenas Histórias). Estas Histórias são priorizadas e retomadas em cada Sprint ou Iteração. A intenção do método é que a equipe seja capaz de demonstrar no final de cada Sprint as peças de trabalho do produto ao Product Owner, para ter certeza de que o produto está funcionando como pretendido.

Em geral, o framework Scrum quebra o longo processo de entrega em ciclos menores, o que permite que as equipes de produto e o cliente final revisem frequentemente o software de trabalho e garantem que ele atenda às suas exigências comerciais. Isso faz com que o produto final também atenda às exigências finais do cliente.

O framework Scrum é caracterizado por cerimônias específicas, tais como a reunião diária de stand up (ou papo em pé), a reunião de revisão Sprint, a demonstração para o Product Owner e a reunião de retrospectiva Sprint. Todas estas reuniões proporcionam colaboração e oportunidades de revisão à equipe para garantir que o desenvolvimento esteja progredindo conforme o pretendido, e quaisquer questões sejam resolvidas rapidamente.

“Enquanto você navega pelo resto de sua vida, esteja aberto à colaboração. Outras pessoas e as idéias de outras pessoas são muitas vezes melhores do que as suas” – Amy Poehler Click To Tweet

Extreme Programming (XP)

Extreme Programming (XP) – é uma metodologia desenvolvida por Kent Beck no início dos anos 90. Esta metodologia ágil é focada no aprimoramento das relações interpessoais como uma chave para o sucesso no desenvolvimento de software. XP também se concentra em promover o trabalho em equipe, cuidando do aprendizado dos desenvolvedores e promovendo um bom ambiente de trabalho. Ele é caracterizado por desenvolvedores que trabalham em pares, onde um programa de desenvolvimento é observado por um desenvolvedor enquanto o outro observa; e eles trocam essas funções regularmente durante todo o Sprint. Desta forma, eles permitem a revisão contínua do código e o feedback que melhora a qualidade do código e a capacidade do desenvolvedor.

Extreme Programming - XP

A XP promove um feedback contínuo entre o cliente e as equipes de desenvolvimento, comunicação fluida entre todos os participantes, simplicidade nas soluções implementadas e prontidão para enfrentar mudanças. O XP é especialmente adequado para projetos com requisitos desconhecidos e altamente mutáveis, e onde há alto risco técnico.

Desenvolvimento de Software Adaptativo (ASD)

Desenvolvimento de Software Adaptativo (ASD) foi desenvolvido por Jim Highsmith e Sam Bayer no início dos anos 90. Ela incorpora os princípios da adaptação contínua, ou seja, adaptar-se à mudança e não lutar contra ela. O Desenvolvimento de Software Adaptativo utiliza um ciclo de desenvolvimento dinâmico conhecido como Especular, Colaborar e Aprender. Este ciclo é dedicado ao aprendizado constante e intensa colaboração entre desenvolvedores e clientes devido à constante mudança no ambiente de negócios.

Adaptive Software Development (ASD)

Ao contrário da maioria das metodologias de desenvolvimento de Software que utilizam um ciclo de vida estático, ou seja, Plan-Design-Build, o ASD oferece um ciclo de vida iterativo não linear, onde cada ciclo pode iterar e ser modificado enquanto outro ciclo está sendo executado. Ele aponta para o Desenvolvimento Rápido de Aplicações (RAD), que enfatiza a velocidade de desenvolvimento para criar um produto de alta qualidade e baixa manutenção envolvendo o usuário na medida do possível. As principais características do ASD são:

  1. Especular: Esta é a fase inicial do projeto onde é necessário estabelecer os principais objetivos e metas do projeto, compreendendo as limitações (áreas de risco) com as quais o projeto opera.
  2. Colabore: Esta é a fase em que a maior parte do desenvolvimento é centralizada, mantendo uma coordenação entre as equipes que garante que o que é aprendido por uma equipe seja comunicado ao resto e não tenha que ser reaprendido novamente por outras equipes a partir do zero.
  3. Aprenda: A última etapa termina com uma série de ciclos de colaboração – o trabalho é captar o que foi aprendido, tanto positivo como negativo. Esta etapa é crítica para a eficácia do projeto.

“Em um projeto ágil a equipe se encarrega das tarefas e o líder do projeto se encarrega da equipe.” – Jim Highsmith Click To Tweet

Dynamic Software Development Method (DSDM)

Método de Desenvolvimento Dinâmico de Software (DSDM) foi desenvolvido no ano de 1994 por um grupo de fornecedores e especialistas na área de desenvolvimento de Software. DSDM se concentra em projetos de Software que são caracterizados por orçamentos e cronogramas apertados. Ele se concentra na entrega frequente de ciclos de produtos, e o desenvolvimento é iterativo e incremental.

Dynamic Software Development Methodology (DSDM)

Com o Método de Desenvolvimento Dinâmico de Software (DSDM), é possível projetar um roteiro de entregas antecipadas e contínuas para o projeto, implementando uma solução incremental, adaptando-se a partir do feedback obtido ao longo do processo e verificando se os benefícios esperados estão sendo atingidos.

O DSDM é um modelo ágil que pode sem dúvida ajudar as organizações que estão acostumadas a trabalhar em projetos a mudar sua mentalidade e sua maneira de trabalhar para melhorar sua capacidade de entregar valor e reduzir o tempo de colocação no mercado.

Desenvolvimento Orientado por Funcionalidades (FDD)

Desenvolvimento Orientado por Funcionalidades (FDD) a metodologia é orientada principalmente para equipes maiores, com mais pessoas do que aquelas às quais outras metodologias ágeis, como Scrum, são normalmente aplicadas. A FDD foi desenvolvida por Jeff De Luca e Peter Coad no ano de 1997. Esta metodologia foca em iterações curtas, que permitem entregas tangíveis do produto em um curto período de tempo (2 semanas).

Projetos com várias equipes e um grande número de pessoas representam o desafio de que nem todos serão igualmente talentosos e disciplinados. O FDD inclui atividades específicas que ajudam a enfrentar os desafios de comunicação e coordenação de tais projetos.

Feature Driven Development (FDD)

O FDD é um processo de 5 etapas, sendo as 3 primeiras sequenciais e as duas etapas finais iterativas (como mostrado no diagrama acima). Todas as metodologias ágeis seguem uma série de princípios que as fazem assemelhar-se umas às outras. O FDD, entretanto, oferece soluções sobre como organizar a equipe e como programar o código, o que o torna especialmente viável para grandes equipes de desenvolvimento que constroem software complexo.

Um dos livros mais populares sobre o método FDD foi publicado por Stephen Palmer em 2002, intitulado “A Practical Guide to Feature-Driven Development“.

Método Kanban

O Método Kanban foi definido por David Anderson no início dos anos 2000, em resposta a alguns dos desafios dos vários métodos Ágeis, especialmente Scrum. Estes métodos, enquanto tentavam resolver os desafios dos métodos tradicionais/de cachoeira, tornaram-se vítimas de alguns dos mesmos desafios em si.

O ciclo de sprint de 2-3 semanas tornou-se muito longo para esperar por muitos contextos empresariais, as mudanças necessárias na estrutura organizacional (novas funções e responsabilidades) e um gerenciamento de projetos/processos de planejamento colocaram muita pressão sobre as organizações, e muitas equipes se viram sem cumprir nem mesmo os compromissos de alcance e qualidade do sprint-level. Para a maioria das organizações, a implementação destes métodos tornou-se muito disruptiva.

Kanban Agile Methodology

O Método Kanban foi definido como o oposto disso – um método evolutivo sem interrupções para melhorias, que no final das contas permite às equipes entregar continuamente, em vez de em períodos de 2-3 semanas, obter feedback mais rápido e reduzir o tempo de entrega de valor para o cliente.

O Kanban é um sistema visual para gerenciar o trabalho à medida que ele se move através de um processo. Kanban visualiza tanto o processo (o fluxo de trabalho) quanto o trabalho real que passa por esse processo. O objetivo do Kanban é identificar potenciais gargalos em seu processo e corrigi-los, para que o trabalho possa fluir através dele de forma rentável a uma velocidade ou rendimento otimizados.

O Kanban é definido como um sistema de produção altamente eficaz e eficiente. A origem da metodologia Kanban está nos processos de produção “just-in-time” (JIT) concebidos pela Toyota, nos quais os cartões foram utilizados para identificar as necessidades de material na cadeia de produção. Você pode saber mais sobre o Kanban aqui: https://www.digite.com/pt-br/kanban/o-que-e-kanban/

Desenvolvimento Orientado por Comportamento (BDD)

Desenvolvimento Orientado por Comportamento (BDD) é uma metodologia de desenvolvimento ágil e orientada para o comportamento. Ela foi criada por Dan North em 2003 como uma evolução da metodologia TDD. O objetivo de Dan North era reunir pessoas não técnicas no processo de criação da funcionalidade técnica do sistema. Acontece que quando desenvolvemos software, falhamos involuntariamente em incluir conceitos comerciais presentes na funcionalidade, resultando em um possível fluxo para bugs recorrentes e até mesmo graves.

Behavior Driven Development (BDD)

Source: Johnfergusonsmart.com

BDD utiliza conceitos de linguagem universal que incentivam a colaboração entre pessoas com ou sem conhecimento técnico em um projeto de software. O processo de desenvolvimento do BDD é baseado em cenários e características de teste de escrita. Estes contêm os requisitos e critérios de aceitação para o comportamento do sistema. Ele diz o que a funcionalidade precisa para começar, o que fará a seguir e quais serão os resultados após a sua execução.

O BDD ajuda as equipes a comunicar com mais precisão os requisitos, descobrir defeitos antecipadamente e construir software que permaneça sustentável ao longo do tempo.

“A comunicação eficaz é 20% do que você sabe e 80% do que você sente sobre o que você sabe” – Jim Rohn Click To Tweet

Sumário

Há uma variedade de diferentes modelos e metodologias de desenvolvimento baseadas em princípios Ágeis. Nos últimos anos, tem havido uma lista crescente de organizações que creditam a metodologia com seu sucesso. Alguns dos maiores nomes da mídia, tecnologia, finanças e até mesmo alguns órgãos do Governo Nacional adotaram e elogiaram a eficiência do Agile.

Você está pronto para se tornar Ágil? A Digite oferece uma ampla gama de produtos para a transformação ágil das empresas.

Entre em contato conosco e nós o ajudaremos com a transformação.

O que é Metodologia Ágil?

A vida é boa quando suas equipes Agile estão sincronizadas!

Contate-Nos hoje para uma demonstração personalizada do SwiftEnterprise! Ou inscreva-se para atualizações abaixo.

Solicitar Demonstração