Professional Documents
Culture Documents
RECIFE
2014
RECIFE
2014
Banca examinadora:
____________________________________
Prof. Vinicius Cardoso Garcia, D.Sc.
CIN-UFPE / C.E.S.A.R
____________________________________
Prof. Kiev Santos Gama, D.Sc.
CIN-UFPE / C.E.S.A.R
____________________________________
Prof. Robson do Nascimento Fidalgo, D.Sc
CIN-UFPE
Dedicatria
Agradecimentos
Em primeiro lugar, agradeo a Deus que a fonte de toda fora e sabedoria
existente e por ter me dado toda fora e sabedoria suficientes para a concluso
deste trabalho.
Agradeo aos meus avs Maternos e Paternos (in memorian), por sempre ter sido
um grande exemplo de honestidade, perseverana e f.
Aos meus pais, Orlando Sebastio de Lima e Edivnia Maria de Lima e aos meus
irmos Vaneo Clio de Lima e Regina Coeli de Lima por sempre demonstrarem seu
carinho, amor e confiana em todos os momentos da minha vida.
Ao meu Orientador Vinicius Garcia, por ter confiado em mim e por ter compartilhado
de seus conhecimentos para a melhoria deste trabalho.
minha Esposa Beatriz Costa, por seu carinho, pacincia, amor e confiana, que
esteve sempre ao meu lado, me incentivou e nunca mediu esforos para me ajudar.
Aos meus filhos, Maria Clara Costa Lima e Joo Guilherme Costa Lima pelo amor,
carinho e compreenso durante este perodo da minha vida.
Epgrafe
"O homem de valor nunca morre. Seus exemplos e suas obras atestam a sua
imortalidade".
Hlder Sena de Sousa [1981]
Resumo
de
maneira
assistida
atravs
de
uma
ferramenta
chamada
Palavras-chave
Reuso de Software. Engenharia de Software baseada em componentes. MDA.
Python. Django. Transformaes entre modelos.
Abstract
The software engineering based on components has been growing due to the
increase of the system complexity and also to the consequent increase of the
software development cost. Several techniques have appeared throughout the time
with this objective. They have appeared through the increase of the artifacts
abstraction levels and the tools and frameworks advance object-targeted. One of
these initiatives is the architecture driven model (MDA) that allows the modeling and
application of models, thus ensuring the construction of automated systems. This
work aims to propose a practical and extensible approach to definition of
unidirectional transformations between models (PIM to PSM and PSM to code) to
allow its use through an XMI parser, along with a library entitled UML2DJ and a set of
handlers implemented in Shell Script to execute the transformation process and
semi-automatic generation of MDA-based applications, being held assisted way
through a tool called PyMDAGenerator implemented with Python and Django
language. Finally, make a comparative case study: project development using
engineering-based software components.
SUMRIO:
1. Introduo .....................................................................................................................
11
13
16
18
18
20
20
21
22
30
34
36
38
40
42
43
43
45
46
55
62
63
63
64
69
73
78
82
84
85
87
90
93
95
95
96
98
99
101
9. Apndices ....................................................................................................................
107
Apndice 1 ........................................................................................................................
108
Apndice 2 ........................................................................................................................
114
Apndice 3 ........................................................................................................................
118
Apndice 4 ........................................................................................................................
123
Apndice 5 ........................................................................................................................
127
Lista de Figuras.
Figura [1] - Taxonomia dos diagramas da UML 2.1.................................................................
10
24
25
26
29
31
32
33
33
34
35
37
38
40
44
47
47
48
Figura [20] - Detalhes do Meta Modelo UML2DJ - Viso tipos de atributos ......................
49
50
Figura [22] - Figura que representa o esquema de ligao dos componentes do django ......
51
52
54
56
57
Figura [27] - Detalhe do processo de transformao entre PSM to Cdigo Fonte .................
58
Figura [28] - Arquivo com os comandos em shell script do PIM - GeradorMDAPIM.sh .........
59
Figura [29] - Arquivo com os comandos em shell script do PSM GeradorMDAPSM.sh ........
61
69
70
72
73
74
75
76
77
77
Figura [39] - Sistema (Asset Inventory) - Tela com o menu principal do sistema ..................
79
80
80
81
82
93
Lista de Tabelas
67
68
Tabela [3] Quadro demonstrativo entre o projeto "Retriever" e o "Asset Inventory" .............
85
Tabela [4] Quadro demonstrativo dando nfase ao Projeto em Python com Django ..........
87
Tabela [5] Tabela informaes do projeto dando nfase ao n de linhas de cdigo .............
91
Lista de Grficos
Grfico [1] Informaes Estatsticas do Projeto "Retriever" JEE.......................................................
87
89
Grfico [3] Grfico com as informaes unificadas entre o desenvolvimento Java JEE x Python Django ......
90
Grfico [4] Grfico com as informaes estatsticas, azul para o Python e Laranja para Java.......................
91
Grfico [5] Grfico com a variao dos percentuais entre os projetos (Java x Python) ...................
92
ACRNIMOS
Sigla
Significado
ATL
BPEL
BPM
CIM
CWM
DSL
EMF
HTML
IDE
JSON
MDA
MDE
MOF
MVC
OMG
ORM
OSGI
PIM
PSM
QVT
RUP
SGBD
SQL
SSL
UML
XMI
XML
1. INTRODUO
Organizao internacional que aprova padres abertos para aplicaes orientadas a objetos
2
A proposta da MDA aumentar o nvel de abstrao no desenvolvimento de
sistemas de tal forma que os modelos gerados sejam independentes de plataforma.
A partir dos modelos de mais alto nvel, novos modelos so derivados, passando
pelo Modelo Independente de Plataforma, do Ingls Platform Independent Model
(PIM), em seguida para o Modelo Especfico de Plataforma, do ingls Platform
Specific Model (PSM), at o nvel mais baixo abstrao que o prprio cdigo-fonte
da aplicao. Para isso, ferramentas de transformao entre modelos e gerao de
cdigo devem ser utilizadas. Com isso, mudanas de requisitos ou mesmo de
tecnologia no impactaro em um alto custo para realizao das alteraes, sendo
necessrio somente repetir a transformao do modelo PIM, para o novo modelo
PSM agora especfico da nova plataforma alvo e por fim gerar o cdigo-fonte.
Diante desse contexto, o objeto deste trabalho definir uma orquestrao de
componentes reutilizveis de software, visando garantir uma semi-automatizao do
processo de gerao de cdigo baseando-se nos conceitos propostos pela MDA.
Para demonstrar a viabilidade da abordagem proposta, uma ferramenta para
gerao automtica aplicaes para a Web foi desenvolvida, utilizando a linguagem
Python e o framework Django.
3
1.2 Objetivos
Biblioteca UML to Django - Faz a converso direta de modelos UML para estrutura dos projetos do Django
5
1.3 Estrutura do Trabalho
Este trabalho estruturado da seguinte forma:
2. EMBASAMENTO TERICO
Neste captulo ser feita a contextualizao desta pesquisa. Inicialmente,
iremos apresentar uma definio das principais tecnologias da informao e
comunicao (TIC) utilizadas nesta pesquisa, tais conceitos so importantes para a
Engenharia de reuso de Software, bem como de suas principais caractersticas e,
ainda, as influncias que exercem na Engenharia de Software baseada em Modelos
do tipo (MDA/MDE) e UML. Em seguida, sero discutidas as tecnologias baseadas
na linguagem Python com Framework Django, juntamente com SGBD, Postgresql e
SqLite3, tais como definio, caractersticas e tambm suas vantagens e
desvantagens.
2.1 Desenvolvimento Baseado em Componente
O desenvolvimento baseado em componentes um paradigma de
desenvolvimento de software caracterizado pela composio de partes j existentes,
ou pela composio de partes desenvolvidas independentes e que so integradas
para atingir um objetivo final. Conforme (SZYPERSKI, 1999, p. 20-30), construir
solues pela combinao de componentes garante o reuso do cdigo. Com isso, o
desenvolvimento baseado em componentes auxilia na manuteno dos sistemas e o
uso dela associado elaborao de linhas de produtos de software reduz
significativamente o redesenvolvimento de linhas de cdigo. Para que o reuso de
software seja eficiente em um ambiente produtivo de fbrica de software, por
exemplo, os arquitetos procuram expressar os relacionamentos entre as unidades
de design, tais como Web services e componentes de negcio. Para garantir o
sucesso no ciclo de vida de desenvolvimento de software o arquiteto tem o desafio
de mapear as funcionalidades desejadas sobre os componentes existentes nvel
de negcio, infraestrutura e arquitetura do domnio da aplicao (CHEESMAN, 2001,
p. 49-70).
Na engenharia de reuso de software os componentes so blocos de
construo bsicos, que aliceram esta arquitetura. A distribuio e fragmentao
7
destes blocos implica no aumento do reuso, melhoria da produtividade e
manutenabilidade dos componentes.
Nesta arquitetura possvel mapear a maneira de automao de um
processo de produo de software analisando as especificidades do modelo de
negcio e seus componentes bsicos para realizar as transformaes.
Para aumentar a velocidade de produo dos projetos de software
importante ter uma base de componentes extremamente granular, separando-os do
desenvolvimento em domnios independentes de plataforma com a UML, dos
domnios
especficos
de
plataforma
baseados
em
DSL,
minimizando
linguagem
grfica,
para
especificao,
visualizao,
construo
8
modelos Estrutural da UML e Comportamental da UML, tal referncia encontra-se no
documento de
especificao da UML
2.1
no site da OMG
(UML
2.1
9
desenvolvimento do software impulsionado pela atividade de modelagem do
sistema de software que passa a ter um papel fundamental. Alm de apenas
documentar o sistema, a modelagem passa a ter um papel ativo nas etapas de
desenvolvimento do software (KLEPPE, 2003, p. 42-50).
A utilizao do MDA possibilita a automatizao de algumas das etapas
dentro do processo de desenvolvimento de software, incluindo a gerao do cdigofonte para a plataforma escolhida a partir de um determinado modelo. De acordo
com a MDA GUIDE, version 1.0.1 (2005) os trs principais objetivos da MDA so
promover uma maior portabilidade, interoperabilidade e a reusabilidade.
2.3.1 Arquitetura do MDA
O Model Driven Architecture representado atravs da Figura 3, nela
possvel identificar as principais tecnologias, reas de negcio da abordagem do
MDA na viso da OMG. Analisando-a, tem-se no centro o ncleo da arquitetura que
baseada nos padres de modelagem: UML (JACOBSON, 1999), MOF (MOF,
2013) e CWM (CWM, 2013), padres esses adotados pela OMG. As outras duas
camadas completam a arquitetura. A primeira representa as plataformas alvo do
framework atualmente e a segunda apresenta os servios que devem existir
independentes da plataforma adotada (MILLER e MUKERJI, 2001, p. 60-90).
10
2.3.2 Ncleo
O ncleo do MDA compreende um conjunto de metamodelos UML,
desenvolvidos pela OMG, cada um abrangendo determinada rea do processo de
desenvolvimento. Esses metamodelos representam as caractersticas comuns de
todas as plataformas alvos, porm ser independente de qualquer plataforma
especfica (MILLER e MUKERJI, 2001, p. 84-99).
Como foi mencionado anteriormente, o ncleo da arquitetura MDA formado
pelos padres de metamodelagem da OMG. Sendo eles:
Meta-Object Facility (MOF): Padro criado pela OMG que define uma
linguagem para a definio de linguagens de modelagem. Como o MOF
uma linguagem para criao de linguagens, ela pode ser considerada
uma metalinguagem. O MOF a linguagem em que os metamodelos de
UML e CWM so escritos (MILLER e MUKERJI, 2001, p. 71-90).
11
Plataforma) na sequncia a criao do PSM (Modelo Especfico de Plataforma),
consiste em realizar as transformaes de PSM para cdigo e depois rodar a
aplicao. Na prxima seo sero apresentadas algumas informaes sobre a
linguagem Python seus conceitos, caractersticas e principais recursos.
2.4 A Linguagem Python
A presente seo apresenta uma breve descrio da linguagem Python.
Esses conceitos so de grande importncia para um bom entendimento por parte de
leitores que no estejam habituados com esta tecnologia.
Segundo (DAVI M. BEAZLEY, 2009, p. 35-43), Python uma linguagem de
programao de alto nvel, interpretada, imperativa, orientada a objetos, de tipagem
dinmica e forte. Foi lanada por Guido van Rossum em 1991. Atualmente possui
um modelo de desenvolvimento comunitrio, aberto e gerenciado pela organizao
sem fins lucrativos Python Software Foundation. Apesar de vrias partes da
linguagem possurem padres e especificaes formais, a linguagem como um todo
no formalmente especificada. A linguagem foi projetada com a filosofia de
enfatizar a importncia do esforo do programador sobre o esforo computacional.
Prioriza a legibilidade do cdigo sobre a velocidade ou expressividade. Combina
uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padro e
por mdulos e frameworks desenvolvidos por terceiros.
2.4.1 - Caractersticas da Linguagem
Sobre o ponto de vista das suas caractersticas, a linguagem Python possui
construes que incluem: estrutura de deciso (if, else, elif); estruturas de repetio
(for, while), que iteram por um container, capturando cada elemento em uma varivel
local dada; construo de classes (class); construo de subrotinas (def); construo
de escopo (with) entre outros recursos da linguagem. A linguagem possui tambm
caractersticas comuns s outras linguagens de programao entre elas:
12
13
2.5 O Framework Django
O Django um framework de desenvolvimento web, escrito em Python, que
foi criado pelo grupo editorial "The World Company" para a criao da verso web
dos seus jornais. Posteriormente, em 2005, foi liberado sob a licena BSD,
tornando-se assim um software de cdigo aberto (DAVID M. BEAZLEY, 2009, p. 3060).
Assim como outros frameworks geis para desenvolvimento web, o Django
utiliza o conceito de DRY - Dont repeate yourself (No se repita), que trabalha com
a ideia de utilizar convenes em substituio s configuraes.
Isso quer dizer que, se for seguir determinadas convenes na maneira de
organizar seu cdigo, no precisar ficar configurando caractersticas especficas
dele. Isso agiliza muito o desenvolvimento. preciso utilizar configuraes um
pouco mais complexas somente nas situaes em que o comportamento padro do
Django no o esperado ou quando no possvel seguir as convenes criadas
pelo framework, algo raro de acontecer.
Existem
atualmente,
diversas
solues
baseadas
em
Python
para
Em virtude disso, foi escolhido o framework django para estes projeto, pois o
mesmo possui uma melhor distribuio dos componentes existente, facilitando assim
o desenvolvimento e execuo deste projeto, conforme caractersticas em detalhe
na prxima seo.
14
2.5.1 - O Projeto Django
O Django considerado um "superframework", pois composto de vrios
frameworks menores, entre eles possvel citar:
que
disponibilizam
uma
interface,
gerada
quase
que
15
Django
utiliza
paradigma
MVC
(Model-View-Controller)
para
View:
cuida
da
visualizao
do
contedo
no
formato
escolhido.
16
Na prxima seo sero apresentadas algumas informaes sobre a
linguagem Shell Script seus conceitos, caractersticas e principais recursos.
2.6 A Linguagem Shell Script
A presente seo apresenta uma breve descrio sobre o Shell Script, suas
definies caractersticas e principais aes. Segundo Julio Cezar Neves no livro
Programao em Shell Linux define que Shell Script uma linguagem de script
usada em vrios sistemas operacionais, com diferentes dialetos, dependendo do
interpretador de comandos utilizado. Um exemplo de interpretador de comandos o
bash, usado na grande maioria das distribuies GNU/Linux (JULIO CEZAR NEVES,
2006, p. 30-45).
Uma boa parte dos usurios definem o Shell Script como uma linguagem de
fcil aprendizagem. O primeiro passo , saber o que se deseja fazer, ento ver qual
o cdigo que executa este comando em Shell e a criar, basta escrever o cdigo em
algum editor de texto e salvar. Depois de salvo voc tem que executar o arquivo.
2.6.1 - Shell
Na linha de comandos de um Shell possvel utilizar diversos comandos um
aps o outro, ou mesmo combin-los numa mesma linha. Se colocarmos diversas
linhas de comandos em um arquivo texto simples, teremos em mos um Shell Script,
ou um script em Shell, j que script uma descrio geral de qualquer programa
escrito em linguagem interpretada, ou seja, no compilada. Outros exemplos de
linguagens para scripts so o PHP, Perl, Python, JavaScript e muitos outros.
Podemos ento ter um script em php, um script perl e assim em diante. (JULIO
CEZAR NEVES, 2006, p. 60-71)
Uma vez criado, um Shell Script pode ser reutilizado quantas vezes for necessrio.
Seu uso, portanto, indicado na automao de tarefas que sero realizadas mais de
uma vez. Todo sistema Unix e similares so repletos de scripts em shell para a
17
realizao das mais diversas atividades administrativas e de manuteno do
sistema.
Os arquivos de lote (batch - arquivos *.bat) do windows so tambm exemplos de
Shell Scripts, j que so escritos em linguagem interpretada e executados por um
Shell do Windows, em geral o command.com ou hoje em dia o cmd.exe. Os Shells
do Unix, porm, so inmeras vezes mais poderosos que o interpretador de
comandos do Windows, podendo executar tarefas muito mais complexas e
elaboradas. (JULIO CEZAR NEVES, 2006, p. 56-85)
Os scripts Shell podem ser agendados para execuo atravs da tabela crontab,
entre outras coisas. uma ferramenta indispensvel aos administradores de
sistemas Unix.
O Shell mais comum e provavelmente o que possui mais scripts escritos para ele
tambm um dos mais antigos e simples, o sh. Este Shell est presente em todo o
sistema tipo Unix, includo o Linux, FreeBSD, AIX, HP-UX, OpenBSD, Solaris,
NetBSD, Irix, etc. Por ser o shell nativo mais comum natural que se prefira
escrever scripts para ele, tornando o script mais facilmente portvel para outro
sistema. (JULIO CEZAR NEVES, 2006, p. 70-105)
Um dos motivos da escolha da linguagem Shell Script para este projeto foi a
sua sintaxe rica e simples, outro ponto importante a sua execuo no ambiente de
sistemas de arquivos do prprio sistema operacional e a facilidade de integrao dos
comandos do python com comandos da linguagem shell script, alm da execuo
em arquivos de shell com a extenso .sh.
Na prxima seo sero apresentadas algumas informaes sobre o sistema
gerenciador de banco de dados Postgresql e o SQLite seus conceitos,
caractersticas e principais recursos. O motivo da escolha entre os dois sistemas
gerenciadores de banco de dados foi o seguinte: O SQLite nativo e vem instalado
de forma padro para todas as verses do Django, inclusive para demonstrao
bastante utilizado, e o Postgresql foi aplicado no estudo de caso do projeto, e possui
18
uma grande aceitao na rea em virtude da sua popularidade e distribuio livre e
de cdigo aberto. Mais importante salientar que possvel utilizar a maioria dos
SGBD's de mercado inclusive o Mysql, Postgresql, etc.
2.7 O Sistema de Bancos de Dados (Postgresql e SQLite3)
A presente seo apresenta uma breve descrio do Postgresql e do
SQLite3, suas definies, caractersticas modelos de ao e tpicos operacionais.
Segundo (ANDREW YU e JOLLY CHEN, 1994, p. 45-60). O Postgresql um
Sistema Gerenciador de Banco de Dados (SGBD) relacional, utilizado para
armazenar informaes de solues de informtica em todas as reas de negcios
existentes, bem como administrar o acesso a estas informaes.
Para Andrew, hoje em dia o postgresql um dos principais SBGDs do mercado,
possui uma linguagem prpria baseada em PL/SQL, multiplataforma pode rodar no
Linux, Windows, MAC e possui uma grande aceitao nas Universidades e
Governos das esferas federais, estaduais e municipais, arquitetura simples e
modular escalvel e bastante robusto. Estas so algumas das pospostas do
PostgreSQL.
2.8 - Concluso do captulo
Neste captulo buscou-se apresentar o contexto inicial no qual esta pesquisa.
O crescimento e desenvolvimento cada vez maior destas tecnologias contriburam
muito para a evoluo da Engenharia de Software como um todo. De fato, cada
vez maior o nmero de empresas e instituies que fazem uso desta tecnologia,
garantindo assim um maior reaproveitamento dos modelos criados de software no
que tange os artefatos de anlise, projeto e especificao de software como tambm
o reuso do cdigo.
Esta pesquisa se prope a projetar uma ferramenta para gerao automtica
de cdigo baseada em MDA. Para ser utilizado com a linguagem Python e o
framework Django na construo rpida de sistemas de informao para web.
19
No prximo captulo sero apresentados mais detalhes sobre o embasamento
terico desta dissertao, que vem a ser um dos temas centrais desta pesquisa.
20
21
3.2 Problematizao
(SOMMERVILLE,
2011,
p.
109-134),
as
atuais
tcnicas
de
22
baseados na arquitetura dirigida a modelos (MDA), utilizando a plataforma Python +
Django?
23
3.3.1 Modelo Independente de Computao
O Modelo Independente de Computao (do ingls Computation Independent
Model, CIM) fornece a viso de um sistema de computao dentro de uma
perspectiva independente, ou seja, no mostra detalhes da estrutura do sistema,
modela-o considerando apenas as regras de negcios. Ele tem como foco os
requisitos do software (KLEPPE, 2003, p. 56-70).
Segundo o (MDA GUIDE,2005, p. 34-87), esse modelo tambm pode ser
chamado modelo de domnio, como ele independente de plataforma, acaba sendo
til para servir como fonte para um vocabulrio entre modelos, alm de ajudar na
comunicao entre equipe de desenvolvimento e o cliente.
24
3.3.3 Modelo Especfico de Plataforma
O Modelo Especfico de Plataforma (do ingls Platform Specific Model, PSM)
descreve o sistema a partir de uma plataforma especfica. Combina as
especificaes do PIM com os detalhes que mostram como o sistema usa um tipo
especfico de plataforma. (MDA GUIDE, 2005, p. 56-80).
O PSM gerado a partir de um PIM atravs do uso de UML Profile3, no
sentido em que um dado PSM possui informaes de como gerar artefatos
correspondentes a elementos do modelo que estejam marcados com esteretipos
do PIM. A partir de um PIM pode-se gerar vrios PSM.
3.3.4 Transformao entre modelos
Outro conceito chave dentro da MDA a transformao entre modelos, que
consiste no processo de converter modelos em outros modelos do sistema.
Basicamente
dentro
da
MDA,
existem
duas
grandes
transformaes:
25
Essas transformaes ocorrem por meio de regras de mapeamento que ditam
quais elementos do modelo fonte correspondem com elementos do modelo alvo.
Quando um mapeamento executado entre um modelo de origem e um modelo de
destino, ele define algum ou todo o contedo do modelo (MELLOR, 2005, p. 45-60).
De acordo com (MELLOR, 2005, p. 33-53), as transformaes automticas de
modelos aumentam a portabilidade e a eficincia no desenvolvimento de software,
que por sua vez, aumentam a qualidade do software enquanto reduz o tempo e
custo de desenvolvimento.
Como podem ser observadas na Figura 06, as ferramentas de transformao
so umas caixas pretas. Isso se deve ao fato de que a ferramenta de transformao
precisa ter definida uma regra de transformao, que descreve como o modelo deve
ser transformado. Dentro desse cenrio, um importante conceito o de Marcas
(KLEPPE, 2003, p. 65-109).
As Marcas so utilizadas para inserir nos elementos do modelo PIM, que
posteriormente sero transformados, por meio do mapeamento, para o modelo PSM.
Uma marca representa um conceito no PSM e aplicada a um elemento do PIM,
para indicar como esse elemento deve ser transformado. A Figura 06 representa o
conceito de marcar (MDA GUIDE, 2005, p. 32-54).
26
3.3.5 Ciclo de vida do desenvolvimento na MDA
O ciclo de vida do desenvolvimento baseado em MDA ilustrado na Figura
07, nele pode-se observar que o ciclo proposto pela MDA no muito diferente do
ciclo de vida tradicional de desenvolvimento de software. As mesmas fases so
identificadas. Uma das principais diferenas reside nos artefatos que so produzidos
durante o processo de desenvolvimento. Os artefatos so modelos formais, ou seja,
modelos que podem ser entendidos por computadores (MELLOR, 2005, p. 41-54).
27
desenvolvedor pode trabalhar. Isso permite que um desenvolvedor possa lidar com
sistemas mais complexos, com menos esforo (KLEPPE, 2003, p. 65-90).
Seguindo esse ciclo de vida, primeiro realizado o levantamento de requisitos
do sistema, depois realizada a fase de anlise, nessa fase feita modelagem do
modelo PIM, de acordo com os requisitos identificados. Na fase de design,
realizada a transformao para PSM, levando-se em conta a tecnologia alvo usada
no desenvolvimento do sistema.
Na fase de codificao, realizada a segunda transformao proposta pela
MDA, que a transformao do PSM para cdigo fonte do sistema. Posteriormente
so realizadas as fases de testing e a deployment. Caso seja identificado algum erro
na fase de deployment, uma nova iterao realizada, sendo iniciada a partir da
fase de anlise, de forma a identificar e corrigir o erro no prprio modelo PIM. Com
isso a documentao do sistema, sempre estar atualizada.
3.3.6 Benefcios da MDA
Nesta seo foram apresentados alguns problemas encontrados no atual
processo de desenvolvimento de software, dentre eles: problemas de produtividade,
portabilidade, interoperabilidade e manuteno e documentao. Nessa seo ser
mostrado como a MDA pretende solucionar esses problemas.
De acordo com (KLEPPE, 2003, p. 45-60), a aplicao da MDA, dentro do
processo de desenvolvimento de software, apresenta melhorias na produtividade,
portabilidade, interoperabilidade, documentao e manuteno.
3.3.7 Produtividade
28
A tarefa mais difcil nesse contexto a definio de forma exata de como
sero feitas as transformaes. Essa definio uma tarefa difcil e complexa, que
necessita ser feita por pessoas qualificadas. Uma vez definida as transformaes, as
mesmas podem ser aplicadas para diversos projetos, resultando em um alto ganho
de produtividade (KLEPPE, 2003, p. 56-80).
Como parte do cdigo fonte da aplicao gerada a partir do PSM, a equipe
de desenvolvimento pode, dentro do cronograma previsto, despender mais tempo
para analisar as regras de negcio do sistema a ser desenvolvido e,
consequentemente, identificar e corrigir mais erros em tempo de anlise e assim
produzir um modelo PIM com uma maior qualidade.
Um alto ganho de produtividade pode ser alcanado atravs da utilizao de
ferramentas que automatizem a transformao do PIM para o PSM. Isso acarreta
que muitas informaes sobre a aplicao devem ser incorporadas no PIM e/ou na
ferramenta de transformao utilizada, pois agora o modelo de alto nvel (PIM) est
diretamente relacionado com o cdigo-fonte gerado. As exigncias em relao
integridade e coerncia do PIM so maiores que no desenvolvimento sem a
utilizao de uma ferramenta que automatize a transformao PIM para PSM
(KLEPPE, 2003, p. 76-91).
3.3.8 Portabilidade
Dentro da MDA, a portabilidade conseguida com foco na modelagem do
PIM, que por definio independente de plataforma. Logo o mesmo PIM pode ser
automaticamente transformado em diversos PSMs para diferentes plataformas. Com
isso, tudo o que voc modelar ao nvel do PIM, totalmente porttil (KLEPPE, 2003,
p. 78-80).
Se dentro do processo de desenvolvimento alguma ferramenta de automao
de transformao for utilizada, a portabilidade estar limitada a ela. Para as
plataformas mais populares j existem ferramentas que possibilitam essa automao
nas transformaes, para outras, necessrio ter uma ferramenta que suporte um
29
plugin4 para definio de transformaes e essas definies devem ser descritas
manualmente (KLEPPE, 2003, p. 103-120).
3.3.9 Interoperabilidade
O conceito de interoperabilidade que o MDA se refere a comunicao entre
os PSMs. Vrios PSMs de plataformas diferentes so gerados a partir de um mesmo
PIM, e s conseguem se comunicar graas ao conceito de bridges definido pela
MDA. A Figura 08 ilustra o conceito de interoperabilidade (KLEPPE, 2003, p. 45-60).
Dentro da informtica, plugin um software usado para adicionar funes a outros softwares
maiores, provendo alguma funcionalidade especial ou muito especfica
30
um PSM se relacionam com os elementos do segundo PSM, desde que tambm se
conhea todos os detalhes tcnicos dos dois PSMs. Com isso, tm-se todas as
informaes necessrias para gerar uma conexo entre os dois (KLEPPE, 2003, p.
34-67).
A utilizao de ferramentas que gerem alm dos PSMs, os bridges entre elas,
ir proporcionar a interoperabilidade das plataformas, proposta pela MDA.
3.3.10 Documentao e Manuteno
Dentro da MDA, o PIM representa um documento de alto nvel de abstrao
para um software. A grande diferena que o PIM tem um papel chave no
desenvolvimento do software, logo ele no pode ser descartado depois de
construdo. As mudanas realizadas no sistema iro obrigatoriamente refletir em
mudanas no PIM, para a partir da, ser feita uma nova gerao do PSM e
posteriormente do cdigo-fonte (KLEPPE, 2003, p. 30-50).
Existem ferramentas que mantm o PIM, o PSM e o cdigo-fonte gerado,
sincronizados, ou seja, qualquer alterao em algum destes elementos refletir em
alteraes correspondentes nos demais (KLEPPE, 2003, p. 30-45).
A documentao de mais alto nvel (PIM) estar diretamente ligada
implementao do sistema, tornando assim a manuteno do sistema e da prpria
documentao menos custosa, o que faz com que a documentao esteja sempre
atualizada e de boa qualidade, pois a desatualizao e m qualidade da
documentao afetam diretamente a qualidade do software.
3.4 - Padro reusvel visual para modelagem estrutural bsica, metamodelagem: A infraestrutura UML2
A UML2 cresceu de forma a incorporar diversas estruturas e componentes,
sobre o ponto de vista de estruturas de modelagem e diagramas ela ficou dividida
entre a infraestrutura (Diagram Type, Diagram Class, Diagram DataType, Diagram
Package).
31
O Diagram Type tem como caractersticas principal a de nomear tipos de
elemento seu meta-modelo constitudo de uma classe chamada Element, como
subclasses dela existem o NamedElement e o Comment que se relacionam tambm
entre si atravs da associao, o TypedElement e o Type so subclasses de
NamedElement e esto associadas entre si. Este modelo de abstrao perfeito
para criao de novos elementos da UML em nosso caso especificamente foi
utilizado para criao dos novos elementos do SPEMLM.
32
33
Diagrama
de
DataType
segundo
UML2
MOF
34
3.5 A metamodelagem: MOF2 e ECORE
O MOF2 (Meta Object Facility) um padro criado pela OMG que define uma
linguagem para a definio de linguagem de modelagem. Como o MOF uma
linguagem para criao de outras linguagens ela pode ser considerada uma
metalinguagem. O MOF2 reside na camada M3 da arquitetura dirigida a modelos
(MDA), e como no h uma camada superior para definir o MOF2, ele definido
atravs dele mesmo. O MOF2 a linguagem em que as definies de UML e CWM,
ou seja, os meta-modelos da UML2 e CWM so escritos.
A Figura 11 representa a viso de modelo, meta-modelo, meta-meta-modelo e
a camada M3 onde fica localizado o MOF2.
de modelos
predefinidos
(meta-modelos)
em
35
como: transformaes entre modelos, gerao de cdigo, engenharia reversa, entre
outras coisas.
O ECORE utilizado de ponte entre os ambientes e possibilita a integrao
entre a parte ou modelo construdo e sua implementao, ou seja, cdigo fonte.
36
Uma das caractersticas interessante do ECORE a possibilidade de
integrao com outras linguagens, transformaes entre modelos, diversas
ferramentas utilizam este recurso para realizar suas transformaes um exemplo o
BRModelo ferramenta de modelagem de banco de dados desenvolvida por uma
equipe de pesquisadores da UFRS que usam o EMF ECORE para realizar as
transformaes entre os modelos dos diagramas Entidade Relacionamento para o
modelo lgico do lgico para o modelo fsico (Script do Banco de Dados), outra
soluo partindo para o modelo de MDA a ferramenta ANDROMDA que reusa
EMF e ECORE para realizao das transformaes entre os modelos.
37
38
39
artefatos da UML. A OCL definida como uma norma adicional a UML, sendo
adotada pela OMG. A atual especificao aceita pela OMG a OCL 2.0 (OCL, 2006,
p. 34-50).
Os diagramas UML no fornecem todos os aspectos relevantes para a
especificao de um sistema orientado a objetos. Verifica-se, entre outras coisas, a
necessidade de se descrever restries adicionais sobre os objetos nos modelos. A
falta dessas restries pode levar a interpretaes ambguas de um mesmo modelo
(OCL, 2006, p. 45-89).
A OCL foi desenvolvida para ser uma linguagem formal, mas que fosse fcil de
ler e escrever. Ela foi desenvolvida inicialmente como uma linguagem de
modelagem de negcios dentro da International Business Machines (IBM)
Algumas das caractersticas da OCL so: no possui efeitos colaterais, tipada, tem
avaliao instantnea, no uma linguagem de programao, possui sintaxe e
semntica bem definida (OCL, 2006, p. 32-48).
Apesar de poder ser usada em alguns diagramas da UML, para o
desenvolvimento desse trabalho, a OCL ser mais utilizada em conjunto com o
diagrama de classes para se obter um modelo mais completo, para que possa ser
usado no processo de desenvolvimento baseado em MDA e com isso se obter uma
aplicao com uma maior qualidade.
A Figura 15 ilustra uma invariante OCL para realizar uma restrio no contexto
Vo onde o nmero de passageiros no pode ser maior do que o nmero de
assentos do Vo.
40
(WOODY,2002,
p.
56-98)
caracterstica
de
representar
41
modelagem, isto acontece, pois o sentido de abstrao e representao do
conhecimento est em tudo que fazemos atualmente, quando precisamos explicar
determinada situao para as pessoas de forma grfica, fica mais fcil de entender.
Eles so bastante confundidos com Ontologias mais de diferem no uso de sua
gramtica e vocabulrio mais especfico.
42
No prximo captulo sero discutidas e apresentados os detalhes sobre o
estudo de caso do projeto Retriever, seus requisitos funcionais e no funcionais,
modelos de arquitetura, designer de interface e alguns detalhes de sua arquitetura
com diagramas da UML.
43
de
maneira
assistida
atravs
de
uma
ferramenta
chamada
44
45
(d) apoio obteno da implementao atravs da gerao de cdigo
(transformaes modelo-texto); (e) possibilidade de extenso das transformaes
pr-definidas; (f) orquestrao de componentes reutilizveis de software baseado
em MDA.
A abordagem proposta neste captulo abrange os cenrios de transformao
do tipo modelo-modelo e as transformaes. As prximas sees detalham esta
abordagem e esto organizadas da seguinte forma: a Seo 4.2 apresenta uma
viso geral da abordagem e suas principais caractersticas; a Seo 4.3 descreve
como so definidas as transformaes entre modelos; a Seo 4.4 apresenta as
tcnicas de programao utilizadas em Shell script para realizar as transformaes
de PIM para PSM e PSM para Cdigo; a Seo 4.5 encerra o captulo, apresentando
algumas consideraes finais.
4.2 - Viso geral da abordagem proposta
Uma viso geral da abordagem proposta exibida na Figura 17. A
abordagem foi concebida para permitir a definio de transformaes de forma
independente de ferramenta CASE parte (a). O Projetista pode definir
transformaes sobre modelos UML. Essa definio de transformaes ser
detalhada na Seo 4.3. Aps elaborar os modelos na sua ferramenta CASE parte
(b), o Engenheiro de Software pode aplicar as transformaes previamente definidas
atravs de uma mquina de transformaes parte (c) e gerar a implementao
dos modelos na plataforma desejada. Para executar transformaes sobre modelos,
pode ser necessria a preparao prvia do modelo a ser transformado, atravs de
marcaes. Essa marcao e a execuo das transformaes sero detalhada na
Seo 4.4. Na Seo 4.5 so apresentadas rotinas em Shell Script que visam
automatizar o processo de transformao e por fim ser exibida as consideraes
finais sobre este captulo.
Algumas caractersticas gerais da abordagem foram definidas com base nos
critrios definidos nos captulos 2 e 3 e sero apresentadas nas prximas sees.
46
A Figura 17 descreve as aes de especificao do sistema de informao
baseado nos requisitos do projeto, depois o processo de modelagem utilizando uma
ferramenta, no prximo passo descreve marcao e execuo das transformaes e
por ltimo a gerao da aplicao baseada no modelo descrito anteriormente em
uma plataforma alvo especfica.
4.3 Apoio definio de transformaes
Conforme foi apresentado no captulo anterior, uma transformao pode ser
definida como um processo que realiza a converso de um modelo em um outro
modelo do mesmo sistema (OMG, 2003b). Estas transformaes seguem uma
sequncia de passos que foram mencionados anteriormente. Atualmente algumas
ferramentas de modelagem de dados tais como: BrModelo, ERWin, Astah, Borland
Together, IBM Rational Software e de banco de dados possuem um mecanismo de
transformao de Modelo Entidade Relacionamento para o modelo Lgico e do
lgico para o modelo Fsico, exemplo: Linguagem DDL e vice-versa.
4.3.1 - Exemplo do Meta Modelo da Biblioteca UML2DJ
O UML2DJ uma biblioteca de componentes responsvel pela transformao
de modelo de diagrama estrutural (Classe) em um arquivo no formato XMI que
posteriormente ser transformado para o modelo de projeto do framework Django.
Na prxima seo ser detalhado a estrutura do Meta Modelo do componente
UML2DJ. Para realizar esta modelagem foi necessrio entender o funcionamento
interno do componente como tambm suas principais caractersticas de execuo,
este meta modelo considerado uma grande contribuio para este trabalho, pois a
partir dele ser possvel customizar o componente para que o mesmo possa ser
utilizado em outras plataformas. Esta pesquisa teve como ponto de partida as
classes do referido componente e sua execuo em projetos previamente definidos.
47
Figura [17] Figura que representa a arquitetura do Meta Modelo do componente UML2DJ
Fonte: Prprio autor
48
49
Tais aes so necessrias para realizar as transformaes entre os modelos
abstratos de componente com os modelos concretos saindo do PIM para o PSM da
plataforma alvo.
50
Figura [20] Detalhes do Meta Modelo UML2DJ - Viso Tipos de Atributos, Operaes
Fonte: Prprio autor
De acordo com a Figura 20, a classe "AttributeType" herda est associada com a
classe "Db_table" nela possvel identificar as caractersticas das tabelas e
consequentemente as caractersticas definidas pelos atributos TextFiel, CharField,
DataField, FloatField, IntegerField, etc so os tipos de atributos definidos.
A mesma classe "AttributeType" est associada a classe "Operation" que descreve
as operaes realizadas a uma classe ou a atributos de classe, da mesma forma a
classe "Operation" est associada com a Classe "Type" da UML. Outra associao
identificada a composio existente entre as classes "Parameter" com a classe
"Operation". A mesma classe "Parameter" possui uma herana mltipla com as
classes "TypedElement" e "MultiplicityElement".
51
52
Figura [22] Figura que representa o esquema de ligao dos componentes do Django
Fonte: Prprio autor
53
54
Estes componentes so:
__init__.py: Um arquivo vazio que diz ao Python que esse diretrio deve ser
considerado como um pacote Python. (Funciona como um arquivo principal
do projeto, idealizado para descrever a origem e inicializao do projeto).
55
56
4.4 - Etapas de Transformao entre os modelos biblioteca UML2DJ
Para realizar este procedimento foi utilizada a biblioteca UML2DJ6 necessrio
descrever esta ao em partes individualizadas chamadas de etapas, a primeira
chamada de CIM, depois o PIM e por ltimo a construo do PSM.
4.4.1 Construo do CIM (Modulo Independente de Computao)
Esta etapa consiste na identificao das regras de negcio baseadas no
domnio da aplicao, para este caso o Sistema de Gesto de Inventrios
Hospitalares "Retriever". Aps a coleta dos dados atravs de requisitos funcionais e
no funcionais, foi necessrio transcrever tais caractersticas para modelos, no
prximo captulo 5, sero descritos os requisitos funcionais e no funcionais do
projeto, como tambm alguns diagramas UML relatados aqui e que fazem parte da
descrio de arquitetura do sistema de informao.
4.4.2 A Construo do PIM (modulo independente de plataforma)
Para elaborao do Diagrama de classes foi preciso resgatar as informaes
do modelo CIM (Modelo Independente Computacional) atravs dos requisitos
funcionais e no funcionais, depois foi feita a modelagem funcional e estrutural do
Projeto "Retriever", o mesmo foi realizado de forma prtica atravs da UML pelo
diagrama de classes, importante resaltar que neste momento este artefato tem
como funo descrever a meta modelo da aplicao. Detalhes da modelagem e das
classes existentes no sistema so detalhadas na figura 25.
57
baseadas
no
MOF
que
independem dos
mecanismos
de
58
A exportao feita atravs da ferramenta ARGOUML conforme Figura 26,
nela possvel identificar as caractersticas do modelo criado baseado em XMI.
Atravs deste formato XMI possvel identificar os nomes das classes tais
como Evento, o nvel de visibilidade, neste caso "public", os atributos existentes
como cdigos, seus nveis de visibilidade, como tambm as associaes e
multiplicidades aplicadas ao modelo de domnio em questo, tais caractersticas so
de fundamental importncia para realizar as transformaes, neste caso, so
cruciais para o sucesso do projeto, isto acontece porque as ferramentas de gerao
de cdigo tem como descrever seus comportamentos justamente pelos detalhes
empregados no modelo de diagrama modelado.
59
Este arquivo foi copiado para a pasta lib. Do projeto feito em Python + Django
e o mesmo ser executado atravs do script em Shell chamado geradorMDAPIM.sh
este arquivo ir ler o XMI e realizar as referidas transformaes.
4.4.3 Aplicando transformaes da biblioteca UML2DJ, Modelo PSM
Para realizar as transformaes atravs da biblioteca UML2DJ, primeiro
necessrio configurar o ambiente, para que isto acontea necessrio instalar o
Python + Django e depois acrescentar a biblioteca libxml2, a mesma precisa estar
instalada no ambiente do projeto, este procedimento encontra-se no apndice 4
desta dissertao de mestrado, na figura 27 detalha este processo e etapas.
60
61
4.4.4 Continuando com as transformaes, modelo execuo PSM
Neste ponto possvel verificar que algumas aes j foram realizadas,
visando consolidar as transformaes foi criado um outro arquivo chamado
gerarMDAPSM.sh. Este aplicativo responsvel pela continuao da execuo dos
projetos e das aes de orquestrao.
Atravs do gerenciador ORM chamado SQLDB que o django possui
possvel descrever tambm a sintaxe dos comandos representados atravs da
modelagem UML (Diagrama de Classes) com o modelo de banco de dados,
descrito na DDL (Data Defination Language) conforme apndice III, maiores
detalhes sero apresentados no referido apndice III desta dissertao.
Nesta sequencia de comandos possvel ver como feita a transformao
entre o modelo conceitual de classes no modelo fsico do banco de dados, isto
acontece de forma automtica atravs do comando python manage.py syncdb.
A Figura 29 descreve a execuo em shell script dos principais comandos de
execuo da transformao do PSM para o cdigo fonte.
62
63
administrar o sistema, este tem a responsabilidade de administrar a orquestrao e
os mdulos criados na aplicao do sistema.
Na prxima seo ser apresentado um resumo do captulo com
consideraes finais sobre o mesmo e uma pequena apresentao do prximo
captulo desta dissertao.
entre
os
componentes
que
deram
origem
ferramenta
64
e no final das
65
5.1.1 O impacto
A ausncia de controle desses ativos tem influencia direta nos custos das
organizaes mdicas, no desperdcio de material e no mau uso do patrimnio
hospitalar. Como consequncia, essas aes tm contribudo para aumentar os
prejuzos como roubo e furto de itens existentes no hospital, alavancando assim,
enorme prejuzo para a organizao.
O processo de gerenciamento de equipamentos ativos dentro de hospitais
algo bastante complexo e envolve risco, inclusive de vida ou contgio, no que se
refere a infeces por exemplo.
5.1.2 A soluo
Foi criado um sistema de informao destinado a auxiliar o processo de
gerenciamento hospitalar cujo objetivo informar a localizao em tempo real de
equipamentos e medicamentos obedecendo a alguns preceitos no que se refere a
um sistema de informao. Alm disso, os hospitais podem utilizar e dispor, de
forma mais eficiente, os equipamentos que possuem, reduzindo as despesas
referentes reposio e ao transporte dos equipamentos. A combinao dessas
atribuies elimina problemas frequentemente observados dentro de hospitais, tendo
como consequncias, melhores servios oferecidos aos pacientes, agregando a
esses servios, nveis de custos aceitveis e competitivos para o negcio ao qual se
prope.
5.2 Stakeholders, Requisitos Funcionais e No funcionais
Nesta parte do trabalho sero apresentados algumas informaes sobre os
Stakeholders do projeto e a lista de requisitos funcionais e no funcionais do projeto,
estas aes so importante para definir tanto as caractersticas funcionais
relacionadas a execuo das atividades no projeto "Retriever" como tambm as
caractersticas de usabilidade, performance, segurana, etc. Identificadas atravs
dos requisitos no funcionais deste projeto.
66
5.2.1 Stakeholders
Na engenharia de requisitos, os stakeholders so definidos como pessoas
ou organizaes que sero afetadas pelo sistema e que direta ou indiretamente
tem influncia sobre os requisitos.
Basicamente, os stakeholders do projeto "Retriever" podem ser divididos
em cinco grupos descritos a seguir:
5.2.2. Atores
1. Administrador
2. Enfermagem
3. Gestor
4. Engenheiro Clnico
5. Segurana
6. Sensor
67
5.2.3 Requisitos (funcionais e no funcionais)
Os requisitos definem os servios que o sistema dever oferecer, o conjunto
deles determina a operao do sistema. So divididos em Requisitos Funcionais e
No Funcionais.
Os requisitos funcionais referem-se aos pressupostos que esto relacionados
com a forma com que o sistema deve operar, onde se especificam as entradas e
sadas do sistema e o relacionamento comportamental entre elas, assim como a
interao com o usurio.
Desta forma, os requisitos funcionais identificados so:
REF.
ATORES
REQUISITO
RF01
Todos
Autenticar usurios
RF02
Todos
RF03
Ges
RF04
Ges
Gerenciar usurios
RF05
Ges
RF06
Adm
Gerenciar hospitais
RF07
Adm
RF08
Adm
RF09
Adm
RF10
Adm
Auditar sistema
RF11
Eng
Gerenciar prdios/blocos
RF12
Eng
RF13
Eng
Gerenciar equipamento
68
REF.
ATORES
REQUISITO
RF14
Eng
Gerenciar reas
RF15
Eng
Gerenciar andares
RF16
Eng
Gerenciar movimentaes
RF17
Eng
Gerenciar identificadores
RF18
Eng
Gerenciar sensores
RF19
Sensor / Seg
RF20
Sensor / Seg
REQUISITO NO FUNCIONAL
RNF01
RNF02
RNF03
RNF04
RNF05
69
REFERNCIA
RNF06
REQUISITO NO FUNCIONAL
Os testes funcionais, carga e unitrios devem ser feitos de forma
semi ou automtica, baseada nas ferramentas Selenium, Jmeter e
Junit.
RNF07
RNF08
RNF09
RNF10
70
71
entre os atores, suas associaes, generalizaes, e caractersticas de dependncia
do tipo: extends e includes. importante salientar o papel dos atores Gestor,
Engenharia Clnica e Administrador, pois os mesmos so os mais importantes e
interagem com as principais funcionalidades da aplicao. Nele possvel identificar
os principais requisitos funcionais identificado neste projeto como: Gerenciar
Identificadores, Gerenciar Movimentaes, Receber Alerta de Segurana, entre
outros.
5.3.2 - Diagrama de Classe
O Diagrama estrutural da UML - o diagrama de classes possibilita a
verificao da estrutura dos dados existentes no domnio do problema, tornando
possvel
identificar
suas
principais
classes,
associaes,
multiplicidades,
72
importante ressaltar que o domnio do problema o sistema de gesto de
inventrios hospitalares, o domnio da soluo visa gerenciar as informaes
vivenciadas em hospitais e segment-las por blocos, andares, rea, equipamentos,
tipos de equipamentos, rea, s3PlantaBaixa que consiste na forma de selecionar
uma figura com a representao do registro.
De posse dessa informao fica mais fcil estabelecer a soluo utilizando os
conceitos de anlise e projeto de sistemas, pois com o reuso de software possvel
melhorar e adaptar as solues aplicadas ao domnio de gesto ao sistema de
gesto de inventrios, este um dos principais diagramas deste projeto pois tem
como caractersticas bsicas a representao da estrutura das classes seus
principais atributos e alguns mtodos referenciados no projeto em anlise.
5.3.3 - Diagrama de Componentes
Este diagrama tem como objetivo descrever as caractersticas internas de
componentes de arquitetura do projeto, fazer a arquitetura baseada no modelo MVC
(Model View Controller) e servir de modelo para os engenheiros de software,
arquitetos e desenvolvedores do projeto. Atravs deste modelo possvel realizar as
operaes interligadas entre as classes reusando componentes e aplicando alguns
padres de projeto conhecidos tais como Singleton, Facade, DAO etc.
O diagrama de componentes especifica de forma clara as camadas de
negcio, modelo e interface da aplicao, o play framework representa
De acordo com o diagrama apresentado na Figura 32 a camada Modelo
possui uma interface chamada play.Model que implementas as classes do modelo
conceitual do projeto, neste caso as classes Usurios e Movimentacao implementam
esta interface.
J na camada Negcio so apresentados componentes de negcio e
interfaces da aplicao, a exemplo da classe AutenticadorBD, Movimentaco e
ValidadorMovimentacaoImpl, estas so classes de regras de negcio da aplicao,
j a camada de interface caracterizada pelas interfaces grficas da aplicao e
73
servem de modelo de comunicao tambm com o Middleware de Integrao a
exemplo das classes FrmUsuario, FrmMovimentacao e MiddlewareMovimentacao.
74
75
76
77
78
79
80
5.5.1 Tela Principal do Sistema - "Asset Inventory"
A tela principal do sistema "Asset Inventory" composta pelo menu principal
da rea administrativa do sistema, nele existem os itens Andar, rea, Bloco,
Entidade, Equipamento, Evento, identificador, como tambm as reas de
movimentao, sensores e tipos de equipamento. Alm destas informaes
possvel visualizar tambm as aes recentes realizadas no projeto na parte lateral
direita, na guia Auth possvel gerenciar informaes sobre novos usurios do
sistema e grupos de usurios relacionados, este componente faz parte do Django e
j vem implementado de forma automtica na aplicao, tais dados so visualizados
na Figura 39.
Figura [39] - Sistema (Asset Inventory) - Tela com o menu principal do sistema
Fonte: Prprio Autor
81
importante relatar as caractersticas bsicas dos atributos da entidade
Andar como: Cdigo, Descrio do Andar, Nome e URL da imagem, alm disto,
todas as operaes de manipulao do andar esto contempladas tais como: incluir,
alterar, excluir e listagem geral dos andares.
82
83
84
85
86
6.1 - O projeto "Retriever" na arquitetura Java JEE com o ANDROMDA
Nesta parte do trabalho sero apresentadas informaes sobre o andamento
das atividades relacionadas ao projeto original da Fbrica de Software Gofactory,
entre elas possvel identificar informaes tais como exibidas na tabela 5:
QUADRO DO PROJETO COM ANDROMDA (JAVA) X PYMDAGENERATOR (PYTHON)
DESCRIO
JAVA
PYTHON
DIFERENA
54
38
16,00
90
82
14
16
2,00
13
15
2,00
56
60
4,00
SOMATRIO
229,00
213,00
8,00
16,00
87
necessrios para gerao da aplicao, na construo da interface da aplicao foi
necessrio a construo de Template.
Na fase de anlise e especificao do sistema foram gerados diversos
artefatos de anlise incluindo documento de requisitos, documento de viso,
diagramas de casos de uso, diagramas de classe, diagrama de componentes entre
outros, totalizando 14 artefatos gerados para o projeto em Java atravs da
linguagem de modelagem UML seguindo a metodologia RProcess e o ciclo de vida
interativo e incremental baseado em casos de uso e aspectos geis baseado no
SCRUM.
Para caracterizar os dias trabalhados dividimos o trabalho de segunda a
sexta-feira com 08 horas de trabalho dirio nossa equipe foi dividida em 06 pessoas,
sendo 01 gerente de projetos, 02 Programadores, 01 Engenheiro / Arquiteto de
Software, 01 Designer, 01 DBA/Engenheiro de Testes. O registro das atividades
realizadas foi feito atravs do RedMine. Durante este perodo realizamos diversas
reunies em um conjunto de 02 interaes / Sprints totalizando 15 dias de trabalho
para cada Sprint no total.
Quanto ao nmero de horas trabalhadas foi seguindo o nmero de dias 13
com 8 horas de atividade por dia, neste momento conseguimos realizar as
atividades com 56 horas de trabalho no final do projeto, dividindo estas informaes
em meses tivemos menos de 01 ms de trabalho para desenvolver o nmero de 17
casos de uso apresentados nesta dissertao de Mestrado isto nos garantiu a
completa execuo das funcionalidades da aplicao solicitadas pelo nosso cliente:
BeagleTech.
O grfico 1 ilustra de forma quantidade de Sprints, horas, dias, artefatos,
classes e demais aes exemplificados neste trabalho, foi observado nesta pesquisa
em questo que todos os nmeros apresentados aqui descrevem uma viso
imparcial que foi aplicada ao desenvolvimento com a ferramenta ANDROMDA
baseado em anlise, projeto e implementao de cdigo pilares fortes aplicados da
88
Engenharia de Software, que consiste em uso de tcnicas, ferramentas e modelos,
no definindo quais so e sim que existem e podem ser aplicados.
Grfico [01]: Grfico com as informaes estatsticas do projeto desenvolvido em Java JEE ANDROMDA
Fonte: Prprio Autor
PYTHON
DIFERENA
DESCRIO
54
38
16,00
90
82
14
16
2,00
13
15
2,00
56
60
4,00
2
229,00
SOMATRIO
2
213,00
8,00
16,00
89
Este projeto foi idealizado atravs da disciplina de Reuso de Software do
Mestrado Profissional do Cesar.edu.br, nos mdulos de Reuso Intermedirio e
Profissional, como nossa fbrica de software GoFactory tinha que desenvolver um
projeto que envolvesse a parte de transformaes entre modelos atravs com MDD
(Model Driven Development) ou MDA (Model Driven Architecture), foi criada a
ferramenta PYMDAGenerator para proporcionar a transformao, a linguagem
Python e o framework Django foram escolhidos por possuir uma fcil integrao
entre o mecanismo de gerao de cdigo baseados na classe abstrata
models.Model e no mecanismo de gerao ORM SQLdb.
Para este projeto foi aproveitada a estrutura de criao dos objetos do Django
em conjunto com a linguagem Python facilitando assim a aplicao do MVC e na
diminuio do nmero de linhas de cdigo do projeto, no Django o arquivo
Models.py concentra em um s lugar todas as instrues do modelo de arquitetura
MODEL evitando assim a criao de novas classes e sub-divises do modelo.
nmero de classes criadas no projeto foi 38 classes importante salientar que o
Framework ajuda na estruturao deste projeto diminuindo de forma considervel as
classes reusando inclusive o seu Template.
Neste projeto o nmero de membros foi reduzido para 02 (01 Engenheiro /
Arquiteto) e (01 Desenvolvedor Python + Django) como papel de modelagem e
diagramao o engenheiro/arquiteto construiu todos os artefatos de anlise e
especificao, juntamente com os diagramas da UML acrescentando apenas 02
novos diagramas o diagrama de instalao e o Diagrama de estrutura composta
aplicados ao projeto para classificar os componentes e a ligao entre os modelos
(PIM) para (PSM) e depois para cdigo o nmero de artefatos de anlise em UML foi
16 e a quantidade de arquivos gerados no final de tudo foram 82 arquivos
envolvendo todas as etapas de elaborao, construo, implantao e deploy da
aplicao.
90
Por conta desta ao o nmero de dias trabalhados neste projeto foi reduzido
para 15 no projeto em Python + Django, trabalhando 8 horas por dia durante 03
semanas de trabalho, o desenvolvimento gil baseado na construo da ferramenta
e na gerao automtica do projeto baseado na modelagem UML depois na
exportao do arquivos XMI, na etapa de transformao utilizando a biblioteca
UML2DJ para captura das estruturas do domnio do problema e exportao para os
arquivos admin.py e models.py do projeto, a programao dos Scripts em Shell
ajudam no processo de automao das transformaes entre os modelos,
garantindo assim apenas 60 horas de trabalho no projeto e o desenvolvimento em
apenas 02 Sprints de 8 dias cada. Tais informaes podem ser conferidas no
Grfico 2.
91
6.3 - Grfico comparativo entre os dois processos
Nesta parte do trabalho apresentado um grfico comparativo com os
valores identificados na tabela anterior:
Grfico [3]: Grfico com as informaes unificadas entre o desenvolvimento em Java JEE AndroMDA
x Python Django
Fonte: Prprio Autor
do
projeto
mencionados
nesta
pesquisa
facilitando
assim o
92
QUADRO DO PROJETO COM ANDROMDA (JAVA) X PYMDAGENERATOR (PYTHON)
DESCRIO
JAVA
PYTHON
DIFERENA
1002
945
57,00
54
38
16,00
90
82
8,00
14
16
2,00
13
15
2,00
56
60
4,00
SOMATRIO
1231,00
1158,00
16,00
Tabela [5]: Tabela com as informaes do projeto nfase ao Nmero de Linhas de cdigo
Fonte: Prprio autor
Grfico [4]: Grfico com as informaes estatsticas dos dois projetos, Azul para Python e Laranja
para Java
Fonte: Prprio Autor
93
O grfico de barras descreve de forma prtica diferena em formato de
porcentagem entre os itens avaliados nesta pesquisa, incluindo tambm a diferena
entre os dois projetos, a linha de Java corresponde aos indicadores aplicados ao
projeto Java JEE, j a linha de Python corresponde aos indicadores aplicados ao
0,87%
0,94%
24,45%
28,17%
5,68%
7,04%
Java
QUANTIDADE DE ARTEFATOS
PRODUZIDOS (UML)
Python
6,11%
7,51%
39,30%
38,50%
23,58%
17,84%
com
Python
Django
mantm
uma
singularidade
94
Outro ponto importante desta pesquisa o nmero de dias trabalhados neste
projeto, levando em considerao que o primeiro projeto durou 13 dias com a
ferramenta AndroMDA foi mais rpido e o ltimo 15 dias de trabalho com a
ferramenta PyMDAGenerator j possvel ver que com o reuso do software e o uso
da engenharia de software baseada em componentes podemos reaproveitar
inmeros artefatos produzidos e acelerar de forma drstica a gerao dos cdigo em
plataformas totalmente distintas.
6.4 Consideraes Finais sobre este captulo
Este captulo representou em nmeros diversas aes realizadas em ambos
os projetos, retratando dados estatsticos sobre o projeto feito em Java e o mesmo
projeto desenvolvimento em Python atravs do reuso de software e da Arquitetura
Dirigida a Modelos, um dos frutos do projeto foi a construo da ferramenta
PYMDAGenerator responsvel pela gerao automtica de cdigo baseado em
Python junto com o Framework Django, maiores informaes sobre o projeto e a
prpria
ferramenta
podem
ser
https://sites.google.com/site/pymdagenerator2014/
vistos
no
site:
95
Como foi possvel identificar, os ganhos representados em nmeros do
desenvolvimento baseado em componentes com a abordagem MDA bem
significativo, evidentemente comparado a uma outra ferramenta que utiliza a mesma
filosofia, mais importante resaltar tambm a questo da manutenabilidade,
alteraes nas vises sobre consultas e relatrios personalizados que de certa
forma no foram tratados neste trabalho.
Na Figura 44 apresentado o site onde possvel baixa uma verso demo da
ferramenta, junto com os componentes aplicados ao projeto, incluindo um passo a
passo para gerao de uma aplicao exemplo, outro ponto consiste na parte de
servios que podem ser feito baseados na engenharia de reuso de software com
MDA e MDD, como tambm o telefone, email de contato do responsvel pela
criao da ferramenta, documentos do projeto e tutoriais.
No prximo captulo ser apresentada as consideraes finais sobre este
trabalho incluindo os pontos positivos e negativos, como tambm os trabalhos
futuros desta dissertao de mestrado.
96
7. CONSIDERAES FINAIS
7.1 - Eplogo
O padro de engenharia de software baseado em modelos da MDA (Model
Driven Architecture) tem como proposta a construo sistemtica baseada em
exemplos estruturais e comportamentais da UML, isto acontece de forma natural
durante a transferncia dos aspectos tcnicos de desenvolvimento para as primeiras
fases de planejamento e projeo. Entre outros benefcios esto um alto nvel de
reuso, reduo do Time-to-market, entre outros.
A experincia entre os arquitetos, engenheiros e analistas de sistemas um
dos problemas identificados no uso deste paradigma sob o ponto de vista de
explorar os aspectos comportamentais e estruturais da UML visando detalhar o
mximo possvel s caractersticas de negcio de um domnio especificado,
lembrando que, infelizmente, o foco se concentra mais na especificao do cdigo e
muito pouco nos requisitos de modelagem conceituais e lgicos da arquitetura de
software.
Dessa forma, uma das primeiras preocupaes consiste na identificao e na
representao destas informaes em considerao aos aspectos de construo do
CIM - modelo computacional de requisitos e regras de negcio, depois na
transformao em PIM - Modelo Independente de Plataforma atravs dos artefatos
da UML e da linguagem de restrio ao modelo OCL, esta caracterstica ser
transformada em PSM - Modelo Especfico de Plataforma - caracterizado pelos
aspectos tcnicos de implementao da plataforma em questo, por ltimo, a
transformao de PSM para cdigo fonte, depois para o cdigo objeto (executvel).
A modelagem dos aspectos estruturais e comportamentais da UML uma das
primeiras atividades de desenvolvimento e implementao do sistema de informao
na busca para identificar pontos em comum que so realizados pelos citados
profissionais anteriormente questionados. O modelo de caractersticas, gerado a
partir dessas atividades utilizado como ponto de partida para o recorte necessrio
instanciao de novos sistemas de informao na WEB, Alm disso, permite
97
uniformizar
entendimento
entre
todos
os
envolvidos
no
processo
de
desenvolvimento.
Esta dissertao apresenta uma orquestrao de componentes reutilizveis
de software baseados em MDA, que visa criar um mtodo integrado para gerao de
aplicaes para sistemas de informaes na Web, utilizando a linguagem Python e o
framework de desenvolvimento gil Django, juntamente com a UML. Esta
abordagem est dividida em trs partes/componentes: PyMDAGenerator mdulo
PIM, PyMDAGenerator mdulo PSM e o mdulo de gerao em shell script para
integrar as aes etapas de desenvolvimento e gerao final do projeto.
Um estudo preliminar realizado para avaliar a ferramenta foi testado atravs
do projeto da Fbrica de Software Gofactory do sistema de gesto de inventrios
hospitalares no produto "Retriever". Esse estudo contribuiu para a melhoria da
abordagem e motivou o desenvolvimento de um prottipo para apoiar a aplicao da
orquestrao. Esse exemplo foi desenvolvido no contexto do ambiente da
ferramenta PyMDAGenerator, envolvendo as etapas de planejamento, anlise,
projeto, implementao e testes.
7.2 Contribuies
O trabalho de pesquisa apresentado teve como objetivo principal propor uma
orquestrao entre componentes reutilizveis de software para implementao de
sistemas de informao para Web baseado no paradigma MDA. Atravs da
linguagem Python e do framework de desenvolvimento gil Django. Entre as suas
principais contribuies, podemos destacar:
98
feitos em Shell Script), (3) um ambiente de gerao automtica de tabelas e
atributos seguindo o modelo ORM parecido com hibernete/JPA, (4) um outro
mecanismo integrado para fazer a instalao dos projetos e a integrao com
o ambiente de verso e publicao das aplicaes. importante salientar que
a abordagem proposta baseada no mesmo tipo de modelo comumente
utilizado para a gerao automtica de cdigo baseado em MDA.
pelos
alunos
do
Mestrado
Profissional
do
Cesar.edu.br,
do ambiente
de
orquestrao. Sendo
orquestrao
de
Identificao
das
extenses
necessrias
para
possibilitar
99
7.3 Limitaes
Algumas limitaes deste trabalho foram identificadas a partir de uma anlise
crtica da abordagem proposta e do prottipo desenvolvido. As principais so
listadas logo a seguir:
100
7.4 Trabalhos Futuros
Ao longo do desenvolvimento deste trabalho, algumas oportunidades de
melhoria, tanto da abordagem proposta quanto do prottipo desenvolvido, foram
destacadas. Alm disso, novas oportunidades de pesquisa foram identificadas. Os
possveis trabalhos futuros envolvem:
Aplicao
do
prottipo
desta
orquestrao
utilizando
modelo
101
102
8. REFERNCIAS BIBLIOGRFICAS
ARGOUML, 2012
ANDR, 2009
ATKINSON e al ,
2001
BEYDEDA e
GRUHN, 2005
BUSCHMANN e al,
1996
BYDINKSY e al,
2009
CHE, 2001
CHERRYPY, 2013
CWM, 2013
<http://www.omg.org/spec/CWM/>.
ltimo
acesso:
11/12/2013.
DANIEL, 2007
103
DAVI M. BEAZLEY,
2009
Beazley,
Python
Essential
Reference:
Ingls,
ISBN:
DJANGO, 2013
DRESDEN, 2013
Dresden OCL Toolkit. 2013. Disponvel em: <http://dresdenocl.sourceforge.net/>. ltimo acesso: 04/01/2013.
ECLIPSE, 2013
Eclipse
Project.
2013.
Disponvel
<http://www.eclipse.org/>. ltimo acesso: 05/01/2013.
ECORE, 2013
Ecore.
2013.
Disponvel
em:
<http://help.eclipse.org/help33/index.jsp?
topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/
emf/ecore/package-summary.html>.
ltimo
acesso:
25/04/2013.
EMF, 2013
EMF, 2013A
EMFV, 2009
ERIKSSON e al,
2003
FOWLER AND
STANWICK, 2004
em:
104
FRANKEL e
PARODI, 2002
GACC, 2013
Google
Account
API.
2013.
<http://code.google.com/apis/accounts>.
02/01/2013.
Disponvel
em:
ltimo
acesso:
GAE, 2009
Google
App
Engine.
2009.
<http://code.google.com/appengine/>.
05/03/2009.
Disponvel
em:
ltimo
acesso:
GAE, 2009A
GAEJRE, 2009
ZLOBIN, 2013
RUMBAUGH,
JACOBSON,
BOOCH, 1999
JSON, 2013
JULIO, 2006
KOLOVOS e al,
2006
KOLOVOS e al,
2006a
105
KOLOVOS et al,
2008
LAWLEY, 2004
LEFF e RAYFIELD,
2001
LEVITT, 2009
LUTZ, 2006
MAGICDRAW,
2013
Magic
Draw.
2013.
Disponvel
em:
<http://www.magicdraw.com/>. ltimo acesso: 09/06/2013.
MARINHO e al,
2009
MARINHO, 2009
Marinho, W. A. T. A Web GUI for a Multi-View ComponentBased Modeling CASE Tool. Master Thesis (Master Degree)
Federal University of Pernambuco, Recife, 2009.
FOWLER e
SCOTT, 2006
MDR, 2013
Metadata
Repository.
2013.
Disponvel
<http://mdr.netbeans.org/>. ltimo acesso: 01/03/2013.
em:
106
MELLOR, 2005
MILLER e
MUKEREJI, 2001
Joaquim
Miller
and
Jishnu
Mukereji.
"Model
Driven
ltimo
acesso: 11/12/2013.
MOF, 2013
OCLE, 2009
OCLMDT, 2009
OCTOPUS, 2013
OMG, 2012A
OMG, 2013
SANTANA e
GALESI, 2010
Osvaldo Santana e Thiago Galesi. "Python e Django Desenvolvimento gil de aplicaes web". Novatec.
Trveos. 2010.
PYMOF, 2013
PyEMOF.
2013.
Disponvel
<http://www2.lifl.fr/~marvie/software/pyemof.html>.
acesso: 15/04/2013.
PYYAML, 2013
em:
em:
ltimo
107
RODRIGUES, 2004
SOMMERVILLE,
2011
SZYPERSKI, 1999
SZYPERSKI,
Clemens.
Component
Software:
beyond
Osvaldo Santana e Thiago Galesi. "Python e Django Desenvolvimento gil de aplicaes web". Novatec.
Trveos. 2010
TOGETHER, 2012
Borland
Together.
2012.
Disponvel
em:
<http://www.borland.com/us/products/together/index.html>.
ltimo acesso: 09/06/2012.
WARMER e
KLEPPE, 2003
WEB2PY, 2013
ltimo
acesso: 12/12/2013.
WEBOB, 2012
WEBOBJECT,
2012
PDUA , 2011
XMI, 2013
XML, 2009
108
APNDICES
109
Apndice 1
110
[RF04] Gerenciar usurios.
Atores: Gestor e Administrador
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas ao usurio identificando os seus principais atributos tais como nome do
usurio, login, senha, perfil, etc. Outro ponto a identificao de seus mtodos tais
como incluso, alterao, excluso e listagem geral de todos os usurios do
sistema, alm de alterar a senha do usurio atualmente conectado no sistema.
Referncia: RF1, RF4
[RF05] Gerar relatrio por ambiente.
Atores: Gestor e Administrador
Descrio: Este procedimento consiste em gerar um relatrio no formato PDF de
todos os materiais existentes por ambiente operacional do hospital. Referncia:
FR1, FR5
[RF06] Gerenciar hospitais.
Atores: Administrador
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas ao hospital identificando os seus principais atributos tais como: cdigo
do Hospital, descrio do hospital, CNPJ, razo social, etc. Outro ponto a
identificao de seus mtodos tais como incluso, alterao, excluso e listagem
geral de todos os hospitais. Referncia: RF1, RF6
[RF07] Gerenciar gestor por hospital.
Atores: Administrador
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas ao Usurio Administrador do Hospital identificando os seus principais
atributos tais como nome do usurio, login, senha, perfil avanados de
111
administrao do hospital, delegao de nvel, etc. Outro ponto a identificao de
seus mtodos tais como: delegao de funo, nveis de permisso, controle de
acesso a recursos especficos do hospital. Referncia: RF1, RF4, RF6, RF7
[RF08] Registrar alertas emitidos
Atores: Administrador
Descrio: Este procedimento consiste em registrar todos os alertas emitidos pelos
sensores no hospital. Referncia: RF1, RF8
[RF09] Gerar log de eventos inesperados
Atores: Administrador
Descrio: Este procedimento consiste em gerar uma pequena relao de eventos
inesperados para o sistema, eventos tais como: materiais que no podem entrar em
determinados ambientes do tipo UTI, Salas de Cirurgias, etc. Referncia: RF1, RF9,
RF10
[RF10] Auditar Sistemas
Atores: Administrador
Descrio: Este procedimento consiste em gerar a parte de auditoria do sistema
como um todo: operaes de incluso, alterao, excluso sero armazenadas com
data e hora de realizao como tambm o nome do usurio que fez a referida ao.
Referncia: RF1, Todos.
[RF11] Gerenciar Prdios e Blocos
Atores: Engenharia Clnica, Gestor e Administrador.
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas ao Prdio e Blocos do Hospital identificando os seus principais
atributos tais como: cdigo predio, descrio prdio, Localizao, etc. Outro ponto
112
a identificao de seus mtodos tais como incluso, alterao, excluso e listagem
geral de todos os prdios e blocos. Referncia: RF1, RF11
[RF12] Listar Itens na Tela de Incio do Sistema
Atores: Engenharia Clnica, Gestor e Administrador
Descrio: Este procedimento consiste em listar as aes de movimentao de
itens que ocorreram nos ltimos minutos do sistema. Referncia: RF1, RF12
113
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas aos andares existentes no Hospital identificando os seus principais
atributos tais como: cdigo andar, descrio, tipo, localizao no prdio, etc. Outro
ponto a identificao de seus mtodos tais como incluso, alterao, excluso e
listagem geral de todos os andares. Referncia: RF1, RF15
[RF16] Gerenciar Movimentaes.
Atores: Engenharia Clnica
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas as movimentaes existentes de equipamentos e materiais no Hospital
identificando os seus principais atributos tais como: cdigo da movimentao,
observaes, tipo de equipamento e material, data da movimentao, hora da
movimentao, etc. Outro ponto a identificao de seus mtodos tais como
incluso, alterao, excluso e listagem geral de todas as movimentaes.
Referncia: RF1, RF16
114
Descrio: Este procedimento consiste em realizar as operaes bsicas
relacionadas aos sensores instalados em cada ambiente do Hospital identificando
os seus principais atributos tais como: cdigo sensor, etiqueta RFID, descrio, tipo,
localizao, etc. Outro ponto a identificao de seus mtodos tais como incluso,
alterao, excluso e listagem geral de todos os andares. Referncia: RF1, RF18
[RF19] Alertar Movimentao Indevida.
Atores: Sensor / Segurana
Descrio: Este procedimento consiste em emitir um aviso sonoro de alerta de
movimentao indevida de materiais e equipamentos de um lugar para outro dentro
do hospital. Referncia: RF1, RF19
[RF20] Receber alerta de segurana.
Atores: Sensor / Segurana.
Descrio: Este procedimento consiste em enviar uma mensagem por SMS, MMS e
Email, alm de mensagem de voz para o segurana de planto. Referncia: RF1,
RF20
115
Apndice 2
116
117
118
Diagrama
de
Instalao
Componentes e
Middleware
de
Integrao
119
Apndice 3
120
"cod" integer,
"codigo" varchar(50) NOT NULL,
"epc" varchar(50) NOT NULL,
"tecnologia" integer );
CREATE TABLE "Administrador_sensor" (
"id" integer NOT NULL PRIMARY KEY,
"codigo" integer,
"descricao" varchar(50) NOT NULL,
"localizacao" varchar(40) NOT NULL,
"modelo" varchar(40) NOT NULL,
"tecnologia" integer );
CREATE TABLE "Administrador_evento" (
"id" integer NOT NULL PRIMARY KEY,
"codigo" integer,
"data" date,
"identificadorold_id"
integer
NOT
NULL
REFERENCES
"Administrador_identificador" ("id"),
"sensorid_id"
integer
NOT
NULL
("id"));
CREATE TABLE "Administrador_entidade" (
"id" integer NOT NULL PRIMARY KEY,
"codigo" integer,
"nomeEntidade" varchar(50) NOT NULL,
REFERENCES
"Administrador_sensor"
121
"endereco" varchar(50) NOT NULL,
"fone" varchar(30) NOT NULL,
"status" integer );
CREATE TABLE "Administrador_bloco" (
"id" integer NOT NULL PRIMARY KEY,
"codigo" integer,
"descricao" varchar(50) NOT NULL,
"entidade_id"
integer
NOT
NULL
REFERENCES
("id"));
CREATE TABLE "Administrador_andar" (
"id" integer NOT NULL PRIMARY KEY,
"codigo" integer,
"descricaoAndar" varchar(50) NOT NULL,
"nome" varchar(50) NOT NULL,
"urlimagem" varchar(50) NOT NULL );
"Administrador_entidade"
122
CREATE TABLE "Administrador_s3plantabaixa" (
"id" integer NOT NULL PRIMARY KEY,
"coordenadas_X" integer,
"coordenadas_Y" integer,
"areaCompleta" integer );
CREATE TABLE "Administrador_equipamento" (
"id" integer NOT NULL PRIMARY KEY,
"codigo" integer,
"descricao" varchar(50) NOT NULL,
"model" varchar(50) NOT NULL,
"patrimonio" varchar(50) NOT NULL,
"identificador_id"
integer
NOT
NULL
REFERENCES
"Administrador_identificador" ("id"),
"tipo_id" integer NOT NULL REFERENCES "Administrador_tipoequipamento"
("id"));
CREATE TABLE "Administrador_movimentacao" (
"id" integer NOT NULL PRIMARY KEY,
"evento_id" integer NOT NULL REFERENCES "Administrador_evento" ("id"),
"entidade_id"
integer
NOT
NULL
REFERENCES
"Administrador_entidade"
("id"),
"bloco_id" integer NOT NULL REFERENCES "Administrador_bloco" ("id"),
"equipamento_id"
integer
NOT
NULL
REFERENCES
"Administrador_equipamento" ("id"),
"andar_id" integer NOT NULL REFERENCES "Administrador_andar" ("id"),
123
"area_id" integer NOT NULL REFERENCES "Administrador_area" ("id"));
CREATE
INDEX
"Administrador_evento_17578276"
ON
"Administrador_evento"
"Administrador_evento_3e5e76b5"
ON
"Administrador_evento"
"Administrador_bloco_1c4c4e74"
ON
"Administrador_bloco"
("identificadorold_id");
CREATE
INDEX
("sensorid_id");
CREATE
INDEX
("entidade_id");
CREATE
INDEX
"Administrador_equipamento_4c2413d6"
ON
"Administrador_equipamento"
ON
"Administrador_equipamento"
("identificador_id");
CREATE
INDEX
"Administrador_equipamento_27e4f492"
("tipo_id");
CREATE INDEX "Administrador_movimentacao_213b366b" ON "Administrador_movimentacao"
("evento_id");
CREATE INDEX "Administrador_movimentacao_1c4c4e74" ON "Administrador_movimentacao"
("entidade_id");
CREATE INDEX "Administrador_movimentacao_10cac466" ON "Administrador_movimentacao"
("bloco_id");
CREATE INDEX "Administrador_movimentacao_7f0e96d9" ON "Administrador_movimentacao"
("equipamento_id");
CREATE INDEX "Administrador_movimentacao_3bc48ff9" ON "Administrador_movimentacao"
("andar_id");
CREATE INDEX "Administrador_movimentacao_202f16e9" ON "Administrador_movimentacao"
("area_id");
COMMIT;
124
Apndice 4
Biblioteca UML2DJ.
'''
uml2dj.py
Run without arguments to see the documentation
@author: Goffer Looney
TODO:
detect failures of external command calls (e.g. mysql, python)
...
'''
import libxml2
import libxslt
import sys
import re
import os
def start():
if (len(sys.argv) < 2):
print """Converts a XMI file to a models.py and admin.py files
%s application [/d] [/s] [/r]
/d
drop all the tables used by that application, USE WITH CAUTION!
/s
run syncdb
/r
125
XMI file must be in the current directory and its name is [application].xmi
""" % sys.argv[0]
else:
import settings
import os
prj_name = os.getcwd().rpartition(os.sep)[2]
app_name = sys.argv[1]
if '%s.%s' % (prj_name, app_name) not in settings.INSTALLED_APPS:
print 'Application not installed %s.%s' % (prj_name, app_name)
exit(1)
if not os.path.exists("%s/__init__.py" % app_name):
print '%s module not found' % (app_name)
exit(1)
if not os.path.exists("%s.xmi" % app_name):
print '%s.xmi not found' % (app_name)
exit(1)
allchars = ''
for arg in sys.argv[1:]:
if (re.match('^/\w$', arg)):
allchars += arg[1:2]
pass
if 'd' in allchars:
print 'Drop tables'
126
run_command('python manage.py sqlclear %s > droptables.sql' % app_name)
run_command('mysql -u %s --password=%s %s < droptables.sql'
(settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME))
if 's' in allchars:
print 'Sync DB'
import settings
result = run_command('python manage.py syncdb')
if 'r' in allchars:
print 'Run Server'
result = run_command('python manage.py runserver')
def generate_code(app_name):
xmi_file = '%s.xmi' % app_name
transform('xmi2djmodels.xsl', xmi_file, app_name+'/_models.py')
transform('xmi2djmodels_generic.xsl', xmi_file, app_name+'/models_generic.py')
transform('xmi2djadmin.xsl', xmi_file, app_name+'/admin.py')
transform('xmi2djadmin_custom.xsl', xmi_file, app_name+'/_admin_custom.py')
transform('xmi2djadmin_generic.xsl', xmi_file, app_name+'/admin_generic.py')
def run_command(command):
#
import subprocess
ret = subprocess.call(args)
return ret
127
import os
ret = os.system(command)
return ret
def transform(xslt, source, target):
styledoc = libxml2.parseFile(xslt)
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile(source)
result = style.applyStylesheet(doc, None)
style.saveResultToFilename(target, result, 0)
style.freeStylesheet()
doc.freeDoc()
result.freeDoc()
start()
128
Apndice V
SCRIPT EM SHELL comandos com as transformaes.
Comando
Descrio
#!/bin/bash
os
comandos
da
linguagem
Shell
(Interpretador).
# Sistema
Comentrio
sobre
Sistema
Ferramenta
pyMDAGenerator
# Autor
# SubMdulo
read RESPOSTA
if [ $RESPOSTA = s ] then
sleep 2
ProjetoRetriever,
_admin_custom.py
em
renomear
admin_custom.py
_models.py em models.py.
mv
/administrator/_admin_custom.py
admin_custom.py
Na
prxima
execuo
comando
python
129
Comando
Descrio
do banco de dados. O prximo passo verificar as
mv
/administrador/_models.py
models.py
echo
"[PIM]-Fazendo
as
projeto em si.
Python"
fim
ser
chamado
arquivo
sleep 4
python manage.py syncdb
echo "Aplicando as mudanas no
settings.py...."
sleep 5
nano settings.py
echo "Aplicando as transformaes
no models.py..."
sleep 2
./geradorMDAPSM.sh
Fi
if [ $RESPOSTA = n ] then
echo
Script:..."
sleep 3
exit
fi
"Execuo
Interrompida
do
130
Tabela [1]: Tabela com os comandos arquivo geradorMDAPIM.sh
Fonte: Prprio Autor.
Comando
Descrio
#!/bin/bash
os
comandos
da
linguagem
Shell
(Interpretador)..
# Sistema
Comentrio
sobre
Sistema
Ferramenta
pyMDAGenerator
# Autor
# SubMdulo
echo
"Continuar
com
as
read RESPOSTA
if [ $RESPOSTA = s ] then
sleep 2
"[PIM]-Fazendo
as
Python"
sleep 4
"Startando
aplicaes ...."
servidor
de
131
Comando
Descrio
sleep 5
python manage.py runserver
echo "Pronto para Executar"
fi
http://localhost:3000
if [ $RESPOSTA = n ] then
correntes
da gerao do aplicativo.