Métodos Avançados de Programação

Período: 1999.2

As Pessoas A Disciplina A Avaliação Outros
Professor Objetivos Forma de avaliação Datas Importantes
Monitor Programa Notas dos Alunos Lista de Discussão
Alunos Plano de Aulas Lista de Exercícios Recursos
  Bibliografia Projeto  
  Material da disciplina (html on-line) Auto Avaliação  
  Material da disciplina (html zipado) Gabaritos  

Professor: Jacques Philippe Sauvé

Horários das Aulas e de Atendimento a Alunos pelo Professor

Monitor: Não há

Alunos

Aluno Observação
José de Castro Neto (Graduação) Projeto: Framework de Testes para Delphi
- Modelo de Uses Cases          15/12/1999
- Modelo de Analise              24/12/1999
- Modelo de Projeto              10/01/2000
- Implementacao   
*Incremento 1 17/01/2000
*Incremento 2            24/01/2000
*Incremento 3            31/01/2000
*Incremento 4            07/02/2000
*Incremento 5            14/02/2000
*Incremento 6            21/02/2000
*Incremento 7            28/02/2000
Alberto Costa Neto Seminário: Memento, Singleton
Projeto: 3 jogos de Paciência
(Aces Up, Baker's Dozen, Captive Queens)
André Vinicius Rodrigues Passos Nascimento Seminário: Command
Trabalha com Alberto
Edeyson Andrade Gomes Seminário: Bridge
Cronograma segue:
Cronograma
Entrega dos requisitos funcionais de cada SIP.

03/11

  • Especificação de Requisitos para SIP Jacques.

03/11

  • Especificação de Requisitos para SIP Andréa.

03/11

  • Especificação de Requisitos para SIP Edeyson.

03/11

Entrega da interface dos SIPs. 03/11
Entrega da 1a. Tree 13/12
Entrega da 2a. Tree 19/12
Entrega do design do framework. 19/01
Entrega do framework com 3 aplicações. 14/02
Eduardo Manuel de Freitas Jorge Seminário: Adapter
Cronograma do projeto segue:
Requsitos funcionais e interface 26/10/1999
OK
(1ª Iteração) Servidor Universal OLAP com suas estrutras básicas (DW-Data Warehouse, C-Cubo, D-Dimensão, A-Atributos) 04/11/1999
OK
(2ª Iteração) Servidor Universal OLAP Relacional (SqlServer) 30/11/1999
OK
(3ª Iteracao) Servidor Universal OLAP Objeto-Relacional (Oracle). 19/01/2000
(4ª Iteração)Entrega do design do framework 14/02/2000
(5ª Iteração)API Interface OLAP ServerU para qualquer SGBD 28/02/2000
Hilmer Rodrigues Neri Seminários: Chain of Responsibility
Trabalha com Eduardo
Rodrigo Bonifácio de Almeida Seminário: Mediator
3 jogos de Paciência

Plano de Aulas

Dia Planejado Dia Realizado

Assunto

29/09/1999 29/09/1999 Verificar habilidade de programação dos alunos (se sabem OO, se programam muito, em que linguagens)
Anunciar URL da disciplina: http://www.dsc.ufpb.br/~jacques/cursos/1999.2/map
Feriados do semestre: 11/10, 12/10, 02/11, 15/11, 08/12 (1999)
Falar da auto-avaliação
Pedir para não imprimir nas impressoras da Universidade
Avisar para todos olharem as datas importantes
Objetivos da disciplina
Programa da disciplina
Trabalhos e critérios de avaliação

1. Facetas da Reusabilidade de Software

04/10 04/10 2. Design Patterns

2.1 O que são Design Patterns?
2.2 Elementos essenciais de um Design Pattern
2.3 Design Pattern: Factory Method

06/10 06/10

2.3 Design Pattern: Factory Method

13/10 06/10
13/10

2.4 Design Pattern: Iterator
2.5 Design Pattern: Composite

18/10 13/10

2.5 Design Pattern: Composite

20/10 18/10
(aula de 1 hora apenas)

Entrega dos requisitos funcionais e de interface dos programas a desenvolver

2.6 Design Pattern: Strategy

25/10 20/10

2.7 Design Pattern: Decorator

27/10   [Buffer de contingência para as aulas]
03/11 25/10

2.8 Design Pattern: Template Method
2.9 Design Pattern: Abstract Factory

08/11 27/10
03/11

2.10 Design Pattern: Observer
2.11 Comentários finais sobre Design Patterns

10/11 03/11
22/11

3. Software Baseado em Componentes

3.1 O que são componentes?
3.2 Resumo do desenvolvimento baseado em componentes

17/11 22/11
17/01
Entrega do primeiro programa

3.3 Construção de componentes: JavaBeans

22/11 19/01
24/01
01/02

3.4 Server components: Enterprise JavaBeans
3.5 A evolução de componentes e comparação de arquiteturas

24/11  

4. Frameworks

4.1 O que são frameworks?
4.2 Por que usar frameworks?
4.3 Tipos de frameworks
4.4 Uma lista de frameworks

29/11  

4.5 Detalhamento de um framework horizontal

01/12   Entrega do segundo programa

[Buffer de contingência para as aulas]

06/12  

4.6 Detalhamento de um framework vertical

13/12  

Entrega do terceiro programa

4.7 Comparação entre Frameworks e Design Patterns
4.8 Técnicas de construção de frameworks

15/12  

4.9 Metodologia de desenvolvimento de frameworks

19/01/2000  

Entrega do design do framework

5. Refactoring

5.1 O que é refactoring?
5.2 Um primeiro exemplo

24/01  

5.2 Um primeiro exemplo

26/01  

5.3 Princípios no refactoring

31/01   [Buffer de contingência para as aulas]
02/02  

5.4 Quando o código fede

07/02  

5.5 Construção de testes

09/02  

5.6 Algumas técnicas de refactoring

5.6.1Composição de métodos
5.6.2 Mover funcionalidade entre objetos

14/02  

Entrega do framework com 3 aplicações

5.6.3- Organização de dados
5.6.4 Simplificações de expressões condicionais

16/02  

5.6.5 Simplificação de chamadas de métodos
5.6.6 Generalização

21/02  

5.6.7 Refactoring em larga escala

5.7 Comentários finais

23/02   [Buffer de contingência para as aulas]
28/02   Prova Final (Graduação)

Bibliografia

Atenção! Este é um curso avançado e exige-se que você leia o material associado à disciplina antes das aulas. Por este motivo, as aulas terão um ritmo rápido. Leva suas dúvidas para a aula.

Os exemplos da disciplina são dados em Java. Se você não conhece a linguagem, leia um livro sobre Java agora. Recomendamos Thinking in Java.

Espera-se que você leia os livros recomendados. Quem não fizer isto dificilmente poderá acompanhar a disciplina. Quem o fizer aprenderá muito.

Bibliografia Recomendada

  1. [Design Patterns] Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, Helm, Johnson e Vlissides, Addison-Wesley, 1995.
  2. [Componentes] Component Software - Beyond Object-Oriented Programming, Szyperski, Addison Wesley, 1999.
  3. [Frameworks] Framework-Based Software Development in C++, Rogers, Prentice-Hall, 1997.
  4. [Refactoring] Refactoring : Improving the Design of Existing Code, Fowler, Beck, Brant, Opdyke, Roberts, Addison-Wesley, 1999.

Bibliografia Adicional

  1. Java Application Frameworks, Govoni, John Wiley, 1999.
  2. Analysis Patterns - Reusable Object Models, Fowler, Addison-Wesley,1997.
  3. Software Reuse - Architecture, Process, and Organization for Business Success, Jacobson, Griss e Jonsson, Addison-Wesley,1997.
  4. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Larman, Prentice-Hall, 1998.
  5. Objects, Components, and Frameworks with UML - The Catalysis Approach, D'Souza e Wills, Addison-Wesley,1999.

Avaliação

O curso é baseado em grande parte num projeto de desenvolvimento envolvendo os assuntos do curso. Uma alternativa de projeto é dada aqui mas você poderá desenvolver outro projeto se assim desejar (e se assim me convencer!). Caso seja algo associado a seu trabalho de dissertação de mestrado, você deverá trabalhar sozinho. Caso contrário, poderá formar equipe com uma (e apenas uma) pessoa. O projeto é importante e você deverá trabalhar duro para completá-lo. É assim que vai aprender algo.

A avaliação será feita com o projeto. O projeto será avaliado através de 6 milestones distintos e listados abaixo. Os detalhes do que deve ser entregue para o professor estão aqui.

Os pesos atribuídos aos vários eventos de avaliação são indicados abaixo. Perde-se 5% do valor da nota dada a um milestone do projeto para cada dia de atraso na entrega.

Observe que alunos de pós-graduação deverão apresentar um seminário sobre um design pattern não visto em aula. Escolha um design pattern no livro de Gamma. Apresente o design pattern e relacione-o com outros design patterns. Uma boa forma de apresentar a matéria é de mostrar como um problema é resolvido sem e com o design pattern. A comparação de código normalmente mostra claramente a vantagem do design pattern.

O seminário deverá ser marcado no sistema de seminários do DSC. Todos os seminários deverão estar cadastrados no sistema até o dia 10/11/1999 e deverão ocorrer entre 17/11/1999 e 23/02/2000. Não demore para marcar seu seminário pois datas disponíveis poderão ficar difíceis de achar.

Todos os alunos matriculados na disciplina devem assistir os seminários dos alunos de pós-graduação.

Evento de avaliação)

Peso (Graduação)

Peso (Pós-Graduação)

Entrega dos requisitos funcionais e de interface dos programas a desenvolver 10% 9%
Entrega do primeiro programa 15% 13%
Entrega do segundo programa 10% 9%
Entrega do terceiro programa 10% 9%
Entrega do design do framework 30% 20%
Entrega do framework com 3 aplicações 25% 15%
Seminário   25%

Datas Importantes

Entrega dos requisitos funcionais e de interface dos programas a desenvolver 20/10/1999
Entrega do primeiro programa 17/11/1999
Entrega do segundo programa 01/12/1999
Entrega do terceiro programa 13/12/1999
Entrega do design do framework 19/01/2000
Entrega do framework com 3 aplicações 14/02/2000

Recursos

Outras Disciplinas do Professor Com Assuntos Relacionados

Sobre Orientação a Objetos em Geral

Sobre o Framework de Testes JUNIT (para Java)

Sobre Design Patterns

Sobre Pedagogical Patterns

Sobre Testing Patterns

Sobre Componentes

Sobre Frameworks

Sobre Refactoring