0
1
0
1
1
0
1
0

Assinatura Digital, Autenticação e Criptografia. > blog > Quais são as metodologias ágeis?

Quais são as metodologias ágeis?

Quais são as metodologias ágeis?

Metodologias Ágeis

Atualmente muito se fala sobre metodologias ágeis em projetos de tecnologia. Muitos acreditam que as práticas desse tipo de metodologia funcionam como uma bala de prata que resolverá todos os problemas. Há uma crença que os problemas serão resolvidos instantaneamente. Isso ocorre porquê as pessoas se perguntam, afinal, como algo tão alardeado que vem sendo cada vez mais utilizado pode não funcionar? Mas o que exatamente seriam essas técnicas e práticas? Elas realmente melhoram o desempenho do desenvolvimento? Quais os pontos positivos e negativos?

Em contraponto ao gerenciamento clássico, a metodologia ágil tem como visão promover mais o trabalho em equipe. No qual a fácil comunicação entre os membros e a resposta rápida às mudanças, não ficando preso aos processos. Essa ação proporciona diversos benefícios, tais como : o cliente não fica no aguardo do entregável ao invés de ficar aguardando ele participar das etapas do desenvolvimento

Todos esses pontos foram levantados chamado “manifesto ágil”, em 2001, uma declaração que fundamenta o conceito de metodologia ágil com base em quatro itens fundamentais:

  • Pessoas e interações acima de procedimentos e ferramentas.
  • Software funcionando acima de documentos extensos.
  • Comunicação com o cliente acima de contratos.
  • Mudanças acima de planos determinados.

Metodologias e práticas utilizadas

Diversas implementações da metodologia ágil foram realizadas. Entre elas, talvez a mais utilizada e conhecida seja o Scrum. O que acaba gerando a confusão de o Scrum ser a metodologia ágil, quando na verdade ele é uma opção.

Além do Scrum, tem disponível no mercado, diversas outras metodologias e práticas ágeis. Alguns exemplos são o XP (“Extreme Programming”) e Kanban ,o TDD (Test-Driven Development) e BDD (Behavior-Driven Development). Todos esses itens são usados em grupos para atingir o objetivo da entrega com qualidade. É possível utilizar a combinação de uma ou mais metodologia ágil. Um exemplo é utilizarmos o TDD com o Scrum e o Kanban board em uma “sprint” para gerenciar as atividades.

Scrum:

Metodologia de gerenciamento de projetos com foco no desenvolvimento iterativo e incremental. Possui três papeis fundamentais que são o “Product Owner” (responsável pelo produto/negócio), Scrum Master (responsável por manter os processos) e a equipe de desenvolvimento.

O processo do Scrum possui os seguintes artefatos:

Product Backlog: lista de requisitos mantidos e priorizado pelo “Product Owner”;

Sprint Backlog: lista de requisitos selecionados do “product backlog” que serão desenvolvidas durante o próximo “sprint”.

Dentro de uma “sprint”, que é um tempo determinado, no qual as atividades serão realizadas (de 2 a 4 semanas). Além disso ocorrem as reuniões diárias, onde a equipe se reúna de maneira informal para alinhar o andamento das atividades.

XP (Extreme Programming):

É uma metodologia com base na comunicação, simplicidade, feedback, coragem e respeito. Ela possui 4 atividades principais: Planejamento, Projeto, Codificação e Testes. Possui os princípios básicos de ter um feedback do cliente rápido, ser simples, ser aberto a mudanças. No qual essas mudanças façam parte do processo, além de focar em um trabalho de alta qualidade. O XP possui diversas práticas, entre elas podemos destacar o “pair programming” ou programação em pares, onde dois programadores trabalham no mesmo código ao mesmo tempo, diminuindo assim a probabilidade de erros.

TDD (Test-Driven Development):

Uma técnica bastante utilizada no mundo do desenvolvimento ágil. Consiste em realizar o desenvolvimento baseado em testes, como o próprio nome sugere. Nesse caso são criados primeiramente os testes de uma funcionalidade, geralmente utilizando uma ferramenta de testes automatizados, e então o objetivo e fazer com que o código passe nos testes. Após o sucesso no teste o código é refatorado (melhorar a lógica do código, se possível) e submetido novamente aos testes para verificar se ainda continua válido.

Kanban:

Palavra japonesa que significa “cartão”. Essa técnica consiste em manter as tarefas ou atividades em cartões que transitam de uma fase a outra através de um quadro. A ideia é mostrar, de forma fácil e intuitiva, o que precisa ser feito, o que está sendo feito e o que já foi feito.

BDD (Behavior-Driven Development):

Consiste em um modelo de desenvolvimento onde o comportamento das funcionalidades é definido em conjunto com o cliente e escrito em uma linguagem universal, o ubiquitous language, que seria a forma como quem entende do negócio se comunica e dessa forma todos os desenvolvedores também utilizam ela. Cada teste é composto em duas partes, sendo elas a definição da funcionalidade e os cenários em que determinada funcionalidade irá ser realizada.

Mas qual metodologia eu devo utilizar?

Alguns exemplos de práticas utilizadas nas metodologias ágeis demonstram os fundamentos em que são baseadas. O objetivo sempre é tentar diminuir o espaço na relação com o cliente, estar mais aberto a mudanças e não ficar tão preso à documentação definidas no início dos projetos. Mas esses fatores realmente podem melhorar o desempenho dos meus projetos?

A decisão de qual metodologia utilizar deve levar em consideração alguns fatores como tamanho do projeto, complexidade, duração, etc. Projetos de desenvolvimento de software, dada suas características de frequente mudanças de requisitos e ajustes após a entrega para o cliente, se beneficiam dessas práticas uma vez que conseguem absorver alterações durante o ciclo de desenvolvimento mais facilmente.

Existem diversos estudos de casos de utilização de métodos ágeis que foram bem-sucedidos, como observado no site scrum cases studies, porém podemos verificar algumas dificuldades pelas quais a maioria das empresas passaram durante a adoção. Mudança de cultura dos colaboradores da empresa estão como um dos itens de maiores dificuldades. Geralmente as pessoas estão acostumadas com o modelo tradicional e acabam tendo certa resistência na mudança de modelo.

Além disso, outros pontos fracos podem ser observados, conforme argumentado no site (https://www.aaron-gray.com/a-criticism-of-scrum/). Um dos pontos principais na base Scrum, por exemplo, é que a estimativa de desenvolvimento dada pelos membros seja exata, não levando em considerações dificuldades como desconhecimento da complexidade, trabalhos paralelos e distrações por parte do desenvolvedor.

Mas então devo ou não utilizar a metodologia ágil?

A resposta é depende. Obviamente que diversos projetos de desenvolvimento de software irão se beneficiar das práticas propostas, onde os clientes muitas vezes não ficam satisfeitos com o que recebem e acabam mudando requisitos durante o desenvolvimento. Um modelo que proporciona menos burocracia para mudanças e acaba gerando entregáveis mais rapidamente para o cliente, tende a satisfazer todos os envolvidos e expor o valor agregado do produto/sistema com mais eficácia.

Os benefícios que os modelos ágeis trazem podem sem dúvida melhorar o desempenho dos projetos. Por outro lado nós não devemos encará-lo como a solução para todos os problemas. O modelo clássico não pode ser encarado como um problema a ser resolvido. Ambas abordagens possuem pontos fortes que devem analisados e assim ser definido qual melhor caminho a se seguir.