MDSMetodologia de Desenvolvimento de Software

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.

logotipo da prefeitura de porto velho