SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Governança ti tcu - outros processos
Governança ti   tcu - outros processosGovernança ti   tcu - outros processos
Governança ti tcu - outros processosGustavo Loureiro
 
Gerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em softwareGerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em softwareelliando dias
 
A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...
A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...
A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...LVJ | Consultoria Logística
 
Iterasys Test Show 2010 - Estratégia Baseada no TMap
Iterasys Test Show 2010 - Estratégia Baseada no TMapIterasys Test Show 2010 - Estratégia Baseada no TMap
Iterasys Test Show 2010 - Estratégia Baseada no TMapJosé Correia
 
PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...
PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...
PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...CADWARE-TECHNOLOGY
 
Como Analizar Curvas De Cp E Cpk
Como Analizar Curvas De Cp E CpkComo Analizar Curvas De Cp E Cpk
Como Analizar Curvas De Cp E CpkRicardara
 
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Daniel Moraes
 
Implementing Product Line Variabilities
Implementing Product Line VariabilitiesImplementing Product Line Variabilities
Implementing Product Line VariabilitiesMichel Alves
 
MPS.BR Lições Aprendidas
MPS.BR Lições AprendidasMPS.BR Lições Aprendidas
MPS.BR Lições AprendidasGorio Eduardo
 
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...Diogo Rocha Ferreira de Menezes
 
MPS.BR - Melhoria de Processo de Software Brasileiro
MPS.BR - Melhoria de Processo de Software BrasileiroMPS.BR - Melhoria de Processo de Software Brasileiro
MPS.BR - Melhoria de Processo de Software BrasileiroMERKADO DELIVERY
 
Lean Manufacturing Intro (pt)
Lean Manufacturing Intro (pt)Lean Manufacturing Intro (pt)
Lean Manufacturing Intro (pt)Luis Fernandes
 

Mais procurados (20)

Governança ti tcu - outros processos
Governança ti   tcu - outros processosGovernança ti   tcu - outros processos
Governança ti tcu - outros processos
 
Gerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em softwareGerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em software
 
A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...
A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...
A Intralogística no Epicentro da Cadeia de Suprimentos - Revista Mundo Logíst...
 
Cmmi e mps.Br
Cmmi e mps.BrCmmi e mps.Br
Cmmi e mps.Br
 
IBM Rational Unified Process
IBM Rational Unified ProcessIBM Rational Unified Process
IBM Rational Unified Process
 
Iterasys Test Show 2010 - Estratégia Baseada no TMap
Iterasys Test Show 2010 - Estratégia Baseada no TMapIterasys Test Show 2010 - Estratégia Baseada no TMap
Iterasys Test Show 2010 - Estratégia Baseada no TMap
 
CMM e CMMI
CMM e CMMICMM e CMMI
CMM e CMMI
 
Slides MPS-BR
Slides MPS-BRSlides MPS-BR
Slides MPS-BR
 
Trabalho CMM
Trabalho CMMTrabalho CMM
Trabalho CMM
 
PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...
PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...
PLM-Summit 2014 | 8-9 abril | Apresentação 07/14 | Evandro Gama | Cadware-Tec...
 
Aula 07 qs - cmmi
Aula 07   qs - cmmiAula 07   qs - cmmi
Aula 07 qs - cmmi
 
Como Analizar Curvas De Cp E Cpk
Como Analizar Curvas De Cp E CpkComo Analizar Curvas De Cp E Cpk
Como Analizar Curvas De Cp E Cpk
 
O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012
 
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
 
Implementing Product Line Variabilities
Implementing Product Line VariabilitiesImplementing Product Line Variabilities
Implementing Product Line Variabilities
 
MPS.BR Lições Aprendidas
MPS.BR Lições AprendidasMPS.BR Lições Aprendidas
MPS.BR Lições Aprendidas
 
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
 
MPS.BR - Melhoria de Processo de Software Brasileiro
MPS.BR - Melhoria de Processo de Software BrasileiroMPS.BR - Melhoria de Processo de Software Brasileiro
MPS.BR - Melhoria de Processo de Software Brasileiro
 
Lean Manufacturing Intro (pt)
Lean Manufacturing Intro (pt)Lean Manufacturing Intro (pt)
Lean Manufacturing Intro (pt)
 
Aula04 3
Aula04 3Aula04 3
Aula04 3
 

Destaque

Tecnologias de Apoio
Tecnologias de ApoioTecnologias de Apoio
Tecnologias de ApoioDiana Soares
 
Genetic Algorithm For Job Shop Problem
Genetic Algorithm For Job Shop ProblemGenetic Algorithm For Job Shop Problem
Genetic Algorithm For Job Shop Problemmarcelobeckmann
 
Mineração de dados com a presença da deriva conceitual
Mineração de dados com a presença da deriva conceitualMineração de dados com a presença da deriva conceitual
Mineração de dados com a presença da deriva conceitualLuis Miguel Rojas Aguilera
 
Inteligência Artificial: a ciência da antecipação em ambientes incertos
Inteligência Artificial: a ciência da antecipação em ambientes incertosInteligência Artificial: a ciência da antecipação em ambientes incertos
Inteligência Artificial: a ciência da antecipação em ambientes incertosCarlos R. B. Azevedo
 
Matemática das redes - parte II
Matemática das redes - parte IIMatemática das redes - parte II
Matemática das redes - parte IIDalton Martins
 
Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte IDalton Martins
 
Pos Usp Ngs Big Data Parte 2
Pos Usp Ngs Big Data Parte 2Pos Usp Ngs Big Data Parte 2
Pos Usp Ngs Big Data Parte 2Beta Campos
 
Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento camila_seixas
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 
Sistemas operacionais escalonamento de processos
Sistemas operacionais  escalonamento de processosSistemas operacionais  escalonamento de processos
Sistemas operacionais escalonamento de processosTalles Nascimento Rodrigues
 
Introdução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes SociaisIntrodução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes Sociaisfabiomalini
 
Técnicas para o Desenvolvimento de Cronogramas
Técnicas para o Desenvolvimento de CronogramasTécnicas para o Desenvolvimento de Cronogramas
Técnicas para o Desenvolvimento de CronogramasPeter Mello
 

Destaque (17)

Tecnologia assistiva
Tecnologia assistivaTecnologia assistiva
Tecnologia assistiva
 
Tecnologias de Apoio
Tecnologias de ApoioTecnologias de Apoio
Tecnologias de Apoio
 
Processamento.pptx
Processamento.pptxProcessamento.pptx
Processamento.pptx
 
Genetic Algorithm For Job Shop Problem
Genetic Algorithm For Job Shop ProblemGenetic Algorithm For Job Shop Problem
Genetic Algorithm For Job Shop Problem
 
4 groebner danton4 dissertacao
4 groebner danton4 dissertacao4 groebner danton4 dissertacao
4 groebner danton4 dissertacao
 
Mineração de dados com a presença da deriva conceitual
Mineração de dados com a presença da deriva conceitualMineração de dados com a presença da deriva conceitual
Mineração de dados com a presença da deriva conceitual
 
Alessandra henriquesferreiravc
Alessandra henriquesferreiravcAlessandra henriquesferreiravc
Alessandra henriquesferreiravc
 
Pi1415 tudo
Pi1415 tudoPi1415 tudo
Pi1415 tudo
 
Inteligência Artificial: a ciência da antecipação em ambientes incertos
Inteligência Artificial: a ciência da antecipação em ambientes incertosInteligência Artificial: a ciência da antecipação em ambientes incertos
Inteligência Artificial: a ciência da antecipação em ambientes incertos
 
Matemática das redes - parte II
Matemática das redes - parte IIMatemática das redes - parte II
Matemática das redes - parte II
 
Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte I
 
Pos Usp Ngs Big Data Parte 2
Pos Usp Ngs Big Data Parte 2Pos Usp Ngs Big Data Parte 2
Pos Usp Ngs Big Data Parte 2
 
Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Sistemas operacionais escalonamento de processos
Sistemas operacionais  escalonamento de processosSistemas operacionais  escalonamento de processos
Sistemas operacionais escalonamento de processos
 
Introdução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes SociaisIntrodução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes Sociais
 
Técnicas para o Desenvolvimento de Cronogramas
Técnicas para o Desenvolvimento de CronogramasTécnicas para o Desenvolvimento de Cronogramas
Técnicas para o Desenvolvimento de Cronogramas
 

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

Metodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosMetodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosDaniel de Amaral
 
Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1Haroldo Salgado
 
Aula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdfAula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdfFChico2
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testeselliando dias
 
Apresentacao Omar Mussi 24 Julho 2008
Apresentacao Omar Mussi 24 Julho 2008Apresentacao Omar Mussi 24 Julho 2008
Apresentacao Omar Mussi 24 Julho 2008Omar Mussi
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxMarcondesTiburcio
 
CMM – Capability Maturity Model
CMM – Capability Maturity Model CMM – Capability Maturity Model
CMM – Capability Maturity Model alef menezes
 
PMBOK & RUP - UFAM 2012/2 - Gerência de Projetos
PMBOK & RUP - UFAM 2012/2 - Gerência de ProjetosPMBOK & RUP - UFAM 2012/2 - Gerência de Projetos
PMBOK & RUP - UFAM 2012/2 - Gerência de ProjetosUrique Hoffmann
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
Apresentação no congresso Gestão por Processos
Apresentação no congresso Gestão por ProcessosApresentação no congresso Gestão por Processos
Apresentação no congresso Gestão por ProcessosLeo Madeira
 
Apresentação do congresso Gestão por Processos IQPC
Apresentação do congresso Gestão por Processos IQPCApresentação do congresso Gestão por Processos IQPC
Apresentação do congresso Gestão por Processos IQPCLeo Madeira
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1Tiago Vizoto
 

Semelhante a PLP – Paradigma de Programação Orientado a Modelos (20)

ALM focado em resultados
ALM focado em resultadosALM focado em resultados
ALM focado em resultados
 
Metodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosMetodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de Projetos
 
Es 09
Es 09Es 09
Es 09
 
347842.ppt
347842.ppt347842.ppt
347842.ppt
 
Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1
 
Aula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdfAula 3 - Processos de Software.pdf
Aula 3 - Processos de Software.pdf
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testes
 
Mpu 2012 ppt
Mpu 2012 pptMpu 2012 ppt
Mpu 2012 ppt
 
Apresentacao Omar Mussi 24 Julho 2008
Apresentacao Omar Mussi 24 Julho 2008Apresentacao Omar Mussi 24 Julho 2008
Apresentacao Omar Mussi 24 Julho 2008
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptx
 
CMM – Capability Maturity Model
CMM – Capability Maturity Model CMM – Capability Maturity Model
CMM – Capability Maturity Model
 
PMBOK & RUP - UFAM 2012/2 - Gerência de Projetos
PMBOK & RUP - UFAM 2012/2 - Gerência de ProjetosPMBOK & RUP - UFAM 2012/2 - Gerência de Projetos
PMBOK & RUP - UFAM 2012/2 - Gerência de Projetos
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
Apresentação no congresso Gestão por Processos
Apresentação no congresso Gestão por ProcessosApresentação no congresso Gestão por Processos
Apresentação no congresso Gestão por Processos
 
Apresentação do congresso Gestão por Processos IQPC
Apresentação do congresso Gestão por Processos IQPCApresentação do congresso Gestão por Processos IQPC
Apresentação do congresso Gestão por Processos IQPC
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Analise aula2
Analise aula2Analise aula2
Analise aula2
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

PLP – Paradigma de Programação Orientado a Modelos

  • 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