Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Desenvolvimento Dirigido a Modelos (DDM) - Visão Geral Franklin Ramalho Universidade Federal de Campina Grande - UFCG DDM-UFCG 2 Agenda - Motivação - O que é DDM? - Princípios - Padrões da OMG para MDA - Arquitetura MDA - Aplicações - Simples Exemplo DDM-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 DDM-UFCG 4 Ciclo de Vida em Desenvolvimento de Software tradicional requisitos análise projeto implementação testes Texto diagramas e texto Diagramas e texto código Atalho Processo iterativo Em teoria DDM-UFCG 5 Desenvolvimento de Software Tradicional • Principais problemas: – Produtividade – Portabilidade – Interoperabilidade – Documentação DDM-UFCG 6 Problema da Produtividade requisitos análise projeto implementação testes Texto diagramas e texto Diagramas e texto código Atalho Processo iterativo Em teoria Manutenção implementação testes • O que fazer se o código possuir mais de 20000 linhas? 2 DDM-UFCG 7 Problema da Portabilidade • A cada ano novas tecnologias aparecem – Java, XML, HTML, SOAP, UML, J2EE, .NET, JSP, ASP, Flash, Web Services, etc. • Empresas precisam seguir estas novas tecnologias – A tecnologia é solicitada pelo cliente – A tecnologia soluciona problemas reais – Fornecedores de ferramentas não dão mais suporte à antigas tecnologias • Diferentes versões de uma mesma tecnologia DDM-UFCG 8 Problema Interoperabilidade • Sistemas de software raramente executam isolados de outros DDM-UFCG 9 Problema da Documentação • Tarefa tardia dentro do processo de desenvolvimento de software tradicional – Principal tarefa é produzir código – Documentar retarda o desenvolvimento do software – Documentação resultante é de baixíssima qualidade (quando existe alguma!) • Documentação gerada a partir do código – Eiffel, Java, etc. • Mas, documentação é parte do código e este é parte da documentação. DDM-UFCG 10 Sincronizando e capturando informação Vida útil extensa Equipe grande e rotativa Múltiplas versões Tarefas distribuídas Sistemas Complexos Modelos 1 0 DDM-UFCG 11 Agenda - Motivação - O que é DDM? - Princípios - Padrões da OMG para MDA - Arquitetura MDA - Simples Exemplo - Aplicações DDM-UFCG 12 • Desenvolvimento Dirigido por Modelos (DDM) – MDD (Model-Driven Development) – MDE (Model-Driven Engineering) Desenvolvimento Dirigido por Modelos Técnica de eng. de software consistindo da aplicação de modelos e suas tecnologias no intuito de aumentar o nível de abstração sobre o qual desenvolvedores criam e evoluem software, com o objetivo de simplificar e formalizar as várias atividades e tarefas envolvidas no ciclo de vida de um software. 1 2 3 DDM-UFCG 13 • Desenhistas – Modelos para facilitar o entendimento do código – Seletivo • Projetistas – Arquitetos de software semelhantes a arquitetos da construção civil – Sem interferência dos programadores • Programadores de modelo – Modelos como linguagem de desenvolvimento com semântica executável – Modelos como linguagem executável Comunidade DDM DDM-UFCG 14 Prática tradicional: Desenhistas e projetistas Abstração Executabilidade UML + LN Requisitos da Aplicação Modelo UML Código Fonte Código Binário Mistura de 2 questões Ortogonais: refinamento de negócio e tradução para uma plataforma Produtividade Portabilidade Interoperabilidade Documentação DDM-UFCG 15 Abstração Executabilidade UML/OCL CIM - Negócio UML/OCL PIM – Especificação da aplicação Perfis UML/OCL PSM – Realização da aplicação Código Fonte Código Binário Padrões de tradução de modelos Padrões de refinamento de modelos DDM: programadores de modelos UML/OCL PIM – Realização da aplicação Produtividade Portabilidade Interoperabilidade Documentação DDM-UFCG 16 • MDA (Model Driven Architecture) – Uma realização particular de DDM – Iniciativa da OMG (Object Management Group) – 1997: Lançamento – 2000: Definição – 2007: Aperfeiçoamento e ampla utilização • Outras: – Agile Model-Driven Development (AMDD) – Domain-Oriented Programming (DOP) – Microsoft’s Software Factories • Predomínio e padrões tornam MDA o carro-chefe de DDM GMF/UFCG SBES 2007 MDA 16 DDM-UFCG 17 Agenda - Motivação - O que é DDM? - Princípios - Padrões da OMG para DDM - Arquitetura DDM - Simples Exemplo - Aplicações DDM-UFCG 18 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 4 DDM-UFCG 19 MDA - Ciclo de Vida requisitos análise projeto implementação testes Texto + modelos modelos modelos código Processo DDM DDM-UFCG 20 MDA - Ciclo de Vida requisitos análise testes CIM PIM código PSM Transformações PIM-PSM TOOL Transformações PSM-código TOOL A U T O M A T I C A Processo Iterativo PIM parcial Transformações CIM-PIM TOOL DDM-UFCG 21 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] DDM-UFCG 22 Meta-modelo • Um meta-modelo é um modelo que descreve um modelo – Ex: Meta-modelo de UML, meta-modelo de Java, meta-modelo de redes de Petri, etc. • Um modelo é uma instância de um meta-modelo • Meta-linguagem é a linguagem usada para descrever meta- modelos • Meta-modelos – Base para especificação de transformações DDM-UFCG 23Meta-modelos Meta-modelo Modelo Linguagem é escrito em é definido por é escrito em Meta-linguagem GMF/UFCG SBES 2007 2 3 DDM-UFCG 24 Exemplo de meta-modelo actor +name 0 ..1 system +name PedirItem ValidatarCartao e-Store Modelo UML: Diagrama de Casos de Uso Meta-Modelo de Casos de Uso useCase +title 1 .. * 0 ..* extends includes 5 DDM-UFCG 25 Exemplo de codificação XMI system +name * pedirItem validarCartao 0 ..* extends includes useCase +title e-Store 0 ..1 actor +name <umlModel> <useCase id = “uc1”> <title visib = pub> “pedirItem” </title> </useCase> <useCase id = “uc2”> <title visib = pub> “validarCartao” </title> </useCase> <actor id = “a1”> <name visib = pub> “Cliente” </name> </actor> … <actor2useCase id = “a12uc1”> <in idref = “a1”/> <out idref = “uc1”/> </actor2useCase> <actor2useCase id = “a12uc2”> <in idref = “a1”/> <out idref = “uc2”/> </actor2useCase> </umlModel> Cliente DDM-UFCG 26 Transformação entre modelos • Grande esforço é empregado nas transformações • Definição de transformação: conjunto de regras que juntas descrevem como um modelo fonte é transformado em um modelo destino. • Regra de transformação: descrição de como um ou mais elementos do modelo fonte pode ser transformado em um ou mais elementos do modelo destino. • Linguagem de transformação: Linguagem na qual as definições de transformações são escritas. DDM-UFCG 27 Transformação entre modelos PIM PSM PSM code code CIM transformação transformação transformação transformação transformação transformação transformação DDM-UFCG 28 Transformação entre modelos PIM PSM code • Transformações entre linguagens idênticas: – Refactoring (modelo ou código) – Normalização (modelos E-R) Definições de transformação Definições de transformação Engenho de transformação Engenho de transformação [Fig., Kleppe et al.] DDM-UFCG 29 • Atlas Transformation Language (ATL) – Versão 3.0 – ATLAS group - LINA & INRIA, Nantes – http://www.eclipse.org/m2m/atl/ • Uma linguagem para especificação de transformação de modelos • Linguagem amplamente baseada em OCL • Expressões OCL válidas tornam-se expressões ATL válidas – Com algumas restrições • Ferramenta com suporte para execução de transformações ATL integrada ao Eclipse: ATL-DT ATL DDM-UFCG 30 Transformações declarativas Especificam para quais tipos de modelos de entrada que os modelos de saída devem ser gerados Especificam como os modelos de saída devem ser gerados a partir dos modelos de entrada Baseado em pattern matching Especifica como os modelos de saída devem ser inicializados ATL - Matched Rules 6 DDM-UFCG 31 ATL - Matched rules Padrão do modelos fonte a ser casado Padrão do modelo destino A ser gerado Meta-modelo de entrada Matched rule Elemento do Meta-modelo de entrada GMF/UFCG SBES 2007 3 1 rule ClassUML2ClassJava { from c : UML!Class to p : Java!Class ( name <- c.name, superclass <- s), s : Java!Class ( name <- c.superclass.name) } DDM-UFCG 32 • Baseada em programação OO – JMI (Java Metadata Interface) JCP – EMF (Eclipse Modeling Framework) Eclipse • Baseada em XML – XMI APIs de Manipulação de Modelos Meta-Modelo Modelo Interface Java Objetos Java Meta-Modelo Modelo XML Schema ou DTD Documentos XML GMF/UFCG SBES 2007 3 2 DDM-UFCG 33 Agenda - Motivação - O que é DDM? - Princípios - Padrões da OMG para MDA - Arquitetura MDA - Simples Exemplo - Aplicações DDM-UFCG 34 Padrões da OMG • Meta-modelo: MOF (Meta Object Facility) • Modelos: UML (Unified Modelling Language) • Linguagem semi-formal para tornar meta-modelos MOF e modelos UML mais precisos: OCL (Object Constraint Language) • Linguagem textual para interoperabilidade e persistência de modelos e meta-modelos: XMI (XML Model Interchange) • Linguagem de transformação e manipulação de modelos: QVT (Query, View and Transformation) • Linguagem de transformação textual: MOF2Text (MOF Model To Text Transformation Language) DDM-UFCG 35 Padrões da OMG • Cada um dos padrões OMG é descrito através: – Sintaxe abstrata (meta-modelo) – Sintaxe concreta (textual) – Semântica formal • Semântica formal de muitos formalismos da OMG ainda permanece incompleta DDM-UFCG 36 • SPEM • Semântica de Ações • CORBA • Vários perfis, como o U2TP (testes) • Etc. Outros padrões da OMG 7 DDM-UFCG 37 Outras linguagens • Modelos – Redes de Petri – Alloy • Meta-modelos – Ecore – Kermeta – KM3 • Linguagem de transformação – ATL • Persistência e interoperabilidade entre (meta-)modelos – JMI – EMF – MDR DDM-UFCG 38 Agenda - Motivação - O que é DDM? - Princípios - Padrões da OMG para MDA - Arquitetura MDA - Aplicações DDM-UFCG 39 MDE Languages Aplicação Transformation Engine Transformation Engine Transformation Engine Definições de transformação Rule X{...} Definições de transformação Rule X{...} Definições de transformação Rule X{...} PIM PSM Code CIM Meta- model Meta- model UML and OCL QVT, ATL, Flora, ATL-DT Meta- meta-model MOF, XMI, KM3, Ecore UML Profiles MOF2Text, MOFScript DDM-UFCG 40 Model-Driven Engineering Abstraction Scale Executability Scale UML + NL Application Requirements UML Model Source Code Virtual Machine Code Binary Code Current Standard Practice: Object-Oriented Development Mix 2 orthogonal concerns: business refinement and translation to platform DDM-UFCG 41 DDM Hoje: Programadores UML Abstração Executabilidade UML/OCL Requisitos UML/OCL Especificação da aplicação UML/OCL Realização da aplicação Perfis UML/OCL Realização da aplicação Código Fonte Código Binário Compilação manual DDM-UFCG 42 Abstração Executabilidade UML/OCL CIM - Negócio UML/OCL PIM – Especificação da aplicação Perfis UML/OCL PSM – Realização da aplicação Código Fonte Código Binário Padrões de tradução de modelos Padrões de refinamento de modelos DDM em Breve: Programadores UML UML/OCL PIM – Realização da aplicação Produtividade Portabilidade Interoperabilidade Documentação 8 DDM-UFCG 43 Voltando ao Desenvolvimento de SoftwareTradicional • Com DDM: – Produtividade • Automação na geração de código • Abstração de detalhes de implementação no PIM • Melhor compreensão nos requisitos – Portabilidade • Tudo especificado no PIM é portável • Plug-ins para diferentes plataformas – Interoperabilidade • Transformações entre diferentes PSMs – Documentação • PIM é a própria documentação de alto nível • PIM não é abandonado DDM-UFCG 44 Agenda - Motivação - O que é DDM? - Princípios - Padrões da OMG para MDA - Arquitetura MDA - Simples Exemplo - Aplicações DDM-UFCG 45 Aplicações • Engenharia de Software – Geração de código – Engenharia Reversa – Processos de Desenvolvimento • Banco de Dados – Geração de modelos de dados – Geração e implementação de consultas – Interoperabilidade de Dados • Métodos Formais – Formalização de linguagens – Sincronização entre formalismos matemáticos e modelos abstratos • Etc... DDM-UFCG 46 Como aprender novos conceitos e tecnologias da Eng. De Soft? QVT MOF Meta-modelo Transformações XMI PIM PSM CIM ATL MDA Zoom OCL 2.0 OMG EMF Ecore Perfis KM3 Meta-meta modelo Semântica de Ações ATL-DT OptimaJ AndroMDA UML 2.0 UML2TP KobrA DDM-UFCG 47 Estudo de Caso DDM-UFCG 48 Meta-modelo simplificado para UML 9 DDM-UFCG 49 Meta-modelo simplificado para Esquemas relacionais de BD DDM-UFCG 50 UML2BD 1. Todo pacote UML corresponde a um esquema 2. Toda classe dentro de um pacote UML corresponde à uma tabela do esquema relacional 3. Toda propriedade de uma classe corresponde à uma coluna dentro da tabela • Se o tipo da propriedade é uma classe UML, a coluna deve ser uma chave estrangeira • Se o tipo da propriedade é um tipo de dados UML, a coluna é do tipo correspondente 4. Todo tipo de dados UML dentro de um pacote apresenta um tipo de dados correspondente dentro do esquema DDM-UFCG 51 Transformação baseada em programação • Linguagem: Java • Framework provendo interfaces: EMF • Necessário: Transformar meta-modelos MOF em Ecore • Aplicação das regras de geração de interfaces DDM-UFCG 52 Interfaces geradas p/ meta-modelo UML • UMLPackage – obtido a partir da EClass UMLPackage – getElements() • Classifier – obtido a partir da EClass Classifier – getName() – setName() • Class – obtido a partir da EClass Class – getProps() – getName() – setName() DDM-UFCG 53 Interfaces geradas p/ meta-modelo BD • Schema – obtido a partir da EClass Schema – getTables() • Table – obtido a partir da EClass Table – getColumns() – setColumns() • Column – obtido a partir da EClass Column – getType() – setType() – getName() – setName() DDM-UFCG 54 Interfaces geradas p/ meta-modelo BD • Type – obtido a partir da EClass Type – getName() – setName() • ForeignKey – obtido a partir da EClass ForeignKey – getRegTable() – setRefTable() • BDFactory – obtido a partir da EPackage BD – createSchema(), createTable(), createColumn(), etc. 10 DDM-UFCG 55 Transformação baseada em programação public void UMLPackage2Schema(UMLPackage pc){ Schema sh = BDFactoryImpl.eINSTANCE.createSchema(); for (Iterator it = pc.getElements().iterator(); it.hasNext();){ Object next = it.next(); if ( next instanceOf uml.Class) { sh.getTables().add(Class2Table((uml.Class) next)); } else if (next instanceOf DataType) { dataType2Type((DataType) next); } } } Mapeando um pacote UML para um esquema relacional [Blanc, 2005] DDM-UFCG 56 Transformação baseada em programação public Table Class2Table(uml.Class c){ Table tab = BDFactoryImpl.eINSTANCE.createTable(); tab.setName(c.getName()); for (Iterator it = c.getProps().iterator(); it.hasNext();){ Property next = (Property) it.next(); tab.getColumns().add(property2Column(next)); } ClassTable.put(c, tab); if (keyRef.containsKey(c)){ Vector keys = (Vector) keyRef.get(c); for (Iterator it = keys.iterator(); it.hasNext();){ ForeignKey current = (ForeignKey) it.next(); current.setRefTable(tab) } } return tab; } Mapeando uma classe UML para uma tabela relacional [Blanc, 2005] DDM-UFCG 57 Transformação baseada em programação public Type dataType2Type(DataType dt){ Type t = BDFactoryImpl.eINSTANCE.createType(); t.setName(dt.getName()); datatypeType.put(dt, t); if (colType.containsKey(dt)){ Vector keys = (Vector) colType.get(dt); for (Iterator it = keys.iterator(); it.hasNext();){ Column current = (Column) it.next(); current.setType(t); } } return t; } Mapeando um tipo de dados UML para um tipo de dados em um esquema relacional [Blanc, 2005] DDM-UFCG 58 O que poderemos aprender? • Operações e Repositórios de Modelos • Técnicas e fundamentos de Transformações de Modelos • Transformações Textuais • ATL • MOFScript DDM-UFCG 59 Referências • OMG Specifications. http://www.omg.org • MDA explained (The model-driven architecture: practice and promise). Kleppe, A., Warmer, J. and Bast, W. Object- Technology Series. Addison-Wesley. 2003. • MDA en action (Ingénérie logicielle guidée par les modèles). Blanc, X. Eyrolles. 2005.
Compartilhar