Análise e Projeto de Software Orientados a Objeto

Período: 1999.1

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

Professor: Jacques Philippe Sauvé

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

Monitor: Não há

Alunos

Aluno Projeto
Alberto Costa Neto Escalonador de Salas (com André)
André Vinicius Rodrigues Passos Nascimento Escalonador de Salas (com Alberto)
Edeyson Andrade Gomes Sistema de Informação Personalizado – SIP
Eduardo Manuel de Freitas Jorge Sistema de Informações Gerenciais
Giovanni Almeida Santos Sistema de CVs (com Juliana)
Hilmer Rodrigues Neri Miniblio Web-Based
Juliana Camboim Lula Sistema de CVs (com Giovanni)
Rodrigo Bonifácio de Almeida Estudo de Caso Ampliado

Plano de Aulas

Dia Assunto Planejado
4 de maio de 1999 Verificar abilidade 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.1/apoo
Falar da auto-avaliação
Não tem aula durante a semana do SBRC99
Pedir para não imprimir nas impressoras da Universidade
Avisar para todos olharem as datas importantes
Objetivos da disciplina
Programa da disciplina
Projetos e critérios de avaliação


1. Introdução à Análise e Projeto de Software Orientados a Objeto

1.1 Construindo Arquiteturas de Software: Lidando com a Complexidade
1.2 O que é modelagem?
1.3 Análise e Projeto como Atividades

5 maio

1.4 O que é Orientação a Objeto?
1.5 Por que Queremos Orientação a Objeto?
1.6 Linguagens para Modelagem: UML
1.7 Um Processo de Desenvolvimento de Software

11 maio 2. Estudo de Caso: Descrição Inicial e Requisitos Funcionais

2.1 Descrição Inicial de um Sistema de Controle de Biblioteca
2.2 Análise de Requisitos e Use Cases

12 maio 3. Uma Breve Introdução a Objetos Usando Exemplos em Java

3.1 Buzzwords
3.2 Mecanismos Simples
3.3 Usando Objetos

18 maio

3.4 Tomadas de Decisão
3.5 Laços e Coleções
3.6 Definição de Classes

19 maio [Buffer de contingência para as aulas]
1 junho Milestone 1 do Projeto: Apresentação dos alunos
2 junho

3.6 Definição de Classes

8 junho

3.7 Tratamento de Exceções
3.8 Herança e Polimorfismo

9 junho

3.8 Herança e Polimorfismo
3.9 Interface

15 junho 4. Um Estudo de Caso com UML e o Processo Unificado

4.1 Uma Breve Descrição do Processo Unificado

16 junho

4.2 Modelos, Views e Diagramas em UML

22 junho [Buffer de contingência para as aulas]
29 junho

4.2 Modelos, Views e Diagramas em UML

30 junho

4.3 Requisitos e o Modelo de Use Case
4.4 O Modelo de Análise de Domínio

6 julho

4.5 O Modelo de Design
4.6 Implementação

7 julho Milestone 2 do Projeto: Apresentação dos alunos
13 julho 5. Algumas Técnicas de Análise e Projeto Orientados a Objeto

5.1 Problemas Básicos de Análise e Projeto

14 julho [Buffer de contingência para as aulas]
20 julho

5.2 O que é uma Boa Decomposição?

21 julho Milestone 3 do Projeto: Apresentação dos alunos
27 julho

5.3 Como Achar Classes e Distribuir Responsabilidades?

28 julho

5.3 Como Achar Classes e Distribuir Responsabilidades?

3 agosto

5.4 Interfaces
5.5 Acoplamento
5.6 Coesão

4 agosto

5.7 Composição Versus Herança

10 agosto [Buffer de contingência para as aulas]
11 agosto 6. Design Patterns, Refactoring, Extreme Programming e Frameworks

6.1 Padrões de Projeto (Design Patterns)

17 agosto

6.2 Refactoring
6.3 Extreme Programming
6.4 Frameworks

18 agosto [Buffer de contingência para as aulas]
24 agosto [Buffer de contingência para as aulas]
25 agosto Milestone 4 do Projeto: Apresentação dos alunos

Bibliografia

Atenção! Este é um curso de pós-graduação 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.

Leia pelo menos um livro sobre Análise e Projeto OO, pelo menos um livro sobre UML e pelo menos um livro sobre Java. Quem não fizer isto dificilmente poderá acompanhar a disciplina. Quem o fizer aprenderá muito.

[Sugiro ler "UML Toolkit" pois nosso estudo de caso é tirado deste livro].

Bibliografia sobre OO

  1. Object Oriented Analysis and Design with Applications, 2nd Ed. Booch, Benjamin/Cummings, 1994.
  2. Design Patterns: Elements of Reusable Object-oriented Software, Gamma, Helm, Johnson e Vlissides, Addison-Wesley, 1995.
  3. Object-Oriented Modeling and Design, Rumbaugh, Blaha, Premerlani, Eddy e Lorensen. Prentice Hall, 1991.
  4. Object-Oriented Software Engineering, Jacobson, Christerson, Jonsson e Overgaard. Addison-Wesley, 1992.
  5. Object-Oriented Systems Analysis, Shlaer e Mellor. Yourdon Press, 1988.
  6. Designing Object-Oriented Software, Wirfs-Brock, Wilkerson e. Wiener. Prentice Hall, 1990.
  7. Mastering Object-Oriented Design in C++, Horstmann, John Wiley, 1995.
  8. The CRC Card Book, Bellin e Simone, Addison-Wesley, 1997.
  9. Object Solutions - Managing the Object-Oriented Project, Booch, Addison-Wesley, 1996.
  10. Surviving Object-Oriented Projects - A Manager's Guide, Cockburn, Addison-Wesley,1998.
  11. Analysis Patterns - Reusable Object Models, Fowler, Addison-Wesley,1997.
  12. Software Reuse - Architecture, Process, and Organization for Business Success, Jacobson, Griss e Jonsson, Addison-Wesley,1997.
  13. Software Project Management - A Unified Framework, Royce, Addison-Wesley,1998.
  14. Applying Use Cases, Schneider e Winters, Addison-Wesley,1998.
  15. Enterprise Computing with Objects - From Client/Server Environments to the Intertnet, Shan e Earle, Addison-Wesley,1998.

Bibliografia sobre UML

  1. UML Toolkit, Eriksson e Penker, John Wiley, 1998. O estudo de caso vem daqui.
  2. The Unified Modeling Language User Guide, Booch, Rumbaugh, Jacobson, Addison-Wesley, 1999.
  3. The Unified Software Development Process, Jacobson, Booch, Rumbaugh, Addison-Wesley, 1999.
  4. The Unified Modeling Language Reference Manual, Rumbaugh, Booch, Jacobson, Addison-Wesley, 1999.
  5. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Larman, Prentice-Hall, 1998.
  6. UML Distilled: Applying the Standard Modeling Language, Fowler, Addison-Wesley, 1998.
  7. Objects, Components, and Frameworks with UML - The Catalysis Approach, D'Souza e Wills, Addison-Wesley,1999.
  8. Real-Time UML - Developing Efficient Objects for Embedded Systems, Douglass, Addison-Wesley,1998.
  9. Visual Modeling with Rational Rose and UML, Quatrani, Addison-Wesley,1998.
  10. The Object Constraint Language - Precise Modeling with UML, Warmer e Kleppe, Addison-Wesley,1999.

Bibliografia sobre Java

  1. Core Java 2: Volume I - Fundamentals, Horstmann e Cornell, prentice-Hall, 1999.
  2. The Java Programming Language, Arnold e Gosling, Addison-Wesley, 1998.
  3. Thinking In Java : The Definitive Introduction To Object-Oriented Programming The Language Of The World Wide Web, Bruce Eckel, Prentice Hall, 1998.
  4. ... e centenas de outros livros

Avaliação

O curso é baseado em grande parte num projeto completo não trivial. Uma lista de lista de projetos possíveis é 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 mini-testes dados esporadicamente durante as aulas e com o projeto. O projeto será avaliado através de 4 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. Alunos podem faltar a até 15% dos mini-testes, sem prejuízo. Perde-se 5% do valor da nota dada ao projeto para cada dia de atraso na entrega.

Evento de Avaliação Peso
Mini-testes 50%
Modelo de Use Cases (Requisitos) 5%
Modelo de Análise 10%
Modelo de Projeto (Design) 10%
Código final (completude e qualidade) 25%

Datas Importantes

Milestone 1 do projeto (Use Cases) 01/06/1999
Milestone 2 do projeto (Análise) 07/07/1999
Milestone 3 do projeto (Design) 28/07/1999
Milestone 4 do projeto (Entrega final do projeto) 26/08/1999

Recursos

Sobre o Estudo de Caso Utilizado nas Aulas

Sobre OO

Sobre a UML

Sobre Java

Sobre "Boa Programação"

Sobre Refactoring

Sobre Frameworks

Sobre Extreme Programming

Sobre Design Patterns

Sobre Pedagogical Patterns

Sobre Testing Patterns