Programa

UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA

DEPARTAMENTO DE CIÊNCIAS EXATAS

PROFESSOR(A): ROBERTO ALMEIDA BITTENCOURT

PERÍODO LETIVO: 2014.1

 

PROGRAMA DA DISCIPLINA

EXA 836 – PADRÕES E FRAMEWORKS

 

 

CARGA HORÁRIA/CREDITAÇÃO

 

60 horas / (T:30; P:30; E:00)

 

PRÉ-REQUISITOS

 

EXA 863 – MI – Programação

EXA 805 – Algoritmos e Programação II B

EXA 806 – Estruturas de Dados B

EXA 855 – Projeto de Sistemas

 

EMENTA

 

Padrões e anti-padrões de software. Padrões arquiteturais. Padrões de projeto: criacionais, estruturais e comportamentais. Anti-padrões de projeto. Testes de Unidade. Frameworks.

 

OBJETIVOS

 

Geral:

·         Ser capaz de projetar sistemas de software através do uso de padrões de projeto, frameworks e técnicas de refatoração, embasando-se num referencial teórico e no estado-da-prática da área de engenharia de software.

 

Específicos:

·         Conhecer, compreender e aplicar alguns dos padrões de projeto de software mais conhecidos;

·         Conhecer, compreender e aplicar frameworks para o projeto de software baseado em reuso, em especial frameworks de interface e de persistência;

·         Projetar, desenvolver e testar um sistema de software em um domínio específico através da utilização adequada de padrões de projeto;

·         Projetar, desenvolver e testar um sistema de informação baseado em frameworks de interface e de persistência, utilizando tecnologias do estado-da-prática;

·         Conhecer, compreender e aplicar padrões de refatoração para melhoria da qualidade interna de software.

 

 

CONTEÚDO PROGRAMÁTICO

 

1.      Introdução.

1.1.   Padrões de projeto.

1.2.   Frameworks.

1.3.   Refatoração.

 

2.      Padrões de projeto.

2.1.   Descrição de padrões.

2.2.   Tipos de padrões de projeto: arquiteturais, criacionais, estruturais e comportamentais.

2.3.   Padrões arquiteturais: Observer e MVC.

2.4.   Padrões criacionais: Factory Method e Abstract Factory.

2.5.   Padrões estruturais: Decorator, Proxy e Composite.

2.6.   Padrões comportamentais: Visitor, Strategy e Command.

 

3.      Frameworks.

3.1.   Conceitos básicos de frameworks.

3.2.   Vantagens e desvantagens no uso de frameworks.

3.3.   Tipos de frameworks

 

4.      Frameworks de persistência.

4.1.   Padrões de mapeamento objeto-relacional.

4.2.   Tecnologias de mapeamento objeto-relacional: Hibernate.

4.3.   Configuração do Hibernate.

4.4.   Persistindo dados com Hibernate.

 

5.      Frameworks de interface.

5.1.   Padrão de Projeto Dependency Injection.

5.2.   Arquitetura MVC para Web.

5.3.   Tecnologias Web de frameworks de interface.

5.4.   Configuração de um framework de interface.

5.5.   Criação de visões.

5.6.   Criação de controladores.

5.7.   Conexão de visões e controladores com modelos persistidos com Hibernate.

 

6.      Refatoração.

6.1.   Degradação de design através de bad smells.

6.2.   Catálogos de refatorações.

6.3.   Aplicação de alguns tipos de refatorações em código-fonte.

6.4.   Tecnologias de suporte à refatoração em IDEs.

 

METODOLOGIA

 

A metodologia será um híbrido de aulas expositivas dialogadas, tutoriais de técnicas e ferramentas e trabalhos em equipe.

 A seguir apresentamos os alcances de cada uma destas estratégias metodológicas:

·         As aulas expositivas dialogadas têm como objetivo: introduzir conteúdos e práticas da área de padrões e frameworks, sensibilizar os futuros profissionais sobre os problemas resultantes de produção de software sem design adequado, além de debater as diferentes implementações de padrões de projeto, frameworks e refatorações.

·         Os tutoriais de ferramentas servem para introduzir rapidamente o uso de ferramentas relacionadas a padrões de projeto, frameworks e refatoração, reduzindo a curva de aprendizagem e realçando os aspectos mais importantes destas ferramentas no contexto deste curso.

·         Os trabalhos em equipe permitem a prática mais prolongada no uso de técnicas e ferramentas, situadas em um contexto mais realista do que o apresentado em aulas expositivas ou tutoriais. Em cada trabalho, cada equipe deve gerar artefatos (inclusive um relatório do trabalho), que podem ser individuais e/ou para toda a equipe.

 

MATERIAL UTILIZADO

 

O módulo será dividido em três unidades, para que o estudante possa refletir sobre sua situação em diferentes momentos do curso e, caso necessário, realizar correções de rumo no processo de aprendizagem.

Medidas da Unidade:

A medida de cada uma das três unidades será a nota de um projeto em equipe.

Média Parcial:

A média parcial será a média aritmética das medidas de cada unidade. Obtendo média igual ou superior a 7,0 (sete), o estudante pode ser aprovado, caso cumpra os requisitos de frequência.

Prova Final:

·         Não obtendo média parcial suficiente na avaliação do módulo, o estudante poderá fazer prova final, e a média final será calculada de acordo com o sistema de avaliação vigente na UEFS.

Aprovação no módulo:

Para ser aprovado no módulo, o estudante precisa cumprir os seguintes requisitos:

·         Ter frequência igual ou superior a 75% da carga horária efetiva ministrada no módulo, caso contrário haverá reprovação por frequência;

·         Ser aprovado na avaliação do módulo, caso contrário haverá reprovação por nota.

 

 

REFERÊNCIAS

 

LIVROS-TEXTO

GAMMA, E. et al. Padrões de projeto: soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2005.

FREEMAN, E. et al. Use a Cabeça! Padrões de Projetos (Design Patterns). Alta Books, 2007.

FAYAD, et al. Building Application Frameworks : Object-Oriented Foundations of Framework Design. John Wiley & Sons, 1999.

FOWLER, M et al. Refatoração: aperfeiçoando o projeto de código existente. Porto Alegre: Bookman, 2004.

 

LEITURA COMPLEMENTAR

SHALLOWAY, A. & TROTT, J. R. Explicando padrões de projeto: uma nova perspectiva em projeto orientado a objeto. Porto Alegre: Bookman, 2004.

LARMAN, C. Utilizando UML e Patterns: Uma Introdução à Análise e ao Projeto Orientados a Objetos. 3. ed. Bookman, 2007.

FOWLER, M. Patterns of Enterprise Application Architecture. Addison Wesley, 2003.

ECKEL, B. Thinking in Patterns with Java. 1a. ed. MindView, 2003.

MASSOL, V. & HUSTED, T. JUnit em Ação. Ciência Moderna, 2005.

PILONE, D. & PITMAN, N. UML 2.0 in a Nutshell. O'Reilly & Associates, 2005.

BROWN, W. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. John Wiley & Sons, 1998.

Apostilas da Caelum. Disponíveis em http://www.caelum.com.br

Artigos técnicos e científicos.