Conceito: Evoluir para continuamente obter feedback e promover melhorias |  |
Promover práticas que permitam à equipe obter feedback dos Stakeholders, o mais cedo possível e de forma contínua, e demonstrar valor incremental para eles.
Relacionamentos
Elementos Relacionados | A Família OpenUP Fase de Construção Gerenciando Riscos
Descrição Principal
# Introdução Em geral não é possível conhecer todas as necessidades dos Stakeholders, esteja atento a todos os riscos do projeto, compreenda todas as tecnologias envolvidas no projeto ou saiba como trabalhar com seus colegas. Mesmo sendo possível conhecer todas essas coisas elas estão suscetíveis a mudanças durante o ciclo de vida do projeto. Promover práticas que permitam à equipe demonstrar valor incremental e conseguir feedback rápido e contínuo dos Stakeholders. A intenção por trás deste princípio é obter feedback contínuo e melhorar o produto e o processo da equipe de projeto. Quando você fornece uma estrutura e cria uma mentalidade para melhoria e feedback contínuos, as mudanças são acomodadas mais facilmente. Adicionalmente, o feedback é captado antecipadamente e constantemente e os riscos de alta prioridade são confrontados mais cedo no projeto. Ao identificar e atacar constantemente os riscos passará a existir mais confiança no progresso e na qualidade do projeto. Não somente o produto evolui, mas a equipe também encontra melhores formas de trabalhar em conjunto e se envolver com os Stakeholders. O processo seguido pela equipe pode ser ajustado apropriadamente para alavancar as lições aprendidas e ajustar o andamento e as necessidades do projeto. # Práticas ## Desenvolva seu projeto em iterações Desenvolver um sistema com um único passo linear é difícil porque isto torna muito custosa a incorporação de mudanças e novos conhecimentos. Pior, isto pode atrasar a descoberta e a atenuação de riscos por que os esforços de desenvolvimento são agendados tardiamente no ciclo de vida do sistema. Divida o projeto em séries de iterações e planeje seu projeto iterativamente. Esta estratégia de iteratividade permite entregar capacidades incrementalmente (tal como um executável ou um conjunto usável de requisitos implementados e testados) que podem ser avaliadas pelos Stakeholders ao final de cada iteração. Isto provê ciclos de feedback rápidos e temporizados de forma que os problemas possam ser tratados e as melhorias serem feitas a um custo mais baixo. Isto também é realizado enquanto você ainda tem recurso e tempo disponíveis e você não tenha ido tão longe de forma que um re-trabalho maior seja necessário. O desenvolvimento iterativo habilita a equipe a melhorar o software constantemente durante seu ciclo de vida de desenvolvimento. ## Focalize as iterações no atendimento do próximo marco de gerenciamento Um projeto pode parecer que está progredindo enquanto os riscos e os problemas não resolvidos estão crescendo. Acompanhe de perto os problemas importantes do projeto (tais como a concorrência entre Stakeholders, escopo e o fornecimento da arquitetura proposta). Divida o projeto em fases (tais como Concepção, Elaboração, Construção e Transição), com cada fase tendo um marco de gerenciamento claramente visível. O foco de cada iteração em uma fase é alcançar o marco. ## Gerenciar Riscos Protelar as questões sobre dificuldades e riscos para o final do projeto, aumenta o risco de cancelamento do projeto. Esta procrastinação pode direcionar o investimento em tecnologias erradas, em um design ruim ou em um conjunto de requisitos que não atendem as necessidades dos Stakeholders. Ataque os riscos cedo, ou eles lhe atacarão. Identifique e priorize continuamente os riscos, e elabore estratégias para atenuá-los. Determine o foco das iterações baseado nos riscos. Por exemplo, os riscos arquiteturalmente significantes devem ser tratados cedo no projeto, no máximo até o final da fase de Elaboração, quando a arquitetura estiver aprovada e com linha de base. Para mais informações, veja Guideline: Gerenciando Riscos. ## Aceite e gerencie as mudanças As mudanças são inevitáveis, e embora as mudanças apresentem oportunidades para elevar o valor para o stakeholder, mudanças irrestritas resultarão num sistema inchado, deficiente e que não atende às necessidades do Stakeholder. Além disso, quão mais tarde uma mudança for feita no ciclo de desenvolvimento, mais custosa ela será. Aceite e gerencie as mudanças Aceitar as mudanças lhe ajuda a construir um sistema que atende as necessidades dos Stakeholders, e gerenciar as mudanças lhe permite reduzir o custo e melhorar a previsibilidade destas mudanças. Mudanças que são executadas cedo no projeto podem normalmente ser feitas com custo limitado. À medida que o projeto progride, as mudanças podem se tornar altamente custosas. Para satisfazer as necessidades dos clientes, você normalmente precisa fazer mudanças no projeto, porém o cliente deve ser avisado do impacto que estas mudanças causam no custo e no cronograma do projeto. Entenda o impacto de uma mudança na fase corrente, e isole os membros da equipe das mudanças repentinas durante a iteração corrente. As solicitações de mudança são revistas e priorizadas durante a iteração corrente, mas não são ativadas até serem atribuídas a uma iteração futura. Se for necessário, documente as mudanças. Para projetos informais, uma conversa com os Stakeholders pode ser o suficiente. ## Meça o progresso objetivamente Se você não sabe objetivamente como o projeto está progredindo, você realmente não sabe se ele está caminhando para o sucesso ou fracasso. A incerteza e a mudança tornam o progresso de um projeto de software difícil de ser medido objetivamente, e as pessoas são levadas a fazer avaliações objetivas com informações subjetivas. Tenha uma imagem clara do status do projeto medindo o progresso objetivamente. A melhor medida de progresso é a entrega de software funcional, que é algo que você faz tendo uma abordagem evolucionária. Você pode também definir um conjunto de métricas objetivas a coletar durante uma iteração (por exemplo, requisitos que foram implementados e validados, quantidade de defeitos relatados comparada com a quantidade corrigida) e revise-os como parte da avaliação da iteração. ## Reavalie continuamente o que você faz. Faça perguntas e verifique as suposições sobre o projeto, frequentemente. Encontre-se com a equipe regularmente para acompanhar o status do projeto e identificar os riscos e questões. Isto pode ser feito diariamente quando a equipe se reúne para compartilhar o status das responsabilidades individuais e identificar e tratar os problemas. Ao final das iterações, avalie o status do que foi feito e busque por áreas de melhoria que podem ser tratadas na próxima iteração. Faça uma revisão retrospectiva ao final do projeto e capture as lições aprendidas para executar projetos futuros de forma mais eficiente. Se nós sempre desafiarmos o que nos fazemos e procurarmos formas inovadoras para desenvolver software, nos melhoraremos nossa forma de trabalho. Isto direciona para melhores resultados no projeto.
Este programa e o material que o acompanha são disponibilizados sob a Eclipse Public License v1.0 que acompanha esta distribuição. Direitos Autorais do OpenUP.