Processo - Desenho2018-1/pan-pan GitHub Wiki
Histórico de edição
Autor | Data |
---|---|
Fabíola Fleury | 15/03 |
Fabíola Fleury | 19/03 |
Roger Lenke | 25/03 |
Roger Lenke | 27/03 |
Roger Lenke | 31/03 |
1. Introdução
Este documento tem como objetivo descrever o processo de planejamento e de desenvolvimento a ser utilizado na disciplina de Arquitetura e Desenho de Software, explicando suas atividades e artefatos.
2. Processo
2.1 Processo Geral
O processo geral foi baseado no guia para o planejamento ágil de Koppensteiner & Udo, 2009. Neste processo, um projeto ágil é dividido em duas atividades principais:
- Pré-Planejamento, onde são elicitados a visão do projeto, o roadmap, os requisitos e o custo do projeto.
- Planejamento, onde é definido o planejamento das releases e das iterações.
No projeto Pan Pan, esse processo base foi adaptado para incluir a fase de Desenvolvimento, onde desenvolvimento do projeto durante as iterações é detalhado. As fases anteriores também tiveram acrecidas atividades extras para melhor se adaptar às necessidades da equipe.
A imagem abaixo descreve o processo geral, mostrando os subprocessos que o compõem. É importante lembrar que essas fases são iterativas, e alterações nos artefatos produzidos pelas atividades podem ser feitas conforme o necessário.
Clique aqui para abrir uma versão ampliada do processo
2.2 Subprocesso Pré-Planejamento
A fase de pré planejamento é responsável por descrever qual é o objetivo de negócio do projeto, seu custo, e fazer um planejamento de suas atividades a longo prazo. Para o Pan-Pan, essa fase também descreve a forma como o planejamento da gerência do projeto será realizado, assim como quais serão os artefatos utilizados para este fim.
A imagem abaixo descreve qual será este processo. As atividades do mesmo serão descritas nos tópicos abaixo.
images/processo-pre-planejamento.png
Clique aqui para abrir uma versão ampliada do subprocesso
2.2.1 Subprocesso Planejar Gerenciamento
O subprocesso planejar gerenciamento, incluido na fase de Pré-Planejamento do processo geral, tem como objetivo definir quais serão os artefatos que guiarão o gerenciamento do projeto. Desta forma, as atividades deste projeto são destinadas à produção destes artefatos, sendo todas elas feitas em paralelo, para acelerar o andamento do projeto.
A escolha destes artefatos em específico se deu de maneira arbitrária, de acordo com a experiência que a equipe teve em outros projetos.
images/subprocesso-planejar-gerenciamento.png
A seguir segue a descrição de cada atividade.
Atividade | Entrada | Saída | Descrição |
---|---|---|---|
Definir Plano de Qualidade | -- | Plano de Qualidade | Esta atividade tem como objetivo conduzir à produção do Plano de Qualidade. O plano de qualidade define qual será a metodologia usada para gerenciar a qualidade do projeto, descrevendo conceitos como qual será o foco de qualidade e os objetivos de medição. |
Definir Gerenciamento do Tempo | -- | Plano de Gerenciamento do Tempo | Esta atividade conduz à produção do Plano do Gerenciamento do tempo, que indica qual será o método utilizado pela equipe para estimar a produção do projeto a longo prazo, bem como suas políticas de controle. |
Definir Políticas do Repositório | -- | Políticas do Repositório | Esta atividade conduz à produção do documento de Políticas do Repositório, que descreve quais serão as políticas de branches, nomeclatura e contribuição para se desenvolver funcionalidades do projeto. |
2.2.2 Requisitos
Paralelamente ao subprocesso de planejamento, serão feitas as atividades de elicitação de requisitos. Estas atividades tem como objetivo definir qual será o processo e as técnicas utilizadas para que o contexto do projeto seja compreendido e para que os requisitos sejam elicitados.
images/subprocesso-requisitos.png
Clique aqui para visualizar o processo em uma imagem ampliada
Abaixo segue a descrição de cada atividade.
Atividade | Entrada | Saída | Descrição |
---|---|---|---|
Compreender contexto do problema | Brainstorm, | Diagrama de Causa e Efeito, 5W1H, Protótipo de Alta Fidelidade | A atividade de compreender o contexto do problema descreve a fase inicial de requisitos. Nesta fase, o objetivo é compreender qual o problema do cliente e quais são suas necessidades. Essa compreensão se dá com o brainstorm, que fornece insumos para a geração de artefatos que descrevem o problema e ideias iniciais de solução, como o Rich Picture. Além disto, o 5W1H fornece outra forma de representar a ideia inicial de solução para o problema. |
Identificar Fluxo de Valor | Diagrama de Causa e Efeito, 5W1H | Épicos, NFR, Épicos Habilitadores, Documento de Requisitos do Projeto | A atividade de identificar o fluxo de valor tem como objetivo identificar, no contexto do problema, qual é sua causa raiz e qual será o produto desenvolvido para resolver esta causa raiz. Esta solução escolhida é o Épico, que será integrado ao Documento de Requisitos do Projeto como a elicitação de um requisito em seu nível mais alto. |
Integrar épicos no documento de requisitos | Épico | Documento de Requisitos do Projeto | Esta atividade tem como objetivo garantir que os requisitos no nível de abstração de épicos estarão integrados no [Documento de Requisitos do Projeto][requisitos]. Este documento é o artefato principal que agrega os requisitos do projeto. |
Priorizar Épicos | Épico | Épico Priorizado | Esta atividade tem como objetivo realizar a priorização dos épicos, de maneira a fazer o requisito de maior valor para o projeto. |
Identificar Features | Épicos Priorizados, Épicos habilitadores | Features | A atividade de identificar features tem como objetivo descrever a solução identificada por meio dos épicos em Features. Uma feature é uma funcionalidade que será passível de execução pelo usuário/usuários do sistema a ser desenvolvido, sendo ela testável e passível de medição. As features identificadas serão integradas ao Documento de Requisitos do Projeto, como requisitos no nível de solução. |
Integrar features no documento de requisitos | Feature, Feature Habilitadora | Documento de Requisitos do Projeto | Esta atividade tem como objetivo garantir que os requisitos no nível de abstração de feature estarão integrados no [Documento de Requisitos do Projeto][requisitos]. Este documento é o artefato principal que agrega os requisitos do projeto. |
Priorizar Feature | Feature | Feature Priorizada | Esta atividade tem como objetivo realizar a priorização das features, de maneira a fazer o requisito de maior valor para o projeto. |
2.3 Planejamento
O processo de Planejamento, incluido no processo geral, tem como objetivo descrever as atividades que serão realizadas para a produção das Features da solução proposta. Esse processo também contempla as atividades de arquitetura da solução.
images/subprocesso-planejamento.png
Abaixo segue a descrição de cada atividade.
Atividade | Entrada | Saída | Descrição |
---|---|---|---|
Planejar Roadmap do Projeto | Features, Features Habilitadoras | Roadmap | A atividade de planejar o roadmap do projeto tem como objetivo permitir a equipe que realize um planejamento de quando as features do projeto serão executadas e de qual será a duração do projeto. Esta atividade recebe as features como entradas para produzir o Roadmap. O Roadmap é um artefato do SAFe que representa um planejamento do projeto ao longo prazo. No Pan-pan, o Roadmap pode ser encontrado na página de milestones do projeto. |
Desenvolver Arquitetura do Projeto | -- | Documento de Arquitetura | Esta atividade tem como objetivo permitir com que a equipe faça um estudo e planeje, em alto nível, qual será a arquitetura do projeto. Esta decisão inclui definir a linguagem de programaçãoa ser utilizada e sua versão, as restrições e limitações de desenvolvimento, e o nível mais alto de arquitetura. Todas estas decisões devem estar presentes no Documento de Arquitetura |
Planejar Release | Features Priorizadas, Features Habilitadoras | Product Backlog, Diagrama de Classes, Diagrama de Caso de Uso, Diagrama de Sequência | A atividade de Planejar release tem como objetivo tornar específicos quais serão os passos necessários para a implementação de uma feature priorizada, descrevendo-as por meio de Histórias de Usuário. Uma história de usuário é um pequeno pedaço de uma funcionalidade do usuário descrita utilizando a voz do usuário. O conjunto de histórias de usuário que descrevem uma feature formam o artefato conhecido como Product Backlog. Além deste artefato, essa atividade também tem como objetivo realizar o planejamento arquitetural da funcionalidade, utiliando o Diagrama de Classes e o Diagrama de Caso de Uso. É importante ressaltar que não serão feitos artefatos diferentes para cada Feature. Ao invés disso, a cada release, uma feature será planejada arquiteturalmente e esse planejamento será integrado aos artefatos já existentes. |
Integrar Feature nos artefatos de arquitetura existentes | Diagrama de Classes, Diagrama de Sequência, Diagrama de Pacotes, Diagrama de Casos de Uso | Documento de Arquitetura | Esta atividade tem como objetivo integrar os artefatos arquiteturais das features da release ao [documento de arquitetura][arq], que é o principal artefato arquitetural do projeto |
Planejar Iteração | Product Backlog | Sprint Backlog | A atividade de Planejar Iteração descreve o planejamento das iterações a serem realizadas para o desenvolvimento de uma história de usuário, as Sprints. Uma sprint é um período de uma semana na qual os desenvolvedores realizam a codificação necessária para finalizar uma história de usuário. O planejamento desta sprint escolhe quais serão as histórias a serem desenvolvidas neste período de uma semana, assim como a especificação de cada uma das histórias em Tasks e Critérios de Aceitação, que ajudam os desenvolvedores a saberem qual serão os passos necessários para a finalização de uma história e o que é necessário para que ela seja aceita. |
Repriorizar Product Backlog | Product Backlog | -- | Esta atividade tem como objetivo indicar a repriorização do Product Backlog, caso a equipe não tenha sido capaz de finalizar todas as histórias de usuário do sprint backlog na sprint que foi finalizada. Essa repriorização é necessária para que a equipe consiga replanejar as suas releases. |
2.4 Subprocesso Desenvolvimento
O subprocesso Desenvolvimento, incluido no processo geral, tem como objetivo descrever as atividades e artefatos que serão realizadas para que o Sprint Backlog seja finalizado. Esse subprocesso também informa como serão gerenciados os artefatos de arquitetura durante o desenvolvimento do projeto.
images/subprocesso-desenvolvimento.png
Abaixo segue a descrição de cada atividade.
Atividade | Entrada | Saída | Descrição |
---|---|---|---|
Desenvolver e testar história de usuário | Sprint Backlog | -- | A atividade de desenvolver e testar a história de usuário é a atividade que explicita o desenvolvimento de uma história de usuário em código. O ato de testar essa funcionalidade se refere ao teste unitário, que é parte integral do desenvolvimento no projeto Pan-Pan. |
Atualizar Artefatos de arquitetura | Diagrama de Caso de Uso, Diagrama de Classes | -- | Esta atividade tem como objetivo indicar em que parte do processo os documentos de arquitetura (Diagrama de Caso de Uso e Diagrama de Classes) serão atualizados. Neste ponto, as histórias desenvolvidas e testadas terão criado modificações nas classes do projeto e, possívelmente, novos fluxos na feature, e é responsabilidade do desenvolvedor que fez as histórias criar uma nova versão dos artefatos de acordo com estas modificações. |
Retrospectiva da Sprint | -- | -- | A retrospectiva da sprint é um ritual do Scrum que permite com que a equipe reflita sobre quais foram os pontos fortes e quais foram os pontos fracos da sprint que passou. Esse ritual é útil porque permite com que a equipe busque sempre melhorar a cada iteração. |
Revisão da Sprint | -- | -- | A revisão da sprint é um ritual do Scrum que visa expor todas as funcionalidades e histórias de usuário que foram desenvolvidas naquela iteração, para todos os membros da equipe. |
2.5 Gestão de Mudanças
O processo de gestão de mudanças tem como objetivo controlar quais são as ações a serem tomadas caso seja encontrado um novo requisito ou demanda no projeto. A maior parte das atividades deste processo tem como objetivo o retorno a um dos processos superiores.
Abaixo segue a descrição de cada atividade.
Atividade | Entrada | Saída | Descrição |
---|---|---|---|
Identificar necessidade de mudança | :--: | Novo Requisito | Esta atividade tem como objetivo aguardar por as necessidades de mudança que surgem no projeto. |
Verificar Nível de Mudança | Novo Requisito | Requisito no nível adequado | Essa atividade tem como objetivo identificar qual o nível do novo requisito, caso ele possa ser encaixado num épico existente, uma nova história para implementar uma feature, etc. |
Verificar Valor da Mudança | Requisito no nível adequado | :--: | Esta atividade tem como objetivo verificar se o requisito identificado e nivelado é realmente relevante para o valor do projeto. |
Verificar viabilidade de mudança | Plano de Ensino da Disciplina | Esta atividade tem como objetivo verificar se a mudança é de fato viável para o projeto. As restrições a serem consideradas incluem apenas as datas e o cronograma da [Disciplina de Arquitetura e Desenho de Software][plano-ensino], já que não há custo para o projeto em questão. |