linguagens de padrões de domínio específico: como criá-las e utilizá-las na construção e...

Post on 07-Apr-2016

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

3

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!

5

Introdução

Como mudar isso?– Melhores ferramentas de teste e depuração?– Atacar a complexidade?

Escrever menos código!!

6

Introdução

Como escrever menos código???

Reuso !!!

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;

8

Introdução aos Padrões

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

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?

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

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

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

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

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

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

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

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.

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

20

Padrões de Projeto

• O Composite cria uma classe abstrata que representa primitivas e seus depósitos.

21

Padrões de Projeto

Exemplo de composição recursiva de objetos

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

23

Padrões de Projeto

– Estrutura (Structure)

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

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

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

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

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

29

Padrões de Projeto

class FloppyDisk : public Equipment { public: FloppyDisk(const char*); virtual ~FloppyDisk(); virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); };

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.

31

Padrões de Projeto

– Padrões Relacionados (Related Patterns)• Chain of Responsibility• Decorator• Flyweight• Iterator• Visitor

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)

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

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

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

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

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)

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.

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

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

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

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

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)

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

Primeiro passo: modelo do domíno

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

47

Segundo passo: lista inicial de padrões

Padrão IntençãoLista de Padrões

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

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)

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

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

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

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

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

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)

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?

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

– 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.)

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

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

– 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.)

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

63

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

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)

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

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

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)

69

Modelagem de um sistema de locadora de vídeos usando a linguagem de padrões

GRN

Padrão 2 – Quantificar o Recurso

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

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)

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

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

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)

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

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

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

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)

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

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

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

83

Tipos de Frameworks

Framework Caixa Branca

HotSpot

RR3

84

Tipos de Frameworks

Framework Caixa Preta

HotSpot

R R1R2

R3

Ocorrência devariabilidade

85

Conceitos Básicos

Framework Caixa Cinza

HotSpot

R R1R2

R3

Ocorrência devariabilidade

R4

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

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

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

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

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

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

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

93

Frameworks

Frameworks: complexidade na construção, entendimento e utilização

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

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?

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.

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

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

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

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

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.

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

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

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?

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

106

Exemplo

Para ajudar a instanciar o framework GREN com base na linguagem de padrões GRN, foi construído o GREN-Wizard.

108

Exemplo: Menus da nova aplicação

109

Exemplo: GUI da nova aplicação

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.

111

Contato

Rosana T. Vaccare Braga– ICMC-Universidade de São Paulo– São Carlos – SP – Labes (Laboratório

de Engenharia de Software)– rtvb@icmc.usp.br– http://www.icmc.usp.br/~rtvb

top related