Metodologia Ágil para entrega de software.
O CMTI registra adoção de metodologias ágeis desde 2014, distribuídos em vários projetos na área de desenvolvimento. A adoção foi uma visão estratégica e experiência de servidores que já trabalharam em grandes projetos dos quais chegou-se à conclusão que a adoção de métodos ágeis geram mais produtividade ao processo de desenvolvimento.
O que é método ágil?
Um questionamento sobre as formas tradicionais de produzir softwares e sistemas se consolidou a partir da divulgação do manifesto ágil, que possui os seguintes princípios:
"Através deste trabalho, passamos a valorizar:
- Os indivíduos e as interações mais que processos e ferramentas;
- O software funcionando mais do que uma documentação completa;
- A colaboração com e dos clientes acima de negociações de contratos e;
- Respostas a mudanças acima de seguir um plano.
Isso não quer dizer que documentação não seja importante e que os processos e as ferramentas sejam inúteis; significa que o item à esquerda é mais valorizado, apenas isto.”
Tal proposta, publicada em 2001, foi um contraponto a um dos modos mais tradicionais de produzir softwares e sistemas, chamado cascata. Nesse antigo modelo, o cliente tinha que descrever tudo o que desejaria de um sistema logo no início. A empresa contratada traduzia todas essas demandas em textos escritos, conhecidos como requisitos. O cliente aprovava essa documentação e só via os resultados depois que tudo estivesse praticamente finalizado.
Um dos problemas que essa metodologia gerava era a dificuldade de prever tudo o que se quer do sistema e a grande probabilidade de ocorrerem erros de entendimento, só percebidos no final do processo (figura 1). Metodologias ágeis propõem a superação desse inconveniente de várias formas. Uma das mais fundamentais é a colocação de um representante do cliente para participar do time de desenvolvimento. Denominado PO, o Projetor Owner, ou “dono do projeto”, acompanha todas as fases do desenvolvimento, verificando se o que ele pediu é aquilo que está sendo entregue. O Desis considera a interação do dono do projeto como fator imprescindível para o sucesso do desenvolvimento do software solicitado.
Figura 1 - paradigma do desenvolvimento de software
Além desses princípios, métodos ágeis costumam adotar práticas bem características. Umas delas é a chamada administração visual, que se concretiza em quadros de tarefas pendurados nas paredes onde são fixados “post-its” indicando a fase de trabalho em que cada integrante do time está, para que todos tenham a visão do todo. Outro componente do método são reuniões frequentes e realmente curtas, com duração, por exemplo, de 15 minutos, onde cada um explica o que fez no dia anterior, quais os problemas enfrentados e o que fará no próximo dia.
Um terceiro componente do método são as sprints, períodos de trabalho menores, de uma a quatro semanas, em que se procuram realizar tarefas que proporcionem entregas de partes do sistema que sejam prioridade para o cliente, de maneira que este possa testar cada “pedaço” do site ou sistema que for sendo produzido, em vez de só poder ver a ferramenta quando tudo estiver completo.
Atualmente o Desis não trabalha totalmente de forma ágil, mas implementa maioria dos seus conceitos utilizando um tipo de Scrum mais simplificado (Figura 2). Primeiramente após o recebimento da oficialização da demanda, fazemos um pré-projeto para levantarmos indícios de que podemos desenvolver a solução sem risco de o projeto falhar e para termos uma visão geral do que está sendo solicitado e a delimitação do escopo. A princípio trabalhamos sempre com escopo aberto por trabalharmos com o modelo de desenvolvimento ágil.
Figura 2 - Scrum simplificado
Princípios por trás do manifesto ágil
Nós seguimos os seguintes princípios:
- Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.
- Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.
- Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos.
- Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.
- Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.
- O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.
- Software funcional é a medida primária de progresso.
- Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.
- Contínua atenção à excelência técnica e bom design, aumenta a agilidade.
- Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.
- As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.
- Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.