Projeto 2: WCupStats - Sistema de Estatísticas de Copas do Mundo

Problema

Equipe de desenvolvimento reunida. Eles não estão desenvolvendo software. Estão vidrados olhando para a TV. O clássico baiano segue empatado. A sala esta dividida entre torcedores do rubro-negro e do tricolor. Olhos atentos. Aos 43 minutos do segundo tempo, o comentarista dispara:

- Em confrontos diretos, apesar de acirrados, o Bahia tem mais vitórias que o Vitória.

O silêncio na sala é rompido por um berro de Tiago, rubro-negro fanático:

- Ó PAÍ Ó!!! Que mentira deslavada!!!

- Fica quieto que você é nosso freguês! - Retruca Pingo, tricolor.

- Freguês nada!!! Tá na cara que esse cara torce pro Jahia! Inventou isso não sei de onde.

A discussão segue por alguns minutos. Tiago, descontente e certo que a informação estava errada, telefona para seu amigo Carlos, diretor de transmissões de jogos da Rede Glóbulo, e destila sua insatisfação. Carlos informa que esta não é a primeira vez que isto acontece e explica que isso acontece porque os comentaristas, apesar de agirem de boa fé nas suas pesquisas, utilizam fontes pouco confiáveis. “Imagina na copa”, conclui.

Nesse momento, uma ideia surge e Tiago dispara:

- E se houvesse um sistema que fosse possível consultar estatísticas e informações de todas as copas do mundo? Assim os narradores e comentaristas poderiam extrair ou conferir informações de maneira confiável!

- Ótima ideia! Precisamos desse sistema para ontem! Sua equipe daria conta do recado? Pagamos bem!

--

Com a aproximação da Copa do Mundo de Futebol, a Rede Glóbulo de Televisão contratou sua equipe de desenvolvimento, a MiguéSoft, para implantar um sistema superavançado de busca de estatísticas de todas as copas do mundo, de maneira a fornecer aos telespectadores informações curiosas e interessantes.

Este sistema também permitirá à Rede Glóbulo introduzir um sistema de quizzes interativos para testar os conhecimentos dos seus telespectadores, que devem responder a perguntas como “Quem fez o gol mais rápido da história das copas?”, sendo dadas opções para votação via SMS, por exemplo. Prêmios serão distribuídos para os participantes que acertarem mais perguntas em menos tempo durante um jogo.

 

Empolgados com a ideia, a MiguéSoft resolveu colocar as mãos na massa e provar que é capaz de produzir um software de qualidade padrão FIFA. Além disso, para provar que nem tudo se atrasa para a copa, sua equipe resolveu sair na frente e surpreender o cliente na próxima reunião com o core do sistema implementado, ainda sem interface gráfica. Esta meta corresponde ao primeiro milestone do projeto.

Sua equipe também decide afastar de vez o fantasma da antiga e finada empresa para a qual trabalhavam, a MangueSystems, (apelidada pelos clientes de “TudoNasCoxas”) e resolve que dessa vez vão seguir boas práticas de desenvolvimento. A conversa esquenta:

- Chega de entregar tudo atrasado! Chega de virar noites corrigindo bugs de código mal feito!

- Chega de pendrives rodando de mesa em mesa para passar as versões!!! - Grita Tiago.

- Chega de consultas quilométricas de SQL!!! - Desabafa Mário Alberto.

Após um breve silêncio, Mario Alberto pergunta:

- E você, Odete? O que você quer?

- O que eu quero, Mario Alberto? Eu quero tudo testado! Eu quero ver testes de unidade! Cada funcionalidade testada! Eu quero que a cada pequena atualização, haja um commit no repositório, Mario Alberto. Agora você repara que eu não falei para colocar tudo no final e só por uma pessoa. Eu quero que todos da equipe participem ativamente. Eu quero ver o cliente satisfeito. É isso que eu quero, Mario Alberto.

Pouco depois, você anuncia o recebimento de um email de Carlos com um modelo conceitual e algumas user stories. Todos comemoram: “Perfeito! Tudo está se alinhando. Já temos informação suficiente para começar a projetar o sistema! Tá no papo!”.

Sua equipe decide fazer um sistema web e define algumas ferramentas a serem utilizadas. Para testes de unidade e funcionalidade, será utilizado JUnit, sendo que deve existir um teste para cada user story. Ao invés de utilizar consultas SQL foi decidido que seria utilizado mapeamento objeto-relacional através do framework Hibernate. A equipe se compromete a criar um novo projeto no repositório e mantê-lo com atualizações frequentes.

 

Modelo Conceitual

User Stories

 

Produto

Seu grupo deve se cadastrar em um repositório de software, GitHub ou SourceForge, usando um login para cada membro do grupo. Além de cadastrar o grupo com permissão de escrita, vocês devem cadastrar os professores também em seu projeto, dando permissão de leitura a eles (eles enviarão email com login deles nos repositórios). Este cadastro deve ser enviado, no máximo, até o dia 03/06/2014.

O projeto será avaliado tanto pelo uso adequado de frameworks de persistência, como pela qualidade do desenvolvimento do projeto (descrição do projeto no repositório, commits incrementais frequentes por cada usuário, total de user stories implementadas, testes de unidade em JUnit, testes das user stories em JUnit). Será avaliada a participação dos membros da equipe pelo código que cada um envia ao repositório.

O projeto completo deve ser entregue até o dia 01/07/2014 e uma cópia compactada da versão final do projeto deve ser enviada aos professores por email ou dropbox.