|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[**Home**](home)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Escopo e Cronograma](escopo)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Processo](processo)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Design/Mockups](design_mockups)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Configuração](configuracao)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Arquitetura](arquitetura)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Código](codigo)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[BD](banco_dados)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Qualidade](qualidade)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Utilização](utilizacao)
|
|
|
|
</th>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
|
|
|
# Processo de Desenvolvimento
|
|
|
|
|
|
|
|
## Descrição
|
|
|
|
|
|
|
|
Esta seção é dedicada a apresentar o processo de desenvolvimento do time, junto dela serão apresentados documentos referentes a maneira que o time se organizou e trabalha.
|
|
|
|
|
|
|
|
## Sumário
|
|
|
|
|
|
|
|
- [Git Workflow](#git-workflow)
|
|
|
|
- [Matriz de Responsabilidade](#matriz-de-responsabilidade)
|
|
|
|
- [Plano de Comunicação](#plano-de-comunica%C3%A7%C3%A3o)
|
|
|
|
- [Plano de Riscos](#plano-de-riscos)
|
|
|
|
|
|
|
|
## Git Workflow
|
|
|
|
|
|
|
|
### Branches
|
|
|
|
|
|
|
|
#### Nomes
|
|
|
|
|
|
|
|
Como padrão para nomes de branches, foi decidido o seguinte:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
<numeroDaUS>/<nomeDoItem>-<detalheDoItem> (Caso seja uma User Story)
|
|
|
|
<tipoDeItem>-<nomeDoItem> (Caso seja um componente)
|
|
|
|
```
|
|
|
|
|
|
|
|
Exemplo de Componentes:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
US01/TelaDeLogin-esqueciMinhaSenha
|
|
|
|
component-navBar
|
|
|
|
component-slider
|
|
|
|
```
|
|
|
|
|
|
|
|
Exemplo de Páginas:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
page-recipes
|
|
|
|
page-creations
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Criação
|
|
|
|
|
|
|
|
Para garantir que o processo de desenvolvimento esteja sempre atualizado, lembre-se de executar o seguinte comando na branch dev antes de criar uma branch nova:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
git pull origin dev
|
|
|
|
```
|
|
|
|
|
|
|
|
Depois da execução desse comando é necessário oficialmente criar a Branch, para isso, execute o seguinte comando:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
git checkout -b <nomeDaBranch>
|
|
|
|
```
|
|
|
|
|
|
|
|
Assim que criar a branch, é necessário fazer um `push`para garantir que a mesma estará remota:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
git push --set-upstream origin <nomeDaBranch>
|
|
|
|
```
|
|
|
|
|
|
|
|
Pronto! Agora você já pode começar a programar na sua Branch.
|
|
|
|
|
|
|
|
### Commits
|
|
|
|
|
|
|
|
Para que o código desenvolvido seja salvo em sua branch de maneira remota, é necessário realizar os comandos de `commit` e `push`
|
|
|
|
|
|
|
|
#### Salvando Localmente
|
|
|
|
|
|
|
|
Para garantir que apenas o código necessário para funcionamento da tarefa lembre-se de realizar o comando `add` apenas nos arquivos **essenciais** para a tarefa:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
git add <nomeDoArquivo>
|
|
|
|
```
|
|
|
|
|
|
|
|
Depois de adicionar todos os arquivos que deseja salvar, execute o commando de commit com uma mensagem curta que represente o que foi trabalhado nesses arquivos adicionados:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
git commit -m 'descrição da tarefa em português'
|
|
|
|
```
|
|
|
|
|
|
|
|
Não hesite em realizar vários commits, assim podemos ter docuemntado e salvo vários estados do desenvolvimento
|
|
|
|
|
|
|
|
#### Salvando Remotamente
|
|
|
|
|
|
|
|
Depois de finalizar o desenvolvimento, envie todos os commits da sua máquina para o servidor remoto. Para isso depois de realizar as etapas de salvamento local, salve remotamente com o comando `push`:
|
|
|
|
|
|
|
|
```plaintext
|
|
|
|
git push
|
|
|
|
```
|
|
|
|
|
|
|
|
### Merge Requests
|
|
|
|
|
|
|
|
Depois de uma task ter sido desenvolvida e estiver pronta de acordo com os critérios de aceitação, é necessário que a mesma seja enviada para a branch de desenvolvimento. Para isso é necessário abrir um Merge Request pela platafora GitLab:
|
|
|
|
|
|
|
|
#### Criando o Merge Request
|
|
|
|
|
|
|
|
A criação pode ser realizada na seção Merge Requests do repositório em que a branch foi criada. Clicando no botão `New Merge Request` siga os seguintes passos:
|
|
|
|
|
|
|
|
1. Selecionar a branch de origem (sua branch de desenvolvimento);
|
|
|
|
2. Selecionar a branch de destino (branch dev);
|
|
|
|
3. Selecione `Compare branches and continue`
|
|
|
|
4. Em `Title`, escreva um título que descreva a funcionalidade adicionada ou bug corrigido;
|
|
|
|
5. Em `Description`, escreva uma descrição com uma breve justificativa nos arquivos que foram alterados;
|
|
|
|
6. Caso a tarefa seja visual (criação de componente/tela, correção de bug) adicione um gif exemplificando o uso (se considerar necessário);
|
|
|
|
7. Na seção `Assignee`, selecione `Assign to me` para que fique registrado quem foi o responsável pelo desenvolvimento daquela tarefa (a pessoa selecionada será chamada caso o revisor tenha dúvidas sobre a tarefa);
|
|
|
|
8. Em `Milestone` selecione a Sprint em que a tarefa foi realizada;
|
|
|
|
9. Em `Labels`selecione qual é o tipo de tarefa que foi realizada;
|
|
|
|
10. Por último, revise se os arquivos que estão sendo enviados estão corretos e clique em `Submit Merge Request`.
|
|
|
|
|
|
|
|
#### Revisando o Merge Request
|
|
|
|
|
|
|
|
A revisão de merge request pode ser realizada por qualquer desenvolvedor, mas é preciso da aprovação de pelo menos um AGES III ou AGES IV para que a mesma seja incorporada na dev.
|
|
|
|
|
|
|
|
Na hora de revisar o Merge Request, entre na branch em sua máquina e teste a funcionalidade/bug/componente/tela de acordo com os critérios de aceitação apresentados no [Airtable](https://airtable.com/tblV0c8w2YX9PZAAC/viw4mJkZmd28WlplE?blocks=hide).
|
|
|
|
|
|
|
|
Caso haja pendências, relacionadas a documentação do código, padronização ou arquivos enviados, não exite em realizar um novo commit na branch com as mudanças necessárias antes de realizar a integração.
|
|
|
|
|
|
|
|
## Matriz de Responsabilidade
|
|
|
|
|
|
|
|
Essa matriz foi desenvolvida para ajudar os membros do time a saberem seus papéis na dentro do processo de desenvolvimento.
|
|
|
|
| **Atividades** | **AGES I** | **AGES II** | **AGES III** | **AGES IV** |
|
|
|
|
|----------------|------------|-------------|--------------|-------------|
|
|
|
|
| Alimentar a wiki | R | R | R | R |
|
|
|
|
| Definir squads | I | I | I | R |
|
|
|
|
| Definir marcos da sprint | I | I | I | R |
|
|
|
|
| Quebra de tasks | I/A | I/A | I/A | R |
|
|
|
|
| Desenvolvimento | R | R | R | I |
|
|
|
|
| Code review | R | R | R | I |
|
|
|
|
| Executar testes funcionais | R | R | C | I |
|
|
|
|
| Deploy da aplicação | I | I | R | I |
|
|
|
|
|
|
|
|
- I: Deve ser informado
|
|
|
|
- C: Deve ser consultado
|
|
|
|
- R: Responsável
|
|
|
|
- A: Aprova
|
|
|
|
|
|
|
|
## Plano de Comunicação
|
|
|
|
| **Evento** | **Descrição** | **Responsável** | **Envolvidos** | **Frequência** | **Duração** |
|
|
|
|
|------------|---------------|-----------------|----------------|----------------|-------------|
|
|
|
|
| Daily | Momento onde cada membro atualiza o time sobre o que fez, desde a última Daily, e o que fará a seguir. | AGES IV | AGES I, II, III e IV | Segundas e Quartas às 17:30 | 15 minutos |
|
|
|
|
| Sprint Review | Apresentação das entregas realizadas e os possíveis débitos criados na Sprint. | AGES IV | AGES I, II, III, IV e Clientes | 1 vez no fim de cada Sprint | 30 minutos |
|
|
|
|
| Sprint Retrospective | Momento dedicado à definir o que está funcionando para trabalhar e identificar problemas e melhoras a serem feitas. | AGES IV | AGES I, II, III e IV | 1 vez no fim de cada Sprint | 1 hora |
|
|
|
|
| Sprint Planning | Reunião onde o time discute e define, a partir do Product Backlog e feedback atual do Cliente, o que será realizada na próxima Sprint. | AGES IV | AGES I, II, III e IV | 1 vez no começo de cada Sprint | 20 minutos |
|
|
|
|
| Tasks Breakdown | O time realiza a quebra das tarefas a serem realizadas na próxima Sprint. Para isso, o time se divide nos grupos de Frontend e Backend. | AGES III e IV | AGES I, II, III e IV | 1 vez no começo de cada Sprint | 45 minutos |
|
|
|
|
| Management Review | Encontro entre os AGES IV para revisão sobre como o projeto está progredindo e quais as próximas prioridades. | AGES IV | AGES IV | 1 vez por semana | Aproximadamente 30 minutos |
|
|
|
|
| Apresentação do Cliente e da Ideia | Encontro onde o Cliente apresenta o projeto para o time. | Cliente | AGES I, II, III, IV e Cliente | 1 vez no início do projeto | 1 hora e 30 minutos |
|
|
|
|
| Final Presentation | Apresentação final da AGES, na qual o time deve apresentar o projeto realizado para todos outros membros da AGES. | AGES IV | AGES I, II, III e IV | 1 vez no fim do projeto | 10 minutos |
|
|
|
|
| Pre-Sprint review Meeting | Comunicação para revisão da apresentação que será realizada ao Cliente na Sprint Review. | AGES IV | AGES I, II, III e IV | 1 vez a cada Sprint | 30 minutos |
|
|
|
|
| AGES Retrospective | Reunião com todos os alunos da AGES para que os organizadores da AGES recebam feedback e tenham melhor ciencia sobre o quão satisfeitos os alunos estão. | Staff da AGES | AGES I, II, III e IV | 2 vezes (05/05 e 28/06) | 1 hora e 30 minutos |
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## Plano de Riscos
|
|
|
|
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Risco**
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Probabilidade**
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Impacto**
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Severidade**
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Estratégia**
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Plano A**
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
|
|
|
|
**Plano B**
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Mudança no escopo</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>16</td>
|
|
|
|
<td>Mitigar</td>
|
|
|
|
<td>Definir o escopo no inicio do projeto com a aprovação do cliente. Utilizar o Backlog do projeto para caso falte tarefas em uma Sprint.</td>
|
|
|
|
<td>Deixar claro o plano de desenvolvimento da equipe para as 4 Sprints de desenvolvimento. Caso surjam novas alterações, coloca-las no Product Backlog do projeto.</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Entrega não realizada</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>5</td>
|
|
|
|
<td>20</td>
|
|
|
|
<td>Mitigar</td>
|
|
|
|
<td>Acompanhar o time durante o desenvolvimento nas Sprints, buscando encontrar possíveis problemas e/ou dificuldades para melhor auxiliar o time.</td>
|
|
|
|
<td>Alertar o stakeholder durante a apresentação os motivos que nos levaram a uma entrega incompleta. Apresentar os próximos passos do time para adaptar o débíto técnico na próxima Sprint</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Mudança na EAP do projeto</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>3</td>
|
|
|
|
<td>12</td>
|
|
|
|
<td>Mitigar</td>
|
|
|
|
<td>Apresentar para a equipe e os Stakeholders a EAP proposta para o projeto, com marcos e entregas que devem ser feitas em cada Sprint. Analisar na Retrospectiva os próximos passos para o projeto, e verificar a viabilidade com o time do que deverá ser feito para a próxima entrega.</td>
|
|
|
|
<td>Caso seja necessário realizar alguma alteração durante a Sprint de desenvolvimento, alertar os skateholders via canal de comunicação do Slack, explicando o motivo da necessidade.</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Conflito na execuçao de atividades por squads diferentes</td>
|
|
|
|
<td>5</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>20</td>
|
|
|
|
<td>Transferir</td>
|
|
|
|
<td>Divisão e delegação de tarefas de forma coletiva com todas as squads envolvidas no desenvolvimento. Além disso, manter dados de controle, status e responsáveis registrados e atualizados na ferramenta Trello</td>
|
|
|
|
<td>Verificar no momento da planning quais tasks podem ser conflitantes no desenvolvimento, e manter o cuidado na hora de realizar o merge para o projeto. O merge request deverá ser aprovado e nenhum conflito deve existir para ser aprovado.</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Comunicação interna nas Squads</td>
|
|
|
|
<td>5</td>
|
|
|
|
<td>5</td>
|
|
|
|
<td>25</td>
|
|
|
|
<td>Mitigar</td>
|
|
|
|
<td>Gestores (AGES IV) procurarem integrar outros colegas de squad afim de criar um clima de comprometimento e companherismo. Registro de impeditivos levantados em dailies. Deixar claro os marcos das sprints. Gestores fazerem one-to-one (informal) com integrantes das suas squads para coletar feedbacks.</td>
|
|
|
|
<td>Ter sempre presente um AGES 4 em cada squad para facilitar a comunicação do time como um todo, usando os AGES 4 como interface do grupo para a squad. Canais de comunicação devem sempre estar ativos.</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Divisão e distribuição de tarefas</td>
|
|
|
|
<td>5</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>20</td>
|
|
|
|
<td>Explorar</td>
|
|
|
|
<td>Divisão das tarefas feitas junto a squad responsável. Garantir que cada membro da squad tenha ao menos uma tarefa sob sua responsabilidade.</td>
|
|
|
|
<td>Incentivar o pair-programming de tarefas mais complexas dentro das squads, caso não tenham tarefas suficientes, a fim de encaixar todos membros para desenvolvimento</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Falta de conhecimento das tecnologias</td>
|
|
|
|
<td>4</td>
|
|
|
|
<td>3</td>
|
|
|
|
<td>12</td>
|
|
|
|
<td>Mitigar</td>
|
|
|
|
<td>Realização de workshop com colegas de squads para fazer boilerplates e o kickoff de desenvolvimento de cada sprint. Pair-programming para auxíliar no desenvolvimento e aprendizado. Registro de impeditivos nas reuniões de dailies.</td>
|
|
|
|
<td>Impulsionar trabalhos em grupo para o desenvolvimento das tarefas mais complexas, e aos poucos ir separando individualmente cada task entre os membros de cada squad.</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|