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 Teresinha Vaccare Braga Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo 11 de agosto de 2004 boratório de Engenharia de Software Instituto de Ciências Matemáticas e de Computaç Universidade de São Paulo São Carlos – SP SugarloafPLoP 2004 – Fortaleza - CE

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

– 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

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

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

– 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
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

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

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

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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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