QtModeling: Metamodelagem e Model-Driven Software Engineering com Qt5

Documentos relacionados
Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG

PROJETO ARQUITETURAL DE SOLUÇÕES MOBILE COM Qt Sandro Andrade IFBA/KDE

DESENVOLVENDO APLICAÇÕES ANDROID COM Qt Sandro Andrade KDE/IFBA

Live Blue (

Software Livre e o Projeto KDE

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Desenvolvendo Widgets QML para o KDE Plasma

5 Modelo Conceitual de Teste

O KDE na Bahia e no Brasil

Introdução ao QML. Sandro S.

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

3 Tecnologias Relacionadas

1/26/2009. Metamodelo MMA. Metamodelo MMB. Modelo A2. Modelo A. Modelo B. Transformação M2M

Linguagens de Domínio Específico

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Modelagem UML com. Marcio Junior Vieira Ambiente Livre - Marcio Junior Vieira

Visualização de Software com o KDevelop 4

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

4 ALBATROZ : Um ambiente para desenvolvimento de SMA

INF016 Arquitetura de Software 08 - Implementação

Visão Geral da UML. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML

Rational Unified Process (RUP)

Modelagem UML com Software Livre. Palestrante: Marcio Junior Vieira

1.1. Declaração do Problema e Limitações dos Trabalhos Relacionados Um Framework Conceitual para SMAs

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação

UMA PESQUISA SOBRE FERRAMENTAS CASE PARA ENGENHARIA REVERSA ESTÁTICA

Desenvolvendo Aplicações Android com.

KDE para Futuros Gearheads V1.1

KDE para Iniciantes. Camila Ayres

Sergio Roberto de Mello Canovas Carlos Eduardo Cugnasca WTA 2015

Prof. Me. Sérgio Carlos Portari Júnior

Arquitetura de Software: Documentação

Arquitetura de Software

UML. Trabalho Análise e Projeto de Sistemas. Aluna: Luana Alves Businaro

Aplicação da Técnica de Tecelagem de Modelos na Transformação de Modelos na MDA

Análise de Sistemas. Aula 5

Especialização em Arquitetura e Engenharia de Software

Introdução à Análise e Projeto de Sistemas

Barbara Cristina Alves Silveira 1, Thiago Silva-de-Souza 2 INTRODUÇÃO REFERENCIAL TEÓRICO

INF1013 MODELAGEM DE SOFTWARE

Curso online de Aplicações. Híbridas. Plano de Estudo

UML Unified Modeling Language Linguagem de Modelagem Unificada

Case de uso: Desenvolvimento de um Infotainment System com Qt WebEngine e Yocto. Luis Gustavo S. Barreto

Técnicas para Reutilização de Software

Modelagem UML com Software Livre. Palestrante: Marcio Junior Vieira

Transformando Modelos da MDA com o apoio de Componentes de Software

EA975 - Laboratório de Engenharia de Software

7 Conclusão e Trabalhos Futuros

Model Driven Architecture. Centro de Informática/UFPE Fernando Trinta

Model-Driven Architecture

USANDO ONTOLOGIAS NA CONSTRUÇÃO DE MODELOS MDA (MODEL-DRIVEN ARCHITECTURE)

Engenharia de Software II

Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos

Modelo de Componentes CORBA

Introdução à Engenharia de Software

Visão Geral do RUP.

Desenvolvimento de software orientado a características e dirigido por modelos

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

1 Introdução. pela comunidade de computação em vários países de língua não-inglesa.

Model Driven Development (MDD)

Arquitetura de Software: Documentação

Desenvolvimento de Software I

Nesta seção você encontra artigos voltados para testes, processo, modelos, documentação, entre outros

Uma Abordagem para Engenharia de Requisitos no Domínio de Software Embarcado

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

Model-Driven Engineering Geração de modelos de software e especificações usando a plataforma IBM

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

A Web, o Design, o Software Livre e outras histórias... Eduardo Santos -

Arquitetura Orientado por Modelos aplicada a Linha de Produto de Software. Eduardo Barbosa da Costa

Linguagens de Domínio Específico

Outline. Linguagem de Modelagem Unificada. 1. Visualização 04/09/2017. Aula 10 - Introdução à UML e Instalação de Ferramentas de Modelagem

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes

pgmodeler: muito mais que um modelador de bancos de dados PostgreSQL

MODELAGEM DE UM SISTEMA DE GERENCIAMENTO DE COMUNICAÇÃO PARA VANTS: MODEL DRIVEN ARCHITETURE COM INTEGRAÇÃO AO PROCESSO UNIFICADO

Modelagem de Processos de Negócio Aula 4 Projeto de Modelagem Andréa Magalhães Magdaleno

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Engenharia de Software

Refatoração de Software

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Qt Inside Telefonica Vivo

5 QCDTool: Uma Ferramenta para Avaliar a Qualidade do Design em Modelos

Algoritmos e Programação

Análise e projeto de sistemas

Usando RDL para Derivação de Produtos em uma Linha de Produtos de Software

Powered by. Tiago Bockholt

KDE para Iniciantes. Sandro Santos Andrade KDE para Iniciantes - Sandro S. Andrade -

WorkCASE Toolkit: Uma Ferramenta de Suporte para Agile Model Driven Architecture

UML - Unified Modeling Language

Uma Ferramenta baseada em Modelos para Modelagem Conceitual ontologicamente bem fundada

3 GenArch: Uma Ferramenta Baseada em Modelos para Derivação de Produtos de Software

Curso online de Fundamentos em Android. Plano de Estudo

Sistemas Embarcados (embutidos) Paulo C. Masiero

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

Algoritmos e Programação

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

Transcrição:

QtModeling: Metamodelagem e Model-Driven Software Engineering com Qt5 Sandro S. Andrade sandroandrade@kde.org / @andradesandro FISL 15 Fórum Internacional de Software Livre Porto Alegre Maio/2014

Introdução Motivos para uso de modelos na Engenharia de Software: Documentação Geração automática de código / sincronização modeloartefatos Recuperação Arquitetural e Verificação de Conformidade Gerência de Qualidade e Integração Contínua Predição de Atributos de Qualidade / Simulação Domain-Specific Languages (DSLs) Models@run.time

Introdução Diferentes notações diferentes propósitos diferentes graus de formalidade: Linguagens de modelagem baseadas em metamodelos: Linguagem natural, gráficos informais, UML, Architecture Description Languages (ADLs) Metamodelo Linguagem de Modelagem Modelo MOF MOF {UML, CWM, DuSE} seu modelo

Introdução Exemplo de stack de metamodelagem:

Introdução Model-Driven Software Engineering (MDSE) Uma plataforma para MDSE deve ser capaz de: Permitir a criação, manipulação e transformação de modelos descritos em diversas linguagens de modelagem Permitir a criação de novas linguagens de modelagem (de domínio específico) Viabilizar a integração do uso de modelos nas atividades que compõem o processo de desenvolvimento

Introdução Cenário exemplo 1: Configuração de um exemplar de uma linha de produto (ex: novo sistema embarcado para smartphones) a partir do uso de modelos Análise da arquitetura resultante (teste arquitetural antecipado) Subsequente geração de código ou artefatos de integração

Introdução Cenário exemplo 2: Uma arquitetura prescrita foi projetada pelo arquiteto Constantes evoluções/manutenções podem degradar a arquitetura Deseja-se integrar o uso de modelos nos scripts de Integração Contínua de modo a detectar antecipadamente possíveis desvios/erosões arquiteturais

Qt5 Lançado oficialmente em Dezembro de 2012 Qt-project.org Amplo conjunto de features: Plataformas suportadas: Widgets, Multimídia, Network, Banco de Dados, OpenGL, Sensors, XML, dentre outras Windows, Linux/X11, Max OS X, QNX, VxWorks, Android, ios Nenhum suporte a uso de modelos (até então)

Qt5

QtModeling Conjunto de módulos add-on do Qt5 para MDSE Desenvolvido upstream http://qt-project.org/wiki/qtmodeling git clone git://gitorious.org/qt/qtmodeling.git

QtModeling Objetivos: Alta conformidade com os padrões do Object Management Group (OMG) API Qt-ish para criação e manipulação de modelos: Excelente desempenho em múltiplas plataformas Suporte por ferramenta (DuSE-MT): Fácil compreensão Boa produtividade Extensibilidade

QtModeling - API QUmlModel *model = new QUmlModel("MyModel"); QUmlPackage *package = new QUmlPackage("Package1"); QUmlPrimitiveType *stringtype = new QUmlPrimitiveType("String"); QUmlClass * class_ = new QUmlClass("Student"); class_->setabstract(false); QUmlProperty *property = new QUmlProperty( name ); property->settype(stringtype); property->setfinal(true); (cont.)

QtModeling - API (cont.) package->addownedtype(class_); model->addpackagedelement(package); model->addownedtype(primitivetype); // query model or // perform 'well-formed/sanity/architectural conformance' // checks delete model;

QtModeling Serialização XMI QFile file("test.xmi"); if (!file.open(qfile::writeonly QFile::Text)) { qdebug() << "Cannot write file!"; return 1; } QXmiWriter writer(model); writer.writefile(&file); file.close();

QtModeling Módulos disponíveis: QtModeling QtModelingWidgets QtMof + metamodel plugin QtUml + metamodel plugin QtDuSE + metamodel plugin QtSADuSEProfile + metamodel plugin

DuSE-MT Nasceu como um exemplo de uso do QtModeling Evoluiu para uma ferramenta de MDSE (duse.sf.net) Objetivos de design: Metamodel-agnostic (metamodelos/linguagens são plugins) Acesso e manipulação de modelos via linguagens interpretadas Amplo editor de propriedades Implementação declarativa de sintaxes concretas

DuSE-MT

DuSE-MT Model Inspector

DuSE-MT Plugins

DuSE-MT Sintaxe Concreta

DuSE-MT Interpretador JavaScript

DuSE-MT Property Editor

QtModeling - Desafios O metamodelo da UML possui 239 metaclasses Destas, 193 são classes concretas Muitas heranças múltiplas e dreaded diamonds Estaria tudo ok se estivéssemos implementando em C++ (heranças virtuais) mas QObject's não gostam de heranças múltiplas (muito menos virtuais) Solução: QObject-free implementation + QObject-based wrappers

QtModeling - Desafios 91.83% do código do metamodelo UML foi gerado automaticamente: Exceções: propriedades derivadas e operações (sendo implementadas sob demanda) Futuro: Grantlee para suportar geração automática de implementações de metamodelos OMG XMI Perl Template Toolkit QtModeling templates QtUml/QtMof/Qt<your-language> implementation Ex: definição de DSLs

QtModeling - Desafios A implementação atual possui suporte completo a: Propriedades do tipo Derived (sob demanda) e Derived Union (já implementadas) Propriedades opposite, subsetted e redefined Operações (sob demanda) Enumerações Clonagem de elementos de modelagem Memory ownership para agregações do tipo composite Serialização XMI (metamodel-agnostic)

DuSE-MT - Desafios Amplo uso de reflexão computacional, de modo a não depender de um metamodelo particular QtScript para viabilização de um Interpretador JavaScript para acesso e manipulação de modelos: Criação de regras de boa-formação pelo próprio usuário Plugins escritos em JavaScript (ou Python, Ruby, etc com o KDE Kross) Novos models e views do Qt para acesso aos elementos e propriedades de um elemento

DuSE-MT - Desafios Sintaxe concreta: QML to the rescue Porque QML: Linguagem declarativa (boa produtividade, boa compreensão) Execução suportada por hardware (OpenGL) Amplamente utilizada para construção de GUIs/UXs em diversos form factors Tecnologia de preferência para construção de novos widgets para o KDE Plasma

DuSE-MT - Desafios Exemplo de sintaxe concreta em QML: import QtQuick 2.0 UmlElement { UmlSlot { id: nameslot; anchors.top: parent.top Text { id: label, text: element.name, anchors.centerin: parent } } (cont.)

DuSE-MT - Desafios Exemplo de sintaxe concreta em QML: UmlSlot { id: attributeslot anchors { top: nameslot.bottom; topmargin: -1 } height: (parent.height - nameslot.height)/2 ListView { model: element.ownedattributes anchors { fill: parent; margins: 4 } delegate: Text { text: visibility(modeldata.visibility) + modeldata.name + ": " + modeldata.type }

DuSE-MT - Desafios Resultado:

DuSE Processo para projeto arquitetural automatizado de arquiteturas de software Linguagem para criação de design spaces arquiteturais específicos de domínio Objetivos: Representar conhecimento refinado de design de uma maneira mais sistemática e estruturada Suportar o (re)design automatizado de arquiteturas Suportar otimização multi-objetivo de arquiteturas

DuSE - metamodelo

DuSE - otimização Otimizando arquiteturas de software: Novo módulo: QtOptimization Trade-offs entre atributos de qualidade são inevitáveis Otimização multi-objetivo com articulação a posteriori de preferências é uma boa forma de abordar o problema Influenciado pelo JMetal Disponibiliza o algoritmo evolucionário para otimização multi-objetivo NSGA-II Retorna um Pareto-front de arquiteturas (near-)optimal

DuSE - aplicações SA:DuSE SO:DuSE (em andamento) Design Space concreto, especificado em DuSE, que captura as principais dimensões de design no domínio de Sistemas Self-Adaptive Aplicado para gerar automaticamente arquiteturas de controladores para arquiteturas MapReduce e WebServers Idem, para Sistemas Self-Organizing

QtModeling o futuro Comunidade em formação: 1 professor, 3 alunos de pós-graduação, 2 bolsistas PIBIC, 2 alunos de graduação 2 contribuidores iniciantes na Europa e Asia Ainda não temos um release :(

QtModeling o futuro Trabalhos futuros: Framework para geração flexível de código Redes sociais para modelagem de software Estilos arquiteturais, recuperação, métricas, model@rt (em andamento) Boost no Umbrello? Suporte a MDSE no QtCreator e KDevelop?

QtModeling o futuro O QtModeling é um projeto Qt Contribuições são sempre bem-vindas Há muito a ser feito!!!

Obrigado! Perguntas? Sandro S. Andrade sandroandrade@kde.org / @andradesandro FISL 15 Fórum Internacional de Software Livre Porto Alegre Maio/2014