• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
PLP – Paradigma de Programação Orientado a Modelos
 

PLP – Paradigma de Programação Orientado a Modelos

on

  • 4,213 views

 

Statistics

Views

Total Views
4,213
Views on SlideShare
4,177
Embed Views
36

Actions

Likes
0
Downloads
125
Comments
0

1 Embed 36

http://www.slideshare.net 36

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • PLP – Paradigma de Programação Orientado a Modelos Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG
    • Agenda - Introdução - DDM - Modelos - UML - Diagramas UML - OCL - Exemplos 2 PLP- UFCG
    • 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
    • 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
    • Desenvolvimento de Software Tradicional • Principais problemas: – Produtividade – Portabilidade – Interoperabilidade – Documentação 5 PLP- UFCG
    • 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
    • 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
    • MDA - Ciclo de Vida requisitos Texto + Processo DDM  modelos  análise modelos projeto modelos implementação código testes 8 PLP- UFCG
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Atributos • Propriedades: – Derivado – Visibilidade • (public, protected, private) – Nome – Multiplicidade – Tipo – Valor inicial default – Estereótipo – Escopo • Instance (default) • Classifier (propriedade sublinhada) 21 PLP- UFCG
    • Atributos • Propriedades pré-definidas: – changeable – addOnly – frozen Propriedades sobre atributos • O tipo de um atributo deve ser necessariamente: – Primitivo – Enumeração 22 PLP- UFCG
    • 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
    • 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
    • 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
    • Pacotes 26 PLP- UFCG
    • 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
    • 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
    • Máquina de estados comportamental 29 PLP- UFCG
    • 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
    • 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
    • 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
    • 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: – Uma operação – Uma classe – Um componente – Um caso de uso – Um sistema como um todo • Diferentes ênfases podem ser dadas 34 PLP- UFCG
    • 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
    • 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
    • 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
    • Diagrama de Seqüência Fragmento laço  38 PLP- UFCG
    • 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 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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