Post on 07-Apr-2016
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