260 likes | 369 Views
Frameworks - Introdução. Professor: Hyggo Almeida. O que vimos na última aula ?. Pool de Threads. O que veremos hoje ?. Frameworks - Introdução. Reuso, reuso, reuso. Objetivo sempre: reutilizar c ódigo Reutilizar classes R eutilizar bibliotecas Collections , IO, ...
E N D
Frameworks - Introdução Professor: Hyggo Almeida
O que vimos na última aula? • Pool de Threads Frameworks - Introdução
O que veremos hoje? • Frameworks - Introdução Frameworks - 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” Científica Simples Financeira Frameworks - Introdução
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
Arcabouço/Framework • 1esqueleto, armação dos ossos do corpohumanoou de qualquer animal 2ossatura do tórax, arca do peito3delineamentoinicial; esboço, madeirameEx.: a. de umapintura, de um romance 4estrutura (de madeira, ferro etc.) de umaconstrução5armação de umamáquina; carcaça
Definição Um framework é uma aplicação “semi-completa”, reutilizável, que pode ser especializada para produzir aplicaçõespersonalizadas Frameworks - Introdução
Conceito • Identificam-se similaridades entre aplicações e cria-se um núcleo invariante com ganchos para extensão Núcleo UI BD Relatório Rede Frozen spots Hot Spots Frameworks - Introdução
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
Exemplo • Hot spots Ganchos para novas funcionalidades Frameworks - Introdução
Benefícios • Os principais benefícios de frameworks de aplicação são: • Modularidade • Reusabilidade • Extensibilidade • Inversão de controle Frameworks - 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 Frameworks - 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 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 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 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 Frameworks - 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 Frameworks - 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 Frameworks - 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, Opt4J Frameworks - Introdução
Processo de Desenvolvimento • 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
Processo de Desenvolvimento • 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
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
O que vimos hoje? • Frameworks - Introdução Frameworks - Introdução
O que veremos na próxima aula? • Frameworks - Projeto Frameworks - Introdução
Dúvidas? ? Frameworks - Introdução