domingo, 20 de novembro de 2016

Postagem Final

A Sprint final


Começamos a corrida final  numa reunião de planejamento dia 20/10. Nessa reunião, seguimos o
mesmo formato de todas, com o planning poker e levantamento de tarefas. A corrida final teve a duração de quatro semanas, com fim em  17/11, devido aos eventos peculiares desse semestre. Essa extensão da corrida, tornou ainda mais importante as reuniões diárias de acompanhamento, além do fato de que está a última corrida e deveríamos ter mais empenho e correr menos riscos de falhas de comunicação como ocorreu em momentos passados.

Como mencionado na última postagem, ela teve como foco a integração entre o back e o front end da aplicação. As tarefas no GitLab foram transferidas da última corrida para a corrida final, apenas com a observação de que deveria ser feito a integração de tal funcionalidade, não seu desenvolvimento em si pois este já estava concluído. Também nessa sprint, resolvemos cuidar um pouco mais da questão da qualidade, com a inspeção de código, planejamento e execução de um roteiro de testes, e o desenvolvimento, ainda que bem simples, de um script de teste automático. Vale lembrar que desde o início adotamos uma política de testes simples em cada tarefa, onde após concluída, a tarefa era testada por outro membro da equipe, a fim de avaliar se estava correta e obedecendo os requisitos do dono o produto. Abaixo, estão detalhados cada um desses tópicos:

  • A inspeção foi realizada ao decorrer da corrida, avaliando características do código que seriam interessantes de se modificar para evitar problemas e facilitar a legibilidade. O relatório de inspeção, gerado no fim da sprint, se encontra na pasta "Qualidade", na raiz do repositório do projeto no GitLab. 
  • O roteiro de testes foi planejado durante a corrida e executado quando o desenvolvimento do produto estava concluído, mas ainda restava tempo na sprint, já que adotamos a política de que se fosse detectada alguma falha que impedisse um fluxo, essa iria ser corrigida imediatamente. O roteiro está explicitado em uma planilha que também se encontra na pasta "Qualidade" na raiz do repositório, mas que também está na figura abaixo:
  • O script de teste automático foi desenvolvido com intuito de demonstrar como seria um teste desse tipo para os membros do grupo que não conheciam já que o foco do trabalho deve estar sempre no conhecimento e aprendizado de novas técnicas e processos. O código fonte está na mesma pasta "Qualidade". O teste foi desenvolvido em Java, utilizando a ferramenta Selenium, para executar, a máquina deve possuir alguns arquivos instalados, um link pra um tutorial de como executar está disponível no arquivo README na pasta "Qualidade".
No dia 17/11, finalizamos oficialmente a última corrida, com a reunião de revisão e validação do dono do projeto. O produto que desenvolvemos ao final de todo o processo está, segundo o PO, adequado e suficiente com o previsto e especificado nos requisitos. Obviamente, alguns detalhes poderiam ter sido melhor executados e seriam bem-vindos se fossem desenvolvidos, como efeitos sonos, nomes mais interessantes para os projetos, tutoriais, mas nada que impeça os fluxos básicos de negócio. 

CMMI


Como era imprescindível que o processo adotado durante o desenvolvimento do trabalho, atendesse o nível 2 do CMMI, esta seção é relevante para detalhar cada uma das áreas e argumentar de que forma nós respeitamos cada uma delas.

  • Gerenciamento de Requisitos - Os requisitos do projeto foram especificados e documentados no início do projeto pelo Product Owner juntamente com o restante da equipe. Eles ficaram registrados em um documento disponível a todos do projeto e que se encontra aqui.
  • Planejamento de Projeto - O planejamento ocorreu no início de cada corrida, na reunião de planejamento. Fizemos um post no blog para cada reunião de planejamento e evidências das tais podem também ser encontradas no GitLab do projeto, já que nas chamadas "Milestones" se encontram a criação de cada uma das Sprints junto com as tarefas associadas.
  • Acompanhamento e Controle de Projeto - O acompanhamento e controle foi realizado na ferramenta GitLab, onde é possível acompanhar o andamento de cada tarefa bem como o desenvolvimento de cada branch do código fonte e outros arquivos. Além disso, as reuniões diárias foram essenciais para um melhor acompanhamento do projeto.
  • Gerenciamento de Acordo com Fornecedor - Não se aplica
  • Medição e Análise - A ferramenta GitLab também nos ajudou nesse quesito já que ao final de cada Sprint realizamos a reunião de revisão, onde conseguimos analisar o desempenho baseado nas tarefas concluídas ou não.
  • Garantia da Qualidade de Processo e Produto - Nessa quesito destacamos as nossas fases de teste de cada uma das tarefas, realizado por um membro diferente do desenvolvedor, a inspeção do código feita na última corrida e a criação e execução do roteiro de testes. Evidências dessas práticas estão junto ao fonte do projeto, como foi explicado anteriormente.
  • Gerência de Configuração - Esse quesito foi atendido pelo uso do GitLab, gerenciado pelo mestre do Scrum, onde continha todas as informações do código fonte e tarefas. 


O produto


O nosso jogo simula uma empresa de desenvolvimento de software. A tela principal exibe os projetos disponíveis para o jogador e os personagens para compra. Para comprar um personagem, é necessário dar um duplo clique no ícone do personagem. Cada um dos personagens possui um preço específicos e são eles que vão trabalhar em cada um dos projetos do jogador. Para associar um personagem a um projeto, deve-se arrastar o ícone do personagem ao do projeto. Abaixo está tela de projetos:



Quando um projeto possui personagens associados a ele, é possível clicar no projeto e dar início a ele, clicando no botão iniciar, como na figura abaixo:


Quando um projeto está iniciado, é possível associar um personagem a uma tarefa, arrastando o ícone do personagem a uma tarefa. A princípio é possível apenas desenvolver as tarefas, quando uma tarefa é completada, o jogo é pausado automaticamente e a tarefa fica disponível para testes (Pressione 'ENTER' para 'despausar'). Ao completar todas as tarefas o projeto pode ser entregue porém, se as tarefas não forem testadas e/ou inspecionadas, o projeto será entregue com bugs e a recompensa pelo projeto será menor.


Cada personagem possui sua barra de energia e habilidade. A barra de energia reduz a medida em que o personagem trabalha e é reduzida quando ele é movido para a sala de reunião. A barra de habilidade diz o quanto o personagem é produtivo e pode ser aumentada se ele for movido para a área de treinamento.


A medida que o jogador entrega projetos e acumula reputação, novos vão sendo liberados, é possível visualizar os projetos bloqueado a partir da tela inicial clicando no ícone do cadeado.

Os botões “+” e “-” do teclado aceleram e desaceleram a velocidade do jogo, e ao pressionar “CTRL-S” o jogo é salvo e “CTRL-L” o último jogo salvo é carregado.

terça-feira, 15 de novembro de 2016

IMPORTANTE: Datas Finais

Alguns prazos finais, lembrando que atrasos em qualquer entrega serão penalizados!
  • Data-limite para entrega dos formulários da avaliação final: 18/11 às 23:55
  • Data-limite para postagem dos vídeos: 20/11 às 23:55.  
  • Data-limite para envio do link do jogo: 20/11 às 23:55. Um link para a versão completa do jogo deve ser enviado por email para a monitora. 
  • Data-limite para postagens: 20/11 às 23:55: postagens após essa data serão desconsideradas para a avaliação final do grupo. As postagens podem seguir o mesmo modelo da última apresentação, incluindo uma discussão reflexiva sobre o processo adotado.

IMPORTANTE: Substituição da Apresentação Final

Como já informado pelo professor Rodolfo, a apresentação final será substituída por um ou mais vídeos. O objetivo do(s) vídeo(s) é que os grupos evidenciem como o processo de desenvolvimento foi estabelecido e como esse processo conduziu o desenvolvimento do "jogo para conceitos de Engenharia de Software".

Vocês têm liberdade para montar o vídeo da forma como desejarem, desde que o objetivo mencionado acima seja alcançado. Uma sugestão seria dividir o vídeo em duas partes, uma explicitando o processo e em seguida uma apresentação do produto final. Porém, essa é apenas uma sugestão, logo os grupos podem optar por não seguir esse formato.

Algumas regras devem ser seguidas:

1) O(s) vídeo(s) devem ser postados como vídeos públicos na conta da turma no YouTube até domingo, dia 20/11. Informações sobre a conta da turma foram enviadas por email. Para receber novamente é só enviar um email para a monitora.

2) O grupo pode realizar:
- um único vídeo de 5 a 10 minutos OU
- vários vídeos com duração total máxima de 15 minutos

quarta-feira, 9 de novembro de 2016

Iteração 3 - Reunião Diária das Iterações

Crud para Sempre
Iteração 3 -  Reunião Diária da Iteração

Requisitos Funcionais


Número
Descrição
Pontos
Situação
#193
Tela de Desenvolvimento - Criar Cartas de Ação
8
Pendente
#194
Tela de Desenvolvimento - Funcionamento das Cartas de Ação
13
Pendente
#195
Tela de Desenvolvimento - Botão Pronto
8
Pendente
#196
Tela de Desenvolvimento - Funcionamento do Canvas
5
Pendente
#174
Tela Inicial - Procurar por falhas na tela inicial
5
Pendente
#175
Tela de Personagem - Procurar por falhas na tela de criação do personagem
5
Pendente
#176
Tela Empresa - Procurar por falhas na tela de criação da empresa
5
Pendente
#177
Tela de Jogo - Procurar por falhas na tela de jogo
5
Pendente
#164
Tela de Jogo - Criar Funcionários
5
Pendente
#173
Tela de Jogo - Projetar as Habilidades do Jogador
8
Pendente
#165
Tela de Jogo - Implementar Habilidades do Jogador
13
Pendente
#161
Tela de Jogo - Funcionamento da Loja
13
Pendente
#166
Tela de Jogo - Funcionamento das Caixas de Diálogo (Projeto)
20
Pendente
#157
Tela de Jogo - Status do Jogador
8
Pendente
#159
Tela de Jogo - Botão “Porta”
5
Pendente
#62
Tela de Jogo - Efeitos sonoros
0
Pendente
#158
Tela de Jogo - Animações da tela
0
Pendente
#192
Tela de Desenvolvimento - Criar sprites
8
Em andamento
#190
Tela de Jogo - Criar um Banco de Perguntas
13
Em andamento
#160
Tela de Jogo - Criação de Projetos
5
Em andamento
#162
Tela de Jogo - Sprites de Novos Objetos
5
Em andamento
#163
Tela de Jogo - Sprites de Novos Cenários
5
Em andamento
#94
Criar tela de créditos
2
Em andamento
#172
Tela de Jogo - Funcionamento das Caixas de Diálogo (Tutorial)
8
Aguardando Revisão
#23
Tela de Jogo - Sprite
8
Concluída
#171
Tela de Jogo - Funcionamento das Caixas de Diálogo (Warning)
5
Concluída
#182
Tela de Jogo - Implementar o Tempo do Jogo
8
Concluída
#24
Tela de Jogo - Menu
8
Concluída
#25
Tela de Jogo - Fundo
5
Concluída
#169
Tela de Jogo - Atualizar sprite Personagem
8
Concluída
#63
Tela de Jogo - Música de fundo
0
Concluída

Requisitos Não Funcionais

Especificamos os seguintes requisitos não funcionais:

  • Facilidade de uso
  • Ser lúdico e informativo
  • Tela de tutorial
  • Interface gráfica

Decisões da Iteração

  • Resolvemos alterar a coluna de “Em teste” para a coluna de “Aguardando Revisão”. As tarefas que estiverem nesse estágio serão inspecionadas por um integrante do time de desenvolvimento (que não seja o que tiver implementado a tarefa)
  • Decidimos adicionar inspeções de código nesta corrida
  • Também terminamos de definir toda a estrutura e lógica do jogo
  • Um quiz com perguntas de verdadeiro e falso será implantado no jogo

Desafios Encontrados

Os principais desafios encontrados nessa iteração continuam sendo relacionados aos conflitos gerados pela integração do GitHub e a Unity.



quinta-feira, 3 de novembro de 2016

Terceira apresentação



No dia 01/11 houve nossa terceira apresentação do projeto em sala de aula. Nela discutimos o avanço da segunda Sprint, que já foi relatada anteriormente (Link da postagem) juntamente com algum avanço referente à terceira print que está em curso.

Novos avanços


Na data da apresentação tínhamos o front-end do produto parcialmente implementado e o back-end quase que completo porém, com os dois funcionando de modo disjunto, como pode ser visto nas figuras abaixo:

Tela inicial (estática) 




Tela para visualização do back-end




Resumindo, a etapa final do produto (Sprint 3) será realizar a integração entre front e back-end. Abaixo, está a imagem do repositório onde se encontra o projeto com as tarefas restantes. Todas as issues estão em desenvolvimento pois estamos com a última corrida em curso e priorizadas (ícone da balança)


Tarefas restantes


A sprint 3 também será focada em alguns testes como teste de aceitação, feito pelo P.O. e possivelmente alguns testes automatizados.

Desafios encontrados


Além dos já mencionados (Link da postagem) desafios da segunda sprint, houve um problema que gerou um pequeno atraso os avanços demonstrados na terceira apresentação.

O problema ocorreu pois houve uma falha de comunicação, que provocou um mal entendimento da tarefa de implementação das telas. Um desenvolvedor desenvolveu as telas com uma tecnologia que dificultaria a integração posterior, o que gerou um retrabalho para reconstruir as telas e elas não ficaram prontas em tempo hábil.

O problema foi apontado na fase de inspeção de código, o que nos permitiu observar na prática a vantagem em se utilizar tal processo, além de se adequar ao nível 2 do CMMI na questão da garantia da qualidade de processo e produto.