Aqui estou, no processo de definição de escopo e estimativa de um projeto de desenvolvimento de software relativamente pequeno. Passei pelas histórias de usuários sugeridas pelo cliente e coloquei tarefas em cada uma delas, com uma estimativa e algumas breves notas sobre como a tarefa será realizada. Existem critérios de aceitação. Tudo deve ser bom com o mundo.
Ao olhar para o trabalho que planejei, percebi que havia algo faltando. Haverá um esforço inicial na simples configuração de coisas nas quais podemos aparafusar a funcionalidade. Coisas que pertencem a todas as histórias de usuário, não uma história de usuário específica.
Por exemplo, parte desse aplicativo é um serviço que analisa XML. Do ponto de vista do usuário, existem histórias específicas em que coisas diferentes precisam ser feitas, dependendo do conteúdo do XML. Na verdade, escrever um analisador XML - os bits que procuram um arquivo, o leem e extraem os dados relevantes antes de decidir o que fazer com o conteúdo - faz parte de todas essas histórias. Como é envolvê-lo em um serviço do Windows com um instalador, etc. É uma tarefa centrada no desenvolvedor, sem relevância direta para o usuário.
Outro exemplo relevante desse aplicativo em particular é pegar e reescrever um bloco de código legado ruim que é útil para as funções desse aplicativo. Novamente, isso não tem resultados imediatos para o usuário, mas é um trabalho necessário. Onde o planejamento e a execução deste trabalho "vivem" em um plano de projeto focado em histórias de usuários?
Vi pessoas resolverem isso escrevendo histórias de usuários "Como desenvolvedor, eu quero ...", mas como já foi discutido em outro lugar, essa não é uma história de usuário . É um desenvolvedor.
Estou procurando uma resposta concreta para isso, para me ajudar (e a outros) a planejar projetos usando estritas estruturas de gerenciamento como o TFS online. Elas não costumam ter a função de criar "histórias de partes interessadas" ou outras meta-soluções vagas mencionadas nas respostas a Como uma equipe do Scrum explica as tarefas de infraestrutura na reunião de planejamento?
fonte
Respostas:
Gosto das outras respostas que dizem para colocar o máximo de código de "ferramentas" na Iteração 0. No entanto, às vezes, esses tipos de ferramentas surgem após o início do projeto. Talvez na Iteração 3 você perceba que precisa de um widget de analisador XML generalizado para ser usado em várias histórias daqui para frente.
Nesse caso, a primeira história do usuário que depende dessas peças arquitetônicas internas é a qual elas pertencem . Se você estiver prestes a trabalhar na História 345, e ela dependerá do seu analisador XML antes que possa ser contada como 'concluída', seu analisador reutilizável será anexado como trabalho para que a história seja concluída.
Minha equipe usou a abordagem acima e pareceu funcionar bem para nós.
fonte
Se a infraestrutura é tipicamente colocada na Iteração Zero. O que é a Iteração Zero? Normalmente, é o tempo entre o início e o planejamento antes do início das iterações reais.
Um exemplo, digamos que precisamos de um novo serviço da web. Portanto, preciso criar o projeto, configurar a integração contínua, configurar um repositório de controle de origem, configurar o script de compilação e implantação automatizada etc. Os usuários realmente não se importam com eles, mas precisamos deles independentemente.
Portanto, esse trabalho seria feito na iteração 0. Quando a iteração 1 começou, já havia um novo shell de projeto que seria compilado, teria um script de construção automatizado e seria implantado. Agora, nenhuma das funcionalidades do usuário estaria lá, mas está pronta para ser usada.
Eu ainda controlaria e planejaria esse trabalho como parte do trabalho da iteração 0.
A refatoração parece uma história técnica que pode ocorrer em qualquer iteração.
fonte
Depende da infraestrutura.
Se a infraestrutura for muito significativa ou precisar seguir regulamentos complicados de conformidade, você poderá ter uma equipe de infraestrutura separada, que poderá ter um cronograma próprio. Pode ser Ágil, pode ser cascata. Nesse caso, a construção da infraestrutura seria gerenciada no seu projeto como uma dependência externa .
Se a infraestrutura for gerenciada por sua equipe e configurada apenas uma vez, você poderá usar a técnica de iteração 0 descrita por Jon.
Se a configuração da infraestrutura precisar de várias iterações (por exemplo, talvez você configure seu servidor de compilação agora, mas os servidores de controle de qualidade e pré-produção serão construídos um pouco mais tarde), o buildout poderá ser gerenciado como PBIs não funcionais. Os PBIs funcionais podem ter certas dependências, que você pode codificar no TFS usando o link "predecessor".
E é claro que você pode misturar e combinar todas as opções acima. Por exemplo, você não pode fazer muito sem um servidor de construção contínuo; portanto, você pode colocá-lo na iteração 0. Enquanto isso, seus servidores de pré-produção podem ser definidos como tarefas para as iterações 2 e 3 e podem ter dependências externas na equipe do DBA ( quem não é ágil) que alocará suas instâncias de banco de dados no seu datacenter. Ou talvez você precise aguardar a emissão de certificados SSL para determinados recursos; eles podem ir na iteração 4 e quaisquer itens funcionais que dependem desses certificados devem ser vinculados a eles com um relacionamento predecessor / sucessor.
Em todos os casos, lembre-se:
fonte