1 pattern languages of program design 5 (plopd5) editado por dragos manolescu, markus voelter e...
TRANSCRIPT
![Page 1: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/1.jpg)
1
Pattern Languages of Program Design 5 (PLoPD5)
Editado por Dragos Manolescu, Markus Voelter e James Noble
Erich Soares Machado 3680544Flavio da Silva Mori Junior 3671130
![Page 2: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/2.jpg)
2
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
![Page 3: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/3.jpg)
3
Patterns for Plug-ins
Padrão Arquiteturalpor Klaus Marquardt
![Page 4: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/4.jpg)
4
Introdução
Flexibilidade, adaptabilidade e extensibilidade não vem de graça
Custo para estender softwares é subestimado
Flexibilidade: Design cuidadoso Configurabilidade Componentes
![Page 5: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/5.jpg)
5
Introdução
Popularidade dos componentes
Plug-ins X Componentes
Sistemas quase “pelados”
Plug-ins se tornaram populares com a plataforma Eclipse
![Page 6: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/6.jpg)
6
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
![Page 7: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/7.jpg)
7
Exemplo
Sistema de Segurança
CentralDados
DadosDados
Dados
Monitoramento Anti-Aéreo(Plug-in)
Sistema de Detecçãode Intrusos
(Plug-in)
Monitoramento dasAtividades das
Estagiárias(Plug-in)
Sistema “Armageddon”de Detecção de Meteoros
(Plug-in)
![Page 8: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/8.jpg)
8
Usos conhecidos
Eclipse
IE, Firefox, Netscape
Adobe Photoshop, Adobe Acrobat
Microsoft Word
Windows, Linux, MacOS X (device drivers)
![Page 9: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/9.jpg)
9
Visão Geral
![Page 10: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/10.jpg)
10
Plug-in
ContextoUma aplicação que precisa ser adaptável ou ser extensível para suportar futuras funcionalidades ou módulos
ProblemaComo adicionar funcionalidade depois?Como incrementar a funcionalidade após a distribuição?
![Page 11: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/11.jpg)
11
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
Tipo de funcionalidade bem definido Funcionalidades específicas
Núcleo da aplicação estático Evolução da tecnologia
![Page 12: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/12.jpg)
12
Plug-in - Solução
Fatorar a funcionalidade
Colocá-la em componente separado
Definir uma interface (Plug-ins Contract)
![Page 13: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/13.jpg)
13
Plug-in - Conseqüências
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
![Page 14: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/14.jpg)
14
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)
![Page 15: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/15.jpg)
15
Plug-in Contract
ContextoOs projetos da aplicação e de plug-in já foram estabelecidos, e o propósito principal dos plug-ins é definido
ProblemaComo a aplicação define e descreve a interface para os plug-ins?
![Page 16: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/16.jpg)
16
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
![Page 17: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/17.jpg)
17
Plug-in Contract - Solução
Interface = ContratoAplicação Principal
Imple-mentation
Plug-InDefinition Framework
Interface
Plug-in
![Page 18: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/18.jpg)
18
Plug-in Contract – Conseqüências
Facilita a organização Encapsulamento da aplicação e dos plug-
ins 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”
![Page 19: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/19.jpg)
19
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
![Page 20: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/20.jpg)
20
Framework-Providing Application
ContextoUma aplicação teve suas funcionalidades fatoradas, de forma a permitir sua implementação através de plug-ins
ProblemaComo um plug-in pode adicionar sua funcionalidade?
Também Conhecido ComoAplicação Principal, Contexto do Plug-in
![Page 21: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/21.jpg)
21
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
![Page 22: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/22.jpg)
22
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
![Page 23: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/23.jpg)
23
Framework-Providing Application - Conseqüências
Propósito principal é a integração Mesma infra-estrutura para todos os plug-
ins 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
![Page 24: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/24.jpg)
24
Framework-Providing Application - Implementação
Parametrização X Herança
Controle do acesso a partir do plug-in por meio de Façades
![Page 25: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/25.jpg)
25
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
![Page 26: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/26.jpg)
26
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 plug-ins ativar.
Problema:Como os plug-ins serão ativados de forma que sejam reconhecidos pela aplicação?
![Page 27: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/27.jpg)
27
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
![Page 28: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/28.jpg)
28
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
![Page 29: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/29.jpg)
29
Plug-in Registration - Conseqüências
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
![Page 30: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/30.jpg)
30
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
![Page 31: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/31.jpg)
31
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)
![Page 32: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/32.jpg)
32
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?
![Page 33: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/33.jpg)
33
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
![Page 34: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/34.jpg)
34
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
![Page 35: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/35.jpg)
35
Plug-in Lifecycle - Conseqüências
Ciclo de vida definido e controlável
Ação e reação
Permite verificação
![Page 36: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/36.jpg)
36
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
![Page 37: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/37.jpg)
37
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
![Page 38: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/38.jpg)
38
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?
![Page 39: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/39.jpg)
39
Plug-in Package - Forças
Interfaces personalizadas Curva de aprendizado e menor estabilidade
Separação diminui coesão Desenvolvimento em paralelo
![Page 40: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/40.jpg)
40
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
![Page 41: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/41.jpg)
41
Plug-in Package - Conseqüências
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
![Page 42: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/42.jpg)
42
Cooperating Plug-ins
ContextoUma 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.
ProblemaComo as melhorias funcionais podem se estender por múltiplas camadas?
Também Conhecido ComoOne Plug-in per Task
![Page 43: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/43.jpg)
43
Cooperating Plug-ins - Forças
Definição concisa e completa Interpretação e visão específicas
Utilidade Dificuldade
![Page 44: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/44.jpg)
44
Cooperating Plug-ins - Solução
Criar uma definição para cada tarefa ou domínio
Identificadores para plug-ins com o mesmo propósito
![Page 45: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/45.jpg)
45
Cooperating Plug-ins - Conseqüências
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
![Page 46: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/46.jpg)
46
Cooperating Plug-ins - Implementação
Aplicação deve definir divisão entre plug-ins
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
![Page 47: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/47.jpg)
47
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
![Page 48: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/48.jpg)
48
Plug-in Based Product
ContextoDefine-se um Framework Providing Application, e diversos plug-ins ou Plug-in Packages estão disponíveis.
ProblemaComo juntar as peças de forma a aumentar a satisfação do usuário final?
![Page 49: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/49.jpg)
49
Plug-in Based Product - Forças
Funcionalidade Simplicidade
Aplicação não conhece plug-ins disponíveis Valor agregado
Separação Valor funcional
![Page 50: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/50.jpg)
50
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
![Page 51: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/51.jpg)
51
Plug-in Based Product - Conseqüências
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
![Page 52: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/52.jpg)
52
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
![Page 53: 1 Pattern Languages of Program Design 5 (PLoPD5) Editado por Dragos Manolescu, Markus Voelter e James Noble Erich Soares Machado3680544 Flavio da Silva](https://reader035.vdocuments.net/reader035/viewer/2022070507/5706384d1a28abb8238f6a66/html5/thumbnails/53.jpg)
53
Plug-in Based Product
Usos conhecidos Eclipse Zeus