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