Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
1. Enterprise Architect .................................................................................................. 01
2. Preparando o Ambiente Enterprise Architect .......................................................... 02
3. Criando o Perfil GeoProfile ...................................................................................... 08
4. Adicionando restries OCL .................................................................................... 15
5. Aplicando o Perfil GeoProfile................................................................................... 20
6. Importao e Exportao de arquivos XMI .............................................................. 29
1. Enterprise Architect
O Enterprise Architect (EA) uma ferramenta CASE comercial que permite criar diagramas
e perfis UML; licenciada pela Sparx Systems uma tima alternativa para a especificao
de perfis; alm de permitir a criao de perfis UML de forma visual oferece recursos como
suporte a OCL para definio de constraints e importao e exportao em XMI (XML
Metadata Interchange). Apesar de no permitir a incluso e excluso de esteretipos
grficos, para melhor visualizao e entendimento do diagrama, a vantagem desta
ferramenta a possibilidade de transformaes entre os diagramas da arquitetura MDA.
Este tutorial foi feito a verso 9.0 em Ingls.
1
2. Preparando o ambiente da ferramenta Enterprise Architect
Antes de iniciar o processo de criao do perfil GeoProfile, deve-se preparar o ambiente da
ferramenta Enterprise Architect (EA). Para isso siga os passos listados nesta seo.
Ao clicar no cone da EA, a primeira janela que aparecer a Select Version, onde ser
selecionada a verso Ultimate por ser a mais completa.
Para criar um perfil nesta ferramenta primeiro deve-se criar um novo projeto, clicando em
FileNew Project...
2
Nomeie o novo projeto GeoProfile e salve em uma pasta de sua preferncia. Depois de
salvo, a janela Model Wizard ser exibida bastando confirmar clicando no boto OK.
3
No canto direito da prxima tela h uma aba com nome Project Browser, e no canto
esquerdo h um menu com nome ToolBox contendo a aba More Tools.
A seguir deve-se criar uma View, clicando-se na aba Project Browser e selecionar com o
boto direito do mouse no Model a opo AddAdd View.
4
Nomear ento a View como Profile e escolher a opo Simple.
Uma nova View de nome Profile aparecer ento na aba Project Browser. Clicando com o
boto direito do mouse nesta View pode ser adicionado um diagrama.
Para isso v em AddAdd Diagram.
5
Desta forma foi disponibilizada uma rea livre onde poder ser criado o perfil GeoProfile.
Na aba More Tools escolha, dentre as diversas tecnologias, a opo Profile. Com esta opo
selecionada passar a ser exibida na aba ToolBox o conjunto de elementos necessrios para
criao do perfil GeoProfile.
Neste conjunto de elementos pode ser encontrado um pacote chamado Profile que pode ser
arrastado para rea de diagramao. Renomear a nova janela New Model Package para
GeoProfile.
6
Logo em seguida aparecer uma janela de New Diagram, onde a escolha do tipo de
diagrama ser Class.
Clicando duas vezes no pacote GeoProfile na area de diagramao ou ento na aba Project
Browser selecionar o diagrama Geoprofile. Ser ento aberta uma rea de diagramao
para o desenvolvimento do Perfil GeoProfile.
7
Com este ambiente preparado deve-se agora criar o Perfil GeoProfile.
9
O prximo passo estender a metaclasse Class da UML utilizando os esteretipos
criados. Para isso adicione o elemento Metaclass na rea de diagramao. Na janela que
aparecer selecione a metaclasse Class, adicione ao projeto e d Ok.
10
A metaclasse Association ser estendida atravs da criao dos esteretipos para
relacionamentos topolgicos entre as classes geogrficas. Existem seis tipos diferentes de
relacionamentos topolgicos no GeoProfile, sendo: Cross, In, Disjoint, Overlap, Touch e
Temporal. Como exemplo ser usado o esteretipo Temporal.
Um esteretipo pode possuir propriedades, as quais podem ser referidas como tag
definitions. Quando um esteretipo aplicado em um elemento do diagrama, os valores das
propriedades, referidas no perfil como tagged values, podem ser manipuladas no diagrama.
Aps a insero dos literais espera-se que as enumeraes fiquem como na imagem a seguir.
12
Agora, adicione ao perfil o esteretipo TemporalObj e inclua dois atributos com tipos das
enumeraes criadas anteriormente: temporalPrimitive do tipo TemporalPrimitive e
temporalType do tipo TemporalType.
Para adicionar os atributos e seus tipos, basta clicar com o boto direito do mouse em cima
do esteretipo TemporalObj a fim de encontrar a opo attributes. Na janela que abrir
adicione o nome desejado e clique no boto com reticncias para encontrar as enumeraes
definidas anteriormente.
13
A Figura a seguir ilustra a janela aberta ao clicar nas reticncias que aparecem em frente ao
Type. Podem ento ser escolhidas as enumeraes criadas no perfil.
Deve-se ento estender a metaclasse Class novamente para o esteretipo criado. Inclua mais
um elemento Extension do esteretipo TemporalObj para a metaclasse Class.
14
4. Adicionando Restries OCL
A ferramenta Enterprise Architect oferece suporte linguagem OCL (Object Constraint
Language), que tem como objetivo permitir a adio de constraints (restries) aos
diagramas elaborados pelo projetista e tambm validar o diagrama elaborado utilizando os
construtores da UML. As restries OCL descritas nesta seo se enquadram nesta ltima
opo, sendo especificadas no perfil GeoProfile para validar os diagramas elaborados
atravs de seus construtores possuindo sempre como contexto um de seus esteretipos.
Para declarar Constraints, primeiro clique com o boto direito sobre o esteretipo ao qual
se deseja aplicar a restrio e em seguida na opo Properties. Na janela de propriedades
acesse o menu RulesConstraints selecione o tipo de restrio no campo Type como OCL
e Status como aprovado. Para adicionar uma expresso OCL clique em New, no campo
Constraint coloque a descrio da restrio OCL, e no campo de texto abaixo da descrio
insira a restrio OCL. Ao no boto Save ser exibida uma mensagem de OCL validada com
sucesso quando a mesma estiver sintaticamente correta ou uma mensagem de alerta quando
a mesma estiver sintaticamente errada. A Figura a seguir ilustra como devem ser inseridas as
restries OCL nos esteretipos.
15
As restries do GeoProfile existentes at o momento da elaborao deste tutorial esto no
quadro a seguir. O campo context refere-se ao esteretipo onde a restrio ser aplicada.
A inv:
context GeoField self.base_Class.getAppliedStereotypes() ->
select(s | s.name = Point or s.name =
Line or s.name = 'Polygon' or s.name =
'ComplexSpatialObj') -> isEmpty()
B inv:self.base_Class.getAppliedStereotypes()
context Network -> select(s | s.name = Point or s.name =
Line or s.name = 'Polygon' or s.name =
'ComplexSpatialObj' or s.name = 'TIN' or
s.name = 'Isolines' or s.name =
'GridOfCells' or s.name = 'AdjPolygons' or
s.name = 'GridOfPoints' or s.name =
'IrregularPoints' or s.name = 'Node' or
s.name = 'UnidirectionalArc' or s.name =
'BidirectionalArc') -> isEmpty()
16
C inv:
context self.base_Class.getAppliedStereotypes()->
NetworkObj select(s | s.name = 'TIN' or s.name =
'Isolines' or s.name = 'GridOfCells' or
s.name = 'AdjPolygons' or s.name =
'GridOfPoints' or s.name =
'IrregularPoints') -> isEmpty()
D inv:
context Node self.base_Class.getAppliedStereotypes() ->
select(s | s.name = 'UnidirectionalArc' or
s.name = 'BidirectionalArc') -> isEmpty()
E inv:
context self.base_Class.getAppliedStereotypes() ->
UnidirectionalArc select(s | s.name = 'BidirectionalArc') ->
isEmpty()
F inv:
context Cross self.base_Association.getAppliedStereotypes()
-> select(s | s.name = 'Disjoint' or s.name =
'In' or s.name = 'Overlap' or s.name =
'Touch') -> isEmpty()
G inv:
context self.base_Association.getAppliedStereotypes()
Disjoint -> select(s | s.name = 'Cross' or s.name =
'In' or s.name = 'Overlap' or s.name =
'Touch') -> isEmpty()
H inv:
context In self.base_Association.getAppliedStereotypes()
-> select(s | s.name = 'Disjoint' or s.name =
'Cross' or s.name = 'Overlap' or s.name =
'Touch') -> isEmpty()
I inv:
context Overlap self.base_Association.getAppliedStereotypes()
-> select(s | s.name = 'Disjoint' or s.name =
'Cross' or s.name = 'In' or s.name = 'Touch')
-> isEmpty()
J inv:
context Touch self.base_Association.getAppliedStereotypes()
-> select(s | s.name = 'Disjoint' or s.name =
'Cross' or s.name = 'In' or s.name =
'Overlap') -> isEmpty()
K inv: not
context self.base_Class.ownedAttribute.association.m
17
Network emberEnd.class.getAppliedStereotypes() ->
select(s | s.name = 'Node') -> isEmpty()
L inv: not
context self.base_Class.ownedAttribute.association.m
Network emberEnd.class
.getAppliedStereotypes() -> select(s |
s.name = 'UnidirectionalArc' or s.name =
'BidirectionalArc') -> isEmpty()
M inv: not
context Arc self.base_Class.ownedAttribute.association.m
emberEnd.class
.getAppliedStereotypes() -> select(s |
s.name = 'Node') -> isEmpty()
N inv: not
context Node self.base_Class.ownedAttribute.association.m
emberEnd.class
.getAppliedStereotypes() ->
select(s | s.name = 'UnidirectionalArc' or
s.name = 'BidirectionalArc') -> isEmpty()
O inv: self.base_Association.memberEnd.class
context In -> forAll (c | c.getAppliedStereotypes() ->
select(s | s.name = Point or s.name =
Line or s.name = Polygon) ->
notEmpty())
P inv: self.base_Association.memberEnd.class
context -> forAll (c | c.getAppliedStereotypes() ->
Disjoint select(s | s.name = Point or s.name =
Line or s.name = Polygon) ->
notEmpty())
18
((classes -> at(1)).getAppliedStereotypes()
-> select(s | s.name = Polygon) ->
notEmpty() and (classes ->
at(2)).getAppliedStereotypes() -> select(s |
s.name = Line) -> notEmpty() )
R inv: let classes : OrderedSet(Class) =
context self.base_Association.memberEnd.class ->
Overlap asOrderedSet() in
((classes -> at(1)).getAppliedStereotypes()
-> select(s | s.name = 'Line') ->
notEmpty() and (classes ->
at(2)).getAppliedStereotypes() ->
select(s | s.name = 'Line') -> notEmpty() )
or ((classes ->
at(1)).getAppliedStereotypes() -> select(s |
s.name = 'Polygon') ->
notEmpty() and (classes ->
at(2)).getAppliedStereotypes() ->
select(s | s.name = 'Polygon')-> notEmpty()
)
S inv: let classes : OrderedSet(Class) =
context Touch self.base_Association.memberEnd.class ->
asOrderedSet() in ((classes ->
at(1)).getAppliedStereotypes() -> select(s |
s.name = Polygon) -> notEmpty() and
(classes -> at(2)).getAppliedStereotypes() -
> select(s | s.name = Polygon) ->
notEmpty() ) or ((classes ->
at(1)).getAppliedStereotypes() -> select(s |
s.name = Line) -> notEmpty() and
(classes -> at(2)).getAppliedStereotypes() -
> select(s | s.name = Line) -> notEmpty()
) or ((classes ->
at(1)).getAppliedStereotypes() -> select(s |
s.name = Line) -> notEmpty() and (classes
-> at(2)).getAppliedStereotypes() ->
select(s | s.name = Polygon) -> notEmpty()
) or ((classes ->
at(1)).getAppliedStereotypes() -> select(s |
s.name = Polygon) -> notEmpty()
and (classes ->
at(2)).getAppliedStereotypes() -> select(s |
s.name = Line) -> notEmpty() ) or((classes
-> at(1)).getAppliedStereotypes() ->
select(s | s.name = Point) -> notEmpty()
and (classes ->
at(2)).getAppliedStereotypes() -> select(s |
s.name = Polygon) -> notEmpty() ) or
((classes -> at(1)).getAppliedStereotypes()-
> select(s | s.name = Polygon) ->
notEmpty() and (classes ->
19
at(2)).getAppliedStereotypes() -> select(s |
s.name = Point) -> notEmpty() ) or
((classes -> at(1)).getAppliedStereotypes()
-> select(s | s.name = Point) ->
notEmpty() and (classes ->
at(2)).getAppliedStereotypes() -> select(s |
s.name = Line) -> notEmpty() ) or
((classes -> at(1)).getAppliedStereotypes()
-> select(s | s.name = Line) -> notEmpty()
and (classes ->
at(2)).getAppliedStereotypes() -> select(s |
s.name = Point) -> notEmpty() )
Na janela Save UML Profile, preencha o campo Profile Name com GeoProfile, e o campo
Filename com o caminho desejado para salvar o arquivo XMI.
20
Crie um novo projeto para importar o perfil GeoProfile e adiciona-lo como uma tecnologia
de Perfil. Para isto a aba Resources no canto direito da tela deve estar disponvel. Caso no
esteja, clique em View -> More Project Tools -> Project Resources.
Na aba Resources clique com o boto direito em UML Profiles onde aparecer uma opo
para importar o Perfil UML. Na janela Import UML Profile preencha o campo Filename
com o caminho do arquivo XMI do GeoProfile gerado anteriormente, e clique em Import.
21
Com a nova tecnologia importada para a ferramenta possvel criar diagramas para
modelagem de Banco de Dados Geogrficos. Para visualizar os elementos de modelagem
geogrfica v em Toolbox->More tools e selecione a opo GeoProfile.
A ferramenta Enterprise Architect permite usar mais de um esteretipo por classe. Isto
garante a mltipla representao geogrfica de classes em diagramas criados com o
GeoProfile. A Figura a seguir ilustra a utilizao de mais de um esteretipo por classe.
22
A insero de mais de um esteretipo sobre uma classe pode ser feito da seguinte forma:
Ao clicar no esteretipo desejado e arrastar para a classe que dever conter mais de uma
representao espacial, aparecer um menu contendo 3 opes: a primeira para adicionar o
esteretipo na classe; a segunda para adicionar outra classe com este esteretipo; e a terceira
para cancelar. Desta forma clique na primeira opo.
H outra forma para se adicionar esteretipos em uma classe. Ao clicar com o boto direito
do mouse sobre a classe v em Properties. Na janela de propriedades existe um campo na
aba General de nome Stereotype seguido de um boto com reticncias que ao ser clicado
abre uma janela com todos os esteretipos disponveis. Nesta nova janela, no campo Profile
selecione a opo GeoProfile, selecione os esteretipos desejados e clique em ok.
23
Outro tipo de objeto que pode ser encontrado em aplicaes geogrficas o temporal,
definido no GeoProfile como TemporalObj. Para este tipo de objeto foram definidos dois
tagged values, temporalType e temporalPrimitive. Para definir seus valores, primeiro
deve-se adicionar uma classe no modelo com o esteretipo TemporalObj.
24
Em seguida clique com o boto direito do mouse sobre a classe estereotipada e acesse a
opo Properties. Na aba GeoProfile podem ser atribudos os valores das tag values como
exemplificado na imagem abaixo.
Por se tratar de uma ferramenta voltada para a criao de modelos utilizando a UML, outros
tipos de diagramas da UML tambm podem ser utilizados, como por exemplo, de
componente, atividade, implantao e at mesmo outros perfis j incorporados. Para isso use
a aba More Tools e escolha o tipo diagrama ou tecnologia a ser utilizada.
25
Para se adicionar novos atributos a uma classe, clique com o boto direito do mouse sobre a
classe e em seguida na opo Atributes. Novos atributos podem ento ser adicionados
clicando-se em New, entrando-se com o nome do atributo no campo Name e adicionando
seu tipo no campo Type. Logo em seguida clique em Save para salvar as modificaes. A
imagem a seguir ilustra esse procedimento.
26
Com relao a OCL, anteriormente aplicada ao perfil GeoProfile, pode ser utilizada para
avaliar o diagrama elaborado. Para isso clique em Project->Model Validation->Validate
Selected.
27
Foram aplicados tambm esteretipos aos relacionamentos. O esteretipo <<in>> entre
Bairro e Cidade mostra que topologicamente todo elemento Bairro est dentro de um
elemento Cidade, o mesmo vale para o relacionamento entre Escola e Bairro. No existe
relacionamento topolgico entre Professor e Escola, sendo utilizada apenas uma associao
comum. Esta associao comum pode receber um nome, no caso do exemplo, Trabalha,
clicando-se com o boto direito do mouse sobre a associao e selecionando a opo
Association Properties... onde uma janela de propriedades de associao ser apresentada,
podendo-se ento entrar com o nome da associao no campo Name.
28
6. Importao e Exportao de arquivos XMI
A ferramenta Enterprise Architect tambm permite a importao e exportao de modelos
no formato XMI (XML Metadata Interchange), como por exemplo, os modelos Encore e
BPMN 2.0 XML. Para isso, acesse o menu: Project -> Model Import/Export.
Para a opo Exportar clique em Export Package to XMI..., desta forma uma janela
aparecer onde dever ser informado no campo Filename a pasta e o nome do arquivo XMI
onde o pacote dever ser armazenado. Nesta tela tambm podem ser escolhidos outros
formatos de exportao disponveis clicando-se em Publish. Depois de escolhido o formato
clique em Export.
29
Para importar um arquivo XML clique em Project->Model Import/Export->Import
Package to XMI. Na janela de importao informe no campo Filename a pasta e o nome
do arquivo XML a ser importado.
30