De que se trata o artigo:

Esse artigo descreve como uma equipe de desenvolvimento pode implementar com sucesso o desenvolvimento ágil dentro de um projeto em cascata de grande porte.

Em que situação o tema útil:

A discussão do assunto abordado neste artigo é importante para aqueles que trabalham com processos em empresas desenvolvedoras de software e/ou aqueles que tenham interesse em conhecer os benefícios que o uso de abordagens ágeis podem trazer para o projeto.

Resumo DevMan:

Este artigo apresentará um conjunto de lições aprendidas associadas à implementação de metodologias ágeis, mais especificamente o Scrum, em equipe de desenvolvimento de software que trabalha com o ciclo de vida em cascata. Poderemos observar os ganhos obtidos com o uso da abordagem ágil e como ela pode ajudar a resolver antigos problemas, provenientes em parte, da abordagem tradicional de desenvolvimento baseada no ciclo de vida em cascata.

Este artigo foi baseado no texto “Implementing agile development in a waterfall project” de autoria de Liz Hines, Scott Baldwin, Mark Giles, e Juan Peralta.

Processo de software é o conjunto de atividades que constituem o desenvolvimento de um sistema computacional. Estas atividades são agrupadas em fases, como: definição de requisitos, análise, projeto, desenvolvimento, teste e implantação. Em cada fase são definidas, além das suas atividades, as funções e responsabilidades de cada membro da equipe, e como produto resultante, os artefatos. O que diferencia um processo de software do outro é a ordem em que as fases vão ocorrer, o tempo e a ênfase dados a cada fase, as atividades presentes, e os produtos entregues.

Com o crescimento do mercado de software, houve uma tendência a repetirem-se os passos e as práticas que deram certo. A etapa seguinte foi a formalização em modelos de ciclo de vida. Os modelos de ciclo de vida são o esqueleto, ou as estruturas pré-definidas nas quais encaixamos as fases do processo. De acordo com a NBR ISO/IEC 12207:1998, o ciclo de vida é a “Estrutura contendo processos, atividades e tarefas envolvidas no desenvolvimento, operação e manutenção de um produto de software, abrangendo a vida do sistema, desde a definição de seus requisitos até o término de seu uso.”

O ciclo de vida em cascata (ler Nota 1) é, em grande escala, utilizado dentro de muitas organizações. Neste contexto, também vemos hoje a decisão de migrar esta estrutura de desenvolvimento para processos ágeis. Apesar de existirem diversas propostas de ajustar projetos grandes para utilizar o desenvolvimento ágil, o risco de fracasso em uma iniciativa desta natureza pode ser alto. Uma boa alternativa para isto é fazer com que equipes de desenvolvimento responsáveis por partes menores projeto decidam adotar a mudança e aplicar metodologias ágeis àquelas partes do projeto sobre as quais elas possuem controle. O resultado dessa decisão acaba ilustrando o valor e benefícios do desenvolvimento ágil, de modo que a equipe de gerenciamento de projetos maiores possa apreciar e entender dentro do contexto do projeto como um todo.

Neste contexto, esse artigo descreve como uma equipe de desenvolvimento pode implementar com sucesso o desenvolvimento ágil dentro de um projeto em cascata de grande porte. Esse exemplo, inclusive os conceitos e técnicas implementados, os desafios enfrentados e os benefícios resultantes, podem auxiliar a descobrir uma maneira útil para introduzir conceitos e processos ágeis à sua organização.

Nota 1. Ciclo de vida em cascata

Formalizado por Royce em 1970, é o modelo mais antigo. Suas atividades fundamentais são:

· análise e definição de requisitos;

· projeto;

· implementação;

· teste;

· integração.

O modelo em cascata tem o grande mérito de ser o primeiro a impor o planejamento e o gerenciamento ao processo de software, que antes era casual. O nome "cascata" foi atribuído em razão da sequência das fases, onde cada fase só começa quando a anterior termina; e da transmissão do resultado da fase anterior como entrada para a fase atual (o fim de cada fase resulta em um documento aprovado). Nesse modelo, portanto, é dada muita ênfase às fases de análise e projeto antes de partir para a programação, a fim de que o objetivo do software esteja bem definido e que sejam evitados retrabalhos, conforme podemos observar na Figura 1.

Figura 1. O modelo em cascata

Devido à sua simplicidade, o modelo em cascata é fácil de ser entendido pelo cliente. É um modelo que supõe um início e fim claro e determinado, assim como uma estimativa precisa de custo logo no início, fatores importantes na conquista do cliente.

O problema se dá depois, quando o cliente, após esperar até o fim do processo para receber a primeira versão do sistema, pode não concordar com ela. Apesar de cada fase terminar com uma documentação aprovada, certamente haverá lacunas devido a requisitos mal descritos pelo cliente, mal entendido pelo analista ou por mudança de cenário na organização que exija adaptação de requisitos. O modelo em cascata não prevê revisão de fases.

Assim, o risco é muito alto, principalmente para sistemas complexos, de grande porte, afinal o modelo em cascata pressupõe uma realidade estática e bem conhecida, comparado a uma linha de produção fabril. Mas a rotina do negócio do cliente não reflete isso. Manipulação de usuários com diferentes habilidades, ambientes operacionais distintos, tecnologia em crescente evolução, necessidade de integração com outros sistemas (em plataformas antigas ou mais novas), mudanças organizacionais, até mudanças na legislação do município/estado/país, pedem um modelo mais flexível.

...
Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo