• Nenhum resultado encontrado

01 Apresentacao PadroesFrameworks

N/A
N/A
Protected

Academic year: 2021

Share "01 Apresentacao PadroesFrameworks"

Copied!
27
0
0

Texto

(1)

Padrões e Frameworks

Apresentação do curso

Roberto A. Bittencourt Professor Adjunto - UEFS

(2)

Equipe

 Roberto Almeida Bittencourt (professor)

 roberto@ecomp.uefs.br (para questões ligadas à

disciplina)

 roberto@uefs.br

 Jairo Henrique Calmon (estágio docente)

(3)

Conteúdo Programático

 Padrões de Projeto  Arquiteturais  Criacionais  Estruturais  Comportamentais  Frameworks  Visão geral  Frameworks de persistência  Frameworks de interface  Refatoração  Bad smells  Catálogo de refatorações  Suporte ferramental

(4)

Objetivo 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

(5)

Objetivos 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

(6)

Metodologia

 Aulas de discussões de padrões de projeto

 Demanda leitura prévia

 Tutoriais PBL para discussão dos projetos  Tutoriais de ferramentas e tecnologias

(7)

Avaliação

 Trabalhos em equipe (70%)

 3 projetos

 Participação nas discussões nas aulas e

(8)

Projetos

Projeto1: Desenvolvimento de jogo em Java

estilo Atari com aplicação de padrões de projeto

Projeto 2: Desenvolvimento de um sistema

de informação (camada de modelo e persistência)

Projeto 3: Continuação do desenvolvimento

de um sistema de informação (visões e controladores)

(9)

Bibliografia (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.

(10)

Bibliografia (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.

(11)

Detalhes adicionais

 Site do curso:  https://sites.google.com/site/ecomppadroes20141/  Lista de discussão:  ecomp-padroes-20141@googlegroups.com  https://groups.google.com/forum/#!forum/ecomp-padroes-20141  Cronograma do curso:  https://sites.google.com/site/ecomppadroes20141/ cronograma

(12)
(13)

O que são padrões (patterns)? (1)

 Princípios e soluções codificadas em um

formato estruturado descrevendo um problema e uma solução

 Um par nomeado problema/solução que pode

ser aplicado em novos contextos

 É o conselho de projetistas experientes para

(14)

O que são padrões (patterns)? (2)

A ideia por trás de padrões de design é simples:

Escreva e catalogue interações comuns entre objetos que programadores

acharam frequentemente úteis.

Resultado:

Facilitar o reuso de código orientado a objetos entre projetos e entre

(15)

Características de um bom padrão

Resolve um problema

É um conceito provado

A solução não é óbvia

Descreve um relacionamento

O padrão tem um componente humano

(16)

Tipos de padrões

Padrões arquiteturais

Expressa uma organização ou esquema estrutural fundamental para sistemas de software.

Padrões de projeto (Design Patterns)

Proveem um esquema para refinar os

subsistemas ou componentes de um sistema de software, ou as relações entre eles.

Expressões idiomáticas (Idioms)

Uma expressão idiomática descreve como implementar aspectos específicos de

componentes ou das relações entre eles usando as características de uma dada linguagem.

(17)

Descrevendo padrões

Nome: O padrão deve ter um nome significativo. Problema: Uma descrição do problema.

Contexto: Explica a aplicabilidade do padrão. Forças: Uma descrição das forças relevantes e

restrições e como elas interagem/conflitam entre si.

Solução: Relações estáticas e regras dinâmicas

descrevendo como implementar o resultado desejado.

Consequências: Implicações (boas e ruins) do

uso da solução.

Exemplos: Uma ou mais amostras de aplicações

(18)
(19)

Qual é o problema?

 Programar é difícil

 Onde está a maior dificuldade?

 "Interface design and functional factoring constitute

the key intelectual content of software and is far more difficult to create or re-create than code" (Peter

Deutsch)

 Mas nossos programadores são mortais

 "It shouldn't take a good programmer to build a good

program"

 Solução: Temos que fornecer formas de reuso que

vão além de código: reuso de análise, design, código.

(20)

O que é um Framework? (1)

 Um framework captura a funcionalidade

comum a várias aplicações

 As aplicações devem ter algo razoavelmente

grande em comum: pertencem a um mesmo domínio de problema

(21)

O que é um Framework? (2)

 A definição que usamos foca quatro características

principais de um framework (Orientado a Objeto):

"Um framework provê uma solução para uma família de problemas semelhantes, ...

Usando um conjunto de classes e interfaces que mostra como decompor a família de problemas, ...

E como objetos dessas classes colaboram para cumprir suas responsabilidades, ...

O conjunto de classes deve ser flexível e extensível para permitir a construção de várias aplicações com pouco esforço, especificando apenas as particularidades de cada aplicação"

Observe que um framework é uma aplicação quase

completa, mas com pedaços faltando

Ao receber um framework, seu trabalho consiste em prover os pedaços que são específicos para sua aplicação

(22)

Exemplos de Frameworks

 Para testes de unidade: JUnit, unittest,

PHPUnit, etc.

 Para aplicações web: Struts, Spring, Zend,

CakePHP, Hibernate, Rails, Django, .NET, J2EE, JQuery, GWT, Bootstrap

 Para aplicações desktop: GNOME, KDE, Java

Swing, Java SWT, Cocoa, etc.

 Para análise de redes sociais: JUNG, Gephi,

Prefuse, etc.

 Para domínios específicos: aplicações

(23)
(24)

Code smells (maus cheiros no código)

Um code smell é uma indicação superficial

que geralmente corresponde a problemas mais profundos no sistema.

 Exemplos:

 Duplicação de código  Método longo

 Lista de parâmetros longa

 Code smells geralmente oferecem

oportunidades de refatoração

(25)

O que é refatoração?

 Refatoração muda a estrutura do software

mas não muda a funcionalidade do programa

 Refatoração consiste em transformações que

preservam comportamento

 Fowler: Refactoring (livro, web site)

(26)

Catálogo de refatorações

 Formato de uma refatoração no catálogo de

Fowler:  Nome  Resumo  Motivação  Mecânica  Exemplos

(27)

Exemplos de refatoração

27

 Renomear uma entidade

 Encapsular parte do código como uma

função/método

 inverso: expandir uma função/método no lugar de

uma chamada

 Mover um método membro de uma classe

para outra

 Mesclar e dividir classes

Referências

Documentos relacionados

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos

Resumidamente a forma de comercialização dos apartamentos FLAT e operação de locação dos apartamentos do HOTEL para uma bandeira hoteleira proposta a seguir objetiva a

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

O estudo múltiplo de casos foi aplicado para identificar as semelhanças e dissemelhanças na forma como as empresas relacionam seus modelos de negócios e suas

Nas leituras de falhas efetuadas, foram obtidos códigos de anomalia por meio de dois diferentes protocolos de comunicação: o ISO 14230 KWP (2000) e o ISO 15765-4 CAN. A seguir, no

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27