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:

  1. Pré-Planejamento, onde são elicitados a visão do projeto, o roadmap, os requisitos e o custo do projeto.
  2. 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.

images/processo-pan-pan-6.png

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.

images/subprocess-mudanca.png

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.