A metodologia de desenvolvimento de software Waterfall ainda é viável?

14

Na minha experiência, parece que o modelo Waterfall provou ser muito inflexível e não responde às alterações de requisitos para ser considerado um método viável no mundo moderno do desenvolvimento de software. O crescimento e o histórico comprovado de métodos iterativos mais ágeis parecem indicar que não há razão para que alguém deva seguir um processo de blocos rígidos que pressupõe pouca ou nenhuma alteração desde o início do projeto até a entrega do produto.

A metodologia de desenvolvimento em cascata ainda é viável para o fornecimento de sistemas de software, com relação ao tempo, custo e qualidade?

CFL_Jeff
fonte
3
Então, se você não experimentou, e não quer experimentar, isso a torna morta? Não que eu esteja advogando, mas isso parece uma premissa estranha.
thursdaysgeek
9
Não está morto. Não é apenas o atual modismo / tendência / "aceitável"
Paul
2
@GrandmasterB Por "dead" eu quis dizer "suficientemente provado para não ser o melhor caminho" #
CFL_Jeff
3
@ Rachel Por favor, não continue a ler a tag de desenvolvimento de software. É uma meta tag prevista para limpeza futura .
Thomas Owens
3
Não está morto, está apenas descansando. Pinagem para fiordes. ;)
FrustratedWithFormsDesigner

Respostas:

20

O modelo em cascata ao qual você está se referindo nunca teve a intenção de ser um modelo de processo usado em um projeto real. Em vez disso, é um palhaço. Ele identifica as principais fases e atividades que existem nos projetos de software e o fluxo mais básico entre eles. Essa simplificação excessiva de como desenvolver software é falha e foi apresentada dessa maneira.

Do artigo da Wikipedia:

A primeira descrição formal do modelo em cascata é frequentemente citada como artigo de 1970 por Winston W. Royce, embora Royce não tenha usado o termo "cascata" neste artigo. Royce apresentou esse modelo como um exemplo de um modelo defeituoso que não funciona.

O artigo discutido é intitulado Gerenciando o desenvolvimento de grandes sistemas de software . Nele, Royce apresenta esse modelo na segunda página. No entanto, o texto imediatamente abaixo da representação pictórica passa a ler:

Eu acredito neste conceito, mas a implementação descrita acima é arriscada e convida ao fracasso.

Ele segue isso com uma discussão dos problemas com os testes após a "conclusão" da fase de desenvolvimento, e como as falhas aqui podem levar a grandes reprojetos e alterações de código, e como elas podem levar a grandes excedentes de custo e cronograma. Ao longo do artigo, ele refina o modelo original para um que seja realmente viável em um projeto. No final, ele acaba com um modelo que introduz prototipagem, interação com o cliente e refinamento de artefatos - idéias que acabariam sendo críticas para o movimento ágil que começou no final dos anos 90 e no início dos anos 2000.

Para responder à sua pergunta: A Cachoeira que você está perguntando não é, e nunca foi, um método viável para entregar projetos de software com uma quantidade razoável de qualidade no prazo e no orçamento. No entanto, existem outras metodologias orientadas a planos que se opõem ao ágil que podem e funcionam nos projetos.

Thomas Owens
fonte
Muitos artigos sobre o método ágil usam "métodos tradicionais" para mencionar cachoeira, e essa cachoeira implícita era usada no século 20 o tempo todo. Agora eu sei que estou errado.
Ming-Tang #
@ThomasOwens Você se importaria de citar alguns deles other plan-driven methodologies that lie opposite of agile that can and do work on project?
LAIV
@Laiv O modelo Spiral tende a ser mais orientado a planos do que as abordagens ágeis - você faz mais planejamento e análise antes de desenvolver o software de trabalho. O Cap Gemini SDM é outro exemplo, embora as revisões posteriores tenham adicionado um ciclo de planejar-fazer-verificar-agir, mas, novamente, ele possui uma quantidade razoável de planejamento e análise inicial incorporados ao processo. É provável que muitos sejam uma variação de uma cascata, mas com algum tipo de loop de feedback incorporado. Se você possui um forte entendimento de domínio e requisitos relativamente estáveis, talvez não precise dos loops de feedback apertados dos métodos ágeis e pode planejar melhor.
Thomas Owens
9

As pessoas não usam o modelo de cascata de livro-texto e provavelmente nunca o fizeram.

É uma construção teórica idealizada, cujo objetivo é fazer com que você pense nas etapas do desenvolvimento de sistemas. O ponto principal é que você deseja que as maiores mudanças ocorram o mais cedo possível, porque você nunca terá tempo ou dinheiro para fazer uma grande mudança, uma vez que há muito código construído.

Apesar de ser mais uma maneira de pensar do que um processo, ainda é muito assim que muitas - provavelmente a maioria das organizações desenvolvem software (ou casas, submarinos ou qualquer outra coisa ...).

No mundo real, você não tem interrupções totalmente estritas entre as fases e, às vezes, volta às fases anteriores para pequenos subprojetos. O que a metodologia diz não é que "essas coisas não são permitidas". O que ele diz é "essas coisas custam dinheiro e / ou tempo" - então tente evitar isso no futuro.

Está tudo bem para o Agile Snobs (TM) desprezar os desenvolvedores "antiquados" e sua singular e impraticável metodologia em cascata, mas o fato é que o Agile também não é uma panacéia. Alguns projetos não podem ser construídos usando o Agile e muitas equipes que pensam que são Agile são na verdade apenas desleixadas e desorganizadas.

A metodologia não é o ponto. O objetivo é pensar no que você está fazendo e por que está fazendo dessa maneira - e obter o maior valor possível para o cliente no menor tempo possível.

Joel Brown
fonte
Você obviamente teve uma experiência muito diferente de "pessoas" para mim. Nos últimos 30 anos, trabalhei em uma sucessão de empresas que usavam (e ainda usam) o método cascata de livros didáticos. Sem surpresa, isso não funciona.
David Arno
@DavidArno O mais próximo que eu já vi "em estado selvagem" de livro didático Waterfall em um contexto de software foi em uma empresa que cria software que controlava a troca de trens. A motivação não era ter alguém literalmente morrendo como resultado de um bug. Eu imagino que isso também poderia acontecer em locais que fazem programação incorporada, onde você não deseja criar um milhão de coisas apenas para descobrir que ela falha devido a um bug. Costumo pensar que, mesmo nesses casos, o Waterfall é mais um ideal do que uma prática alcançada com perfeição. Como você aponta - os resultados são inevitavelmente falha em algum nível.
Joel Brown
8

O mítico processo em cascata que é mais frequentemente comparado ao ágil nunca existiu e, portanto, não pode ser considerado morto. Os processos reais em cascata ainda estão vivos e bem, e são excelentes para entregar dentro do prazo o software que atende às expectativas do usuário.

Ryathal
fonte
5
Não sei qual é a diferença entre o processo "mítico" em cascata e o "real". Você poderia por favor explicar isso?
22412 CFL_Jeff
6
Muitas vezes, o processo descrito pelos proponentes Cascata ágil é um strawman en.wikipedia.org/wiki/Straw_man
jfrankcarr
11
Essa seria uma resposta melhor se você explicasse em sua resposta como os proponentes do Agile criam um processo simples que não funcionará, mas não é adequadamente o Waterfall.
9788 Robert Harvey
4
-1 para a declaração: "Eles estão se destacando na entrega ..." A verdade é que é uma lavagem. Como todas as metodologias de software, às vezes funciona, às vezes não. Eu já vi ambos no caso do método cascata verdadeiro.
riwalk
2
Eu vou ter que dizer, [citação necessário] sobre esta resposta. E -1 até que seja fornecido. Especialmente a "excelência no fornecimento de software dentro do prazo e do orçamento que atenda às expectativas do usuário". O relatório CHAOS discorda de você.
Malfist
5

Talvez uma maneira melhor de perguntar no que você está falando é: "quando é menos iterativo e mais formal, melhor?"

Existem situações em que este é o caso:

  • Quando os requisitos não mudarem.

  • Atender a novos requisitos é menos importante do que atingir 100% dos originais.

  • Quando todos os componentes da tecnologia estão maduros e bem compreendidos.

Em certo sentido, você pode tomar o oposto do que pode levá-lo a ser ágil.

Muito poucas técnicas são aplicáveis ​​em todos os lugares. Muito poucos não têm utilidade.

MathAttack
fonte
1
O que no mundo é "menos escrito" ou "mais formal"?
Aaronaught
1
@Aaronaught - "menos iterativo" e "mais formal" digitado por polegares grossos em um iPhone. :-)
MathAttack
1
Eu nunca trabalhei em um projeto que atendeu a um desses pré-requisitos. :)
Theodor
3

Sim, ele está muito vivo, embora hoje seja o " modelo V " mais comum usado.

Nos dois casos, o problema do Agile é que a solução quase nunca termina, o cliente pode continuar solicitando alterações e o desenvolvimento continuará a resolvê-las iterativamente. Para um projeto que se baseia no tempo e no custo dos materiais, isso funciona muito bem. Para um projeto que tem um custo fixo, isso não acontece.

Para esses projetos de custo fixo, o cliente quase sempre espera que marcos pré-definidos demonstrem progresso; no entanto, esses são mais da variedade formal escrita, em vez do código funcional. Para clientes como esse, as especificações escritas se tornam o projeto, onde o desenvolvimento do software é uma consideração secundária (como eles assumem, se você tiver um projeto bem definido, o software deve ser fácil de desenvolver). Essas empresas também são as que fazem uso pesado de recursos de desenvolvimento baratos e terceirizados.

Portanto, se você tiver um pote fixo de dinheiro ou tempo, não espere que os requisitos mudem ou não tenha permissão para alterar nenhum requisito e que forneça um conjunto forte de documentação escrita, os modelos em cascata são os únicos que faz sentido.

O Agile pode ser introduzido no meio desses projetos para o desenvolvimento, mas você ainda tem uma fase de aceleração em que as especificações são criadas a partir dos requisitos e uma fase de aceleração em que o software é instalado e testado in situ. O Agile não responde bem a esses casos.

gbjbaanb
fonte
O Agile pode funcionar muito bem com um pote fixo de dinheiro ou tempo, desde que o escopo também não seja fixo. O outro ponto é que o cliente / contratado pode escolher o tipo de contrato (T&M, custo fixo ou algo intermediário) para ser consistente com uma metodologia de desenvolvimento específica (ágil ou em cascata) - não é predeterminado.
DNA
1

Para quem? A maioria dos gerentes com quem eu lidei ainda usa o Processo de Desenvolvimento de Software Waterfall para agendamento, e os níveis superiores parecem gostar dele por facilitar o agendamento.

Praticamente, poucos desenvolvedores que conheço acreditam que funcionam ou são válidos.

jwernerny
fonte