![Page 1: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/1.jpg)
Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e
instanciação de frameworks orientados a objetos
Profa. Dra. Rosana Teresinha Vaccare Braga
Instituto de Ciências Matemáticas e de Computação
Universidade de São Paulo11 de agosto de 2004
Laboratório de Engenharia de Software
Instituto de Ciências Matemáticas e de Computação Universidade de São PauloSão Carlos – SP
SugarloafPLoP 2004 – Fortaleza - CE
![Page 2: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/2.jpg)
2
Organização
Parte 1– Introdução– Padrões – Linguagens de Padrões – Criação de Linguagens de Padrões
Parte 2– Modelagem de Sistemas usando Linguagens de Padrões– Frameworks– Construção de Frameworks a partir de uma Linguagem
de Padrões– Instanciação de um Framework com base em uma
Linguagem de Padrões– Conclusões
![Page 3: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/3.jpg)
3
![Page 4: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/4.jpg)
4
Introdução
O que se espera da Engenharia de Software?– Software que funciona!!!
Por que isso não ocorre?– Complexidade– Questões de negócios: cronograma,
funcionalidade e qualidade: escolha dois!
![Page 5: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/5.jpg)
5
Introdução
Como mudar isso?– Melhores ferramentas de teste e depuração?– Atacar a complexidade?
Escrever menos código!!
![Page 6: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/6.jpg)
6
Introdução
Como escrever menos código???
Reuso !!!
![Page 7: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/7.jpg)
7
Introdução
Reuso de Software:– Anos 70: módulos e sub-rotinas– Anos 80: classes e geradores de
aplicação– Anos 90: análise de domínio,
componentes, padrões e frameworks;
![Page 8: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/8.jpg)
8
Introdução aos Padrões
![Page 9: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/9.jpg)
9
Introdução aos Padrões
Origem dos padrões: – Christopher Alexander (padrões de
arquitetura para construção de casas, bairros, cidades, etc.)
Em software: – Beck e Cunningham: 1987, Peter Coad: 1992,
James Coplien – 1992, Gamma et al – 1995– Primeira conferência PLoP – 1994– No Brasil: SugarloafPLoP!!!
![Page 10: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/10.jpg)
10
Padrões de Software
Por que Padrões?–Desenvolvedores acumulam soluções para os problemas que resolvem com freqüência –Essas soluções são difíceis de serem elaboradas e podem aumentar a produtividade, qualidade e uniformidade do software–Como documentar essas soluções de forma que outros desenvolvedores, menos experientes, possam utilizá-las?
![Page 11: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/11.jpg)
11
Padrões de Software
Padrões de Software:–Descrevem soluções para problemas que ocorrem com freqüência no desenvolvimento de software (Gamma 95)
Um bom padrão:–resolve um problema–é um conceito aprovado (não apenas teoria)–a solução não é óbvia–descreve um relacionamento (estruturas e mecanismos)–tem um componente humano significativo
![Page 12: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/12.jpg)
12
Padrões de Software
Vantagens de Padrões?•Aumento de produtividade•Uniformidade na estrutura do software•Aplicação imediata por outros desenvolvedores•Redução da complexidade: blocos construtivos
![Page 13: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/13.jpg)
13
Padrões de Software
Formato–Existem diversos formatos para os padrões, por exemplo•GoF•Coplien (canônico)•Alexander
– Os seguintes elementos são obrigatórios:•Problema•Contexto•Forças•Solução
![Page 14: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/14.jpg)
14
Relacionamento entre Elementos do Padrão (Meszaros & Doble)
Usuário do Padrão
Contexto
Forças
SoluçãoProblema
possui
opera em um
prioriza
^resolve< soluciona
![Page 15: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/15.jpg)
15
Padrões de Software
Formato–Os seguintes elementos são opcionais:•Contexto resultantes•Padrões relacionados•Outras soluções para o mesmo problema•Variantes do padrão •Exemplos•Amostra de código•Raciocínio da solução•Também conhecido por
![Page 16: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/16.jpg)
16
Exemplo: Padrões de Projeto - GoF
Catálogo de Padrões de Projeto [Gamma95]– Dois critérios de classificação
• Propósito - reflete o que o padrão faz– De Criação: trata da criação de objetos– Estrutural: cuida da composição de classes e objetos– Comportamental: caracteriza o modo como as classes
e objetos interagem e distribuem responsabilidades• Escopo
– Classe: trata do relacionamento entre classes e subclasses (herança - relacionamento estático)
– Objetos: lida com a manipulação de objetos (podem ser modificados em tempo de execução)
GoF: Gang of Four – apelido dado aos quatro autores do livro
![Page 17: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/17.jpg)
Padrões de Projeto - GoFPropósito
De Criação Estrutural ComportamentalClasse Factory Method Adapter Interpreter
Template Method
Esco
po
Objeto Abstract FactoryBuilderPrototypeSingleton
AdapterBridgeCompositeDecoratorFacadeFlyweygthProxy
Chain of ResponsabilityCommandIteratorMediatorMementoObserverStateStrategyVisitor
![Page 18: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/18.jpg)
18
Padrões de Projeto
Composite (Objeto Estrutural)– Intenção (Intent)
• compõe objetos em estruturas de árvore para representar hierarquias part-whole. Composite deixa o cliente tratar objetos individuais e composição de objetos uniformemente.
![Page 19: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/19.jpg)
19
Padrões de Projeto
– Motivação (Motivation)• Editores gráficos permitem aos usuários
construir diagramas complexos, agrupando componentes simples
– Implementação simples: definir uma classe para primitivas gráficas tais como Texto, Linhas e outras classes que agem como depósitos (containers) para essas primitivas
– Problema: Código que usa essas classes deve tratar primitivas e objetos do depósito diferentemente, tornando a aplicação mais complexa
![Page 20: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/20.jpg)
20
Padrões de Projeto
• O Composite cria uma classe abstrata que representa primitivas e seus depósitos.
![Page 21: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/21.jpg)
21
Padrões de Projeto
Exemplo de composição recursiva de objetos
![Page 22: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/22.jpg)
22
Padrões de Projeto
– Aplicabilidade (Applicability)• representar hierarquias de objetos part-
whole• permitir aos usuários ignorar a diferença
entre composições de objetos e objetos individuais. Todos os objetos na estrutura são tratados uniformemente
![Page 23: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/23.jpg)
23
Padrões de Projeto
– Estrutura (Structure)
![Page 24: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/24.jpg)
24
Padrões de Projeto
– Participantes (Participants)• Component (Grafic)
– declara a interface para os objetos na composição
– implementa o comportamento padrão para a interface comum de todas as classes, quando apropriado
– declara uma interface para acessar e gerenciar os componentes filho
– define uma interface para acessar o pai de um componente na estrutura recursiva, implementado-o se for apropriado
![Page 25: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/25.jpg)
25
Padrões de Projeto
• Leaf (Rectangle, Line, Text, etc.)– representa objetos “folha” na composição. Uma
folha não tem filhos– define o comportamento para objetos primitivos na
composição• Composite (Picture)
– define o comportamento para componentes que têm filhos
– armazena componentes filho– implementa operações relacionadas aos filhos na
interface Component• Client
– manipula objetos na composição pelo através da interface Component
![Page 26: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/26.jpg)
26
Padrões de Projeto
– Colaboradores (Collaborations)• Clients usam a interface Component para
interagir com objetos na estrutura composta.
• Se o receptor é uma folha então o pedido é manipulado diretamente
• Se o receptor é um Composite então os pedidos são enviados para seus componentes filhos
![Page 27: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/27.jpg)
27
Padrões de Projeto
– Conseqüências (Consequences)• define hierarquias de classes que
consistem de objetos primitivos e compostos
• simplifica o cliente. Clientes podem tratar estruturas compostas e objetos individuais de maneira uniforme
• facilita a adição de novos componentes
![Page 28: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/28.jpg)
28
Padrões de Projeto
– Exemplo de Código (Sample Code)class Equipment { public: virtual ~Equipment(); const char* Name() { return _name; } virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); virtual void Add(Equipment*); virtual void Remove(Equipment*); virtual Iterator* CreateIterator(); protected: Equipment(const char*); private: const char* _name; };
class CompositeEquipment : public Equipment { public: virtual ~CompositeEquipment(); virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); virtual void Add(Equipment*); virtual void Remove(Equipment*); virtual Iterator* CreateIterator(); protected: CompositeEquipment(const char*); private: List _equipment; };
![Page 29: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/29.jpg)
29
Padrões de Projeto
class FloppyDisk : public Equipment { public: FloppyDisk(const char*); virtual ~FloppyDisk(); virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); };
![Page 30: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/30.jpg)
30
Padrões de Projeto
– Usos Conhecidos (Known Uses)• Presente em quase todos os sistemas OO• A classe original View do MVC• RTL Smalltalk compiler framework• Etc.
![Page 31: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/31.jpg)
31
Padrões de Projeto
– Padrões Relacionados (Related Patterns)• Chain of Responsibility• Decorator• Flyweight• Iterator• Visitor
![Page 32: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/32.jpg)
32
Linguagens de Padrões
“Se padrões são úteis, conjuntos de padrões que podem ser usados juntos na construção de arquiteturas completas são ainda mais úteis”
–(Brugali, 2000)“All acts of building are governed by a pattern language of some sort.”
– (Alexander, 1979)
![Page 33: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/33.jpg)
33
Linguagens de Padrões
Linguagem de Padrões–Coleção estruturada de padrões que se apóiam uns nos outros para transformar requisitos e restrições numa arquitetura (Coplien, 98).
![Page 34: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/34.jpg)
34
Linguagens de Padrões
Linguagens de Padrões: guiam o desenvolvimento de aplicações de um domínio específico
P1
P2
P8
P3 P4
P5 P6P7
P1
P2
P8
P3 P4
P5 P6P7
P1
P2
P8
P3 P4
P5 P6P7
![Page 35: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/35.jpg)
35
Sugestão de estrutura para uma Linguagens de
PadrõesIntenção da Linguagem
– Breve descrição do que a linguagem almeja– Semelhante a um resumo da linguagem
Mapa da Linguagem– Um diagrama que mostra um exemplo de como
os padrões apóiam-se uns nos outros e de como se relacionam
Descrição da Linguagem– Uma descrição de como a linguagem de padrões
é morfologicamente e funcionalmente completaOs Padrões que a compõem
![Page 36: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/36.jpg)
36
Exemplo: Linguagem de Padrões GRN
Intenção: A linguagem de padrões GRN oferece, a desenvolvedores inexperientes, material substancial para modelagem de sistemas que lidem com gestão de recursos de negócios – mais especificamente – aplicações nas quais seja necessário registrar transações de aluguel, comercialização ou manutenção de bens ou serviços
![Page 37: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/37.jpg)
37
Exemplo: Linguagem de Padrões GRN
Mapa da linguagem: Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 38: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/38.jpg)
38
Exemplo: Linguagem de Padrões GRN
Descrição da linguagem: A linguagem de padrões GRN possui 15 padrões, agrupados em 3 grupos. No grupo 1 são incluídos os padrões que tratam da identificação dos recursos de negócios; no grupo 2 os padrões que lidam com as transações efetuadas pelo sistema; e no grupo 3 os padrões que cuidam de detalhes associados à maioria das transações de negócio. Os padrões Itemizar a Transação do Recurso, Pagar pela Transação do Recurso e Identificar o Executor da Transação são mostrados dentro de uma caixa, denotando que são aplicáveis a todas as situações nas quais uma seta chega até a borda dessa caixa. A seta sem origem que chega ao padrão 11 significa que esse é o primeiro padrão a ser verificado, seguido dos padrões 12 e 13.
![Page 39: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/39.jpg)
39
Exemplo: Linguagem de Padrões GRN
Os padrões que compõem a linguagem:– Descrição detalhada de cada um dos 15 padrões– No caso da GRN, cada padrão possui as seguintes
seções:• Contexto• Problema• Forças• Solução
– Estrutura– Participantes
• Exemplo• Próximos padrões
![Page 40: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/40.jpg)
P a t t e r n 2 : Q U A N T I F Y T H E R E S O U R C E C o n t e x t
Y o u h a v e i d e n t i f i e d a r e s o u r c e t h a t y o u r a p p l i c a t i o n d e a l s w i t h a n d i t s r e l e v a n t q u a l i t i e s . A n i m p o r t a n t i s s u e t o b e c o n s i d e r e d n o w i s t h e f o r m o f r e s o u r c e q u a n t i f i c a t i o n . T h e r e a r e c e r t a i n a p p l i c a t i o n s i n w h i c h i t i s i m p o r t a n t t o t r a c e s p e c i f i c i n s t a n c e s o f a r e s o u r c e , b e c a u s e t h e y a r e t r a n s a c t e d i n d i v i d u a l l y . F o r e x a m p l e , a b o o k i n a l i b r a r y c a n h a v e s e v e r a l c o p i e s , e a c h l e n t t o a d i f f e r e n t r e a d e r . S o m e a p p l i c a t i o n s d e a l w i t h a c e r t a i n q u a n t i t y o f t h e r e s o u r c e o r w i t h r e s o u r c e l o t s . I n t h e s e a p p l i c a t i o n s , i t i s n o t n e c e s s a r y t o k n o w w h a t p a r t i c u l a r i n s t a n c e o f t h e r e s o u r c e w a s a c t u a l l y t r a n s a c t e d . F o r e x a m p l e , a c e r t a i n w e i g h t o f s t e e l i s s o l d . I n o t h e r a p p l i c a t i o n s , t h e r e s o u r c e i s d e a l t w i t h a s a w h o l e , a s f o r e x a m p l e a c a r t h a t g o e s t o m a i n t e n a n c e o r a d o c t o r t h a t e x a m i n e s a p a t i e n t .
P r o b l e m
H o w d o e s t h e a p p l i c a t i o n q u a n t i f y t h e b u s i n e s s r e s o u r c e ?
F o r c e s K n o w i n g e x a c t l y w h a t i s t h e f o r m o f q u a n t i f i c a t i o n a d o p t e d b y t h e a p p l i c a t i o n i s i m p o r t a n t d u r i n g a n a l y s i s . A w r o n g d e c i s i o n a t t h i s p o i n t m a y c o m p r o m i s e f u t u r e e v o l u t i o n .
. . .
S t r u c t u r e T h e r e a r e f o u r s l i g h t l y d i f f e r e n t s o l u t i o n s f o r t h i s p r o b l e m ,
d e p e n d i n g o n t h e f o r m o f q u a n t i f i c a t i o n . F i g u r e s 4 t h r o u g h 7 s h o w t h e f o u r Q U A N T I F Y T H E R E S O U R C E s u b - p a t t e r n s . W h e n i t i s i m p o r t a n t t o d i s t i n g u i s h a m o n g r e s o u r c e i n s t a n c e s , u s e I N S T A N T I A B L E R E S O U R C E s u b - p a t t e r n ( F i g u r e 4 ) . W h e n t h e r e s o u r c e i s m a n a g e d i n a c e r t a i n q u a n t i t y , u s e t h e M E A S U R A B L E R E S O U R C E s u b - p a t t e r n ( F i g u r e 5 ) .
h a s
1 *
R e s o u r c e I n s t a n c en u m b e rl o c a t i o ns t a t u si s A v a i l a b l e
R e s o u r c ei d C o d ed e s c r i p t i o n
c a l c u l a t e q t t y o f a v a i l a b l e i n s t a n c e s F i g u r e 4 : I N S T A N T I A B L E R E S O U R C E s u b - p a t t e r n
h a s
1*
R e s o u r c ei d C o d ed e s c r i p t i o nq u a n t i t y i n s t o c kr e - s u p p l y l e v e l! # l i s t r e s o u r c e s t o b e r e - s u p p l i e d
M e a s u r e U n i t yi d C o d ed e s c r i p t i o n
F i g u r e 5 : M E A S U R A B L E R E S O U R C E s u b - p a t t e r n
P a r t i c i p a n t s . . . E x a m p l e
. . .
F o l l o w i n g p a t t e r n s A f t e r y o u Q u a n t i f y t h e R e s o u r c e , e x a m i n e y o u r a p p l i c a t i o n t o v e r i f y w h e t h e r i t i s i m p o r t a n t t o k n o w a b o u t t h e r e s o u r c e s s t o r a g e . I f s o , t r y t o a p p l y S T O R E T H E R E S O U R C E ( 3 ) . I f n o t , p r o c e e d e x a m i n i n g y o u r a p p l i c a t i o n t o v e r i f y w h i c h k i n d o f r e s o u r c e t r a n s a c t i o n s a r e d o n e . I f t h e a p p l i c a t i o n c o n c e r n s r e s o u r c e l o c a t i o n o r r e n t a l , y o u s h o u l d a p p l y R E N T T H E R E S O U R C E ( 4 ) . I f t h e a p p l i c a t i o n c o n c e r n s r e s o u r c e t r a d i n g , i . e . , r e s o u r c e p u r c h a s e o r s a l e , y o u s h o u l d a p p l y T R A D E T H E R E S O U R C E ( 6 ) . I f t h e a p p l i c a t i o n d e a l s w i t h r e s o u r c e r e p a i r , y o u s h o u l d a p p l y M A I N T A I N T H E R E S O U R C E ( 9 ) .
![Page 41: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/41.jpg)
41
Como os padrões trabalham juntos?
Cada padrão baseia-se no que foi construído pelos padrões precedentes
Cada padrão cria o contexto para os próximos padrões
Cada padrão maior pode conter padrões de nível mais baixo
![Page 42: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/42.jpg)
42
Linguagens de Padrões
Linguagens de padrões devem ser completas:– Morfologicamente
• Os padrões completam-se para formar uma estrutura completa, sem vazios.
– Funcionalmente• Novas restrições introduzidas pelos padrões são
resolvidas pelos próprios padrões.Se não forem completas das duas formas,
dizemos que são simplesmente “coleções” de padrões– Por exemplo os padrões GOF são coleções
![Page 43: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/43.jpg)
43
Como criar uma linguagem de padrões?
Objetivo: criar uma linguagem de padrões de análise
O uso dessa linguagem ajuda na modelagem de sistemas de domínio específico
O resultado concreto do uso dessa linguagem é a obtenção de um modelo de análise do sistema alvo (diagrama de classes)
![Page 44: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/44.jpg)
44
Como criar uma linguagem de padrões?
Foco em um domínio específicoPrimeiro Passo: conhecer o domínioResultado esperado: modelo do domínio
– Em particular, modelo de classes, pois pretende-se criar uma linguagem de padrões de análise
Como isso pode ser feito:– Experiência prática no desenvolvimento de
sistemas– Engenharia reversa de aplicações existentes– Análise de domínio
![Page 45: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/45.jpg)
Primeiro passo: modelo do domíno
![Page 46: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/46.jpg)
46
Como criar uma linguagem de padrões?
Segundo Passo: determinar os padrõesResultado esperado: lista dos padrões
(nome e intenção)Como isso pode ser feito:
– Estudo de linguagens similares – Especialização a partir de padrões existentes– Isolamento de funções presentes em
aplicações do domínio: básicas e opcionais– Nomeação e organização dos padrões
![Page 47: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/47.jpg)
47
Segundo passo: lista inicial de padrões
Padrão IntençãoLista de Padrões
![Page 48: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/48.jpg)
48
Como criar uma linguagem de padrões?
Terceiro Passo: Estabelecer o relacionamento entre os padrões
Resultado esperado: grafo para a linguagem de padrões
Como isso pode ser feito:– Observar a prioridade de aplicação dos
padrões (básicos e opcionais)– Observar a dependência entre a
aplicação de um padrão e outros possíveis padrões
![Page 49: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/49.jpg)
49
Terceiro passo: grafo da linguagem de padrões
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 50: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/50.jpg)
50
Como criar uma linguagem de padrões?
Quarto Passo: Escrever os padrões propriamente ditos
Resultado esperado: descrição detalhada de cada padrão
Como isso pode ser feito: – Estabelecer um formato e utilizá-lo uniformemente– Usar padrões similares como base para escrita– Não esquecer de referenciar padrões relacionados– Várias iterações podem ser necessárias– Participar de um writer´s workshop
![Page 51: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/51.jpg)
51
Quarto passo: padrões da linguagem
P a t t e r n 2 : Q U A N T I F Y T H E R E S O U R C E C o n t e x t
Y o u h a v e i d e n t i f i e d a r e s o u r c e t h a t y o u r a p p l i c a t i o n d e a l s w i t h a n d i t s r e l e v a n t q u a l i t i e s . A n i m p o r t a n t i s s u e t o b e c o n s i d e r e d n o w i s t h e f o r m o f r e s o u r c e q u a n t i f i c a t i o n . T h e r e a r e c e r t a i n a p p l i c a t i o n s i n w h i c h i t i s i m p o r t a n t t o t r a c e s p e c i f i c i n s t a n c e s o f a r e s o u r c e , b e c a u s e t h e y a r e t r a n s a c t e d i n d i v i d u a l l y . F o r e x a m p l e , a b o o k i n a l i b r a r y c a n h a v e s e v e r a l c o p i e s , e a c h l e n t t o a d i f f e r e n t r e a d e r . S o m e a p p l i c a t i o n s d e a l w i t h a c e r t a i n q u a n t i t y o f t h e r e s o u r c e o r w i t h r e s o u r c e l o t s . I n t h e s e a p p l i c a t i o n s , i t i s n o t n e c e s s a r y t o k n o w w h a t p a r t i c u l a r i n s t a n c e o f t h e r e s o u r c e w a s a c t u a l l y t r a n s a c t e d . F o r e x a m p l e , a c e r t a i n w e i g h t o f s t e e l i s s o l d . I n o t h e r a p p l i c a t i o n s , t h e r e s o u r c e i s d e a l t w i t h a s a w h o l e , a s f o r e x a m p l e a c a r t h a t g o e s t o m a i n t e n a n c e o r a d o c t o r t h a t e x a m i n e s a p a t i e n t .
P r o b l e m
H o w d o e s t h e a p p l i c a t i o n q u a n t i f y t h e b u s i n e s s r e s o u r c e ?
F o r c e s K n o w i n g e x a c t l y w h a t i s t h e f o r m o f q u a n t i f i c a t i o n a d o p t e d b y t h e a p p l i c a t i o n i s i m p o r t a n t d u r i n g a n a l y s i s . A w r o n g d e c i s i o n a t t h i s p o i n t m a y c o m p r o m i s e f u t u r e e v o l u t i o n .
. . .
S t r u c t u r e T h e r e a r e f o u r s l i g h t l y d i f f e r e n t s o l u t i o n s f o r t h i s p r o b l e m ,
d e p e n d i n g o n t h e f o r m o f q u a n t i f i c a t i o n . F i g u r e s 4 t h r o u g h 7 s h o w t h e f o u r Q U A N T I F Y T H E R E S O U R C E s u b - p a t t e r n s . W h e n i t i s i m p o r t a n t t o d i s t i n g u i s h a m o n g r e s o u r c e i n s t a n c e s , u s e I N S T A N T I A B L E R E S O U R C E s u b - p a t t e r n ( F i g u r e 4 ) . W h e n t h e r e s o u r c e i s m a n a g e d i n a c e r t a i n q u a n t i t y , u s e t h e M E A S U R A B L E R E S O U R C E s u b - p a t t e r n ( F i g u r e 5 ) .
h a s
1 *
R e s o u r c e I n s t a n c en u m b e rl o c a t i o ns t a t u si s A v a i l a b l e
R e s o u r c ei d C o d ed e s c r i p t i o n
c a l c u l a t e q t t y o f a v a i l a b l e i n s t a n c e s F i g u r e 4 : I N S T A N T I A B L E R E S O U R C E s u b - p a t t e r n
h a s
1*
R e s o u r c ei d C o d ed e s c r i p t i o nq u a n t i t y i n s t o c kr e - s u p p l y l e v e l! # l i s t r e s o u r c e s t o b e r e - s u p p l i e d
M e a s u r e U n i t yi d C o d ed e s c r i p t i o n
F i g u r e 5 : M E A S U R A B L E R E S O U R C E s u b - p a t t e r n
P a r t i c i p a n t s . . . E x a m p l e
. . .
F o l l o w i n g p a t t e r n s A f t e r y o u Q u a n t i f y t h e R e s o u r c e , e x a m i n e y o u r a p p l i c a t i o n t o v e r i f y w h e t h e r i t i s i m p o r t a n t t o k n o w a b o u t t h e r e s o u r c e s s t o r a g e . I f s o , t r y t o a p p l y S T O R E T H E R E S O U R C E ( 3 ) . I f n o t , p r o c e e d e x a m i n i n g y o u r a p p l i c a t i o n t o v e r i f y w h i c h k i n d o f r e s o u r c e t r a n s a c t i o n s a r e d o n e . I f t h e a p p l i c a t i o n c o n c e r n s r e s o u r c e l o c a t i o n o r r e n t a l , y o u s h o u l d a p p l y R E N T T H E R E S O U R C E ( 4 ) . I f t h e a p p l i c a t i o n c o n c e r n s r e s o u r c e t r a d i n g , i . e . , r e s o u r c e p u r c h a s e o r s a l e , y o u s h o u l d a p p l y T R A D E T H E R E S O U R C E ( 6 ) . I f t h e a p p l i c a t i o n d e a l s w i t h r e s o u r c e r e p a i r , y o u s h o u l d a p p l y M A I N T A I N T H E R E S O U R C E ( 9 ) .
![Page 52: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/52.jpg)
52
Como criar uma linguagem de padrões?
Quinto Passo: Validação da linguagem de padrões
Resultado esperado:linguagem de padrões completa
Como isso pode ser feito:– Utilizar a linguagem de padrões para modelar
sistemas do domínio específico para o qual ela foi criada (pode-se usar os mesmos sistemas para os quais foi feita a análise de domínio ou engenharia reversa, mas preferencialmente usar mais alguns)
– Comparar os resultados com modelos existentes
![Page 53: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/53.jpg)
53
Quinto passo: validação
Gênerodescrição
!#listar filmes por gênero!#listar gêneros preferidos
1
1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretordubladaOuLegendada??incluir?alterar?remover!#listar por código de barras!#listar por nome do filmecalcular qtd de fitas disponíveis!#obter locações por filme
Fita de Videonúmerolocalizaçãostatus?incluir?alterar?remover!consultarStatuspossui
1
LocaçãonúmeroDaLocaçãodataInicialdataFinaldataDeRetornotaxaDeLocaçãopreçoTotaldesconto?locar?retornar!imprimir comprovante locação!#listar locações não entregues!#calcular ganhos no períodocalcular total
ClientecódigonomeendereçocidadeestadotelefoneemaildocumentoIdentificaçãodataNascimento?incluir?alterar?remover!#obter locações por cliente
Taxa de MultaNumDiasAtrasotaxaMulta?incluir?alterarcalcular multa
* 1
solicita
pertence a
1
aplicável a
*
*
*
Recurso
Tipo deRecurso
Instância doRecurso
Destino
Locação doRecurso
Taxa deMulta
relacionadaa
*
ItemLocaçãovalor?incluir?alterar
contém
1
Item daTransação
Gênerodescrição
!#listar filmes por gênero!#listar gêneros preferidos
1
1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretordubladaOuLegendada??incluir?alterar?remover!#listar por código de barras!#listar por nome do filmecalcular qtd de fitas disponíveis!#obter locações por filme
Fita de Videonúmerolocalizaçãostatus?incluir?alterar?remover!consultarStatuspossui
1
LocaçãonúmeroDaLocaçãodataInicialdataFinaldataDeRetornotaxaDeLocaçãopreçoTotaldesconto?locar?retornar!imprimir comprovante locação!#listar locações não entregues!#calcular ganhos no períodocalcular total
ClientecódigonomeendereçocidadeestadotelefoneemaildocumentoIdentificaçãodataNascimento?incluir?alterar?remover!#obter locações por cliente
Taxa de MultaNumDiasAtrasotaxaMulta?incluir?alterarcalcular multa
* 1
solicita
pertence a
1
aplicável a
*
*
*
Recurso
Tipo deRecurso
Instância doRecurso
Destino
Locação doRecurso
Taxa deMulta
relacionadaa
*
ItemLocaçãovalor?incluir?alterar
contém
1
Item daTransação
Gênerodescrição
!#listar filmes por gênero!#listar gêneros preferidos
1
1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretordubladaOuLegendada??incluir?alterar?remover!#listar por código de barras!#listar por nome do filmecalcular qtd de fitas disponíveis!#obter locações por filme
Fita de Videonúmerolocalizaçãostatus?incluir?alterar?remover!consultarStatuspossui
1
LocaçãonúmeroDaLocaçãodataInicialdataFinaldataDeRetornotaxaDeLocaçãopreçoTotaldesconto?locar?retornar!imprimir comprovante locação!#listar locações não entregues!#calcular ganhos no períodocalcular total
ClientecódigonomeendereçocidadeestadotelefoneemaildocumentoIdentificaçãodataNascimento?incluir?alterar?remover!#obter locações por cliente
Taxa de MultaNumDiasAtrasotaxaMulta?incluir?alterarcalcular multa
* 1
solicita
pertence a
1
aplicável a
*
*
*
Recurso
Tipo deRecurso
Instância doRecurso
Destino
Locação doRecurso
Taxa deMulta
relacionadaa
*
ItemLocaçãovalor?incluir?alterar
contém
1
Item daTransação
Sistema 1 Sistema 2
Sistema 3
![Page 54: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/54.jpg)
54
Exemplo de uma Linguagem de Padrões: GRN – Gestão de Recursos
de Negócios
GRN– Desenvolvida com base em experiência
prática no desenvolvimento de sistemas de Gestão de Recursos de Negócio
– Recursos de Negócios: bens ou serviços, por exemplo, produtos ou tempo de um especialista
– Gestão: Locação, Comércio ou Manutenção
![Page 55: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/55.jpg)
55
GRN: Uma linguagem de Padrões para Gestão de Recursos de Negócios
Grupo 2:Transações feitas
com o recurso
Grupo 1:Identificação,
quantificação e armazenamento
do recurso
Grupo 3:Detalhes da Transação
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 56: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/56.jpg)
56
Exemplo de um Padrão da GRN
Padrão 4: Locar o Recurso Contexto
– Sua aplicação lida com aluguel de recursos, que podem ser bens emprestados a um cliente por um certo período ou serviços efetuados por um especialista por determinado tempo. Você já identificou e quantificou tais recursos.
Problema– Como gerenciar aluguéis de recursos realizados por sua
aplicação?
![Page 57: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/57.jpg)
57
Influências Existem diversos detalhes envolvidos no aluguel de um
recurso. Armazenar informação sobre esses detalhes é importante para se conseguir um bom gerenciamento de recursos disponíveis e alugados.
Saber quais foram os aluguéis anteriores pode ajudar gerentes a prever quais recursos merecem mais investimento em futuras aquisições.
Os prós e contras entre uma melhor funcionalidade do sistema, espaço de armazenamento adicional e maior tempo para processamento da informação devem ser analisados cuidadosamente.
Exemplo de um Padrão da GRN (cont.)
![Page 58: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/58.jpg)
– Estrutura
aplicável a
*
*relacionada a
* 1
Locação de Recursonúmero da locaçãodata inicialdata finaldata de retornotaxa de locaçãoobservações?locar?retornar!imprimir comprovante de locação!imprimir comprovante de devolução!#listar locações período!#listar locações vencidas!#calcular ganhos período
Recurso/Instância doRecurso
. . .!#obter locações por recurso!#listar recursos mais locados
10..1
Origemcódigonome!obter locações por origem
realiza solicita
Destinocódigonome!obter locações por destino
Taxa de Multanº de dias de atrasotaxa de multacalcular multa
!get rentals byresource
* 1
Exemplo de um Padrão da GRN (cont.)
![Page 59: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/59.jpg)
59
Participantes– Locação de Recurso: representa todos os detalhes envolvidos na
locação do recurso. Existem métodos para locar o recurso, retornar o recurso (quando o cliente o devolve ao sistema) e para calcular ganhos (por exemplo, ganho mensal ou semanal). Se o sub-padrão Recurso Mensurável foi adotado, um atributo deve ser adicionado a essa classe para denotar a quantidade de recursos locados.
– Recurso/Instância do Recurso: conforme descrito em padrões anteriores. Utilize a classe Instância do Recurso apenas se o sub-padrão Recurso Instanciável tiver sido adotado. Caso contrário, utilize a classe Recurso. Deve-se também decidir se a instância a ser locada é automaticamente fornecida pelo sistema ou se o usuário informa esse dado. Se o sub-padrão Recurso Instanciável foi adotado, métodos para obter e/ou listar a quantidade de instâncias disponíveis para locação em um certo período podem ser adicionados à classe Recurso.
Exemplo de um Padrão da GRN (cont.)
![Page 60: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/60.jpg)
60
Participantes (cont.)– Origem: representa a filial ou departamento da
organização que realiza a locação. Essa classe é opcional nesse padrão, já que em pequenos sistemas a origem é a própria organização e portanto não se justifica criar uma classe para representá-la.
– Destino: representa o beneficiário da locação (por exemplo, o cliente que solicitou o aluguel).
– Taxa de Multa: contém as regras de negócio que guiam o cálculo da multa a ser cobrada quando o recurso é devolvido após a data de vencimento
Exemplo de um Padrão da GRN (cont.)
![Page 61: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/61.jpg)
– Exemplo
1
*
solicita
**
relaciona-se a
* 1
Aluguel de Vídeonúmero do alugueldata de retiradadata para devoluçãodata de devoluçãotaxa?alugar vídeo?devolver vídeo!imprimir comprovante de aluguel!imprimir comprovante de devolução!#listar aluguéi s período!#listar aluguéis vencidos!#calcular ganho período
Fita de Videonúmeroposição na estantesituação!#obter aluguéis por vídeo!#listar fitas mais alugadas
1
1
Filial da Locadoracódigoendereço!obter aluguéis por filial
realiza
Clientecódigonome!obter aluguéis por cliente
Locação deRecurso
Recurso
Taxa de Multanº de diastaxa de multacalcular multa
!get rentals byresource
Taxa deMulta
Origem Destino
aplicável a
Exemplo de um Padrão da GRN (cont.)
![Page 62: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/62.jpg)
62
Próximos Padrões– Olhe agora os padrões da seção 2.3 para especificar
outros detalhes a respeito da transação de locação. Depois disso, verifique se sua aplicação permite a reserva de recursos, olhando para o padrão Reservar o Recurso (5).
Exemplo de um Padrão da GRN (cont.)
![Page 63: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/63.jpg)
63
![Page 64: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/64.jpg)
64
Modelagem de um sistema usando uma linguagem de
padrões
Instanciação da linguagem de padrões para um aplicação específica:– seguir a linguagem de padrões, começando
pelo primeiro padrão– seguir as instruções apresentadas na seção
“Próximos padrões” para prosseguir– O resultado é o diagrama de classes do
sistema
![Page 65: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/65.jpg)
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 66: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/66.jpg)
66
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões
GRN
Padrão 1 – Identificar o Recurso
*
Recurso códigoId descrição !*listar por códigoId !*listar por descrição
tem
0..1
Tipo de Recurso códigoId descrição !listar recursos por tipo
![Page 67: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/67.jpg)
67
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões
GRN
Diagrama de análise após aplicação do Padrão 1
Gênerodescrição
!#listar filmes por gênero* 1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretorlocalizaçãodubladaOuLegendada?status?incluir?alterar?remover!#listar por código de barras!#listar por nome do filme
pertence a
Recurso
Tipo deRecurso
![Page 68: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/68.jpg)
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 69: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/69.jpg)
69
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões
GRN
Padrão 2 – Quantificar o Recurso
![Page 70: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/70.jpg)
70
Diagrama de análise após aplicação do Padrão 2
Gênerodescrição
!#listar filmes por gênero
* 1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretordubladaOuLegendada??incluir?alterar?remover!#listar por código de barras!#listar por nome do filmecalcular qtd fitas disponíveis
pertence a
Fita de Videonúmerolocalizaçãostatus?incluir?alterar?remover!consultarStatus
possui
*1
Recurso
Tipo deRecurso
Instância doRecurso
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões
GRN
![Page 71: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/71.jpg)
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 72: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/72.jpg)
72
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões
GRN
Padrão 4 – Locar o Recurso
aplicável a
*
* relacionada a
* 1
Locação de Recurso número da locação data inicial data final data de retorno taxa de locação observações ?locar ?retornar !imprimir comprovante de locação !imprimir comprovante de devolução !*listar locações período !*listar locações vencidas !*calcular ganhos período
Recurso/Instância do Recurso
. . . !*obter locações por recurso !*listar recursos mais locados
1 0..1
Origem código nome !*listar origens !obter locações por origem
realiza solicita
Destino código nome !*listar destinos !obter locações por destino
Taxa de Multa nº de dias de atraso taxa de multa calcular multa !get rentals by
* 1
![Page 73: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/73.jpg)
Diagrama de análise após aplicação do Padrão 4
Gênerodescrição
!#listar gêneros preferidos
1
1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretordubladaOuLegendada??incluir?alterar?remover
relacionadaa
Fita de Videonúmerolocalizaçãostatus?incluir?alterar?removerconsultarStatus
possui
*1
LocaçãonúmeroDaLocaçãodataInicialdataFinaldataDeRetornotaxaDeLocaçãopreçoTotaldesconto?incluir?alterar?remover
ClientecódigonomeendereçocidadeestadotelefoneemaildocumentoIdentificaçãodataNascimento?incluir?alterar?remover
Taxa de MultaNumDiasAtrasotaxaMulta?incluir?alterarcalcular multa
* 1
solicita
pertence a
*
1
aplicável a
*
*
Recurso
Tipo deRecurso
Instância doRecurso
Destino
Locação doRecurso
Taxa deMulta
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões GRN
![Page 74: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/74.jpg)
Quantificar o Recurso (2)
Armazenar o Recurso (3)
Locar o Recurso (4)
Reservar o Recurso (5)
Comercializar o Recurso (6)
Cotar o Recurso (7)
Conferir a Entrega do Recurso (8)
Manter o Recurso (9)
Cotar a Manutenção (10)
Identificar as Tarefas da Manutenção (14)
Identificar as Peças da Manutenção (15)
Itemizar a Transação do Recurso (11)
Pagar pela Transação do Recurso (12)
Identificar o Executor da Transação (13)
Identificar o Recurso (1)
![Page 75: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/75.jpg)
75
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões
GRN
Padrão 11 – Itemizar a Transação do Recurso
relacionada a
0..* 1
Transação do Recurso . . . calcular total
Recurso / Instância do Recurso
. . .
. . .
1..* contém
Item da Transação quantidade valor
![Page 76: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/76.jpg)
Diagrama de análise após aplicação do Padrão 11
Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões GRN
Gênerodescrição
!#listar filmes por gênero!#listar gêneros preferidos
1
1
FilmecódigoDeBarrasnomeDoFilmeatoresPrincipaisanoDoFilmepreçoDeLocaçãodiretordubladaOuLegendada??incluir?alterar?remover!#listar por código de barras!#listar por nome do filmecalcular qtd de fitas disponíveis!#obter locações por filme
Fita de Videonúmerolocalizaçãostatus?incluir?alterar?remover!consultarStatuspossui
1
LocaçãonúmeroDaLocaçãodataInicialdataFinaldataDeRetornotaxaDeLocaçãopreçoTotaldesconto?locar?retornar!imprimir comprovante locação!#listar locações não entregues!#calcular ganhos no períodocalcular total
ClientecódigonomeendereçocidadeestadotelefoneemaildocumentoIdentificaçãodataNascimento?incluir?alterar?remover!#obter locações por cliente
Taxa de MultaNumDiasAtrasotaxaMulta?incluir?alterarcalcular multa
* 1
solicita
pertence a
1
aplicável a
*
*
*
Recurso
Tipo deRecurso
Instância doRecurso
Destino
Locação doRecurso
Taxa deMulta
relacionadaa
*
ItemLocaçãovalor?incluir?alterar
contém
1
Item daTransação
![Page 77: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/77.jpg)
77
Histórico de Padrões Variantes aplicados
Padrão Variante ou sub-padrão
Papéis desempenhados
1 – Identificar o Recurso Default Recurso = Filme Tipo de Recurso = Gênero
2 – Quantificar o Recurso
Recurso Instanciável Instância do Recurso = Fita de Vídeo
4 – Locar o Recurso Sem origem Locação do Recurso=Locação Destino = Cliente Taxa de Multa = Taxa de Multa
11 – Itemizar a Transação do Recurso
Default Transação = Locação Item da Transação = ItemLocação
![Page 78: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/78.jpg)
78
Frameworks
Definições:– Aplicação semi-completa reutilizável que, quando especializada, produz aplicações personalizadas (Johnson & Foote, 1988) ou
– Coleção de classes abstratas e concretas e a interface entre elas, representando o projeto de um sub-sistema (Pree, 1995)
![Page 79: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/79.jpg)
79
Frameworks
Hot-Spots– Representam as partes do framework de aplicação
que são específicas de sistemas individuais– São projetados para serem genéricos - podem ser
adaptados às necessidades da aplicação Frozen-Spots
– Definem a arquitetura geral de um sistema de software - seus componentes básicos e os relacionamentos entre eles
– Permanecem fixos em todas as instanciações do framework de aplicação
![Page 80: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/80.jpg)
![Page 81: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/81.jpg)
81
Tipos de Frameworks
Framework caixa branca:– reuso por herança e associação dinâmica– deve-se entender detalhes de como o framework
funcionaFramework caixa preta:
– reuso por composição ou definição de interfaces para os componentes.
– deve-se entender apenas a interface do cliente
![Page 82: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/82.jpg)
82
Tipos de Frameworks
Framework caixa cinza:– combinação do caixa branca e do caixa-preta– reuso por herança, associação dinâmica e
definição de interfaces– Levantamento realizado por Yassin e Fayad em
1999: 55% dos frameworks caixa-cinza, 30% dos frameworks caixa-branca e 15% dos frameworks caixa-preta
![Page 83: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/83.jpg)
83
Tipos de Frameworks
Framework Caixa Branca
HotSpot
RR3
![Page 84: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/84.jpg)
84
Tipos de Frameworks
Framework Caixa Preta
HotSpot
R R1R2
R3
Ocorrência devariabilidade
![Page 85: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/85.jpg)
85
Conceitos Básicos
Framework Caixa Cinza
HotSpot
R R1R2
R3
Ocorrência devariabilidade
R4
![Page 86: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/86.jpg)
86
Tipos de framework
Caixa Branca
CaixaPreta
CaixaCinza
Facilidade de desenvolvimento
Facilidade de uso
framework caixa branca é mais fácil de projetar
framework caixa preta é mais fácil de usar
frameworks caixa-branca evoluem para se tornar mais caixa preta
![Page 87: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/87.jpg)
87
Frameworks
Biblioteca de subrotinas–Programa do usuário chama código reusado–Usuário projeta estrutura do programa
Framework–Código reusado chama programa do usuário–Estrutura do programa determinada principalmente pelo código reusado
Inversão de Controle
![Page 88: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/88.jpg)
Frameworks
•Conjunto de classes instanciadas pelo cliente
•Cliente chama funções
•Fluxo de controle não pré-definido
•Interação não pré-definida
•Não tem comportamento “default”
•Cuida da personalização através de subclasses
•Chama funções do cliente
•Controla o fluxo de execução
•Define a interação dos objetos
•Tem comportamento “default”
Biblioteca Framework
![Page 89: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/89.jpg)
89
Classificação de Frameworks de aplicação
Frameworks de Infra-estrutura do Sistema– simplificam o desenvolvimento da infra-
estrutura de sistemas portáveis e eficientes,– exemplos: sistemas operacionais,
comunicação, interfaces com o usuário e ferramentas de processamento de linguagem
– em geral são usados internamente em uma organização de software e não são vendidos a clientes diretamente
![Page 90: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/90.jpg)
90
Classificação de Frameworks de aplicação
Frameworks de Integração de Middleware– Middleware: camada de software entre a rede e as
aplicações, que provê serviços como identificação, autenticação, autorização, diretórios e segurança
– Frameworks de middleware: usados em geral para integrar aplicações e componentes distribuídos.
– projetados para melhorar a habilidade de desenvolvedores em modularizar, reutilizar e estender sua infra-estrutura de software para funcionar “sem costuras” em um ambiente distribuído
– exemplos: Object Request Broker (ORB), middleware orientado a mensagens e bases de dados transacionais
![Page 91: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/91.jpg)
91
Classificação de Frameworks de aplicação
Frameworks de Aplicação Empresarial– voltados a domínios de aplicação mais amplos e
são a pedra fundamental para atividades de negócios das empresas.
– exemplos: telecomunicações, aviação, manufatura e engenharia financeira.
– são mais caros para desenvolver ou comprar, mas podem dar um retorno substancial do investimento, já que permitem o desenvolvimento de aplicações e produtos diretamente
![Page 92: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/92.jpg)
92
Frameworks
•Economia a longo prazo
•Aproveitamento da experiência de especialistas do domínio
•Maior consistência e integração entre aplicações
•Redução da manutenção: menos linhas de código nas aplicações, reparos no framework se propagam pelas aplicações
•Melhora da produtividade: os programadores podem se concentrar nas características específicas de suas aplicações
Benefícios
Custos
•Mais esforço para construção e aprendizado
•Programas mais difíceis de depurar
•Necessária documentação de manutenção e apoio
![Page 93: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/93.jpg)
93
Frameworks
Frameworks: complexidade na construção, entendimento e utilização
![Page 94: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/94.jpg)
94
Relacionamento entre Linguagens de padrões, frameworks e aplicações
Linguagem de Padrões
Framework Aplicação
Domínio específico
permite implementar
dá suporte a
ajuda na instanciação da
usandopermite documentar
permite projetar
![Page 95: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/95.jpg)
95
Construção de Frameworks a partir de uma Linguagem de Padrões
Se a linguagem de padrões auxilia na modelagem de sistemas de um determinado domínio, porque não ter algo mais para facilitar a implementação da aplicação modelada?
![Page 96: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/96.jpg)
96
Construção de Frameworks a partir de uma Linguagem de Padrões
Um framework que possua todas as classes pertencentes aos padrões é uma possível forma de prosseguir com o reuso até o nível de implementação.
![Page 97: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/97.jpg)
97
Construção de Frameworks a partir de uma Linguagem de Padrões
Por onde começar?– Um framework possui hot spots e
frozen spots– Primeiro passo: identificar os hot-
spots do framework, com base na linguagem de padrões
![Page 98: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/98.jpg)
98
Construção de Frameworks a partir de uma Linguagem de Padrões
– Segundo passo: projetar o Framework, com base na lista de hot-spots e na estrutura de classes dos padrões da linguagem de padrões• Generalização• Uso de Padrões de Projeto para obter a
flexibilidade desejada
![Page 99: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/99.jpg)
99
Construção de Frameworks a partir de uma Linguagem de Padrões
– Terceiro passo: implementar o Framework em uma linguagem de programação específica• Teste• Validação
![Page 100: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/100.jpg)
100
Construção de Frameworks a partir de uma Linguagem de Padrões
– Quarto passo: documentar o Framework de forma a mostrar o mapeamento entre os padrões da linguagem de padrões e as classes do framework, para facilitar a instanciação
![Page 101: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/101.jpg)
101
Exemplo
Com base na linguagem de padrões GRN, foi construído um framework denominado GREN, usando linguagem Smalltalk e base de dados MySQL.
![Page 102: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/102.jpg)
102
Exemplo da documentação do GREN
Padrão Variante Nome da Classeno Padrão
Superclasse(s) noframework GREN
Códigopara
referência- Recurso Resource N1
Default, Multipostipos
Tipo de Recurso SimpleType N21 – Identificaro Recurso
Tipos aninhados Tipo de Recurso NestedType N2RecursoInstanciável
Instância doRecurso
ResourceInstance N5
Recurso Mensurávelou Recurso emLotes
Unidade deMedida
MeasureUnity** N6
2 –Quantificar oRecurso
Recurso em Lotes Lote do Recurso ResourceLot N7
![Page 103: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/103.jpg)
103
Exemplo da documentação do GRENPadrão Padrão/ Variante
utilizadaCódigo
da classeconcretacriada
Classe da interface com ousuário Correspondente
Default ouMúltiplos tipos
N2 SimpleTypeForm1 – Identificar oRecurso
Tipos aninhados N2 NestedTypeFormRecurso único N1 SingleResourceForm
RecursoMensurável
N1 MeasurableResourceForm
RecursoInstanciável
N1 InstantiableResourceForm
Recurso em lotes N1 LotableResourceFormRecurso
InstanciávelN5 ResourceInstanceForm
RecursoMensurável
N6 MeasureUnityForm
2 – Quantificar oRecurso
Recurso em lotes N7 Ainda não implementado
![Page 104: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/104.jpg)
104
Instanciação de um Framework com base em uma Linguagem de Padrões
Se existem:– Linguagem de Padrões– Framework correspondente
Por que não instanciar o framework usando apenas os conhecimentos sobre a linguagem de padrões, que possuem um nível de abstração mais alto?
![Page 105: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/105.jpg)
105
Instanciação de um Framework com base em uma Linguagem de Padrões
Uma ferramenta pode ser construída para auxiliar a instanciação do framework, sendo que o usuário informa apenas os padrões aplicados e o código é gerado automaticamente– A ferramenta usa os dados do
mapeamento entre os padrões e as classes do framework
![Page 106: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/106.jpg)
106
Exemplo
Para ajudar a instanciar o framework GREN com base na linguagem de padrões GRN, foi construído o GREN-Wizard.
![Page 107: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/107.jpg)
![Page 108: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/108.jpg)
108
Exemplo: Menus da nova aplicação
![Page 109: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/109.jpg)
109
Exemplo: GUI da nova aplicação
![Page 110: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/110.jpg)
110
Conclusões
Linguagens de padrões podem ajudar a:– Modelar sistemas em domínios
específicos– Construir e utilizar frameworks, que
constituem uma técnica poderosa para alavancar o reuso de software.
![Page 111: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/111.jpg)
111
Contato
Rosana T. Vaccare Braga– ICMC-Universidade de São Paulo– São Carlos – SP – Labes (Laboratório
de Engenharia de Software)– [email protected]– http://www.icmc.usp.br/~rtvb
![Page 112: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/112.jpg)
![Page 113: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/113.jpg)
![Page 114: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/114.jpg)
![Page 115: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/115.jpg)
![Page 116: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/116.jpg)
![Page 117: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/117.jpg)
![Page 118: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/118.jpg)
![Page 119: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/119.jpg)
![Page 120: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/120.jpg)
![Page 121: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/121.jpg)
![Page 122: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/122.jpg)
![Page 123: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/123.jpg)
![Page 124: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/124.jpg)
![Page 125: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/125.jpg)
![Page 126: Linguagens de Padrões de Domínio Específico: como criá-las e utilizá-las na construção e instanciação de frameworks orientados a objetos Profa. Dra. Rosana](https://reader035.vdocuments.site/reader035/viewer/2022062411/570638681a28abb8239036c9/html5/thumbnails/126.jpg)