You are on page 1of 30

Inserindo o GeoProfile na Enterprise Architect.

Autores: Thiago Bicalho Ferreira e Sergio Murilo Stempliuc.

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.

Ambiente de trabalho da ferramenta Enterprise Architect

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.

Caso o ambiente no esteja conFigurado dessa maneira, deve-se clicar em ViewProject


Browser e View Diagram Toolbox.

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.

Na tela New Diagram escolha a opo Class e clique em ok.

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.

3. Criando o Perfil GeoProfile


Primeiro sero criados os esteretipos do GeoProfile, comeando com os esteretipos para
objetos de rede (NetworkObj, Arc, Node, UnidirectionalArc e BidirectionalArc).
Adicione os esteretipos clicando em Stereotype e arrastando para tela de diagramao.
Como ilustrado na Figura a seguir.

Observe que os esteretipos NetworkObj e Arc so abstratos. Para colocar um Esteretipo


como abstrato basta clicar com o boto direito do mouse sobre o elemento desejado e ir em
Properties. Na janela que abrir clicar na aba Details onde o elemento selecionado pode ser
classificado como Abstract.
8
Logo em seguida ser utilizado o elemento de Generalizao (Generalize) arrastando e
soltando nos elementos que devero ser ligados, a fim de deixar o perfil como mostrado a
seguir.

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.

A metaclasse Class ir aparecer no diagrama e ser estendida atravs do elemento


Extension utilizando o esteretipo criado anteriormente.

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.

Inicialmente crie um elemento Esteretipo e d a ele o nome Temporal. Agora inclua


um elemento metaclasse, mas desta vez selecione a metaclasse Association e ento utilize o
elemento Extension para estender a metaclasse Association com o esteretipo criado, como
mostra a Figura a seguir.

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.

O prximo passo criar o esteretipo TemporalObject, que se refere a objetos geogrficos


com aspectos temporais, e suas enumeraes (tagged values). O GeoProfile define dois
tipos de enumerao, TemporalPrimitive e TemporalType. Inclua no esquema dois
elementos do tipo Enumerao e nomeie-os como TemporalPrimitive e TemporalType.
11
Adicione os Literais de Enumerao (instant e interval) em TemporalPrimitive e
(valid_time, transaction_time e bitemporal) em TemporalType. Para adicionar um literal
clique com o boto direito do mouse sobre a enumerao pretendida e selecione attributes.
Na janela que de atributos adicione um nome para o novo literal, no esquecendo de marcar
a opo is literal.

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.

Com isso j possvel criar o diagrama com as especificaes e esteretipos do perfil


GeoProfile; inclua os demais Esteretipos Generalizaes e Extenses que faltam de
forma a deixar o modelo como se segue, lembrando que o esteretipo Network tambm
abstrato.

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.

As restries especificadas para o GeoProfile basicamente evitam a ocorrncia de trs tipos


de erros: adio de esteretipos incompatveis a um mesmo elemento; m construo de
redes; e adio de relacionamentos topolgicos impossveis de acontecer entre dois
elementos (ex.: relacionamento Cross entre dois objetos geogrficos com representao de
ponto). Estes trs grupos de restries so analisados a seguir.

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.

Restries OCL para verificao de esteretipos incompatveis em uma classe.

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()

Restries OCL para verificao da existncia de esteretipos incompatveis em uma


associao entre classes.

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()

Restries OCL para validao das redes definidas no esquema.

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()

Restries OCL para validao de relacionamentos topolgicos do tipo In e Disjoint.

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())

Restries OCL para validao de relacionamentos topolgicos do tipo Cross, Overlap e


Touch.

Q inv: let classes : OrderedSet(Class) =


context Cross self.base_Association.memberEnd.class ->
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 = Line) -> notEmpty()
and (classes ->
at(2)).getAppliedStereotypes() -> select(s |
s.name = Polygon) -> notEmpty() ) or

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() )

Para salvar o projeto, clique em: File->Salve Project...

5. Aplicando o Perfil GeoProfile


Com o Perfil Criado, podemos utiliz-lo em nossa modelagem de classes
geogrficas. Para utilizar o GeoProfile, o primeiro passo criar um arquivo no formato
XMI, para isso clique com o boto direito do Mouse em algum espao vago da rea de
diagramao. Ao aparecer um Menu selecione a opo Salve as Profile...

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.

Agora com os elementos do GeoProfile dispostos na barra de ferramentas, para criar


diagramas clique sobre o elemento desejado e arraste para a rea de diagramao, como
ilustrado na Figura a seguir.

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.

Aps a validao a seguinte janela aparecer.

Com relao a mltipla representao Geogrfica o diagrama abaixo possui as classes


Cidade, Bairro e Escola com esteretipos do tipo <<point>> e <<polygon>> para suas
representaes em uma aplicao geogrfica. A mltipla representao utilizada pelos
Sistemas de Informao Geogrfica de acordo com a forma como se deseja representar, por
exemplo, um Bairro, em um determinado instante. Um exemplo tpico de uso da mltipla
representao dado de acordo com a escala utilizada, podendo-se utilizar a representao
ponto do Bairro em uma escala pequena e o polgono em uma escala grande. A classe
Professor, por no possuir representao geogrfica, no possui esteretipo e foi criada
como uma classe convencional (alfanumrica).

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.

Mais informaes a respeito desta ferramenta podem ser encontradas no site:


http://www.sparxsystems.com.au/

30

You might also like