Você está na página 1de 44

Mestrado Profissional em Engenharia de Software

PyMDAGenerator: Uma Ferramenta para geração automática de aplicações baseada em MDA.

Autor: Ricardo Roberto de Lima

Orientador: Profº Drº Vinicius Cardoso Garcia
slide 1 de 50

Janeiro / 2014

Introdução e Motivação
A escolha deste tema se deu em virtude da necessidade de desenvolvimento de

software baseado em componentes para a disciplina de Engenharia de Reuso de Software Avançado do Mestrado
Negócio

Profissional. Posteriormente, foi feito um estudo comparativo entre o desenvolvimento tradicional e o baseado em MDA.
Arquitetura

MDA
slide 2 de 44

Tecnologia

Introdução e Motivação
Os principais fatores que motivaram a pesquisa são:

Investigar como realizar a geração automática de código baseado em Diagramas da UML;

Criar uma ferramenta para geração de Sistemas de Informação pra web de forma automática com MDA.

UML

MOF
ENGENHARIA DE SOFTWARE BASEADA EM COMPONENTES

MDE
slide 3 de 44

MDA

Problema da pesquisa
O problema da pesquisa que me propus a investigar foi:

Como construir uma aplicação completa para web, com a MDA, através da

ferramenta PyMDAGenerator.

Como

gerar

aplicações

totalmente

baseadas em modelos de diagramas UML sem escrever uma só linha de código.

slide 4 de 44

Solução/Objetivos da pesquisa
Objetivos Gerais:

Propor uma solução para o desenvolvimento de software para web baseados em modelos de Diagramas UML;

Construir uma ferramenta para gerar de forma automática aplicações para a web, utilizando à linguagem Python e o Framework Django;

Fazer um estudo comparativo entre o desenvolvimento tradicional e o desenvolvimento baseado em componentes com MDA.

slide 5 de 44

Roteiro
Introdução e Motivação; Problema da pesquisa; Solução/Objetivos da pesquisa; Fundamentação teórica; Tecnologia, linguagens aplicadas ao projeto; Definição da MDA; Visão Geral da Arquitetura MDA; Transformações entre Modelos; Ferramentas Existentes; A solução proposta; Estudo de Caso; Sistema de Gestão de Inventários Patrimoniais; Conclusão e Trabalhos Futuros; Referências Bibliográficas.
slide 6 de 44

Fundamentação Teórica.
Para facilitar a compreensão desta pesquisa serão apresentados alguns assuntos que servem de base teórica:

slide 7 de 44

Tecnologias, Linguagens Aplicadas ao Projeto
As tecnologias de modelagem aplicadas ao projeto foram:
- UML (Unifield Modeling Language); - MDA (Moden Driven Architecture); - Ferramenta de Modelagem UML (ArgoUML).

ArgoUML
slide 8 de 44

Tecnologias, Linguagens Aplicadas ao Projeto
As tecnologias de Sistema Operacional e Linguagem de Script:
- Linux – Ubuntu 12.4; - Ambiente do Shell Bash (Script).

Biblioteca UML2DJ

Shell Script

slide 9 de 44

Tecnologias, Linguagens Aplicadas ao Projeto
As tecnologias de Persistência e Banco de Dados foram:
- SGBD – Postgresql 9.1; - Gerenciador de Arquivos – SQLite 3.

ORM - SQLDB
slide 10 de 44

Tecnologias, Linguagens Aplicadas ao Projeto
As tecnologias de Linguagem de Programação e Framework de Desenvolvimento são:
- Linguagem Python + Framework Django. - IDE de desenvolvimento Eclipse + Pluguin Pydev.

slide 11 de 44

Definição de MDA

É

uma

abordagem

de

desenvolvimento

de

software criada pela OMG (Object Management Group). A chave para a MDA é a importância da modelagem no processo de desenvolvimento do software.

slide 12 de 44

Visão Geral da Arquitetura MDA

A MDA é uma visão em como o software pode ser desenvolvido colocando a modelagem no centro do processo de desenvolvimento.
CODE SOURCE XHTML, CSS, Py

Python + Django

CIM
Requisitos

PIM
UML + OCL

PSM
Shell + Python

DEPLOY

CODE SOURCE
slide 13 de 44

SQL (DDL)

Python + Django

Exemplo de um Meta-Modelo

0 ..1 extends *
useCase

extends

MOF Meta-Model of Use-Cases

system +name 1 ..*

actor

1 ..*
+name

+title

includes

UML Model: Use-Case Diagram

e-Store
OrderItem

ValidateCart

slide 14 de 44

Exemplo de um Meta-Meta-Modelo

parameter +direction

MOF Meta-Model of MOF Meta-Model

attribute +name +multi

operation +name

class +name

associationEnd +name +multi

package +name

association +name

1 .. *

MOF Meta-Model of UML Use-Cases

extends
actor useCase

extends
system +name

1 ..*
+name +title

0 ..1

1 ..* includes

slide 15 de 44

Exemplo do código em XMI
<umlModel> <useCase id = “oiuc”> <title,visib = pub> “orderItem” </title> </useCase> <useCase id = “vcuc”> <title,visib = pub> “validateCart” </title> </useCase> <actor id = “ca”> <name, visib = pub> “Client” </name> </actor> <system id = “ess”> <name, visib = pub> “e-Store” </name> </actor> <actor2useCase id = “ca2oiuc”> <in idref = “ca”/> <out idref = “oiuc”/> </actor2useCase> <actor2useCase id = “ca2vcuc”> <in idref = “ca”/> <out idref = “vcuc”/> </actor2useCase> </umlModel>

extends actor +name 0 ..1
useCase

0 ..* *

+title includes

system +name

e-Store orderItem
validateCart

Client

slide 16 de 44

Ferramentas Existentes
As principais ferramentas existentes no mercado que são concorrentes diretos para esta pesquisa são:

slide 17 de 44

A Solução Proposta
A arquitetura da ferramenta especificada no diagrama abaixo: PyMDAGenerator está

slide 18 de 44

CIM

Modelo Independente de Computação..

Nesta parte do Projeto foram elencados diversos requisitos entre os quais:
RF001 – Autenticar Usuários; RF002 – Gerenciar Usuários; RF003 – Gerenciar Equipamentos.

•Especificação dos requisitos funcionais e não-funcionais do Projeto Asset Inventory; • Entrevistas e Reuniões com o Cliente e parceiros; • Descrição dos requisitos no formato de Casos de Uso (Maneira informal e detalhada).

slide 19 de 44

PIM

Modelo Independente de Plataforma

Nesta parte do Projeto foi desenvolvido o Diagrama de Classes modelo Conceitual do Projeto através da ferramenta (ArgoUML).

slide 20 de 44

PIM

Modelo Independente de Plataforma

Depois de desenvolvido foi gerado através de exportação um arquivo no formato.XMI. Nome do Arquivo: ProjetoAsset.xmi

slide 21 de 44

PIM para PSM
Modelo Independente de Plataforma e Modelo Específico de Plataforma. Neste momento acontecerá a transformação entre os modelos independentes e específicos de plataformas. Utilizando a ferramenta PyMDAGenerator é possível realizar as transformações de maneira automática, através da biblioteca UML2DJ e os comandos da linguagem Shell Script encapsulado nos arquivos MDAPIMtoPSM.sh e PSMtoCode.sh.

slide 22 de 44

PSM

Modelo Especifico de Plataforma

Arquivo.xmi

MDAPIMtoPSM.sh

UML2DJ

PSMtoCode.sh
slide 23 de 44

Admin.py – Models.py – manager.py

Componentes para plataforma Alvo
Mapeador Objeto-Relacional Interface de Administração Automática. URL´s Dispacher Sistema de Templates

slide 24 de 44

PSM para Código Fonte.
Componentes do Framework Django (MVC)

slide 25 de 44

PSM para código fonte..

Template

slide 26 de 44

Modelo de Classe para Script do Banco
Modelo Independente de Plataforma e Modelo Específico de Plataforma

Confirmar as alterações para o banco de dados: 'python manage.py syncdb'. Além desse comando outros podem ser executados tais como: -DBSHELL -SYNCDB -SQLALL -TEST -TESTSERVER -LOADDATA

slide 27 de 44

Estudo de caso.
Domínio: Sistema de Gestão de Inventários Patrimoniais (Asset Inventory).

PROBLEMA.
Um dos grandes desafios dos gestores de instituições públicas e privadas é manter o controle sobre os ativos móveis e imóveis, tais como: equipamentos eletrônicos, mobiliário, etc. É necessário criar um sistema de informação que permita rastrear e identificar a localização em tempo real dos itens citados. Devendo também manter um registro de suas movimentações no ambiente da organização.

slide 28 de 44

Estudo de caso.
SOLUÇÃO.
Foi criado um software computacional destinado a auxiliar o processo de gerenciamento das organizações, cujo objetivo é informar a localização em tempo real dos itens, computadores, equipamentos eletrônicos, mesas,

cadeiras etc. Obedecendo à alguns preceitos no que se refere a um sistema de informação.

slide 29 de 44

Execução da Aplicação
Depois de realizada as transformações será executado o comando no servidor: 'python manage manage. .py runserver’. Abra um navegador e Digite a seguinte URL: http://localhost:8000/admin

slide 30 de 44

Sistema de Gestão de Inventários Patrimoniais.
Gerenciar – Menu Principal do Sistema (Asset Inventory).

slide 31 de 44

Sistema de Gestão de Inventários Patrimoniais.
Gerenciar – Andar.

slide 32 de 44

Estudo Comparativo entre o MDA x Tradicional.
JAVA JEE (Retriever (Retriever) )

Para validar a ferramenta, foi feito um estudo comparativo entre o desenvolvimento tradicional com

Java JEE (Retriever) versos o Desenvolvimento baseado na

ferramenta PyMDAGenerator com Python + Django (Asset Inventory) e nos próximos slides serão

MDA

Python Django (Asset Inventory Inventory) )

apresentados os resultados.

slide 33 de 44

Estudo Comparativo entre o MDA x Tradicional.
Python + Django

slide 34 de 44

Estudo Comparativo entre o MDA x Tradicional.
Java JEE + Play Framework

slide 35 de 44

Estudo Comparativo entre o MDA x Tradicional.

slide 36 de 44

Estudo Comparativo entre o MDA x Tradicional.

slide 37 de 44

Conclusão e Trabalhos Futuros.
Epílogo
Parte 1/5

O MDA tem como proposta a construção sistemática de sistemas baseada em modelos abstratos de componentes, isto acontece de forma natural durante a transferências dos aspectos técnicos de desenvolvimento para as primeiras fases de planejamento e modelagem. Entre outros benefícios estão um alto nível de reuso, redução do time-to-maker.

slide 38 de 44

Conclusão e Trabalhos Futuros.
Contribuições
Parte 2/5

* Definição de uma metodologia básica aplicada a MDA, simples, prática e objetiva para Plataforma Linux com Python; * Avaliação preliminar da Ferramenta PyMDAGenerator, por meio do estudo de caso realizado; * Desenvolvimento de um Protótipo funcional que implementa a abordagem proposta e contextualizada neste trabalho:
• Estudo das áreas de Engenharia de Reuso e MDA, buscando identificar oportunidades de pesquisa; • Identificação das extensões necessárias para possibilitar a representação dos modelos em Python e identificar os diferentes mecanismos de transformação entre modelos de PIM para PSM e Código Fonte.
slide 39 de 44

Conclusão e Trabalhos Futuros.
Limitação
Parte 3/5 * A Ferramenta PyMDAGenerator é limitada através da plataforma Linux, posto que utiliza a linguagem Shell Script para realizar as transformações entre os modelos de PIM para PSM e PSM para Código Fonte; * A aplicação é restrita ao modelo de características baseado em MDA e funciona especificamente para Python com o framework Django; * Não foi realizado nenhum estudo para avaliar o desempenho do protótipo desenvolvido; * Não foi possível também validar os artefatos de UML do modelo Comportamental; * Não foi possível gerar uma aplicação em Shell Script baseada em Interfaces Gráficas mais ricas.

slide 40 de 44

Conclusão e Trabalhos Futuros.
Trabalhos Futuros
Parte 4/5

* Aplicação do protótipo desta ferramenta utilizando o modelo comportamental em atividades de monitoramento e acompanhamento dos ativos com restrições OCL aplicados ao modelo do Diagrama de Classes e Diagramas de Atividades; * Planejamento e execução de estudos de avaliação mais complexos e completos que envolvam a abordagem proposta como um todo e a utilização do protótipo em outros estudos de casos e domínios diferentes; * Representação dos artefatos baseados em serviços, conhecendo suas dependências em relação aos modelos de componentes de software com UML e suas relações aplicadas ao modelo de processo de negócio com BPM´n e BPEL.

slide 41 de 44

Conclusão e Trabalhos Futuros.
Trabalhos Futuros
Parte 5/5
* Aplicação e construção do PSM para outras plataformas do tipo: Java Plataforma JEE, a linguagem Ruby e o framework On Raills, este último já sendo testado em pequenos protótipos nas fases de criação e especificação; * Integração da abordagem proposta com tecnologias que suportem a reconfiguração dinâmica do modelo, como por exemplo: OSGI (OSGI ALLIANCE, 2009); * Construção de um ambiente mais complexo e rico de execução que suporte a reconfiguração dos sistemas desenvolvidos com base nas extensões propostas que permita a inclusão de novas características e regras de adaptação em tempo de execução; * Aprimorar o mecanismo de Parse XML, aplicando novas regras de extensibilidade baseadas no MOF 2, visando garantir o uso em outras plataformas distintas.
slide 42 de 44

Referências Bibliografias
DEMO, Pedro. Metodologia do conhecimento científico. São Paulo: Atlas, 2000. FOWLER, Martin UML essencial: um breve guia para a linguagem-padrão de modelagem de objetos / Martin Fowler; tradução João Tortello – 3º edição – Porto Alegre: Bookman, 2005. GAMMA, Erich. Padrões de Projeto: Soluções reutilizáveis de Software Orientado a Objetos / Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides; trad. Luiz A. Meirelles Salgado. Porto Alegre: Bookman, 2000. SOMMERVILLE, Ian; Engenharia de Software. 7th Ed. Addison-Wesley; 2008. Kleppe, Anneke G.; Warmer, Jos; Bast, Wim. MDA Explained: The Model Driven Architecture: Practice and Promise - Pearson Education, Inc – 2003.

slide 43 de 44

Agradecimentos
Gostaria de agradecer aos membros da Banca de Dissertação de Mestrado Profissional e ao Cesar.edu.

Ricardo Roberto de Lima

Obrigado.
slide 44 de 44

Mestrado em Engenharia de Software Centro de Estudos e Sistemas Avançados do Recife Email: ricardorobertolima@gmail.com Fone: 83 – 8714-6543 Fone: 84 – 8781-7952