Conceito

Existem inúmeros frameworks de processos para desenvolvimento de software. A maioria dos métodos ágeis tenta minimizar o risco pelo desenvolvimento do software em curtos períodos, chamados de iteração, os quais gastam tipicamente menos de uma semana a até quatro. Cada iteração é como um projeto de software em miniatura de seu próprio, e inclui todas as tarefas necessárias para implantar o mini-incremento da nova funcionalidade: planejamento, análise de requisitos, projeto, codificação, teste e documentação. Enquanto em um processo convencional, cada iteração não está necessariamente focada em adicionar um novo conjunto significativo de funcionalidades, um projeto de software ágil busca a capacidade de implantar uma nova versão do software ao fim de cada iteração, etapa a qual a equipe responsável reavalia as prioridades do projeto.

Metodologia

Feature Driven Development (FDD) Criado em Cingapura, entre 1997 e 1999, o FDD é um método ágil que reúne as melhores práticas de outros métodos, como o Coad. Sua premissa básica é focada em funcionalidades, o que permite à equipe do projeto realizar um planejamento incremental, isto é, por fases. Esse tipo de atuação ajuda a dar agilidade ao desenvolvimento de soluções em ambientes de extrema incerteza, em que as mudanças são inevitáveis. A programação por FDD começa com a visão global do negócio, já que esse método considera a soma de tudo mais importante do que cada uma das partes separadamente. Passa-se, então, para o detalhamento do produto com a subdivisão por áreas a serem modeladas, culminando na descrição de cada funcionalidade. Por se tratar de uma ferramenta focada no desenvolvimento assim como o XP, que veremos a segui, o FDD pode ser perfeitamente integrado ao Scrum, outro método ágil muito utilizado que também é focado no planejamento e na execução do projeto.

eXtreme Programming (XP) Também criado em meados da década de 90, o eXtreme Programming, carinhosamente chamado de XP, é um método ágil focado no desenvolvimento de softwares que tem três pilares como base: agilidade no desenvolvimento da solução, economia de recursos e qualidade do produto final. Para chegar à excelência nos serviços prestados, uma equipe XP deve se basear em valores, isto é, um contrato de atitudes e comportamentos que levam ao sucesso. Além dos valores, o método ágil XP também leva em consideração melhores práticas de trabalho, que têm como objetivo garantir a efetividade do trabalho da equipe XP, assim como a satisfação do cliente durante todo o processo de desenvolvimento.

Microsoft Solutions Framework (MSF) O MSF é um dos métodos ágeis mais usados por se destinar ao desenvolvimento de soluções tecnológicas por equipes reduzidas, focando na diminuição de riscos para o negócio e no aumento da qualidade do produto final. O propósito é identificar as falhas mais comuns em projetos de tecnologia, mitigando-as e aumentando as taxas de sucesso de cada iniciativa. Assim como os outros métodos ágeis, o MSF também possui melhores práticas que devem ser observadas pela equipe para atingirem os níveis de excelência buscados:

  • Comunicação aberta e transparente entre todos os envolvidos
  • Visão compartilhada do negócio
  • Equipe capacitada
  • Atribuição de papéis e responsabilidades desde o início do projeto
  • Entregas incrementais
  • Flexibilidade para mudar sempre que necessário
  • Qualidade das entregas
  • Aprendizado constante com as experiências adquiridas
  • Parceria com clientes internos e externos

Dynamic System Development Model (DSDM) O DSDM é um dos métodos ágeis mais antigos empregados não só no desenvolvimento de projetos como no meio tecnológico. Um tanto quanto diverso dos demais métodos ágeis, ele é destinado ao desenvolvimento de projetos com orçamento fixo e prazos curtos, levando em consideração que o cliente não tem como saber quanto custará a solução final. Entre suas melhores práticas estão o desenvolvimento incremental e iterativo, a colaboração entre cliente e equipe, além da integração de funcionalidades, o que também vemos nos demais métodos ágeis. Vale ressaltar que o DSDM diverge dos demais métodos ágeis tanto em sua estrutura, que é composta por processos interligados de modelagem, concepção, construção e implementação, assim como na gestão do tempo, que não é flexível, até permitindo que as funcionalidades mudem, mas desde que os prazos de execução continuem os mesmos.

Scrum O Scrum é, sem dúvida, o método ágil mais usado nos dias de hoje, principalmente porque pode ser integrado a outros métodos ágeis com facilidade, aplicando-se não só ao desenvolvimento de softwares como a qualquer ambiente de trabalho. Focado na gestão do projeto, o Scrum tem como base o planejamento iterativo e incremental, que, como você já sabe, se dá por fases, chamadas de sprints. Define-se, desde o início do projeto, a lista de funcionalidades a serem desenvolvidas, também chamada, no caso, de product backlog. Dando andamento ao processo, cada funcionalidade se torna um sprint, cujos detalhes a serem criados e desenvolvidos passam do product backlog para o sprint backlog. Do sprint backlog as atividades são distribuídas entre os membros do Scrum Team, que devem desenvolvê-las dentro de um prazo que geralmente não leva mais que quatro semanas. Ao final de cada sprint é realizada a sprint review meeting, uma reunião de alinhamento sobre o que foi entregue. A partir daí, começa-se a planejar o próximo sprint. Essas etapas acontecem sucessivamente até que o produto final esteja pronto para a entrega. As melhores práticas Scrum estão baseadas no Manifesto para o Desenvolvimento Ágil de Softwares, levando em consideração atitudes e comportamentos como:

  • Indivíduos e interação mais do que processos e ferramentas
  • Software em funcionamento mais do que documentação
  • Colaboração com o cliente mais do que contratos e negociações
  • Respostas a mudanças mais do que planejamento

Software

Os softwares usados nesta área são os citados anteriormente, que são divididos em: desenvolvimento, planejamento, acompanhamento e teste.

  • Planejamento: Scrum, Feature Driven Development (FDD)
  • Desenvolvimento: eXtreme Programming (XP), Microsoft Solutions Framework (MSF), Dynamic System Development Model (DSDM)
  • Acompanhamento: Scrum, Feature Driven Development (FDD)
  • Teste: eXtreme Programming (XP), Feature Driven Development (FDD)

Diagrama de Blocos


um grupo de 17 renomados desenvolvedores de software, agruparam e aprimoraram os diversos conceitos de metodologias ágeis existentes e assinaram o “Manifesto para o Desenvolvimento Ágil de Software”, que passou então a ser muito difundido pelas comunidades de desenvolvimento


Ciclo de desenvolvimento ágil


Erro ao criar miniatura: Arquivo não encontrado Desenvolvimento ágil de software mais detalhado

Interações com as tecnologias

Através destes links pode-se obter um conhecimento mais aprofundado sobre cada metodologia:


Informações adicionais

Historia

As definições modernas de desenvolvimento de software ágil evoluíram a partir da metade de 1990 como parte de uma reação contra métodos "pesados", caracterizados por uma pesada regulamentação, regimentação e micro gerenciamento usando o modelo em cascata para desenvolvimento. O processo originou-se da visão de que o modelo em cascata era burocrático, lento e contraditório a forma usual com que os engenheiros de software sempre realizaram trabalho com eficiência. Uma visão que levou ao desenvolvimento de métodos ágeis e iterativos era retorno a prática de desenvolvimento vistas nos primórdios da história do desenvolvimento de software Inicialmente, métodos ágeis eram conhecidos como métodos leves. Em 2001, membros proeminentes da comunidade se reuniram em Snowbird e adotaram o nome métodos ágeis, tendo publicado o Manifesto ágil, documento que reúne os princípios e práticas desta metodologia de desenvolvimento. Mais tarde, algumas pessoas formaram a Agile Alliance, uma organização não lucrativa que promove o desenvolvimento ágil.

Referências bibliográficas

B. Boehm (2004). Balancing Agility and Discipline: A Guide for the Perplexed 2 ed. Boston,MA: Addison-Wesley.

Cohen, D., Lindvall, M., & Costa, P. (2004). An introduction to agile methods. In Advances in Computers. New York: Elsevier Science.

Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis.

K. Beck (1999). Extreme Programming Explained: Embrace Change. Boston, MA: Addison-Wesley.

P. McBreen (2003). Questioning Extreme Programming. Boston, MA: Addison-Wesley.