30
1/23/2009 1 www.oliverdominguez.com Onde fica a rua do porto? Siga reto nessa rua mesmo, depois vire à direita no semáforo. Passe um posto de gasolina, é a terceira rua! Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada?

Parte2.Modelagem - Departamento de Computação — …daniel/files/cursoMDD/Parte2.Modelagem.pdf · ›Voltada ao compilador ›Estrutura ›Formalismo ›Validade ›Computabilidade

Embed Size (px)

Citation preview

1/23/2009

1

www.oliverdominguez.com

Onde fica a rua do porto?

Siga reto nessa rua mesmo, depois vire

à direita no semáforo. Passe um posto de gasolina, é

a terceira rua!

� Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada?

1/23/2009

2

� Como ficará a ocupação urbana da capital Xangai em 2020?

� Pedro tem dois irmãos› Daqui a cinco anos, o mais novo terá a

metade da idade de Pedro› Daqui a dez anos, o mais velho terá o triplo

da idade do mais novo

� Quantos anos tem Pedro e os irmãos?

� O uso de modelos pode ajudar a respondê-las› Modelos abstraem detalhes› Modelos representam conceitos› Modelos possuem informação útil› Modelos são fáceis de compreender› Outras propriedades...

1/23/2009

3

maps.google.com

1/23/2009

4

� Idade de Pedro hoje = x� Idade do irmão mais novo hoje = y� Idade do irmão mais velho hoje = z� Sistema

y+5 = (x+5)/2z+10 = (y+10)*3

Modelo de Classes

Rabiscos

Modelo de Casos de Uso

Modelo de Componentes

Modelo de Dados

Requisitos

Modelo de interface

� Um modelo de um sistema é uma descrição ou especificação daquele sistema e seu ambiente, para um determinado propósito. Um modelo é frequentemente apresentado como uma combinação de desenhos e texto. O texto pode ser em uma linguagem de modelagem ou uma linguagem natural.

1/23/2009

5

� Modelos devem servir de entrada para geradores, transformadores, etc...

� Portanto, precisam ser automaticamente intepretáveis

� Por uma máquina› Capacidade cognitiva limitada

� Devem ser› Estruturados› Formalmente definidos› Sintaticamente corretos› Completos› Não ambíguos› ...

� Calculadora

56

+13

+45

-57

*66

Some 56 com treze,

e depois quarenta e

cinco. Do total,

subtraia cinquenta

e sete. Tudo isso

vezes meia-meia.

� Software que “entende” um modelo� Realiza ações� Demonstração - calculadora

1/23/2009

6

� Preciso de:› Um formato que o computador entenda› Um analisador

� Dentro da ciência da computação› Compiladores› Linguagens› Autômatos

� Linguagem natural› Ainda está distante...

� Análise-Síntese� Lê um programa em uma linguagem de

origem� Escreve um programa equivalente em

uma linguagem de destino� Exibe erros

� Analisador – três fases� Análise linear› Caracteres são lidos, da esquerda para a direita› Agrupados em tokens (sequência de caracteres

que possuem um significado coletivo)

� Análise hierárquica› Tokens são agrupados em coleções que

possuem um significado

� Análise semântica› Verificações para garantir que os componentes

do programa fazem sentido

1/23/2009

7

� Análise linear› Análise léxica ou scanning

posicao := inicial + taxa * 60

1. Identificador “posicao”2. Sinal de atribuição “:=“3. Identificador “inicial”4. Sinal de soma “+”5. Identificador “taxa”6. Sinal de multiplicação “*”7. Número “60”

� Expressões regulares� Definem as combinações de caracteres

que caracterizam um token

Tokens: {

Sinal de Atribuição = ‘:=’,

Sinal de Soma = ‘+’,

Sinal de Multiplicação = ‘*’,

Número = (‘-’)?[0-9]+,

Identificador = [a-zA-Z][a-zA-Z0-9]*

}

posicao := inicial + taxa * 60

Tokens: {

Sinal de Atribuição = ‘:=’,

Sinal de Soma = ‘+’,

Sinal de Multiplicação = ‘*’,

Número = (‘-’)?[0-9]+,

Identificador = [a-zA-Z][a-zA-Z0-9]*

}

1/23/2009

8

posicao igual inicial mais taxa vezes 60

Tokens: {

Sinal de Atribuição = ‘igual’,

Sinal de Soma = ‘mais’,

Sinal de Multiplicação = ‘vezes’,

Número = (‘-’)?[0-9]+,

Identificador = [a-zA-Z][a-zA-Z0-9]*

}

� Análise hierárquica› Análise sintática ou parsing

Atribuição

Identificador Expressão

Expressão Expressão

Expressão Expressão

posicao

:=

+

Identificador

inicial

*

Identificador

taxa

Número

60

� Regras sintáticas

Atribuição → Identificador ‘:=’ Expressão;

Expressão → Identificador |

Número |

Expressão ‘+’ Expressão |

Expressão ‘*’ Expressão;

1/23/2009

9

posicao := inicial + taxa * 60

Atribuição → Identificador ‘:=’ Expressão;

Expressão → Identificador |

Número |

Expressão ‘+’ Expressão |

Expressão ‘*’ Expressão;

Atribuição

Identificador Expressão

Expressão Expressão

Expressão Expressão

posicao

:=

+

Identificador

inicial

*

Identificador

taxa

Número

60

inicial + taxa * 60

taxa * 60

posicao := inicial + taxa * 60

Atribuição → Identificador ‘:=’ Expressão;

Expressão → Identificador |

Número |

Expressão ‘*’ Expressão |

Expressão ‘+’ Expressão;

Atribuição

Identificador Expressão

posicao

:=

*

Expressão

Expressão Expressão

+

Identificador

inicial

Identificador

taxa

Expressão

Número

60

Programa → ‘prog’ ‘{’ (Comando ‘;’)* ‘}’;

Comando → Atribuição | Laço | Se;

Atribuição → Identificador ‘:=’ Expressão;

Expressão → Identificador |

Número |

Expressão ‘+’ Expressão |

Expressão ‘*’ Expressão;

Laço → ...

prog {

a = 2;

b = a + 5;

se (b < 4) a = 0;

}

1/23/2009

10

� Análise semântica› Checagens diversas (tipo, declaração, etc)

prog {

a = 2.573f;

b = a + 5;

se (a == 5 && c < 4) a = 0;

}

� Sintaxe abstrata vs sintaxe concreta

Atribuição

Identificador Expressão

Expressão Expressão

Expressão Expressão

posicao

:=

+

Identificador

inicial

*

Identificador

taxa

Número

60

� Sintaxe abstrata vs sintaxe concreta

Atribuição

Identificador Expressão

Expressão Expressão

Expressão Expressão

id1

t1

t2

Identificador

id2

t3

Identificador

id3

Número

n1

1/23/2009

11

posicao := inicial + taxa * 60

id1 t1 id2 t2 id3 t3 n1

� Sintaxe abstrata› Voltada ao compilador› Estrutura› Formalismo› Validade› Computabilidade

� Sintaxe concreta› Voltada ao programador› Aparência› Legibilidade› Expressividade

� Muito mais detalhes� Implementação� Otimizações� Técnicas/abordagens

� Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman - Compiladores – Princípios, Técnicas e Ferramentas – Editora: Ltc, 1995

1/23/2009

12

� Modelo› Representação, abstração, especificação...› Sistema / ambiente› Propósito› Linguagem de modelagem

� Linguagem› Interpretada por uma máquina› Técnicas de compiladores

Objeto

AlavancaForça

Ponto de apoio

Pessoa

Tamanho Peso

Comprimento

Idade

Linguagem

Sintaxe abstrata

Sintaxe concreta

Objeto o (

Tamanho (3,4,2)

Peso 20kg

)

Pessoa p (

Idade 20

)

Objeto o (

Tamanho (3,4,2)

Peso 20kg

)

Pessoa p (

Altura 1,80

)

Tarefa impossível!São necessárias:-3 pessoas (> 1,70)-6 alavancas (> 5.5m)

public class Objeto {int larg, alt, prof;float peso;

}

public class pessoa {int altura;

}

20kg

2

3

4

7

1/23/2009

13

Objeto o (

Tamanho (3,4,2)

Peso 20kg

)

Pessoa p (

Altura 1,80

)

AST

Parsing Ações semânticas

Geração de código

Execução canônica

Cálculos

� Demonstração

� São boas para modelos hierárquicos(árvore)› Classes, Tabelas, Objetos, Atributos, etc

� São boas para aspectos de algoritmos› Sequência de passos, comandos› Expressões regulares

� Funcionam bem com sistemas de controle de versões (CVS, SVN, ...)

1/23/2009

14

� Linguagens textuais› Árvores

� Sempre que é necessária uma referência› Precisa percorrer a árvore novamente

� Demonstração

� Utilizar um modelo Orientado a Objetos› Sintaxe abstrata

� Ainda precisa percorrer várias vezes a árvore› Porém, uma vez lida, a informação fica mais

fácil de ser consultada

� Demonstração

public class Endereco {

String rua;

int numero;

}

public class Pessoa {

String nome;

Endereco enderecoResidencial;

Endereco enderecoProfissional;

} Endereco

rua:Stringnumero:int

Pessoa

nome:String

enderecoResidencial

enderecoProfissional

1/23/2009

15

public class Pessoa {

String nome;

Endereco enderecoResidencial;

Endereco enderecoProfissional;

}

public class Endereco {

String rua;

int numero;

}

Pessoa

nome:String

enderecoResidencial

enderecoProfissional

??

Endereco

rua:Stringnumero:int

� Programas› Sentenças

� Palavras� Caracteres

� Regras› Léxicas› Sintáticas

� Parsers precisavam ser implementados à mão› Tabela de símbolos› Máquina de estados› Otimizações

� Obs: para linguagens complexas, ainda é necessário

1/23/2009

16

Código

� Compiler Compiler� Ou geradores de compiladores� Parser generators› YACC, ANTLR, ...

Regras(léxica + sintática)

CC Parser

Código

� Ferramentas para Modelagem Textual� Parser + Metamodelo� Eclipse› TCS – Textual Concrete Syntax› Xtext (OpenArchitectureWare)

API metamodelo

Regras(léxica + sintática)

CCParser

� Facilita a construção de interpretadores› Maior flexibilidade› Poder computacional

� Facilidade de manutenção› Mudanças nas regras são propagadas para

o parser e metamodelo

� Demonstração› Xtext

1/23/2009

17

� XML (eXtensible Markup Language)� SAX – Simple API for XML› À base de eventos› Árvore é percorrida e eventos são

disparados quando elementos são encontrados

� DOM – Document Object Model› Modelo OO do documento

� Vantagens› Parsers já existem!› Permite a checagem de metadados

� XMLSchema / DTD› Consulta facilitada (XPath)

� Desvantagens› Baixa legibilidade

� Prejudica seu poder expressivo› Ainda é uma árvore!

� Demonstração

� Para as linguagens que são naturalmente grafos› Modelos estruturais (arquiteturas, topologias,

etc)

� Diagramas blocos e setas› Orientação a Objetos› Entidade-Relacionamento› Muitos outros

� Sintaxe abstrata orientada a objetos

1/23/2009

18

� Sintaxe› Abstrata› Concreta

� Sintaxe abstrata› Modelo orientado a objetos› Estrutura dos modelos (classes,

relacionamentos, herança, atributos, ...)› MetaModelo

obj1:Clientenome = Joã[email protected]=16 3627 1461

obj2:Clientenome = [email protected]=11 3412 5661

obj3:Produtonome = Secadorafabricante = Brastemppreço = R$ 2600,00depto = Eletrodomésticos obj4:Departamento

nome = Eletrodomésticos

Cliente:ClasseUMLnome:Stringemail:Stringfone:String

Produto:ClasseUMLnome:Stringfabricante:Stringpreço:Currency

Departamento:ClasseUMLnome:Stringdepto

*1

Compra:ClasseUMLdata:Date

produto

comprador

*

*

1

1

10/03/2008

ClasseUMLnome:String

AtributoUMLnome:Stringtipo:String *

1 AssociaçãoUMLnome:String

LadoAssociaçãoUMLmultiplicidade: String

1

2

1

*

atributos

participante

lados

AgregaçãoUMLreferencia:boolean

1/23/2009

19

obj1:Clientenome = Joã[email protected]=16 3627 1461

obj2:Clientenome = [email protected]=11 3412 5661

obj3:Produtonome = Secadorafabricante = Brastemppreço = R$ 2600,00depto = Eletrodomésticos obj4:Departamento

nome = Eletrodomésticos

Cliente:ClasseUMLnome:Stringemail:Stringfone:String

Produto:ClasseUMLnome:Stringfabricante:Stringpreço:Currency

Departamento:ClasseUMLnome:Stringdepto

*1

Compra:ClasseUMLdata:Date

produto

comprador

*

*

1

1

10/03/2008

ClasseUMLnome:String

AtributoUMLnome:Stringtipo:String *

1 AssociaçãoUMLnome:String

LadoAssociaçãoUMLmultiplicidade: String

1

2

1

*

atributos

participante

lados

AgregaçãoUMLreferencia:boolean

Informação

Modelo

Metamodelo

obj1:Clientenome = Joã[email protected]=16 3627 1461

obj2:Clientenome = [email protected]=11 3412 5661

obj3:Produtonome = Secadorafabricante = Brastemppreço = R$ 2600,00depto = Eletrodomésticos obj4:Departamento

nome = Eletrodomésticos

Cliente:ClasseUMLnome:Stringemail:Stringfone:String

Produto:ClasseUMLnome:Stringfabricante:Stringpreço:Currency

Departamento:ClasseUMLnome:Stringdepto

*1

Compra:ClasseUMLdata:Date

produto

comprador

*

*

1

1

10/03/2008

ClasseUMLnome:String

AtributoUMLnome:Stringtipo:String *

1 AssociaçãoUMLnome:String

LadoAssociaçãoUMLmultiplicidade: String

1

2

1

*

atributos

participante

lados

AgregaçãoUMLreferencia:boolean

Dados

Metadados

Metametadados

M0

M1

M2

Tabela ClientesID Nome E-mail1 João [email protected] Pedro [email protected]

Tabela ProdutosID Nome Fabricante DeptoID1 Secadora Brastemp 12 Fogão Dako 2

Tabela DepartamentosID Nome1 Eletrodomésticos2 Cozinha

Restrição de chave estrangeiraProdutos(DeptoID) → Departamentos(ID)

Cliente

Produto Departamento

Nome E-mail

NomeFabricante

Nome

1 N

Entidadenome:String

Atributonome:String *

1Relacionamento

Papelcardinalidade: {1,N}

1

3

1

*

atributos

participante

papéis

1/23/2009

20

public class SMS {

public Central c;

public void enviaTexto(String nro,

String txt) {

c.conecta(nro);

c.envia(txt);

c.verifica();

}

}

public class Central {

public void conecta(String nro) { ... }

public void envia(String txt) { ... }

public void verifica() { ... }

}

public class AplicativoMIDP {

void main{

SMS s = new SMS();

s.enviaTexto(“9121-8282”,

“Mensagem”);

}

}

c:Central

s:SMS

:AplicativoMIDP

1: new()

2: enviaTexto(“9121-8282”,”Mensagem”)3: conecta(nro)

4: envia(txt)

5: verifica()

Objetonome:String

Mensagemordem:intconteudo:String

*

1 1

*

de

tipo

Classenome:String

*

1

para

Objetonome:String

Mensagemordem:intconteudo:String

*

1 1

*

de

tipo

Classenome:String

*

1

para

Entidadenome:String

Atributonome:String *

1Relacionamento

Papelcardinalidade: {1,N}

1

3

1

*

atributos

participante

papéis

ClasseUMLnome:String

AtributoUMLnome:Stringtipo:String *

1 AssociaçãoUMLnome:String

LadoAssociaçãoUMLmultiplicidade: String

1

2

1

*

atributos

participante

lados

AgregaçãoUMLreferencia:boolean

MetamodeloClasses UML

MetamodeloE-R

MetamodeloColaboração UML

M0InformaçãoDados

M1ModeloMetadados

M2MetamodeloMetametadados

M3MetametamodeloMetametametadados

objetosobjetosobjetosobjetostabelastabelastabelastabelas

programasprogramasprogramasprogramas

Modelo de classes

Modelo E-R

Modelo de colaboração

Metamodelo UML

Metamodelo E-R

Metametamodelo

1/23/2009

21

� Deve ser rica o bastante para descrever modelos de vários domínios› Portanto, deve ser capaz de descrever a si mesma

� MOF – Meta-Object Facility› OMG› Diagrama classes UML simplificado

� Ecore› Eclipse EMF› MOF adaptado para maior eficiência

� MetaGME› MIC – Vanderbilt› Generic Modeling Environment

� Sintaxe abstrata› Voltada ao computador› Metamodelo

� Sintaxe concreta› Voltada ao ser humano› Ícones› Caixas› Linhas› Setas› Cores› ...

� Múltiplas sintaxes concretas� Exemplo› Diagrama de sequência› Diagrama de colaboração

1/23/2009

22

� GME� Demonstração

� Através de API› Como no exemplo no início desta

apresentação› Benefícios da orientação a objetos

� Métodos� Coleções� Referências

� Builder Object Network (GME)› Originalmente em C++› Existe uma versão em Java

� Demonstração

Problema

Domínio

Modelo

Simular

Experimentar

AnalisarTestar

Gerar código

Linguagem

Concreta

Abstrata

Analisar o domínio do problema

Analisar a tarefa

Visual (estrutura)

Textual (hierarquia, algoritmo)

1/23/2009

23

Problema Solução

bits

bytes

subrotinas

código máquina

classes

padrões

frameworks

componentes

objetos

MODELOS

Especialista do domínio

Especialista em TI

finanças

economia

jogos

turismo

geologia

esportes

medicina

� Como definir linguagem� Ferramentas para linguagem› Visual› Textual

� E quanto à UML?

� Modelagem de software não é sinônimo de UML?› É a linguagem mais conhecida› Com maior suporte de ferramentas› Grande documentação› Supre as principais necessidades

� Análise, casos de uso, negócio, aspectos estáticos e dinâmicos, componentes, implantação...

1/23/2009

24

� Um organograma� Um circuito elétrico� Um esquema físico de BD� Uma GUI

� Mesmo com perfis› Ainda tem pouca capacidade expressiva› Fica preso à semântica da UML

� No contexto do MDD› É uma falha grave

� Domínios técnicos (horizontais): aspectos técnicos comuns a diversas aplicações› Distribuição› GUI› Persistência

� Domínios funcionais (verticais): aspectos de negócio, organizacionais› Bancos› Finanças› Seguros› Aeronáutica

Sistemas embarcados

Sistemas automotivos

Controladores de motor

DieselGas

1/23/2009

25

AplicaçõeseBusiness

Sistemas web

E-Banking

E-Commerce

Pers

istê

nc

ia

GU

I

Co

mu

nic

ão

Tra

nsa

çõ

es

Seg

ura

a

E-commerce

Web

Compras

Cartão de crédito

Boleto

Fórum

Showroom

Sistema

AplicaçõeseBusiness

Sistemas web

E-Banking

E-Commerce

Sistemas embarcados

Sistemas automotivos

Controladores de motor

DieselGas

•Linguagens de modelagem de propósito geral

•GPL – General Purpose Language

1/23/2009

26

� Focada› Em um problema› Em uma organização› Em um projeto

� “Linguagem pequena, normalmente declarativa, que oferece poder expressivo focado em um domínio de problema em particular”

Arie van Deursen, Paul Klint, and Joost Visser. Domain-specific languages: An annotated bibliography. SIGPLAN Notices - ACM Press, 35(6):2636, 2000.

AplicaçõeseBusiness

Sistemas web

E-Banking

E-Commerce

Sistemas embarcados

Sistemas automotivos

Controladores de motor

DieselGas

•Linguagens de modelagem de propósito geral

•GPL – General Purpose Language

•Linguagens específicas de domínio

•DSL – Domain-Specific Language

GPL DSL

•Aplicabilidade (nro. de cenários)•Facilidade de utilização (ferramentas prontas)

•Eficiência•Produtividade•Dificuldade na implementação

1/23/2009

27

GPL DSL

•Aplicabilidade (nro. de cenários)•Facilidade de utilização (ferramentas prontas)

•Eficiência•Produtividade

•Dificuldade na implementação

•Tecnologia de DSL•MDA•Ferramentas atuais

� Flexibilidade� Proximidade do domínio� Possibilidade de customização

� 1) Defina uma gramática para a linguagem SQL abaixo

� SELECT “tabela1”.”campo1”, “tabela1”.”campo2”, “tabela2”.”campo3” FROM “tabela1”, “tabela2” WHERE“tabela1”.”campo1” = “tabela2.campo1” AND “tabela1”.”campo2” = “tabela2”.”campo2”

� Exemplo:

Consulta : “SELECT” Campos “From” Tabelas ...;

Campos: ...

1/23/2009

28

� 2) Esboce o metamodelo OO criado para esta linguagem

� Exemplo: Consulta

Campos

...

1

*

� Preciso ler arquivos de dados� Os arquivos estão em um formato texto� Cada linha do arquivo é uma sequência de

campos separados por um caractere qualquer� Cada linha pode ser um tipo de registro

diferente, os três primeiros caracteres indicam o tipo

� Cada registro possui um identificador, localizado nos três caracteres após o tipo

� Podem existir referências entre os registros, indicadas através do identificador

PES001:João:END001:16-4242-5535

PES002:Carlos:END002:12-5324-0098

END001:Rua treze de maio:35:Jardim II:São Carlos:SP

PES003:Maria:END001:16-3565-1233

END002:Rua central:1000:centro:São Paulo:SP

DEP001:Pedrinho:10:PES001

DEP002:Paulinho:5:PES001

DEP003:Sofia:1:PES003

1/23/2009

29

� Defina uma linguagem textual para descrever os tipos de registros (estilo JavaBeans)

� Defina uma linguagem textual para descrever o formato do arquivo, relacionando-a com os tipos de registros

� Defina o metamodelo para a seguinte linguagem visual:

Questão 1

Questão 2

Questão 5

Questão 3

Questão 4

Questão 6

Resposta 3Resposta 1

Resposta 2

Resposta 4 Resposta 5Resposta 6 Resposta 7

Resposta 8

Resposta 9

Início

Mensagem 1

Mensagem 2

� Defina o metamodelo para definir conexões físicas de rede, com os elementos:

� Computador› Nome› Endereço IP

� HUB› Nome› Portas

� Roteador› Nome› Endereço IP› Portas

1/23/2009

30

Sugestões:

• Qual linguagem de metamodelagem é melhor?• Ecore, MOF ou MetaGME?

• É possível criar modelos visuais fora do padrão blocos e setas?• É possível combinar modelos visuais e textuais?• Quanto está custando o kg da picanha bovina?• Sério! Vai ter coffe break??• Estamos sozinhos no universo?• Soluções de valor zero matematicamente interessantes da função zeta de Riemann todas tem uma forma a + bi?• Os matemáticos conseguirão libertar os poderes das equações de Navier-Stokes?