Post on 01-Oct-2018
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
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ãoemail=joao@email.comfone=16 3627 1461
obj2:Clientenome = Pedroemail=pedro@bol.comfone=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ãoemail=joao@email.comfone=16 3627 1461
obj2:Clientenome = Pedroemail=pedro@bol.comfone=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ãoemail=joao@email.comfone=16 3627 1461
obj2:Clientenome = Pedroemail=pedro@bol.comfone=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 joao@email.com2 Pedro pedro@email.com
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
aç
ão
Tra
nsa
çõ
es
Seg
ura
nç
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?