Post on 18-Apr-2015
Frameworks - IntroduçãoProfessor: Hyggo Almeida
O que vimos na última aula?
Pool de Threads
2Frameworks - Introdução
O que veremos hoje?
Frameworks - Introdução
3Frameworks - Introdução
Reuso, reuso, reuso
Objetivo sempre: reutilizar código
Reutilizar classes
Reutilizar bibliotecas Collections, IO, ...
Vamos um passo além
3 Aplicações “Calculadora”
5Frameworks - Introdução
Simples
Científica
Financeira
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?
6Frameworks - Introdução
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 “semi-completa”, reutilizável, que pode
ser especializada para produzir aplicações personalizadas
8Frameworks - Introdução
Conceito
Identificam-se similaridades entre aplicações e cria-se um núcleo invariante com ganchos para extensão
9Frameworks - Introdução
NúcleoUI
Relatório
BD
Rede
Frozen spots
Hot Spots
Exemplo
Frozen spots
10Frameworks - Introdução
Barra Menu
Botões janela
“Visor”
Botões desfazer e limpar
Botões numéricos
Total
Botões de operaçõesbásicas
Exemplo
Hot spots
11Frameworks - Introdução
Ganchos para novasfuncionalidades
Benefícios
Os principais benefícios de frameworks de aplicação são: Modularidade Reusabilidade Extensibilidade Inversão de controle
12Frameworks - Introdução
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
13Frameworks - Introdução
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 14
Frameworks - Introdução
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 15
Frameworks - Introdução
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 16
Frameworks - Introdução
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
17Frameworks - Introdução
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
18Frameworks - Introdução
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
19Frameworks - Introdução
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, Opt4J20
Frameworks - Introdução
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 21
Frameworks - Introdução
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
22Frameworks - Introdução
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ção23
Frameworks - Introdução
O que vimos hoje?
Frameworks - Introdução
24Frameworks - Introdução
O que veremos na próxima aula?
Frameworks - Projeto
25Frameworks - Introdução
Dúvidas?
?26Frameworks - Introdução