0
PLP – Paradigma de
              Programação Orientado a
                      Modelos



 Prof. Franklin Ramalho
Universi...
Agenda

-   Introdução
-   DDM
-   Modelos
-   UML
-   Diagramas UML
-   OCL

-   Exemplos




                           ...
Desenvolvimento de Software Tradicional

•   Desenvolvimento de Software x Desenvolvimento de
    Hardware

    –   Progre...
Ciclo de Vida em Desenvolvimento de Software tradicional


                           requisitos

    Processo iterativo  ...
Desenvolvimento de Software Tradicional


•   Principais problemas:

    –   Produtividade

    –   Portabilidade

    –  ...
O que é DDM?


•   DDM (Desenvolvimento Dirigido a Modelos)
    –   MDA (Model-Driven Arquitecture)
    –   MDD (Model-Dri...
MDA - Princípios

•   Modelos passam a ser a força motriz no processo de desenvolvimento
    de software
    –   Diferente...
MDA - Ciclo de Vida


                     requisitos
                                      Texto +
Processo DDM
         ...
MDA - Ciclo de Vida

                                   CIM
              requisitos
                                     ...
Tipos de Modelos
                           Modelo de requisitos:
                           Define o domínio onde o 
    ...
Arquitetura MDA


                              MOF



      Meta­                                                  Meta­
...
Visão Desenvolvimento de Software Tradicional

Abstração
                                  Desenvolvimento Orientado a Obj...
Visão MDA corrente

Abstração
                                                        Extreme Modeling


           CIM
  ...
Visão MDA no futuro


Abstração
                                               Padrões        UML Programming
            ...
Modelos
•   Empresa de desenvolvimento de software de sucesso desenvolve
    software de qualidade e atende aos usuários

...
UML


•   UML é uma linguagem para especificação, visualização,
    construção e documentação de artefatos de sistemas de
...
UML - Características


•   Sub-dividida em diagramas

•   Abrange modelagem estrutural e comportamental

•   Várias ferra...
UML - Diagramas

•   Parte estrutural          Classes, interfaces e 
                               relacionamentos
    –...
UML - Diagramas

•   Parte comportamental              Diagramas de Interação: 



                                 }
    ...
Diagrama de Classes

•   É um diagrama que mostra um conjunto de classes,
    interfaces e relacionamentos.

•   Responsáv...
Atributos
•   Propriedades:
    – Derivado
     – Visibilidade
              • (public, protected, private)
      – Nome
 ...
Atributos

•    Propriedades pré-definidas:
      – changeable
       – addOnly
        – frozen




    Propriedades sobr...
Operações

•   Assinatura comum de serviços
    fornecidos por membros da uma
    classe
•   Propriedades:
    –   Visibil...
Operações

•    Propriedades pré-definidas:
      – leaf
       – isQuery
        – sequential                            ...
Pacotes

•   Agrupa um conjunto de elementos UML
    – namespace


•   Cada elemento do modelo deve pertencer, no máximo, ...
Pacotes




                 26
          PLP- UFCG
Máquina de estados


•   Expressar Comportamento
    –   Máquina de estados comportamental
    –   Classes

•   Expressar ...
Máquina de estados comportamental

•   Uma máquina de estados é um comportamento que
    especifica uma seqüência de estad...
Máquina de estados comportamental




                                           29
                                    PL...
Diagrama de Atividades


•   Modela aspectos dinâmicos do sistema
    –   Modelagem Seqüencial
    –   Modelagem concorren...
Diagrama de Atividades

•   Um diagrama de atividade é um tipo especial de máquina
    de estados comportamental

•   Esta...
Diagrama de Atividades

•   Uma atividade é uma execução não atômica dentro de
    uma máquina de estado

•   Atividades s...
Diagrama de Atividades




                                33
                         PLP- UFCG
Diagramas de Interação


•   Diagramas de interações podem ser usados para modelar o
    fluxo de controle dentro de:
    ...
Diagramas de Interação


•   Uma interação é um comportamento que envolve um
    conjunto de mensagens entre um conjunto d...
Diagramas de Interação

•   Tipos de diagramas de interação

    –   Diagrama de Seqüência



    –   Diagrama de comunica...
Diagrama de Seqüência

•   Diagrama de interação mais comum

•   Foca na troca de mensagens entre vários objetos
    –   S...
Diagrama de Seqüência
                   Fragmento laço 




                                      38
                    ...
Diagrama de Seqüência




                               39
                        PLP- UFCG
OCL
•   UML não provê todos aspectos relevantes da especificação do
    sistema.
    –   Restrições adicionais são escrita...
Cliente
                               ProgramaFidelidade                                                                 ...
Enriquecendo o modelo

•   O cartão de um sócio deve apresentar o seguinte
    tratamento: “ Sr. Fulano” ou “ Sra. Sicrana...
OCL - Características

•   OCL - Linguagem para escrita de restrição sobre
    objetos, que pode ser aplicada em um ou mai...
OCL - Características

                                                                                                   ...
OCL - Características
                             Invariantes


                                      Corpo de 
         ...
Operação iterate

                                           context ParceiroPrograma inv:
         ParceiroPrograma      ...
Navegações x Multiplicidades

                                                                               Cliente
     ...
OCL – oclIsNew()

                                                                     Cl iente
            ProgramaFideli...
OCL – Variáveis locais
                                                               context ProgramaFidelidade inv:
    ...
Desenvolvimento Dirigido a Modelos

•   Total especificação do software através de modelos

•   UML + OCL capazes de reali...
Upcoming SlideShare
Loading in...5
×

PLP – Paradigma de Programação Orientado a Modelos

2,942

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,942
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
130
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "PLP – Paradigma de Programação Orientado a Modelos"

  1. 1. PLP – Paradigma de Programação Orientado a Modelos Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG
  2. 2. Agenda - Introdução - DDM - Modelos - UML - Diagramas UML - OCL - Exemplos 2 PLP- UFCG
  3. 3. Desenvolvimento de Software Tradicional • Desenvolvimento de Software x Desenvolvimento de Hardware – Progressos em Desenvolvimento de Hardware tem sido exponencial ao contrário do desenvolvimento de software • Desenvolver software é uma tarefa laboriosa – Sistemas grandes e complexos – Requisitos mudam constantemente – Novas tecnologias – Falta de documentação, etc 3 PLP- UFCG
  4. 4. Ciclo de Vida em Desenvolvimento de Software tradicional requisitos Processo iterativo Texto  Em teoria análise Diagramas e texto projeto Diagramas e texto implementação Atalho código testes 4 PLP- UFCG
  5. 5. Desenvolvimento de Software Tradicional • Principais problemas: – Produtividade – Portabilidade – Interoperabilidade – Documentação 5 PLP- UFCG
  6. 6. O que é DDM? • DDM (Desenvolvimento Dirigido a Modelos) – MDA (Model-Driven Arquitecture) – MDD (Model-Driven Development) – MDE (Model-Driven Engineering) • É uma iniciativa da OMG (Object Management Group) com o intuito de prover toda uma infra-estrutura para desenvolvimento de software – Iniciada em 1997, definida em 2000, correntemente sendo melhorada – Almeja solucionar os problemas presentes em desenvolvimento de software tradicional (produtividade, portabilidade interoperabilidade, documentação, etc.) – OMG oferece padrões (linguagens, plataformas, etc) 6 PLP- UFCG
  7. 7. MDA - Princípios • Modelos passam a ser a força motriz no processo de desenvolvimento de software – Diferentes níveis de abstração – Diferentes fases do ciclo de desenvolvimento de uma aplicação – Apresentação visual amigável – Formais – Persistentes • Meta-modelos descrevendo modelos • Transformações definem como mapear modelos • Engenhos de transformação executam definições de transformações • Alto grau de automação do código 7 PLP- UFCG
  8. 8. MDA - Ciclo de Vida requisitos Texto + Processo DDM  modelos  análise modelos projeto modelos implementação código testes 8 PLP- UFCG
  9. 9. MDA - Ciclo de Vida CIM requisitos TOOL Transformações PIM parcial CIM­PIM análise A PIM U TOOL T O Transformações Processo PIM­PSM M Iterativo A PSM T TOOL  I Transformações C PSM­código A código testes 9 PLP- UFCG
  10. 10. Tipos de Modelos Modelo de requisitos: Define o domínio onde o  sistema será desenvolvido,  serviços e entidades  envolvidas Modelo de análise e  Projeto: define a  arquitetura do sistema Modelo de realização:  define como o sistema é  desenvolvido Código do sistema [Fig. Blanc] 10 PLP- UFCG
  11. 11. Arquitetura MDA MOF Meta­ Meta­ mo delo mo delo Rule  Rule  Rule  X{...} X{...} X{...} Definições de Definições de Definições de transformação transformação transformação CIM Código PIM PSM Engenho de Engenho de Engenho de transformação transformação transformação Aplicação 11 PLP- UFCG
  12. 12. Visão Desenvolvimento de Software Tradicional Abstração Desenvolvimento Orientado a Objetos Requisitos UML + LN Modelo UML Código Máquina Código Fonte Virtual Binário Executabillidade 12 PLP- UFCG
  13. 13. Visão MDA corrente Abstração Extreme Modeling CIM UML/OCL PIM UML/OCL (Especificação) PSM PIM Profiled Código Máquina Código UML/OCL UML/OCL Fonte Virtual Binário (Realização) Executabillidade 13 PLP- UFCG
  14. 14. Visão MDA no futuro Abstração Padrões UML Programming Refinamento Modelo CIM UML/OCL Padrões Transformação Modelos PIM UML/OCL (Especificação) PSM PIM Profiled Código Máquina Código UML/OCL UML/OCL Fonte Virtual Binário (Realização) Executabilidade 14 PLP- UFCG
  15. 15. Modelos • Empresa de desenvolvimento de software de sucesso desenvolve software de qualidade e atende aos usuários • Modelagem é uma tarefa fundamental nas atividades iniciais do desenvolvimento do software – Comunicar a estrutura e comportamento desejados para o sistema – Visualizar e controlar a arquitetura do software – Melhor entendimento do sistema – Gerenciar os riscos – Etc, ... • É preciso utilizar uma linguagem expressiva, simples e padrão 15 PLP- UFCG
  16. 16. UML • UML é uma linguagem para especificação, visualização, construção e documentação de artefatos de sistemas de software. • Linguagem padrão adotada e recomendada pela OMG. 16 PLP- UFCG
  17. 17. UML - Características • Sub-dividida em diagramas • Abrange modelagem estrutural e comportamental • Várias ferramentas CASE • Amplamente utilizada pelo mercado e pela academia • Inter-disciplinar 17 PLP- UFCG
  18. 18. UML - Diagramas • Parte estrutural Classes, interfaces e  relacionamentos – Diagrama de classes Objetos e  relacionamentos – Diagrama de objetos Componentes e  – Diagrama de Componentes dependências – Diagrama de Desenvolvimento Nodos e configurações 18 PLP- UFCG
  19. 19. UML - Diagramas • Parte comportamental Diagramas de Interação:  } Objetos, relacionamentos  – Diagrama de Comunicação e mensagens – Diagrama de Seqüência Casos de uso, atores e  relacionamentos – Diagrama de Casos de Uso } Máquina de estados:  – Diagrama de estados Estados, transições,  eventos e atividades – Diagrama de atividades 19 PLP- UFCG
  20. 20. Diagrama de Classes • É um diagrama que mostra um conjunto de classes, interfaces e relacionamentos. • Responsável por modelar a parte estática do sistema • Contém: - Classes - Atributos - Operações - Interfaces - Relacionamentos - Portas - Pacotes - Notas, restrições, etc. 20 PLP- UFCG
  21. 21. Atributos • Propriedades: – Derivado – Visibilidade • (public, protected, private) – Nome – Multiplicidade – Tipo – Valor inicial default – Estereótipo – Escopo • Instance (default) • Classifier (propriedade sublinhada) 21 PLP- UFCG
  22. 22. Atributos • Propriedades pré-definidas: – changeable – addOnly – frozen Propriedades sobre atributos • O tipo de um atributo deve ser necessariamente: – Primitivo – Enumeração 22 PLP- UFCG
  23. 23. Operações • Assinatura comum de serviços fornecidos por membros da uma classe • Propriedades: – Visibilidade – Nome Poligono – parâmetros compativel(in pol : Poligono) : Boolean • Direção desenhar() : void • nome getContador() : Integer ___________________ • Tipo • Multiplicidade • Valor default – Tipo de retorno • Escopo: – Instance 23 – Classifier PLP- UFCG
  24. 24. Operações • Propriedades pré-definidas: – leaf – isQuery – sequential Poligono – guarded – concurrent compativel(in pol : Poligono) : Boolean {isQuery} getContador() : Integer desenhar() : void {concurrent} Propriedades sobre atributos 24 PLP- UFCG
  25. 25. Pacotes • Agrupa um conjunto de elementos UML – namespace • Cada elemento do modelo deve pertencer, no máximo, a um pacote • Relações entre pacotes: – Generalização – Dependências • Aninhamento (sub-pacotes) • Import • access (private import) • Merge 25 PLP- UFCG
  26. 26. Pacotes 26 PLP- UFCG
  27. 27. Máquina de estados • Expressar Comportamento – Máquina de estados comportamental – Classes • Expressar protocolo de uso do sistema – Máquina de estados de protocolo – Classes realizando interfaces e portas 27 PLP- UFCG
  28. 28. Máquina de estados comportamental • Uma máquina de estados é um comportamento que especifica uma seqüência de estados durante o tempo de vida de um objeto • Modela o comportamento de um único objeto • Formado por: – Estado – Transição – Evento – Ação – Guardas 28 PLP- UFCG
  29. 29. Máquina de estados comportamental 29 PLP- UFCG
  30. 30. Diagrama de Atividades • Modela aspectos dinâmicos do sistema – Modelagem Seqüencial – Modelagem concorrente • Modela fluxo de atividades e sua interação com sociedades de objetos e unidades organizacionais – Fluxo de controle de atividade para atividade • Modela mudança de estados de objetos ao longo do fluxo de controle de uma atividade 30 PLP- UFCG
  31. 31. Diagrama de Atividades • Um diagrama de atividade é um tipo especial de máquina de estados comportamental • Estados são atividades • Transições são chamadas pontes de atividade – Pontes de atividade são disparadas a partir da finalização de uma atividade fonte – Pontes de atividade alcançam uma atividade destino 31 PLP- UFCG
  32. 32. Diagrama de Atividades • Uma atividade é uma execução não atômica dentro de uma máquina de estado • Atividades são formadas por ações atômicas – Resulta em mudança de estado do sistema ou – Retorna um valor • Atividades podem possuir outras atividades detalhadas em outro diagrama de atividades • Ajuda a quebrar computações complexas em sub-atividades 32 PLP- UFCG
  33. 33. Diagrama de Atividades 33 PLP- UFCG
  34. 34. Diagramas de Interação • Diagramas de interações podem ser usados para modelar o fluxo de controle dentro de: – Uma operação – Uma classe – Um componente – Um caso de uso – Um sistema como um todo • Diferentes ênfases podem ser dadas 34 PLP- UFCG
  35. 35. Diagramas de Interação • Uma interação é um comportamento que envolve um conjunto de mensagens entre um conjunto de objetos dentro de um contexto • Uma mensagem é uma especificação de uma comunicação entre objetos que transportam informações 35 PLP- UFCG
  36. 36. Diagramas de Interação • Tipos de diagramas de interação – Diagrama de Seqüência – Diagrama de comunicação – Diagrama de overview de Interação – Diagrama de tempo 36 PLP- UFCG
  37. 37. Diagrama de Seqüência • Diagrama de interação mais comum • Foca na troca de mensagens entre vários objetos – Seqüência de mensagens trocadas – Enfatiza a ordem (tempo) em que ocorre a troca de mensagens • Graficamente: – Eixo x: objetos organizados em linhas de vida – Eixo y: ordem em que mensagens são trocadas ao longo do tempo 37 PLP- UFCG
  38. 38. Diagrama de Seqüência Fragmento laço  38 PLP- UFCG
  39. 39. Diagrama de Seqüência 39 PLP- UFCG
  40. 40. OCL • UML não provê todos aspectos relevantes da especificação do sistema. – Restrições adicionais são escritas em linguagem natural – Ao longo de todos os diagramas • Modelos precisam ser completos • Modelos precisam ser precisos • Modelos precisam ser testados • PIMs precisam ser detalhados ao extremo para permitir completa geração de código • Idem para PSMs 40 PLP- UFCG
  41. 41. Cliente ProgramaFidelidade nome : String pronomeTratamento : String programa cadastrar(c : Cliente) masculino : Boolean 1..* obtemServicos() : Set(Servicos) dataAniversario : Data 0.. * 0..* rg : String Socio 0.. * idade() {ordered} 1..* parceiros proprietario ParceiroPrograma 1..* nivelDoServico 0..* cartoes quantidadeDeClientes : Integer NivelServico cartao nome : String Cartao 0..1 cor : TipoDeCor valido : Boolean Conta validoDesde : Data p ontos  : Integer vencimento : Data cor : TipoDeCor servicosOfe recidos creditar(pts : Integer) nomeTratamentoCliente : String 0..* d ebitar(pts : Integer) Servico e staVa zia() : Bo olean condicao : Boolean cartao pontosADebitar : Integer servicosDisponiveis pontosACreditar : Integer descricao : String 0..* transacoes 0..* Transacao transacoes transacoes pontos : Integer data : Data 0..* 0..* <<enumeration>> programa() : ProgramFidelidade TipoDeCor ouro prata bronze Credito Debit o 41 PLP- UFCG
  42. 42. Enriquecendo o modelo • O cartão de um sócio deve apresentar o seguinte tratamento: “ Sr. Fulano” ou “ Sra. Sicrana” • Um cliente deve ser maior de idade • Número de pontos gastos em transações de crédito deve ser maior que em transações de débito • Transações devem ser realizadas com um número mínimo de 100 pontos • Dois clientes diferentes não podem ter o mesmo rg • Quantos clientes um parceiro possui no programa de fidelidade? • Deve-se especificar as operações: – obtemServiço(), estaVazia(), cadastrar(), etc. • Muitas outras 42 PLP- UFCG
  43. 43. OCL - Características • OCL - Linguagem para escrita de restrição sobre objetos, que pode ser aplicada em um ou mais valores de um (ou parte de) sistema ou modelo orientado a objetos. • Criada originalmente na IBM (Insurance Division) • Integra construtores da lógica de primeira ordem e algorítmica. • Apresenta sintaxe mais intuitiva para o desenvolvedor, mais próxima da implementação em linguagens OO. • Complementar a UML 43 PLP- UFCG
  44. 44. OCL - Características Cliente ProgramaFidelidade nome : String programa pronomeTratamento : String Joao:Pass Maria:Pas masculino : Boolean ageiro sageiro 1..* cadastrar(c : Cliente) 0..* 0..* dataAniversario : Data Socio idade() 0..* 1: aperta parceiros {ordered} proprietario 9: aperta 1..* ParceiroPrograma nivelDoServico 1..* 0..* cartoes quantidadeDeClientes : Integer cartao NivelServico Cartao nome : String 0..1 valido : Boolean a3:BotaoD a5:BotaoD Conta validoDesde : Data eAndar eAndar pontos :  Integer vencimento : Data 10: atualiza cor : enum{prata, ouro} 2: atualiza creditar(pts : Integer) nomeTratamentoCliente : String 0..* servicosOferecidos debitar(pts : Integer) Servico estaVazia() : Boolean condicao : Boolean cartao pontosADebitar : Integer servicosDisponiveis 3: ilumina pontosACreditar : Integer 11: desilumina 0..* transacoes 0..* cont:Contr descricao : String 7: desilumina olador Transacao transacoes transacoes pontos : Integer 6: abre data : Data 0..* 5: chegou 0..* programa() : ProgramFidelidade 8: fecha 4: mova Credito Debit o elevador:E porta:Po levador rta UML OCL Joao Maria a3 a5 cont elevador atualiza / mova, ilumine atualize aperta ilumina mova atualiza / mova, ilumine aperta esperando funcionando atualize ilumina chegou / desilumine mova chegou abra 44 PLP- UFCG
  45. 45. OCL - Características Invariantes Corpo de  operações UML OCL Pré­condições Pós­condições Regras de  Especificações  derivação de Inicialização 45 PLP- UFCG
  46. 46. Operação iterate context ParceiroPrograma inv: ParceiroPrograma self.servico.transacao->iterate( quantidadeDeClientes : Integer t: Transacao; acum: Integer = 0 | if t.isTypeOf(Debito) then 0..* servicosOferecidos acum + pontos Servico else condicao : Boolean acum pontosADebitar : Integer endif pontosACreditar : Integer ) descricao : String <= self.servico.transacao->iterate( t: Transacao; 0..* transacoes acum: Integer = 0 | if t.isTypeOf(Credito) then Trans acao pontos : Integer acum + pontos data : Data else acum programa() : ProgramFidelidade endif ) 46 PLP- UFCG
  47. 47. Navegações x Multiplicidades Cliente nome : Stri ng Programa Fidel idade pronom eTrata mento : String programa masculi no : Bool ean 1..* cadastrar(c : Cliente) 0..* 0..* data Aniversario : Data rg : Stri ng idad e() 1..* pa rceiro s ParceiroPrograma quantidadeDeClientes : Integer context ParceiroPrograma inv: quantidadeDeClientes = programaFidelidade.cliente ->asSet()->size() 47 PLP- UFCG
  48. 48. OCL – oclIsNew() Cl iente ProgramaFidelidade nome : String pronomeTratamento : String programa masculino : Boolean cadastrar(c : Cliente) dataAniversario : Data obtemServicos() : Set(Servicos) 0..* 0..* rg : String idade() context cadastrarECriarCliente(n: String, d: Data):Cliente post: result.oclIsNew() and result.nome = n and result.dataAniversario = d and clientes->includes(result) 48 PLP- UFCG
  49. 49. OCL – Variáveis locais context ProgramaFidelidade inv: ProgramaFidelidade let potuacao : Integer = ca dastrar(c : Cl iente) self.parceiros.servicosOferecidos. 1..* obtemServico s() : Set(Servicos) transacoes.pontos in if pontuacao > 100 1..* parceiros then … ParceiroPrograma qua ntidadeDeClien tes : Integer else if pontuacao > 50 then … else if pontuacao > 30 0..* servicosOferecidos then … Servico condicao : Boolean pontosADebitar : Integer pontosACreditar : Integer descricao : String Transacao transacoes pontos : Integer data : Data 0..* programa() : ProgramFidelidade 49 PLP- UFCG
  50. 50. Desenvolvimento Dirigido a Modelos • Total especificação do software através de modelos • UML + OCL capazes de realizar tal descrição • UML e OCL ainda não são 100% executáveis • A cada dia surgem novos compiladores para UML e OCL • Linguagens independentes de plataformas • Em breve: Programadores UML e OCL • Mais: Semântica de Ações, ATL, QVT, MOF, KM3, Kermeta, Ecore, EMF, MODELOG, ADT, etc (Vejam na disciplina DDM!) 50 PLP- UFCG
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×