O desenvolvimento de software Agile pode ser usado em projetos definidos por contrato?


14

Recentemente, tive uma conversa com um desenvolvedor sobre desenvolvimento ágil de software. Embora eu entenda o princípio, parece que a mudança contínua dos requisitos cria o potencial de o projeto continuar para sempre. Mas, pelo menos onde trabalho, os projetos precisam ser concluídos porque é um contrato.

Ou seja, a primeira iteração pode levar meses, porque em alguns projetos o cliente não pode usar um aplicativo incompleto. Para alguns projetos, acho que você precisa definir finalizado primeiro, depois pode dividi-lo em iterações e refinar sua definição após cada iteração. Mas você deve sempre ter essa definição.

Se o Desenvolvimento Ágil de Software adota mudanças nos requisitos, como você sabe onde termina? Como você pode fazer um orçamento para um projeto quando o resultado final está sempre mudando?

O Desenvolvimento Ágil de Software é mais um processo ágil do que um produto ágil?


termina quando você precisa realmente entregar algo que funcione, em vez de mexer. Nesse ponto, você deve começar a impor estrutura, planejar, corrigir requisitos e prazos e começar a trabalhar, em vez de brincar.
Jwenting

Cada iteração ágil resulta em um produto entregável e funcional, com o qual o cliente pode usar e aprender mais. Isso continua até que sejam satisfeitos, o que geralmente acontece mais cedo do que o planejado originalmente. Isso garante que o produto esteja sempre funcionando e leva em consideração o fato de que o software nunca termina, mas evolui para sempre ou morre. Basta escolher um momento em que você acha que o produto é bom o suficiente e parar por aí (por enquanto).
Martin Wickman

@ Martin Wickman: Eu entendo isso, mas "um produto que o cliente pode usar" é o problema aqui. Se for esse o caso, a primeira iteração pode levar meses, porque em alguns projetos o cliente não pode usar um aplicativo incompleto. Para alguns projetos, acho que você precisa definir finalizado primeiro, depois pode dividi-lo em iterações e refinar sua definição após cada iteração. Mas você sempre deve ter essa definição.
Verax

@Verax: O manifesto ágil foi criado para gerenciar mudanças. Se o seu projeto não tiver alterações, o ágil não é para você. Fim da história.
Martin Wickman

2
@ Verax: Você deve esclarecer sua pergunta e adicionar mais contexto a ela. Seus comentários mostram que há mais na questão. Isso também é óbvio pelo voto contar com a resposta e que a resposta aceita não está relacionada ao texto da pergunta real (e até diz "dos comentários dos POs ...").
Martin Wickman

Respostas:


7

Pelos comentários do OP, parece que ele gosta de mim trabalha em uma loja de consultoria, onde prestamos serviços de desenvolvimento para nossos clientes ... eu acho, porque nesse estado de espírito que está causando sua confusão ... Então, eu vou declarar um fato conhecido, mas nunca declarado.

O Agile é incompatível com o desenvolvimento de software definido por um contrato.

  • Os contratos precisam ser difíceis, você paga X, fazemos Y. Você quer X + M, paga-nos Y + (M * N)
  • Os contratos DEVEM ser satisfatórios (ou seja, não abertos), caso contrário, não são contatos legais. (Quando um contato está envolvido, você deve passar por um rigoroso processo de controle de alterações.)

Muitas lojas de consultoria afirmam que o Agile está mentindo. Eles apenas dizem isso porque o Agile alcançou o status de palavra do Buzz.

O Agile funciona melhor para o desenvolvimento interno, onde os programadores estão em período integral e há pouca conversa sobre orçamentos. Apenas prazos e recursos.


À medida que aprendo mais sobre isso, estou chegando à mesma conclusão. Sua última frase parece estar absolutamente correta. Eu trabalhava para o governo e meu cliente era a agência em que trabalhava, e os programas tinham que ser mantidos por anos e anos, desde que houvesse funcionários que os usassem. Eu posso ver o ágil trabalhando lá. Agora desenvolvo sistemas embarcados. O projeto termina quando a máquina funciona (tudo ou nada). Se a máquina funcionar parcialmente, ela não poderá ser vendida - o projeto falhou.
Verax

2
Na verdade, uma loja de consultoria na qual eu trabalhava há alguns anos atrás, na verdade, tinha um artigo escrito por um aderente ágil descrevendo como a ágil podia ser ajustada a um modelo de serviço de preço fixo.
Mcottle

2
Eu tenho que discordar com esta resposta. O motivo é que, se você tem um contrato que não é aberto, significa que não deseja gerenciar a fluência do escopo (o que quase sempre acontece). Os contratos que eu estou acostumado a ver começam com: você paga X, nós pagamos Y. Eles têm uma cláusula que afirma que qualquer alteração no escopo tem um preço extra. Desde que você seja muito cedo para notificar a ampliação do escopo (o que requer recursos e tempo extras), os clientes anteriores poderão reagir às alterações (obtendo aprovações e orçamento da alta gerência etc.). Então, o próprio processo de gerenciamento se torna ágil.
Spoike

Isso não é incompatível se o contrato for de serviço (código de gravação) em oposição ao produto (software finalizado). O Agile permite estimar o que será feito com o orçamento, e se o requisito mudar, o orçamento também deve mudar. Você quer outro recurso? Você deve contratar mais 500 horas-homem. A fluência de recursos também é fluência de preços, completamente satisfatória para os desenvolvedores e, se o cliente estiver disposto a pagar, quem somos nós para questionar isso?
SF.

2
Existem contratos ágeis , portanto, obviamente, essa resposta está errada por definição.
Martin Wickman

20

Se você estiver focado em fazer (o que você acredita que é) as coisas mais importantes primeiro, o projeto terminará quando:

  • Você gastou o dinheiro orçado.
  • Você já passou o tempo orçado.
  • Você não deseja mais adicionar ou alterar nada.
  • O próximo lote de suas alterações de maior prioridade não vale o que custará.

5
1. Chega de dinheiro - o cliente gastou todo o seu dinheiro em um produto inútil incompleto. 2. Chega de tempo - o cliente ainda tem um produto inútil incompleto. 3. Nada a acrescentar - Sim, certo! 4. Não vale a pena - o cliente desistiu do projeto. --- O que estou perdendo? Isso não faz sentido para mim.
Verax

7
Para 1 e 2: se você fizer as coisas mais importantes primeiro, quando ficar sem dinheiro, terá as coisas mais importantes que conseguirá receber. Semelhante por tempo. Eu admito que 3 é raro. Para 4: parar não significa necessariamente que o cliente desistiu. Pode significar que eles têm as coisas mais importantes que eles querem com isso, e agora preferem fazer outras coisas com seu dinheiro. Como você decide quando terminar outros projetos? Quaisquer que sejam os critérios que você usa agora, ainda estão disponíveis em projetos ágeis.
Dale Emery

1
Dale, obrigado por seus pensamentos. Eu acho que isso só funciona se o cliente estiver pagando por cada iteração individualmente e valorizando cada iteração como um produto em si. Não vejo como isso funcionaria bem em produtos de custo fixo ou em produtos que exigem tudo ou nada.
Verax

5
@ Verax: Não existe um produto que exija "tudo ou nada". Sempre existem recursos que são meramente "agradáveis ​​de ter" e bugs que são cosméticos e não funcionais. Um projeto de custo fixo é um sucesso se tudo o que resta quando o dinheiro acabar. Métodos ágeis tentam maximizar a probabilidade disso.
Michael Borgwardt

1
Obviamente, há um custo para alterar os requisitos. Se você criar algo em uma iteração e alterar os requisitos para essas coisas na próxima, haverá um custo para isso. Agile reduz o custo. Não o elimina. Se você tiver um orçamento, lembre-se disso ao decidir se deseja adicionar um novo recurso ou alterar um já existente, sabendo que está sempre trocando um contra o outro. Você aprende a priorizar e a priorizar novamente e aprende as conseqüências.
Dale Emery

14

Você para quando a empresa decide que não deseja mais iterações. Você espera que isso ocorra após a entrega de uma quantidade significativa de valor, mas antes que você chegue muito longe no domínio dos retornos decrescentes.

Ele deve sempre ser dirigido pelo "negócio", o que isso significa na sua circunstância. Pode ser o gerenciamento sênior de uma loja de desenvolvimento de software ou os patrocinadores de negócios reais em um ambiente de desenvolvimento interno. Eles decidirão quando o custo da próxima iteração supera o benefício dos recursos que serão entregues na próxima iteração.


5

Nunca, e essa é a beleza disso.

O projeto nunca está terminado . Você alcançou outro lançamento, outro marco, mas enquanto o dinheiro está fluindo, há sempre mais um recurso a ser adicionado, mais uma peça para melhorar, mais um bug para corrigir. O projeto morrerá quando não for mais necessário, mas nunca será concluído. Ao contrário do modelo Waterfall com requisito-> projeto-> produto-> final, este é um loop que pode girar para sempre - desde que você seja pago.

Não é um recurso comercial freqüentemente mencionado dessa tecnologia, é?


2
Os projetos em cascata também nunca estão completamente concluídos, apenas com maior probabilidade de serem entregues com ou sem recursos importantes, tornando necessário um projeto novo e caro.
Michael Borgwardt

4

Há um equívoco aqui: o Agile não incentiva a alteração dos requisitos do projeto. Em vez disso, permite mudanças sem desperdiçar trabalho ou sacrificar áreas importantes de desenvolvimento.

Existem quatro restrições fundamentais para qualquer projeto de engenharia; escopo, custo, tempo e qualidade. Waterfall assume que estes serão estáticos. Essa é uma suposição incorreta; um ou mais destes SEMPRE mudam. A fluência do escopo, orçamentos cortados e outras "incógnitas desconhecidas" interferem SEMPRE em um projeto, alterando as restrições. O Waterfall não antecipa isso; portanto, quando isso acontece, o projeto muda de maneira indesejável; recursos importantes que ainda não foram adicionados desaparecem, ou são concluídos rapidamente, ou a versão precisa ser adiada, ou custar balões, enquanto o PM joga dinheiro com novos desenvolvedores para entrar e ajudar a fazer tudo certo.

O Agile, por outro lado, permite que as restrições mudem e, na verdade, espera isso. Ele faz isso trabalhando em pequenos pedaços utilizáveis, de acordo com as prioridades do proprietário, e, portanto, os pedaços são idealmente imediatamente úteis para o proprietário do projeto. Assim, reduz a exposição ao desconhecido por não fazer grandes planos em um período em que os desconhecidos são grandes. Se a linha do tempo mudar, as equipes poderão ser adicionadas ou os recursos menos importantes serão "redimensionados" e o sistema que a equipe já criou não será afetado.

Ele também fornece melhores estimativas do tempo e custo necessários para produzir o escopo especificado com a qualidade exigida. As pessoas são notoriamente ruins em estimar grandes empregos; é preciso muita experiência e muito mais cálculo inicial para fazê-lo corretamente. Por outro lado, as pessoas geralmente são bons juízes do que podem fazer em um dia ou uma semana ou duas. Isso produz rapidamente um estado estacionário, onde você pode extrapolar o tempo e o custo do trabalho a ser realizado com base no seu ritmo histórico, com uma quantidade razoável de precisão.

Quanto à definição de terminais, você está certo; um projeto Agile PODE continuar para sempre. No entanto, o SLDC tradicional também pode; o cliente geralmente volta com mais dinheiro e uma lista de desejos de atualizações. A diferença é que não há uma linha clara entre "análise", "design", "desenvolvimento" e "manutenção" quando se olha o projeto como um todo; tudo acontece tijolo por tijolo, sprint por sprint. Se a qualquer momento o proprietário quiser chamar o projeto de "concluído", ele poderá e terá a soma total de "tijolos" pelos quais pagou em uma "parede" sólida; pode não ser tão alto ou estender tanto quanto eles planejavam originalmente, mas está firmemente no lugar, faz o trabalho e pode ser adicionado posteriormente com um mínimo de desmontagem.


Desculpe, mas "em vez disso, permite mudanças sem desperdiçar trabalho", é uma falácia hedionda usada para convencer a administração de quão grande é. Refatorar e / ou reprojetar o sistema para acomodar mudanças inesperadas não conta como desperdício de trabalho? No campo da cachoeira, sim, aparentemente não no campo ágil. Além disso, se o cliente quiser apenas um trabalho que leva 2 semanas para ser concluído, não importa qual metodologia seja usada, as pessoas poderão fornecer boas estimativas. O que o cliente realmente quer é quanto tempo antes que eu tenha o produto completo, em que o ágil não é melhor do que outros métodos de estimativa.
Dunk

1
Além disso, você faz parecer uma coisa boa que o proprietário pode chamar de concluída a qualquer momento e o que você concluiu é o que ele recebe. IME, geralmente o cliente quer saber que seus dólares X fornecerão um certo conjunto de recursos antes que ele gaste o dinheiro. Não vejo como benefício o cliente gastar uma pilha de dinheiro e ter apenas metade dos recursos que esperava. Eu considero que seja uma falha na parte empresas desenvolver, embora possam ter entregue algo que eles chamam trabalhando ....
Dunk

2
E se um cliente contratasse uma casa, mas o dinheiro acabasse antes que o telhado fosse colocado? O campo ágil ainda chamaria isso de sucesso. Ninguém mais faria; em particular o cliente.
Dunk

1
Quanto à estimativa, a equipe estima o que eles podem fazer em um sprint, e isso é extrapolado para criar uma linha do tempo para todo o projeto. Mais uma vez, ajuda a proteger os desenvolvedores e o cliente. Você pode colocar o que quiser em um contrato, incluindo um valor e data "não excedendo". É negociável. O Agile ainda ajuda, mostrando aos dois lados muito rapidamente se as restrições são viáveis. Duas semanas depois, se não parecer que será feito a tempo, as equipes podem ser adicionadas, os recursos descontinuados ou o cronograma estendido.
21411 KeithS

1
E se tivesse feito o mesmo em uma SLDC em cascata? Qualquer um dos desenvolvimentos seria interrompido e o cliente poderia obter uma base de código com sérias falhas de funcionalidade ou antecipando uma falta de dinheiro / tempo; o cronograma restante seria limitado ao tempo restante. Isso SEMPRE sacrifica a qualidade e, no final de um projeto, a equipe de desenvolvimento é frita. Além disso, muitas excedentes de custos acontecem porque uma cascata tradicional não produz um produto até que o desenvolvimento esteja completo; isso limita a capacidade do cliente de dizer "não era isso que eu queria".
21411 KeithS

1

Ele termina quando todos os recursos são implementados e todos os bugs são corrigidos.

Se o prazo for fixo e os requisitos também forem fixados. Então isso não será um problema. Mas se o prazo for fixado, mas os requisitos estiverem mudando, há algo que você deve fazer para prosseguir com o projeto.

Preço fixo parte 1, o que é tão ruim?

Preço fixo parte 2, conserte com agilidade!


É difícil saber quando todos os bugs foram corrigidos.
Martin Wickman

Talvez "quando todos os erros conhecidos que valem a pena corrigir são corrigidos"?
Dan Ray

@CharithJ, seus links estão quebrados. Eles ainda estão disponíveis em algum lugar? Obrigado.
TwainJ

1

A grande suposição por trás do desenvolvimento ágil é que os requisitos estão sempre mudando, independentemente da metodologia usada. Agora, é claro que você pode criar um documento de requisitos, elaborar um plano para executá-lo e entregar no final, e pode parecer que seus requisitos não foram alterados. Eles podem não ter mudado em seu plano, mas com as mudanças do mercado e a melhor compreensão do produto por você e pelo seu cliente, os requisitos em termos do que o cliente deseja vão mudar. O Agile entra e sugere um processo que não oculta essas alterações através de um cronograma fixo, mas, ao invés disso, cria respostas para as inevitáveis ​​mudanças no processo.

Quando você termina, passa de concluir uma programação fixa para quando o produto está em um local em que você pode fornecer valor comercial suficiente para que seu cliente possa enviar e comercializar o software em seu estado atual. O trabalho está vinculado muito mais ao valor que você está entregando, e não ao cumprimento de um cronograma.


1
Os defensores ágeis assumem erroneamente que, no mundo das cachoeiras, os desenvolvedores desaparecem após a assinatura de um contrato e nunca mais são ouvidos até que um produto saia pela porta. A maneira como funciona na vida real é que há um número razoável de pontos de verificação e muitas revisões com as quais o cliente pode se envolver tanto quanto quiser. Se eles não gostarem da direção ou das decisões, poderão solicitar alterações. No momento em que um produto é entregue, deve ser o que o cliente desejava, na medida em que ele escolheu estar envolvido. O Agile não aprimora isso em muitos projetos.
Dunk
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.