O ágil é mais do que apenas pequenas cachoeiras?


18

Eu usei principalmente a metodologia cascata em meus projetos, mas agora estou expandindo meus horizontes para metodologias ágeis. Pelo que li até agora, e talvez tenha lido coisas erradas, ágil significa pequenas cachoeiras. Em vez de uma grande cachoeira espalhada por um ou dois anos, você tem pequenas cachoeiras que duram semanas ou talvez alguns meses, no máximo.

Meu entendimento está correto ou existe mais do que isso? Quais são as filosofias ágeis?


4
Você realmente leu o Manifesto Ágil? agilemanifesto.org .
S.Lott 26/09

Respostas:


20

Em um nível simples, sim. Simplesmente realizar uma Cachoeira a cada duas semanas não o torna ágil , mas é iterativo (que é metade da agilidade).

O modelo em cascata define fases - requisitos, arquitetura, design, implementação, verificação (teste), validação (teste de aceitação) e liberação. Em qualquer metodologia iterativa, você passa por cada uma dessas fases em cada iteração. Pode haver sobreposição entre eles, mas você obtém e captura requisitos, adota a arquitetura e o design do sistema para permitir a implementação, desenvolve os novos recursos ou corrige os defeitos, teste os novos módulos e apresenta-os ao cliente para aceitação teste e implantação.

No entanto, há muito mais a agilidade do que apenas ser iterativo e incremental. Os inquilinos do ágil são capturados no Manifesto para desenvolvimento ágil de software . Existem quatro pontos principais mencionados no Manifesto:

Indivíduos e interações sobre processos e ferramentas

Você envolve pessoas individualmente com frequência. Muitas implementações estão centradas em equipes auto-organizadas e auto-direcionadas. Quase todos têm interações frequentes com o cliente ou com alguém que tenha voz do cliente. Em vez de ter um conjunto formal de procedimentos a serem seguidos e ferramentas a serem usadas, você permite que as pessoas que trabalham no projeto orientem como o projeto é feito para que seja feito da melhor maneira possível.

Software que trabalha sobre uma documentação completa

Em um projeto de software, o objetivo principal é a entrega do software. No entanto, em alguns projetos, há produção desnecessária de documentos que não agregam valor. Scott Ambler escreveu um bom artigo sobre a documentação Agile / Lean . Não se trata de não produzir documentação, mas de escolher a documentação que agrega valor à sua equipe, futuros desenvolvedores, cliente ou usuário. Em vez de produzir documentação que não agrega valor, seus engenheiros de software estão produzindo software e testes associados.

Colaboração do cliente sobre negociação de contrato

Em vez de definir os termos, horários e custos antecipadamente, torna-se um esforço contínuo com o cliente. Por exemplo, você pode capturar seus requisitos na forma de histórias de usuários e atribuir pontos a eles. Após algumas iterações, você decide uma velocidade (pontos / iteração) e pode determinar quantos recursos sua equipe pode implementar em uma iteração. Como seu cliente fornece feedback sobre quais recursos agregam mais valor, eles podem decidir quando o projeto será concluído a qualquer momento. Muitas coisas podem acontecer com a entrega frequente e a interação com o cliente - os requisitos foram atendidos e o projeto termina em manutenção e, eventualmente, no final da vida útil, o cliente descobre que não precisa de tudo o que pensava e decide encerrar o processo. projeto, o projeto está falhando e o cliente vê isso cedo e pode cancelá-lo ...

Respondendo a mudanças após seguir um plano

Você não tem um projeto grande ou plano final antecipadamente e precisa executar um retrabalho sempre que esse projeto ou plano precisar mudar. Você estima e revisa continuamente estimativas com base nas informações que possui. Você escolhe suas métricas com cuidado para fornecer informações sobre a integridade do projeto e quando fazer alterações internas. Você frequentemente adiciona, remove e reprioriza requisitos com o cliente. Por fim, você entende que a mudança é a única constante.

Ser ágil significa focar nas pessoas e atender às suas necessidades, oferecendo software de alta qualidade e valor agregado rapidamente. À medida que as necessidades do cliente mudam, você se adapta a essas necessidades para se concentrar em agregar valor. Existem implementações específicas de metodologias ágeis, mas todas elas são centradas nas pessoas, na entrega oportuna de software de trabalho e na adaptação a um ambiente em rápida mudança.


2
Sim, "Agile" tem mais a ver com atitude do que com técnicas específicas. Leia halfarsedagilemanifesto.org para ter uma ideia das maneiras algumas organizações falham em adotar metodologias "ágeis", mesmo se eles pretendem seguir algum método supostamente "Agile" ...
Bill Michell

2

Sim e não - o processo real pode ser visto como uma série de pequenas quedas de água, mas a diferença é que o processo evolui e é aprimorado a partir da entrada de toda a equipe (dev, qa, business etc.), em retrospectivas, o que deve levar para uma unidade muito mais rígida, capaz de reagir a problemas e planejar e entregar com precisão. Estou simplificando bastante aqui, há muito mais, mas não acho que esse seja um ponto de partida ruim.


1

Eu diria que é uma maneira simplista de colocá-lo. Sim, quando você se dedica a isso, são pequenos fluxos de água, mas há muito mais por trás disso que o faz funcionar. Uma metodologia inteira que muda a maneira como você aborda os projetos ... Sem mencionar a mentalidade necessária para isso.

Se você é sério sobre o Agile, eis uma boa (e longa) série de webcasts nos quais você pode estar interessado:

http://autumnofagile.net/


1

Esqueça o Agile por um minuto, pense no que se entende por "cachoeira".

Há uma fase de requisitos, na qual todos tentam descobrir quais problemas o produto final precisa resolver. As pessoas discutem sobre isso por um tempo e, em seguida, todos assinam um conjunto de requisitos. Nesse ponto, seu escopo é definido, os contratos são assinados e o cliente pode se afastar e esperar que você crie um produto que atenda aos requisitos definidos.

Em seguida, há uma (ou talvez duas) fase (s) de projeto. Os designers (que podem ou não ser os desenvolvedores) discutem sobre COMO o sistema deve se unir para atender aos requisitos de assinatura. Podem ocorrer problemas se eles não entenderem um requisito, o que pode significar que eles precisam voltar ao cliente, potencialmente reabrindo a fase de requisitos (e obtendo outra rodada de aprovação) ou, pelo menos, colocando o gerenciamento de mudanças em ação . Freqüentemente, os designers simplesmente dão seu melhor palpite. Eles podem criar um modelo de dados lógicos e muita UML descrevendo um novo sistema e como ele deve funcionar. Então eles assinam.

Agora, os desenvolvedores começam realmente a codificar, com base no design assinado. Podem ocorrer problemas se eles não entenderem o design, o que pode significar que eles precisam voltar ao designer, potencialmente reabrindo a fase de design (e obtendo outra rodada de aprovação) ou, pelo menos, colocando o gerenciamento de mudanças em ação . Os projetistas, por sua vez, podem perceber que a confusão realmente remonta aos requisitos, o que significa que eles precisam reabrir as discussões sobre os requisitos, aprovações e gerenciamento adicional de mudanças. Freqüentemente, os programadores (que têm um prazo aproximado) simplesmente fazem seu melhor palpite. Eles fazem o que podem para criar código funcional. Em seguida, eles o liberam para teste.

Agora, a fase de teste do sistema é iniciada. Os testadores testam com base em sua compreensão dos requisitos e design e registram o que eles percebem como defeitos em um sistema de rastreamento / gerenciamento de alterações, fazendo com que os desenvolvedores comecem a se desenvolver novamente, a menos que considerem o problema como uma falha de design, que a envia de volta ao design, etc ... Eventualmente, os testes do sistema passam e são desconectados.

Por fim, o cliente volta e faz testes de aceitação do usuário no novo sistema. É aqui que eles decidem se a solução testada pelos testadores, desenvolvedores desenvolvidos e projetados é realmente o que eles querem. Caso contrário, é possível que você volte à fase de design ou mesmo revisite os requisitos.

A idéia por trás da cascata é que é difícil (e muito indesejável) voltar depois que uma fase estiver concluída. Pessoas diferentes geralmente estão envolvidas em diferentes fases, de modo que existem várias transferências - cada uma das quais apresenta muitos riscos de má interpretação e perda de informações. Há também uma lacuna significativa entre quando os clientes dizem o que querem e quando veem o que foi construído; nesse momento, os requisitos reais podem muito bem ter mudado.

As metodologias ágeis concentram-se em uma forte comunicação e cooperação entre todas as partes interessadas. O princípio "Colaboração do cliente sobre negociação de contrato" significa que você não precisa passar por uma série de aprovações e transferências, mas deve simplesmente trabalhar em conjunto com o cliente, cada iteração determinando os requisitos para uma peça do quebra-cabeça. e imediatamente formar testes, um design e um código de funcionamento - com todos os participantes se comunicando o mais diretamente possível (eliminando custos e riscos de transferência). O código de trabalho é rapidamente testável pelo cliente, eliminando os riscos de atraso de tempo. Todas as atividades acontecem em um redemoinho colaborativo, não em um fluxo descendente.

Para uma excelente visão geral do que as metodologias ágeis tentam fazer, eu recomendo o Agile Software Development: The Cooperative Game da Allistair Cockburn .


0

Sim, isso é mais ou menos correto. Muito foi escrito e discutido sobre como fazê-lo, mas um monte de pequenas cachoeiras é o ponto crucial.

A implementação específica de como usar um monte de pequenas cachoeiras não é trivial. Por exemplo, você não mudará de grandes projetos em alguns anos para vários pequenos. Ainda existe um grande projeto com um trabalho de 1 a 2 anos. Então, você precisa dividir o grande projeto em vários projetos pequenos. Isso pode parecer bastante óbvio, mas preenche páginas e páginas de livros.


0

Isso está correto ou existe mais do que isso

Ambos. Sim, é um resumo preciso do conceito, mas há muitos detalhes sendo resumidos. Quero dizer, praticamente todos os aspectos do planejamento mudam quando você planeja apenas a próxima semana, em vez do próximo ano.


0

Se você olhar para a estrutura estática (definição de processo) de um projeto ágil, ela se parece com muitas pequenas cascatas sim. Mas o objetivo de um projeto ágil é obter feedback mais rápido e melhor .

  • Você faz desenvolvimento orientado a testes para saber imediatamente se o seu software ainda funciona
  • Um cliente está no local e realiza testes de aceitação para saber quando você termina
  • Você tem retrospectivas para ajustar seu processo com base no que correu bem e no que não correu.

O manifesto ágil destaca algumas diferenças entre ágil e cascata (conforme percebido por quem assinou).


0

Realmente "ágil" geralmente significa cachoeiras de 1 a 2 dias, não semanas. Isso não significa que você não segue um plano geral e que os ciclos de lançamento reais são de um a dois dias. Mas você deve tentar ter um produto testado e funcional todos os dias e liberá-lo - em teoria - todos os dias.

O Scrum, por exemplo, usa sprints de 4 semanas, mas um sprint não é apenas uma cachoeira (pelo menos, não deveria ser). Você pode alterar as prioridades todos os dias sempre que perceber que algo não corre como planejado no início do sprint.

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.