gpoesia / cmmi-game Goto Github PK
View Code? Open in Web Editor NEWJogo para o ensino do modelo CMMI, desenvolvido por alunos da UFMG para a disciplina de Engenharia de Software.
Jogo para o ensino do modelo CMMI, desenvolvido por alunos da UFMG para a disciplina de Engenharia de Software.
Integrar os mini-games do nível 3 em um único nível.
Fazer seus mini-games serem dependentes.
Definir as características do nível 1.
O nível 1 representa o caos na empresa, antes de se decidir utilizar o CMMI.
Esta tarefa está alocada para @pratlucas e @althoff.
A tela conterá uma descrição do primeiro mini-game relacionado ao nível 4. Do email de discussão:
"O primeiro mini-game trata da meta "Establish Performance Baselines and Models", e é jogado na visão do próprio CEO da empresa. Nesse mini-game, o CEO vai ter que definir algumas métricas de qualidade dos projetos que, na história, vão ser estabelecidas como metas para os projetos. Pensei em ele definir:
Essa definição seria por meio de sliders (http://www.tophatstuff.co.uk/uploaded/20100220201958_hag_sliders.png). O objetivo do jogador seria definir valores que sejam coerentes entre si no menor número de tentativas. O jogador deve colocar os valores que quiser nas barrinhas e clicar em um botão para "Experimentar em um projeto", que faria com que, na história, um projeto na organização fosse conduzido com os valores informados como metas. O resultado do projeto seria então informado por meio de uma mensagem, e o jogador poderia ou passar de nível (se o projeto teve sucesso) ou rever as métricas (se o projeto falhou). Motivos de falhas, que vão ser as mensagens, vão ser do tipo:
E outras neste estilo. A pontuação do jogador seria inversamente proporcional ao número de tentativas que ele usou antes de conseguir um projeto de sucesso."
Ele triga alguma ação que faz com que uma excessão seja gerada
Baseado nos requisitos apresentados em #10 e em uma coleção de "módulos", que representam recursos técnicos disponíveis para a implementação (Banco de Dados, acesso remoto, etc), o jogador deverá selecionar quais recursos irão cumprir quais requisitos.
Esses recursos são da forma de caixas (com imagens nas últimas iterações do projeto) e, possivelmente, com facilidades do tipo drag 'n' drop.
O personagem responsável por essa tarefa, mais uma vez, irá depender de definições da história do jogo em si, mas a princípio teriamos um ou mais "Software Designers", de ofício ou apenas exercendo o papel, como atores da tarefa de encontrar a solução técnica para o problema levantado.
Responsáveis: @gcmgomes e @thiagorpp
Devemos salvar dados em cache que nos permitam, ao iniciar o jogo, dar ao usuário, a opção de continuar um jogo que já estava em andamento.
Este requisito pode ser ignorado, caso o prazo esteja muito perto, mas deve ser informado na apresentação final do produto.
Implementar tela em que o jogador efetivamente jogará o primeiro mini-game do nível 4. O mini-game está descrito abaixo:
"O primeiro mini-game trata da meta "Establish Performance Baselines and Models", e é jogado na visão do próprio CEO da empresa. Nesse mini-game, o CEO vai ter que definir algumas métricas de qualidade dos projetos que, na história, vão ser estabelecidas como metas para os projetos. Pensei em ele definir:
Essa definição seria por meio de sliders (http://www.tophatstuff.co.uk/uploaded/20100220201958_hag_sliders.png). O objetivo do jogador seria definir valores que sejam coerentes entre si no menor número de tentativas. O jogador deve colocar os valores que quiser nas barrinhas e clicar em um botão para "Experimentar em um projeto", que faria com que, na história, um projeto na organização fosse conduzido com os valores informados como metas. O resultado do projeto seria então informado por meio de uma mensagem, e o jogador poderia ou passar de nível (se o projeto teve sucesso) ou rever as métricas (se o projeto falhou). Motivos de falhas, que vão ser as mensagens, vão ser do tipo:
E outras neste estilo. A pontuação do jogador seria inversamente proporcional ao número de tentativas que ele usou antes de conseguir um projeto de sucesso."
Os sliders podem ser substituídos por outra widget caso a MelonJS não tenha sliders já implementados.
Definir as características do nível 2.
O nível dois representa a empresa no nível 1 do CMMI, buscando se certificar no vível 2.
Esta tarefa está alocada para @pratlucas e @althoff.
Menu inicial que apresenta apenas os níveis que já foram desbloqueados pelo jogo, levando em conta todos os critérios de dependência entre níveis.
Os níveis liberados serão retirados do arquivo salvo em cache.
Realizar:
-Testes manuais:
. Verificar colisões;
. Verificar/Garantir se o personagem não sai da tela de jogo;
. Verificar se a pontuação é corretamente atualizada.
Desejo:
. Criar testes automatizados
-Testes realizados por terceiros:
. Coletar feedback quanto ao "gameplay"
A tela deverá conter uma descrição do segundo mini-game do nível 4. Do email de discussão:
"O segundo mini-game seria sobre o objetivo "Quantitatively Manage the Project", assumindo que a empresa já definiu como vai gerenciar o projeto (além de eu não ter imaginado um jogo sobre isso, é mais fácil fixar isso porque senão o terceiro mini-game provavelmente seria dependente desse segundo, o que aumentaria a complexidade do jogo). Pensei em esse ser um mini-game parecido com aquele de marretar as marmotas, com base na prática específica SP 2.2 (Manage Project Performance). As marmotas seriam botões com número escrito. Cada botão estaria associado a uma das métricas que foi definida no mini-game anterior (isso deve ficar claro na interface). Quando o botão aparece, o número sobre ele é um valor para a métrica que foi medido durante o projeto. Se ele for ruim (acima do máximo ou abaixo do mínimo definido no último mini-game, dependendo se foi definido máximo ou mínimo), o usuário deve clicar nesse botão, o que representa tomar alguma atitude para melhorar a métrica. Se o usuário clicar num botão com uma métrica "boa" (dentro do limite), ele perde pontos por desperdício. Se não clicar no botão antes de ele abaixar, ele perde pontos por aumentar o custo do projeto. Senão, ele ganha pontos. O objetivo é chegar em um número X de pontos."
O jogador deverá ser capaz de distinguir os principais tipos de requisitos previamente levantados pela organização, entre uma de três categorias:
A decisão deve ser feita com base na descrição do requisito e nos conhecimentos previamente adquiridos pelo jogador.
O minigame será um exercício de classificação por parte do jogador, com as possíveis categorias mencionadas anteriormente. Somente ao fim do minigame que o sistema deverá reportar falhas e sucessos por parte do jogador.
Toda essa tarefa será realizada do ponto de vista de um Engenheiro de Requisitos/Desenvolvedor da empresa, sendo o cargo do mesmo dependente de definições da história do jogo, como, por exemplo, qual processo estará em vigor (se algum) durante esse periodo de vida da empresa.
Responsáveis: @gcmgomes e @thiagorpp
Integrar todos os níveis numa versão apresentável do jogo.
Integrar todos os mini-games em um único nível e fazer a dependência dos mini-games.
No nível 5, o jogador terá que alinhar os ponteiros de diversos relógios, que representam a direção da organização e a do desenvolvimento de software dentro da empresa.
Inicialmente, todos os relógios estarão desalinhados. O jogador terá, então, de tomar algumas decisões na forma de um quiz de forma a alinhar os ponteiros de todos os relógios. Cada decisão será ou sobre a organização ou sobre o desenvolvimento de software, e alterará alguns dos ponteiros de acordo com a resposta. Não existe resposta certa ou errada - cada uma altera os ponteiros de formas diferentes. Ao final, o objetivo é que os ponteiros estejam todos alinhados ou quase alinhados. Caso o objetivo não tenha sido atingido, o jogador é levado a repetir o quiz.
Os "relógios" estarão identificados com as áreas do negócio que representarão, que serão as seguintes:
Inicialmente, os ponteiros da empresa estarão apontando em alguma direção aleatória. Por exemplo, se o objetivo sorteado da empresa for "Desenvolver software de qualidade aceitável a baixo custo e sem grandes preocupações com alterações futuras", os ponteiros que representam o ponto de vista da empresa estarão em um ponto mediano no relógio de "Qualidade do produto", num ponto tendendo ao baixo em "Facilidade de manutenção e alterações futuras" e ao baixo em "Custo do produto". Inicialmente, os ponteiros do desenvolvimento de software estarão apontando em outras direções.
Cada pergunta terá um impacto diferente em algum subconjunto desses atributos. Por exemplo, uma possível pergunta:
"Uma nova linguagem de programação está na moda e permite o desenvolvimento de software do tipo que sua empresa vende com uma produtividade média maior. Um time da sua organização já domina esta linguagem. O que você deseja fazer?"
A terceira opção é um investimento a mais longo prazo que a segunda. Após três rodadas, o custos do produtos seria reduzido a um valor menor que o inicial, mostrando que a decisão compensou.
Outras perguntas serão similares a esta, no estilo de tomadas de decisão por parte da gerência da empresa.
Deve ser criado o nível 2
Implementar a tela em que o segundo mini-game do nível 4 será efetivamente jogado pelo jogador. O mini-game está descrito abaixo (descrição retirada do email de discussão).
"O segundo mini-game seria sobre o objetivo "Quantitatively Manage the Project", assumindo que a empresa já definiu como vai gerenciar o projeto (além de eu não ter imaginado um jogo sobre isso, é mais fácil fixar isso porque senão o terceiro mini-game provavelmente seria dependente desse segundo, o que aumentaria a complexidade do jogo). Pensei em esse ser um mini-game parecido com aquele de marretar as marmotas, com base na prática específica SP 2.2 (Manage Project Performance). As marmotas seriam botões com número escrito. Cada botão estaria associado a uma das métricas que foi definida no mini-game anterior (isso deve ficar claro na interface). Quando o botão aparece, o número sobre ele é um valor para a métrica que foi medido durante o projeto. Se ele for ruim (acima do máximo ou abaixo do mínimo definido no último mini-game, dependendo se foi definido máximo ou mínimo), o usuário deve clicar nesse botão, o que representa tomar alguma atitude para melhorar a métrica. Se o usuário clicar num botão com uma métrica "boa" (dentro do limite), ele perde pontos por desperdício. Se não clicar no botão antes de ele abaixar, ele perde pontos por aumentar o custo do projeto. Senão, ele ganha pontos. O objetivo é chegar em um número X de pontos."
O mini-game depende de resultados de jogos anteriores. Caso a interface dos outros mini-games ainda não esteja definida quando for necessária para este mini-game, o desenvolvedor do mini-game 4.2 deve definir a interface e comunicá-la aos demais desenvolvedores.
No nível 4 (minigames 4.1 e 4.2), se apertamos "Próximo" antes de o texto acabar, ele começa a piscar.
Os mini-games do nível 5 devem ser integrados.
O jogador deverá:
Tempo estimado:
Estudar MelonJS: 6h
Implementar mini-game 1: 8h
Tela onde o usuário será introduzido ao jogo
Definir as características do nível 3.
O nível 3 representa a empresa no nível 2 de maturidade, buscando alcançar o nível 3.
Esta tarefa está alocada para @gcmgomes e @thiagorpp.
Definir todos os Sprites e Tilesets que serão usados em todo o jogo.
Para isso, deverá ser pesquisado pelo grupo, alguns exemplos.
O grupo deve votar e escolher o melhor.
A integração deve ser testada antes de ser apresentada.
Sugiro testes de caixa branca e caixa cinza.
Assim, poderemos resolver os bugs assim que eles forem encontrados
Um jeito coerente e natural para desenvolver o nível baseado em minigames é fazendo o link de todos eles por meio de uma historia.
Como temos uma empresa de TI em mãos, uma forma simples de cumprir essa meta é contando do desenvolvimento de um projeto pela equipe, que, depois de atingir CMMI 2 agora quer atingir o 3º, e o auditor fará as visitas justamente durante o desenrolar do projeto.
Vários pontos de vista podem ser explorados, cada um dando enfoque a áreas específicas do arcabouço (técnica, arquitetural, etc). Essa história deverá ser coerente com todos os outros níveis e transversal dentro do CMMI 3.
Responsáveis Principais: @gcmgomes e @thiagorpp.
Responsáveis Secundários: @althoff, @bolobr, @gpoesia, @pratlucas e @Tigariga.
Caso o nível 1 seja definido com vários mini-games, eles devem ser integrados e correlacionados.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.