Você está na página 1de 44

Mestrado Profissional em Engenharia de Software

PyMDAGenerator: Uma Ferramenta para gerao automtica de aplicaes baseada em MDA.

Autor: Ricardo Roberto de Lima

Orientador: Prof Dr Vinicius Cardoso Garcia


slide 1 de 50

Janeiro / 2014

Introduo e Motivao
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 Avanado do Mestrado
Negcio

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

MDA
slide 2 de 44

Tecnologia

Introduo e Motivao
Os principais fatores que motivaram a pesquisa so:

Investigar como realizar a gerao automtica de cdigo baseado em Diagramas da UML;

Criar uma ferramenta para gerao de Sistemas de Informao pra web de forma automtica 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 aplicao completa para web, com a MDA, atravs da

ferramenta PyMDAGenerator.

Como

gerar

aplicaes

totalmente

baseadas em modelos de diagramas UML sem escrever uma s linha de cdigo.

slide 4 de 44

Soluo/Objetivos da pesquisa
Objetivos Gerais:

Propor uma soluo para o desenvolvimento de software para web baseados em modelos de Diagramas UML;

Construir uma ferramenta para gerar de forma automtica aplicaes 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
Introduo e Motivao; Problema da pesquisa; Soluo/Objetivos da pesquisa; Fundamentao terica; Tecnologia, linguagens aplicadas ao projeto; Definio da MDA; Viso Geral da Arquitetura MDA; Transformaes entre Modelos; Ferramentas Existentes; A soluo proposta; Estudo de Caso; Sistema de Gesto de Inventrios Patrimoniais; Concluso e Trabalhos Futuros; Referncias Bibliogrficas.
slide 6 de 44

Fundamentao Terica.
Para facilitar a compreenso desta pesquisa sero apresentados alguns assuntos que servem de base terica:

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 Persistncia 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 Programao e Framework de Desenvolvimento so:
- Linguagem Python + Framework Django. - IDE de desenvolvimento Eclipse + Pluguin Pydev.

slide 11 de 44

Definio de MDA

uma

abordagem

de

desenvolvimento

de

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

slide 12 de 44

Viso Geral da Arquitetura MDA

A MDA uma viso 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 cdigo 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 so concorrentes diretos para esta pesquisa so:

slide 17 de 44

A Soluo Proposta
A arquitetura da ferramenta especificada no diagrama abaixo: PyMDAGenerator est

slide 18 de 44

CIM

Modelo Independente de Computao..

Nesta parte do Projeto foram elencados diversos requisitos entre os quais:


RF001 Autenticar Usurios; RF002 Gerenciar Usurios; RF003 Gerenciar Equipamentos.

Especificao dos requisitos funcionais e no-funcionais do Projeto Asset Inventory; Entrevistas e Reunies com o Cliente e parceiros; Descrio 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 atravs da ferramenta (ArgoUML).

slide 20 de 44

PIM

Modelo Independente de Plataforma

Depois de desenvolvido foi gerado atravs de exportao um arquivo no formato.XMI. Nome do Arquivo: ProjetoAsset.xmi

slide 21 de 44

PIM para PSM


Modelo Independente de Plataforma e Modelo Especfico de Plataforma. Neste momento acontecer a transformao entre os modelos independentes e especficos de plataformas. Utilizando a ferramenta PyMDAGenerator possvel realizar as transformaes de maneira automtica, atravs 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 Administrao Automtica. URLs Dispacher Sistema de Templates

slide 24 de 44

PSM para Cdigo Fonte.


Componentes do Framework Django (MVC)

slide 25 de 44

PSM para cdigo fonte..

Template

slide 26 de 44

Modelo de Classe para Script do Banco


Modelo Independente de Plataforma e Modelo Especfico de Plataforma

Confirmar as alteraes para o banco de dados: 'python manage.py syncdb'. Alm desse comando outros podem ser executados tais como: -DBSHELL -SYNCDB -SQLALL -TEST -TESTSERVER -LOADDATA

slide 27 de 44

Estudo de caso.
Domnio: Sistema de Gesto de Inventrios Patrimoniais (Asset Inventory).

PROBLEMA.
Um dos grandes desafios dos gestores de instituies pblicas e privadas manter o controle sobre os ativos mveis e imveis, tais como: equipamentos eletrnicos, mobilirio, etc. necessrio criar um sistema de informao que permita rastrear e identificar a localizao em tempo real dos itens citados. Devendo tambm manter um registro de suas movimentaes no ambiente da organizao.

slide 28 de 44

Estudo de caso.
SOLUO.
Foi criado um software computacional destinado a auxiliar o processo de gerenciamento das organizaes, cujo objetivo informar a localizao em tempo real dos itens, computadores, equipamentos eletrnicos, mesas,

cadeiras etc. Obedecendo alguns preceitos no que se refere a um sistema de informao.

slide 29 de 44

Execuo da Aplicao
Depois de realizada as transformaes 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 Gesto de Inventrios Patrimoniais.


Gerenciar Menu Principal do Sistema (Asset Inventory).

slide 31 de 44

Sistema de Gesto de Inventrios 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 prximos slides sero

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

Concluso e Trabalhos Futuros.


Eplogo
Parte 1/5

O MDA tem como proposta a construo sistemtica de sistemas baseada em modelos abstratos de componentes, isto acontece de forma natural durante a transferncias dos aspectos tcnicos de desenvolvimento para as primeiras fases de planejamento e modelagem. Entre outros benefcios esto um alto nvel de reuso, reduo do time-to-maker.

slide 38 de 44

Concluso e Trabalhos Futuros.


Contribuies
Parte 2/5

* Definio de uma metodologia bsica aplicada a MDA, simples, prtica e objetiva para Plataforma Linux com Python; * Avaliao preliminar da Ferramenta PyMDAGenerator, por meio do estudo de caso realizado; * Desenvolvimento de um Prottipo funcional que implementa a abordagem proposta e contextualizada neste trabalho:
Estudo das reas de Engenharia de Reuso e MDA, buscando identificar oportunidades de pesquisa; Identificao das extenses necessrias para possibilitar a representao dos modelos em Python e identificar os diferentes mecanismos de transformao entre modelos de PIM para PSM e Cdigo Fonte.
slide 39 de 44

Concluso e Trabalhos Futuros.


Limitao
Parte 3/5 * A Ferramenta PyMDAGenerator limitada atravs da plataforma Linux, posto que utiliza a linguagem Shell Script para realizar as transformaes entre os modelos de PIM para PSM e PSM para Cdigo Fonte; * A aplicao restrita ao modelo de caractersticas baseado em MDA e funciona especificamente para Python com o framework Django; * No foi realizado nenhum estudo para avaliar o desempenho do prottipo desenvolvido; * No foi possvel tambm validar os artefatos de UML do modelo Comportamental; * No foi possvel gerar uma aplicao em Shell Script baseada em Interfaces Grficas mais ricas.

slide 40 de 44

Concluso e Trabalhos Futuros.


Trabalhos Futuros
Parte 4/5

* Aplicao do prottipo desta ferramenta utilizando o modelo comportamental em atividades de monitoramento e acompanhamento dos ativos com restries OCL aplicados ao modelo do Diagrama de Classes e Diagramas de Atividades; * Planejamento e execuo de estudos de avaliao mais complexos e completos que envolvam a abordagem proposta como um todo e a utilizao do prottipo em outros estudos de casos e domnios diferentes; * Representao dos artefatos baseados em servios, conhecendo suas dependncias em relao aos modelos de componentes de software com UML e suas relaes aplicadas ao modelo de processo de negcio com BPMn e BPEL.

slide 41 de 44

Concluso e Trabalhos Futuros.


Trabalhos Futuros
Parte 5/5
* Aplicao e construo 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 prottipos nas fases de criao e especificao; * Integrao da abordagem proposta com tecnologias que suportem a reconfigurao dinmica do modelo, como por exemplo: OSGI (OSGI ALLIANCE, 2009); * Construo de um ambiente mais complexo e rico de execuo que suporte a reconfigurao dos sistemas desenvolvidos com base nas extenses propostas que permita a incluso de novas caractersticas e regras de adaptao em tempo de execuo; * 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

Referncias Bibliografias
DEMO, Pedro. Metodologia do conhecimento cientfico. So Paulo: Atlas, 2000. FOWLER, Martin UML essencial: um breve guia para a linguagem-padro de modelagem de objetos / Martin Fowler; traduo Joo Tortello 3 edio Porto Alegre: Bookman, 2005. GAMMA, Erich. Padres de Projeto: Solues reutilizveis 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 Dissertao 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 Avanados do Recife Email: ricardorobertolima@gmail.com Fone: 83 8714-6543 Fone: 84 8781-7952