Frameworks - Introdução
Professor: Hyggo Almeida
O que vimos na última aula?
Pool de Threads
Frameworks - Introdução
2
O que veremos hoje?
Frameworks - Introdução
Frameworks - Introdução
3
Reuso, reuso, reuso
Objetivo sempre: reutilizar código
Reutilizar classes
Reutilizar bibliotecas
 Collections, IO, ...
Vamos um passo além
3 Aplicações “Calculadora”
Científica
Simples
Frameworks - Introdução
Financeira
5
Motivação
Grande parte do esforço de desenvolvimento de
software se origina da (Re) descoberta e (Re)
invenção de conceitos do núcleo das aplicações
Dentro de um mesmo domínio de aplicação,
estes conceitos se repetem (ou são similares)
Por que não criar um modelo único de projeto e
implementação para um domínio que possa ser
reutilizado em várias aplicações?
Frameworks - Introdução
6
Arcabouço/Framework
1 esqueleto, armação dos ossos do corpo
humano ou de qualquer animal
2 ossatura do tórax, arca do peito
3 delineamento inicial; esboço, madeirame
Ex.: a. de uma pintura, de um romance
4 estrutura (de madeira, ferro etc.) de uma
construção
5 armação de uma máquina; carcaça
Definição
Um framework é uma aplicação “semicompleta”, reutilizável, que pode ser
especializada para produzir aplicações
personalizadas
Frameworks - Introdução
8
Conceito
Identificam-se similaridades entre aplicações
e cria-se um núcleo invariante com ganchos
para extensão
UI
BD
Núcleo
Relatório
Rede
Frozen spots
Hot Spots
Frameworks - Introdução
9
Exemplo
Frozen spots
Botões janela
Barra Menu
“Visor”
Botões desfazer
e limpar
Botões de operações
básicas
Botões numéricos
Total
Frameworks - Introdução
10
Exemplo
Hot spots
Ganchos para novas
funcionalidades
Frameworks - Introdução
11
Benefícios
Os principais benefícios de frameworks de
aplicação são:
 Modularidade
 Reusabilidade
 Extensibilidade
 Inversão de controle
Frameworks - Introdução
12
Benefícios: Modularidade
Encapsulam comportamentos “voláteis” atrás
de interfaces bem definidas
Potencializam a qualidade de software através
da localização explícita de mudanças nos
aplicativos
Frameworks - Introdução
13
Benefícios: Reusabilidade
Interfaces estáveis permitem definir
componentes genéricos que podem ser
reutilizados em diversas aplicações
Com a maturidade dos componentes, tem-se:
 Qualidade
 Desempenho
 Confiança no funcionamento
Frameworks - Introdução
14
Benefícios: Extensibilidade
Métodos gancho permitem estender o próprio
framework
 Adaptações para construir novos tipos de
aplicações
Os ganchos permitem personalizar as
aplicações para propósitos específicos, sem
alterar a estabilidade do núcleo do
framework
Frameworks - Introdução
15
Benefícios: Inversão de Controle
A arquitetura “executável” do framework é
caracterizada pela inversão de controle
Isto permite que interfaces definam
comportamentos específicos ativados como
objetos de manipulação de eventos, que são
invocados pelo mecanismo de disparo de
eventos e ações do framework

Princípio de Hollywood
Frameworks - Introdução
16
Tipos de Framework: Perspectiva de
Reúso
White Box (Caixa Branca)
 Baseado principalmente em herança e
ligação dinâmica
Realizando herança de classes fundamentais

Sobrescrevendo métodos gancho pré-definidos
Requer conhecimento do código do framework

Permitindo assim estendê-lo sem prejuízo ao núcleo


Frameworks - Introdução
17
Tipos de Framework: Perspectiva de
Reúso
Black Box (Caixa Preta)
 Baseado na definição de interfaces para
componentes que podem ser “plugados”
ao framework via composição de objetos



Componentes que respeitam determinada interface (contrato)
Componentes integrados ao framework
Requer apenas conhecimento da interface
de composição do framework

Pois o núcleo mantém-se inalterado
Frameworks - Introdução
18
Tipos de Framework: Perspectiva de
Reúso
Grey Box (Caixa Cinza)
 Mescla reúso caixa branca com reúso
caixa preta

Em geral e mais desejável:
 Caixa branca para extensão do framework
 Caixa preta para criação de aplicações
Frameworks - Introdução
19
Exemplos
Web: GWT, Struts, Spring, etc...
Mobile: Qt, Cocoa, ...
UI: SWT, Swing
Testes: JUnit, xUnit
Log: Log4J, Java Logging Framework
Persistência: Hibernate, Castor, ...
De domínio de aplicação: JHotDraw, Opt4J
Frameworks - Introdução
20
Processo de Desenvolvimento
1.
Identificar similaridades entre aplicações

De fato, o primeiro passo é a delimitação do
domínio...

... mas isso depende do caso:


às vezes um domínio tem aplicações bem
diferentes
e em outros casos, aplicações aparentemente
de domínios diferentes podem gerar a
necessidade de um framework no nível de:

Plataforma

Tecnologia

Sistema Operacional
Frameworks - Introdução
21
Processo de Desenvolvimento
1.
Identificar similaridades entre aplicações
 Esta fase funciona melhor se a equipe de
desenvolvimento tiver desenvolvido
várias aplicações similares


Mais fácil de identificar hot/frozen spots
Porém é possível também “observar o
que existe no mundo”

Deve-se ter cuidado para não tornar o framework mais
complexo do que necessário para a sua necessidade
Frameworks - Introdução
22
Processo de Desenvolvimento
2. Definir núcleo invariante (Frozen Spots)

O que não depende de aplicações específicas?
3. Definir ganchos para parte variante (Hot spots)

O que é específico das aplicações?
4. Qual o tipo de reúso?

Quais os ganchos de reutilização?

Quais os ganchos de extensão do framework
5. Projeto, implementação e testes
6. Distribuição
Frameworks - Introdução
23
O que vimos hoje?
Frameworks - Introdução
Frameworks - Introdução
24
O que veremos na próxima aula?
Frameworks - Projeto
Frameworks - Introdução
25
Dúvidas?
?
Frameworks - Introdução
26
Download

21.Frameworks