Métodos Avançados de Programação

Projeto

O projeto da disciplina consiste em desenvolver 3 aplicações relacionadas usando design patterns e frameworks. Num primeiro momento, 3 aplicações relacionadas, isto é, do mesmo domínio de problema, são desenvolvidas usando pelo menos 3 design patterns diferentes (na soma dos programas, não necessariamente em cada um). Nestes programas, testes de unidade devem ser realizados com o framework de testes JUNIT. Em seguida, um framework deve ser projetado para o domínio de problema sob consideração e as aplicações reescritas usando o framework.

Você pode escolher o domínio do problema, mas lembre que as aplicações devem ser pequenas, já que 3 aplicações serão escritas, cada uma em das versões. Sugerimos que você utilize "jogos de cartas" como domínio de problema. Especificamente, o domínio de problema "jogos de poquer" ou "jogos de paciência" poderiam ser escolhidos como domínios de problema, já que vários tipos similares de tais jogos existem. Observe que as aplicações não precisam ter capricho visual e não precisam sequer utilizar interface gráfica (mas seriam legal, né?).

Você pode formar equipes de 2 pessoas. Os programas devem ser desenvolvidos em uma das seguintes linguagens: Java (de preferência), C++, Object Pascal. O paradigma deve obviamente ser Orientado a Objeto. Observe entretanto que o framework JUNIT utilizado no projeto não está disponível para qualquer linguagem.

A lista de milestones e detalhes do que entregar ao professor para cada milestone seguem.

  1. Entrega dos requisitos funcionais e de interface dos programas a desenvolver. Entregue uma descrição dos requisitos funcionais e uma idéia de como será a interface dos três programas.
  2. Entrega do primeiro programa. Entregue o código fonte documentado. Se usar Java, entregue também a saída do javadoc. Nos comentários, identifique claramente os design patterns utilizados. Adicionalemente, entregue o código fonte de todos os testes de unidade realizados. Use o framework de testes JUNIT disponível na home page. Se o framework não existir para sua linguagem, você terá que implementá-lo (como isso é trabalhoso, talvez seja melhor mudar de linguagem).
  3. Entrega do segundo programa. Idem.
  4. Entrega do terceiro programa. Idem.
  5. Entrega do design do framework. Entregue o código fonte documentado. Se usar Java, entregue também a saída do javadoc
  6. Entrega do framework com 3 aplicações.Entregue o código fonte documentado do framework e dos testes de unidade. Se usar Java, entregue também a saída do javadoc. Entregue também um documento consistindo de 2 partes. A primeira é um manual do usuário do seu framework. A segunda é uma comparação criteriosa entre as implementações das aplicações com e sem framework