SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Abordagem de desenvolvimento MDA

         Natã Venâncio de Melo
       (natanvm@dsc.ufcg.edu.br)
Agenda

       Motivação
       Um Exemplo Simples
       Processo de MDD/MDA
       Demonstração de geração de código
       Considerações Finais
       Dúvidas




    2               Abordagem de desenvolvimento MDA - Natã Venâncio
Motivação

       Alguns aspectos do processo de desenvolvimento de
        software tradicional apresentam problemas na forma
        como são abordados. São eles:

           Produtividade
           Portabilidade
           Manutenção
           Documentação




    3                 Abordagem de desenvolvimento MDA - Natã Venâncio
Um Exemplo Simples
                                            1.   public class Usuario {

                                            2.           private String nome;
                                            3.           private String login;
                                            4.           private String senha;
                                            5.           public String getLogin( ){
                                            6.                        return this.login
                                            7.           }
                                            8.           public void setSenha (String senha){
                                            9.                        this.senha = senha;
                                            10.          }
                                            11.          public String getSenha (){
                                            12.                       return this.senha;
                                            13.          }
                                            14.          public String getNome (){
Desenvolvimento com foco no                 15.                       return this.nome;
                                            16.          }
  código (implementação)!
                                            17. }




 4                Abordagem de desenvolvimento MDA - Natã Venâncio
Um Exemplo Simples

                                         1.   public class User {

                                         2.           private String name;
                                         3.           private String login;



                                X
                                         4.           private String password;
                                         5.           public String getLogin( ){
                                         6.                        return this.login
                                         7.           }
                                         8.           public void setPassword (String password){
                                         9.                        this.password = password;
                                         10.          }
                                         11.          public String getPassword (){
                                         12.                       return this.password;
                                         13.          }
Desenvolvimento com foco no              14.          public String getName (){
                                         15.                       return this.name;
  código (implementação)!                16.          }
                                         17. }




 5                Abordagem de desenvolvimento MDA - Natã Venâncio
Um Exemplo Simples
                                         1.   public class Usuario {

                                         2.           private String name;
                                         3.           private String login;
                                         4.           private String password;




     X
                                         5.           private String address;
                                         6.           public String getLogin( ){
                                         7.                         return this.login
                                         8.           }



                                X
                                         9.           public void setPassword (String password){
                                         10.                        this.password = password;
                                         11.          }
                                         12.          public String getPassword (){
                                         13.                        return this.password;
                                         14.          }
                                         15.          public String getName (){
                                         16.                        return this.name;
                                         17.          }
Desenvolvimento com foco no              18.           public String getAddress(){
                                         19.                        return this.address;
  código (implementação)!                20.          }
                                         21. }


 6                Abordagem de desenvolvimento MDA - Natã Venâncio
Um Exemplo Simples

                                           1.   public class User {

                                           2.           private String name;
                                           3.           private String login;
                                           4.           private String password;
                                           5.           public String getLogin( ){
                                           6.                        return this.login
                                           7.           }
                                           8.           public void setPassword (String password){
                                           9.                        this.password = password;
                                           10.          }
                                           11.          public String getPassword (){
                                           12.                       return this.password;
                                           13.          }
Desenvolvimento com foco nos               14.          public String getName (){
                                           15.                       return this.name;
   modelos (modelagem)!                    16.          }
                                           17. }




  7                Abordagem de desenvolvimento MDA - Natã Venâncio
Um Exemplo Simples
                                           1.   public class User {

                                           2.           private String name;
                                           3.           private String login;
                                           4.           private String password;
                                           5.           private String address;
                                           6.           public String getLogin( ){
                                           7.                        return this.login
                                           8.           }
                                           9.           public void setPassword (String password){
                                           10.                       this.password = password;
                                           11.          }
                                           12.          public String getPassword (){
                                           13.                       return this.password;
                                           14.          }
                                           15.          public String getName (){
                                           16.                       return this.name;
Desenvolvimento com foco nos               17.          }
   modelos (modelagem)!                    18.          public String getAddress(){
                                           19.                       return this.address;
                                           20.          }
                                           21.
                                           22. }

  8                Abordagem de desenvolvimento MDA - Natã Venâncio
Processo MDD/MDA

       MDD – Model Driven Development
       MDA – Model Driven Architecture
       Proposta da OMG
           Propor uma mudança de paradigma
       Focar o desenvolvimento do software em modelos
           Modelos não são apenas documentos para auxiliar o
            desenvolvimento de software, eles são o próprio software




    9                   Abordagem de desenvolvimento MDA - Natã Venâncio
Framework MDA

PIM




                     PIM - Platform Independent Model

10      Abordagem de desenvolvimento MDA - Natã Venâncio
Framework MDA

PIM



PSM




                       PSM – Platform Specific Model
                     PIM - Platform Independent Model

11      Abordagem de desenvolvimento MDA - Natã Venâncio
Framework MDA

PIM



PSM



      Code                     PIM - Platform Independent Model
                                 PSM – Platform Specific Model


12           Abordagem de desenvolvimento MDA - Natã Venâncio
MDA – Transformação

    Ferramenta de transformação                                   PIM
    Definição de transformação
        Regras de transformação

                                                                   PSM
    Transformações são escritas em:
        ATL, MOFScript, MOF2Text, …

                                                                         Code


    13               Abordagem de desenvolvimento MDA - Natã Venâncio
Demonstração

    Transformação Textual (Modelo para código)


         Meta-Modelo                 Transformação
            Fonte                    em MOFScript




                                                 Tool


         Modelo Fonte                     Tool
                                                                     Código
                                                        Tool




    14                  Abordagem de desenvolvimento MDA - Natã Venâncio
Considerações Finais

    A abordagem MDA vem evoluindo a cada ano
    Exemplos de ferramentas que produzem programas
     baseados em MDA: OPTIMALJ, MEGARA e
     ANDROMDA
    RUP – Rational Unified Process
    Pesquisas (GMF)
        MetaCG (Download)
        UDT (Download)




    15             Abordagem de desenvolvimento MDA - Natã Venâncio
Dúvidas?




16         Abordagem de desenvolvimento MDA - Natã Venâncio
Grupo PET Computação




     Obrigado                              Platéia


                                        Anderson Ledo




17     Abordagem de desenvolvimento MDA - Natã Venâncio
Abordagem de
     desenvolvimento MDA


              Natã Venâncio
        (natanvm@dsc.ufcg.edu.br)

              Anderson Ledo
          (ledo@dsc.ufcg.edu.br)



18   Abordagem de desenvolvimento MDA - Natã Venâncio

Contenu connexe

En vedette

Bibliotecas e evolucao 2.0
Bibliotecas e evolucao 2.0Bibliotecas e evolucao 2.0
Bibliotecas e evolucao 2.0Jorgivania Lopes
 
Apresentacao campinas
Apresentacao campinasApresentacao campinas
Apresentacao campinasPublicaTUDO
 
Musica ufpb
Musica ufpbMusica ufpb
Musica ufpbDonguto
 
Motores de busca em redes sociais
Motores de busca em redes sociaisMotores de busca em redes sociais
Motores de busca em redes sociaisNatã Melo
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaNatã Melo
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesModel-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesJordi Cabot
 
[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google MapsNatã Melo
 
Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Natã Melo
 
O Grande Livro da Cannabis
O Grande Livro da CannabisO Grande Livro da Cannabis
O Grande Livro da CannabisThaline Daila
 
Educação a Distância
Educação a DistânciaEducação a Distância
Educação a DistânciaNatã Melo
 
Hosting y dominio
Hosting y dominioHosting y dominio
Hosting y dominioroxy19m
 
Akirachix Engaging Women
Akirachix Engaging WomenAkirachix Engaging Women
Akirachix Engaging WomenWeb Gathering
 
セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 VOYAGE GROUP
 

En vedette (20)

Bibliotecas e evolucao 2.0
Bibliotecas e evolucao 2.0Bibliotecas e evolucao 2.0
Bibliotecas e evolucao 2.0
 
Apresentacao campinas
Apresentacao campinasApresentacao campinas
Apresentacao campinas
 
Musica ufpb
Musica ufpbMusica ufpb
Musica ufpb
 
10. colisões
10. colisões10. colisões
10. colisões
 
Motores de busca em redes sociais
Motores de busca em redes sociaisMotores de busca em redes sociais
Motores de busca em redes sociais
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - Kafka
 
Mapping Study
Mapping Study�Mapping Study�
Mapping Study
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesModel-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
 
[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps
 
Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4
 
O Grande Livro da Cannabis
O Grande Livro da CannabisO Grande Livro da Cannabis
O Grande Livro da Cannabis
 
Educação a Distância
Educação a DistânciaEducação a Distância
Educação a Distância
 
Phenylketonuria
PhenylketonuriaPhenylketonuria
Phenylketonuria
 
Dominios y URL
Dominios y URLDominios y URL
Dominios y URL
 
Introducing MDSD
Introducing MDSDIntroducing MDSD
Introducing MDSD
 
Hosting y dominio
Hosting y dominioHosting y dominio
Hosting y dominio
 
Produtos quimicos
Produtos quimicosProdutos quimicos
Produtos quimicos
 
Akirachix Engaging Women
Akirachix Engaging WomenAkirachix Engaging Women
Akirachix Engaging Women
 
セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 
 

Similaire à MDA - Model Driven Architecture

Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.pptEmerson Cardoso
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016Rafael Ponte
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 

Similaire à MDA - Model Driven Architecture (6)

POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 

Plus de Natã Melo

Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Natã Melo
 
Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Natã Melo
 
Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Natã Melo
 
Copas do Mundo de Futebol
Copas do Mundo de FutebolCopas do Mundo de Futebol
Copas do Mundo de FutebolNatã Melo
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem PythonNatã Melo
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisNatã Melo
 
Sistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSSistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSNatã Melo
 
Regresão Múltipla
Regresão MúltiplaRegresão Múltipla
Regresão MúltiplaNatã Melo
 
Teste Dirigido por Modelos
Teste Dirigido por ModelosTeste Dirigido por Modelos
Teste Dirigido por ModelosNatã Melo
 
Demonstração ApTest Manager
Demonstração   ApTest ManagerDemonstração   ApTest Manager
Demonstração ApTest ManagerNatã Melo
 
Redes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteRedes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteNatã Melo
 
Apresentação JavaCG MetaCG
Apresentação JavaCG MetaCGApresentação JavaCG MetaCG
Apresentação JavaCG MetaCGNatã Melo
 

Plus de Natã Melo (17)

Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3
 
Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2
 
Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1
 
Copas do Mundo de Futebol
Copas do Mundo de FutebolCopas do Mundo de Futebol
Copas do Mundo de Futebol
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes Sociais
 
Sistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSSistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINS
 
Terremotos
TerremotosTerremotos
Terremotos
 
Regresão Múltipla
Regresão MúltiplaRegresão Múltipla
Regresão Múltipla
 
Linguagem Go
Linguagem GoLinguagem Go
Linguagem Go
 
Teste Dirigido por Modelos
Teste Dirigido por ModelosTeste Dirigido por Modelos
Teste Dirigido por Modelos
 
Demonstração ApTest Manager
Demonstração   ApTest ManagerDemonstração   ApTest Manager
Demonstração ApTest Manager
 
MetaCG
MetaCG MetaCG
MetaCG
 
Redes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteRedes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligente
 
Apresentação JavaCG MetaCG
Apresentação JavaCG MetaCGApresentação JavaCG MetaCG
Apresentação JavaCG MetaCG
 
Python aula 1
Python aula 1Python aula 1
Python aula 1
 
Python aula 2
Python aula 2Python aula 2
Python aula 2
 

MDA - Model Driven Architecture

  • 1. Abordagem de desenvolvimento MDA Natã Venâncio de Melo (natanvm@dsc.ufcg.edu.br)
  • 2. Agenda  Motivação  Um Exemplo Simples  Processo de MDD/MDA  Demonstração de geração de código  Considerações Finais  Dúvidas 2 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 3. Motivação  Alguns aspectos do processo de desenvolvimento de software tradicional apresentam problemas na forma como são abordados. São eles:  Produtividade  Portabilidade  Manutenção  Documentação 3 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 4. Um Exemplo Simples 1. public class Usuario { 2. private String nome; 3. private String login; 4. private String senha; 5. public String getLogin( ){ 6. return this.login 7. } 8. public void setSenha (String senha){ 9. this.senha = senha; 10. } 11. public String getSenha (){ 12. return this.senha; 13. } 14. public String getNome (){ Desenvolvimento com foco no 15. return this.nome; 16. } código (implementação)! 17. } 4 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 5. Um Exemplo Simples 1. public class User { 2. private String name; 3. private String login; X 4. private String password; 5. public String getLogin( ){ 6. return this.login 7. } 8. public void setPassword (String password){ 9. this.password = password; 10. } 11. public String getPassword (){ 12. return this.password; 13. } Desenvolvimento com foco no 14. public String getName (){ 15. return this.name; código (implementação)! 16. } 17. } 5 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 6. Um Exemplo Simples 1. public class Usuario { 2. private String name; 3. private String login; 4. private String password; X 5. private String address; 6. public String getLogin( ){ 7. return this.login 8. } X 9. public void setPassword (String password){ 10. this.password = password; 11. } 12. public String getPassword (){ 13. return this.password; 14. } 15. public String getName (){ 16. return this.name; 17. } Desenvolvimento com foco no 18. public String getAddress(){ 19. return this.address; código (implementação)! 20. } 21. } 6 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 7. Um Exemplo Simples 1. public class User { 2. private String name; 3. private String login; 4. private String password; 5. public String getLogin( ){ 6. return this.login 7. } 8. public void setPassword (String password){ 9. this.password = password; 10. } 11. public String getPassword (){ 12. return this.password; 13. } Desenvolvimento com foco nos 14. public String getName (){ 15. return this.name; modelos (modelagem)! 16. } 17. } 7 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 8. Um Exemplo Simples 1. public class User { 2. private String name; 3. private String login; 4. private String password; 5. private String address; 6. public String getLogin( ){ 7. return this.login 8. } 9. public void setPassword (String password){ 10. this.password = password; 11. } 12. public String getPassword (){ 13. return this.password; 14. } 15. public String getName (){ 16. return this.name; Desenvolvimento com foco nos 17. } modelos (modelagem)! 18. public String getAddress(){ 19. return this.address; 20. } 21. 22. } 8 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 9. Processo MDD/MDA  MDD – Model Driven Development  MDA – Model Driven Architecture  Proposta da OMG  Propor uma mudança de paradigma  Focar o desenvolvimento do software em modelos  Modelos não são apenas documentos para auxiliar o desenvolvimento de software, eles são o próprio software 9 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 10. Framework MDA PIM PIM - Platform Independent Model 10 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 11. Framework MDA PIM PSM PSM – Platform Specific Model PIM - Platform Independent Model 11 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 12. Framework MDA PIM PSM Code PIM - Platform Independent Model PSM – Platform Specific Model 12 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 13. MDA – Transformação  Ferramenta de transformação PIM  Definição de transformação  Regras de transformação PSM  Transformações são escritas em:  ATL, MOFScript, MOF2Text, … Code 13 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 14. Demonstração  Transformação Textual (Modelo para código) Meta-Modelo Transformação Fonte em MOFScript Tool Modelo Fonte Tool Código Tool 14 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 15. Considerações Finais  A abordagem MDA vem evoluindo a cada ano  Exemplos de ferramentas que produzem programas baseados em MDA: OPTIMALJ, MEGARA e ANDROMDA  RUP – Rational Unified Process  Pesquisas (GMF)  MetaCG (Download)  UDT (Download) 15 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 16. Dúvidas? 16 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 17. Grupo PET Computação Obrigado Platéia Anderson Ledo 17 Abordagem de desenvolvimento MDA - Natã Venâncio
  • 18. Abordagem de desenvolvimento MDA Natã Venâncio (natanvm@dsc.ufcg.edu.br) Anderson Ledo (ledo@dsc.ufcg.edu.br) 18 Abordagem de desenvolvimento MDA - Natã Venâncio