PLP – Paradigma de Programação Orientado a Modelos

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    PLP – Paradigma de Programação Orientado a Modelos - Presentation Transcript

    1. PLP – Paradigma de Programação Orientado a Modelos Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG
    2. Agenda - Introdução - DDM - Modelos - UML - Diagramas UML - OCL - Exemplos 2 PLP- UFCG
    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. 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. Desenvolvimento de Software Tradicional • Principais problemas: – Produtividade – Portabilidade – Interoperabilidade – Documentação 5 PLP- UFCG
    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. 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. MDA - Ciclo de Vida requisitos Texto + Processo DDM  modelos  análise modelos projeto modelos implementação código testes 8 PLP- UFCG
    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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Pacotes 26 PLP- UFCG
    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. 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. Máquina de estados comportamental 29 PLP- UFCG
    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. 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. 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. Diagrama de Atividades 33 PLP- UFCG
    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. 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. 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. 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. Diagrama de Seqüência Fragmento laço  38 PLP- UFCG
    39. Diagrama de Seqüência 39 PLP- UFCG
    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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

    + adorepumpadorepump, 11 months ago

    custom

    512 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 512
      • 512 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 8
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories