Pattern Languages of Program Design 5 PLo PD





















































- Slides: 53

Pattern Languages of Program Design 5 (PLo. PD 5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado 3680544 Flavio da Silva Mori Junior 3671130 1

Categorias dos Padrões ¡ ¡ ¡ Padrões de Projeto Padrões de Concorrência, Rede e Tempo-Real Sistemas Distribuídos Padrões de Domínio Específico Padrões Arquiteturais Meta-Padrões 2

Patterns for Plug-ins Padrão Arquitetural por Klaus Marquardt 3

Introdução ¡ Flexibilidade, adaptabilidade e extensibilidade não vem de graça ¡ Custo para estender softwares é subestimado ¡ Flexibilidade: l l l Design cuidadoso Configurabilidade Componentes 4

Introdução ¡ Popularidade dos componentes ¡ Plug-ins X Componentes ¡ Sistemas quase “pelados” ¡ Plug-ins se tornaram populares com a plataforma Eclipse 5

O “sabor” Plug-in de Componentes ¡ ¡ ¡ Aplicação em particular X Uso geral Preservar utilidade da aplicação Componentes possuem funcionalidades completas Ex. : CORBA Object Services Plug-ins são extensões mais específicas 6

Exemplo Sistema de Detecção de Intrusos (Plug-in) Da d os os d Da Monitoramento Anti-Aéreo (Plug-in) Monitoramento das Atividades das Estagiárias (Plug-in) os d Da Sistema de Segurança Central Da do s Sistema “Armageddon” de Detecção de Meteoros (Plug-in) 7

Usos conhecidos ¡ Eclipse ¡ IE, Firefox, Netscape ¡ Adobe Photoshop, Adobe Acrobat ¡ Microsoft Word ¡ Windows, Linux, Mac. OS X (device drivers) 8

Visão Geral 9

Plug-in ¡ Contexto Uma aplicação que precisa ser adaptável ou ser extensível para suportar futuras funcionalidades ou módulos ¡ Problema Como adicionar funcionalidade depois? Como incrementar a funcionalidade após a distribuição? 10

Plug-in - Forças ¡ ¡ ¡ Possibilidade de extensão Equipes diferentes estão envolvidas Custo da distribuição Aumento de lucros Funcionalidades desconhecidas Tipo de funcionalidade bem definido Funcionalidades específicas Núcleo da aplicação estático Evolução da tecnologia 11

Plug-in - Solução ¡ Fatorar a funcionalidade ¡ Colocá-la em componente separado ¡ Definir uma interface (Plug-ins Contract) 12

Plug-in - Conseqüências J J J K L Possibilidade de extensão após a distribuição Entrar mais cedo no mercado ($$$) Extensões são inofensivas Mais de uma distribuição pode ser necessária Necessidade de prever os tipos de extensões 13

Plug-in - Implementação ¡ ¡ ¡ Localizar pontos em aberto nos requerimentos Utilização de tecnologia que permita carregamento dinâmico (DLL, . NET) Separar o projeto físico (execução) e o projeto lógico (funcionalidades) 14

Plug-in Contract ¡ ¡ Contexto Os projetos da aplicação e de plug-in já foram estabelecidos, e o propósito principal dos plug-ins é definido Problema Como a aplicação define e descreve a interface para os plug-ins? 15

Plug-in Contract - Forças ¡ ¡ ¡ Desenvolvimento disjunto Integração e “look and feel” Diferentes equipes Padronização Acesso a classes e serviços chave da aplicação Portabilidade 16

Plug-in Contract - Solução ¡ Interface = Contrato Aplicação Principal Implementation Plug-In Definition Framework Interface Plug-in 17

Plug-in Contract – Conseqüências J J J L L Facilita a organização Encapsulamento da aplicação e dos plugins Permite desenvolvimento independente. Tratamento idêntico dos plug-ins Habilita integração total Potencial de evolução limitado pela própria interface Não é suficiente para integração total e “look and feel” 18

Plug-in Contract - Implementação ¡ Não depender de plug-ins específicos ¡ Restrições de conhecimento mútuo ¡ Estabilidade importante para a aplicação principal 19

Framework-Providing Application ¡ Também Conhecido Como Aplicação Principal, Contexto do Plug-in ¡ Contexto Uma aplicação teve suas funcionalidades fatoradas, de forma a permitir sua implementação através de plug-ins ¡ Problema Como um plug-in pode adicionar sua funcionalidade? 20

Framework-Providing Application Forças ¡ ¡ ¡ Domínio definido pela aplicação Independência do plug-in com a aplicação Infra-estrutura da aplicação Necessidades do plug-in Iniciar logo as vendas ($$$) Integração entre os plug-ins 21

Framework-Providing Application Solução ¡ ¡ ¡ Aplicação oferece um arcabouço caixa -preta Oferece oportunidades para herança e parametrização Carregamento e ativação dos plug-ins e outros serviços técnicos 22

Framework-Providing Application Conseqüências J J K L Propósito principal é a integração Mesma infra-estrutura para todos os plugins Reuso de plug-ins por aplicações com mesmo arcabouço Independência da implementação da aplicação Combinações entre plug-ins requerem medidas especiais Aumento do custo do desenvolvimento 23

Framework-Providing Application Implementação ¡ ¡ Parametrização X Herança Controle do acesso a partir do plug-in por meio de Façades 24

Framework-Providing Application Usos Conhecidos ¡ ¡ ¡ Sistemas operacionais não definem aplicações, mas oferecem um contexto técnico Eclipse oferece uma infra-estrutura, mas inclui somente uma aplicação mínima Microsoft Word e navegadores definem um domínio de aplicação e oferecem uma funcionalidade central 25

Plug-in Registration ¡ Contexto: A aplicação principal definiu o Framework Interfaces e o Plug-in Definitions. O usuário ou a aplicação decide quais plugins ativar. ¡ Problema: Como os plug-ins serão ativados de forma que sejam reconhecidos pela aplicação? 26

Plug-in Registration - Forças Aplicação não conhece os plug-ins Plug-ins precisam se anunciar antes de uso ¡ Inicialização pelo usuário chata Instalação automática ¡ Aplicação conhece os gatilhos Os plug-ins conhecem os seus gatilhos ¡ 27

Plug-in Registration - Solução ¡ ¡ ¡ Aplicação define onde os plug-ins se registram Plug-in se instala e define seu gatilho de invocação Plug-in é inicializado quando a aplicação recebe o gatilho 28

Plug-in Registration - Conseqüências J J K L Tempo de inicialização independe dos plug-ins Interação do usuário não necessária Instalação a qualquer hora Instalação automatizada e inicializada remotamente Programa de instalação diferente Conflitos de versões 29

Plug-in Registration - Implementação Registro passivo ¡ Por extensão do arquivo ¡ Plug-ins definem os seus pontos de gatilho Registro ativo ¡ Plug-ins contatam a aplicação em execução ¡ Aumenta Plug-in Contract e maior custo ¡ Integração mais acoplada e invocação mais rápida Registro baseado em gatilhos ¡ Gatilhos desconhecidos com link para o programa de instalação 30

Plug-in Registration - Usos Conhecidos ¡ ¡ Registro de device drivers em tempo de execução (Windows XP) Registro ativo bem evasivo com recompilação do kernel (Unix/Linux) 31

Plug-in Lifecycle ¡ ¡ Contexto: Um Plug-in Contract foi definido. Agora a aplicação precisa utilizar Plug-ins. Problema: Como a aplicação poderá invocar e controlar os plug-ins? 32

Plug-in Lifecycle - Forças ¡ ¡ Dinâmica em tempo de execução Cada fase exige medidas especiais Invocação não depende do plug-in Aplicação controla os plug-ins 33

Plug-in Lifecycle - Solução Ciclo de vida do plug-in definido pela aplicação ¡ Instância - (des)carregamento, (des)ativação ¡ Tipo de plug-in - registro ¡ Uma função para cada transição ¡ Ciclos de vida para instâncias e para tipos de plug-in ¡ 34

Plug-in Lifecycle - Conseqüências J Ciclo de vida definido e controlável J Ação e reação J Permite verificação 35

Plug-in Lifecycle - Implementação ¡ ¡ ¡ ¡ Verificação de plug-ins registrados Usuário seleciona plug-ins Carregamento na inicialização ou primeira invocação Escolha do uso feita pelo Plug-in Based Application Invocação agendada Invocação automática Invocação orientada a eventos 36

Plug-in Lifecycle – Usos Conhecidos ¡ ¡ Eclipse, Adobe Photoshop e Microsoft Word – demanda do usuário Sistemas operacionais – na inicialização ou eventos externos Protetores de tela – agendados (timer) Navegadores – conteúdo da página 37

Plug-in Package ¡ ¡ Contexto: Funcionalidades da aplicação foram fatoradas em plug-ins e o Plug-in Contract está disponível. Problema: Como estender um plug-in para torná -lo um componente distribuível? 38

Plug-in Package - Forças ¡ ¡ Interfaces personalizadas Curva de aprendizado e menor estabilidade Separação diminui coesão Desenvolvimento em paralelo 39

Plug-in Package - Solução ¡ ¡ ¡ Extensão funcional como um pacote Interface do plug-in - classes de definição e arquivos adicionais Pacote – plug-in central, plug-ins cooperativos, arquivos de recursos, “helpers” Identifique as funções do ciclo de vida e ache as interfaces técnicas Usar definições do Plug-in Contract personalizadas 40

Plug-in Package - Conseqüências J J J K L L Aumento da estabilidade da interface Interfaces padrões podem ser adicionadas Desenvolvimento em paralelo Coesão de plug-ins relacionados Conforto e conveniência para usuários Tamanho no lugar de complexidade Política para as versões dos pacotes Partes das interfaces não são controladas pela aplicação 41

Cooperating Plug-ins ¡ Também Conhecido Como One Plug-in per Task ¡ Contexto Uma aplicação definiu um Plug-in Contract. A integração total requer melhorias específicas além do modelo de extensão do plug-in, como visão e controle específicos, e possivelmente troca de dados. ¡ Problema Como as melhorias funcionais podem se estender por múltiplas camadas? 42

Cooperating Plug-ins - Forças ¡ ¡ Definição concisa e completa Interpretação e visão específicas Utilidade Dificuldade 43

Cooperating Plug-ins - Solução ¡ ¡ Criar uma definição para cada tarefa ou domínio Identificadores para plug-ins com o mesmo propósito 44

Cooperating Plug-ins - Conseqüências J J K K L Limitar domínios técnicos Comunicação em camadas Níveis extras de empacotamento Necessidade de identificação Soluções muito específicas podem precisar do Plug-in Based Product 45

Cooperating Plug-ins - Implementação ¡ ¡ Aplicação deve definir divisão entre plugins Plug-ins de mesma interface seguem o mesmo Plug-in Contract Todos os plug-ins seguem o mesmo Framework Interface - Plug-in Definitions que muda Dividir o Framework Interface em seções 46

Cooperating Plug-ins – Usos conhecidos ¡ LSM e Zeus definem plug-ins distintos com o mesmo propósito de comunicação e visualização, que são empacotados e atualizados em conjunto 47

Plug-in Based Product ¡ ¡ Contexto Define-se um Framework Providing Application, e diversos plug-ins ou Plug-in Packages estão disponíveis. Problema Como juntar as peças de forma a aumentar a satisfação do usuário final? 48

Plug-in Based Product - Forças ¡ ¡ ¡ Funcionalidade Simplicidade Aplicação não conhece plug-ins disponíveis Valor agregado Separação Valor funcional 49

Plug-in Based Product – Solução ¡ ¡ Empacotar um produto incluindo o Framework Providing Application e diversos Plug-in Packages Criar uma suíte funcional homogênea Estabelecer um modelo de preços Atualizações 50

Plug-in Based Product Conseqüências J J J L Definição sem código Responsabilidade do produto Modelo de negócios Foco no valor para o usuário final Estratégia de atualização Obsolescência 51

Plug-in Based Product Implementação ¡ ¡ ¡ Criar um propósito para a aplicação principal Definir mais de uma interface de plug -in se necessário Definir responsabilidade de integração como uma variedade de plug-in 52

Plug-in Based Product Usos conhecidos ¡ Eclipse ¡ Zeus 53