inserindo o geoprofile na enterprise architect. sumário 1 ... · 2 2. preparando o ambiente da...

30
1 Inserindo o GeoProfile na Enterprise Architect. Autores: Thiago Bicalho Ferreira e Sergio Murilo Stempliuc. Sumário 1. Enterprise Architect .................................................................................................. 01 2. Preparando o Ambiente Enterprise Architect .......................................................... 02 3. Criando o Perfil GeoProfile ...................................................................................... 08 4. Adicionando restrições OCL .................................................................................... 15 5. Aplicando o Perfil GeoProfile................................................................................... 20 6. Importação e Exportação 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 especificação de perfis; além de permitir a criação de perfis UML de forma visual oferece recursos como suporte a OCL para definição de constraints e importação e exportação em XMI (XML Metadata Interchange). Apesar de não permitir a inclusão e exclusão de estereótipos gráficos, para melhor visualização e entendimento do diagrama, a vantagem desta ferramenta é a possibilidade de transformações entre os diagramas da arquitetura MDA. Este tutorial foi feito a versão 9.0 em Inglês. Ambiente de trabalho da ferramenta Enterprise Architect

Upload: lamnhi

Post on 25-Jul-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

1

Inserindo o GeoProfile na Enterprise Architect.

Autores: Thiago Bicalho Ferreira e Sergio Murilo Stempliuc.

Sumário

1. Enterprise Architect .................................................................................................. 01

2. Preparando o Ambiente Enterprise Architect .......................................................... 02

3. Criando o Perfil GeoProfile ...................................................................................... 08

4. Adicionando restrições OCL .................................................................................... 15

5. Aplicando o Perfil GeoProfile................................................................................... 20

6. Importação e Exportação 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 especificação

de perfis; além de permitir a criação de perfis UML de forma visual oferece recursos como

suporte a OCL para definição de constraints e importação e exportação em XMI (XML

Metadata Interchange). Apesar de não permitir a inclusão e exclusão de estereótipos

gráficos, para melhor visualização e entendimento do diagrama, a vantagem desta

ferramenta é a possibilidade de transformações entre os diagramas da arquitetura MDA.

Este tutorial foi feito a versão 9.0 em Inglês.

Ambiente de trabalho da ferramenta Enterprise Architect

2

2. Preparando o ambiente da ferramenta Enterprise Architect

Antes de iniciar o processo de criação do perfil GeoProfile, deve-se preparar o ambiente da

ferramenta Enterprise Architect (EA). Para isso siga os passos listados nesta seção.

Ao clicar no ícone da EA, a primeira janela que aparecerá é a Select Version, onde será

selecionada a versão Ultimate por ser a mais completa.

Para criar um perfil nesta ferramenta primeiro deve-se criar um novo projeto, clicando em

FileNew Project...

3

Nomeie o novo projeto “GeoProfile” e salve em uma pasta de sua preferência. Depois de

salvo, a janela Model Wizard será exibida bastando confirmar clicando no botão OK.

4

No canto direito da próxima 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 não 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

botão direito do mouse no Model a opção AddAdd View.

5

Nomear então a View como Profile e escolher a opção Simple.

Uma nova View de nome Profile aparecerá então na aba Project Browser. Clicando com o

botão direito do mouse nesta View pode ser adicionado um diagrama.

Para isso vá em AddAdd Diagram.

Na tela New Diagram escolha a opção Class e clique em ok.

6

Desta forma foi disponibilizada uma área livre onde poderá ser criado o perfil GeoProfile.

Na aba More Tools escolha, dentre as diversas tecnologias, a opção Profile. Com esta opção

selecionada passará a ser exibida na aba ToolBox o conjunto de elementos necessários para

criação do perfil GeoProfile.

Neste conjunto de elementos pode ser encontrado um pacote chamado Profile que pode ser

arrastado para área de diagramação. Renomear a nova janela New Model Package para

GeoProfile.

7

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 diagramação ou então na aba Project

Browser selecionar o diagrama Geoprofile. Será então aberta uma área de diagramação

para o desenvolvimento do Perfil GeoProfile.

8

Com este ambiente preparado deve-se agora criar o Perfil GeoProfile.

3. Criando o Perfil GeoProfile

Primeiro serão criados os estereótipos do GeoProfile, começando com os estereótipos para

objetos de rede (NetworkObj, Arc, Node, UnidirectionalArc e BidirectionalArc).

Adicione os estereótipos clicando em Stereotype e arrastando para tela de diagramação.

Como ilustrado na Figura a seguir.

Observe que os estereótipos NetworkObj e Arc são abstratos. Para colocar um Estereótipo

como abstrato basta clicar com o botão 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.

9

Logo em seguida será utilizado o elemento de Generalização (Generalize) arrastando e

soltando nos elementos que deverão ser ligados, a fim de deixar o perfil como mostrado a

seguir.

10

O próximo passo é estender a metaclasse Class da UML utilizando os estereótipos

criados. Para isso adicione o elemento Metaclass na área de diagramação. Na janela que

aparecer selecione a metaclasse Class, adicione ao projeto e dê Ok.

A metaclasse Class irá aparecer no diagrama e será estendida através do elemento

Extension utilizando o estereótipo criado anteriormente.

11

A metaclasse Association será estendida através da criação dos estereótipos para

relacionamentos topológicos entre as classes geográficas. Existem seis tipos diferentes de

relacionamentos topológicos no GeoProfile, sendo: Cross, In, Disjoint, Overlap, Touch e

Temporal. Como exemplo será usado o estereótipo Temporal.

Inicialmente crie um elemento Estereótipo e dê a ele o nome “Temporal”. Agora inclua

um elemento metaclasse, mas desta vez selecione a metaclasse Association e então utilize o

elemento Extension para estender a metaclasse Association com o estereótipo criado, como

mostra a Figura a seguir.

Um estereótipo pode possuir propriedades, as quais podem ser referidas como tag

definitions. Quando um estereótipo é aplicado em um elemento do diagrama, os valores das

propriedades, referidas no perfil como tagged values, podem ser manipuladas no diagrama.

O próximo passo é criar o estereótipo TemporalObject, que se refere a objetos geográficos

com aspectos temporais, e suas enumerações (tagged values). O GeoProfile define dois

tipos de enumeração, TemporalPrimitive e TemporalType. Inclua no esquema dois

elementos do tipo Enumeração e nomeie-os como TemporalPrimitive e TemporalType.

12

Adicione os Literais de Enumeração (instant e interval) em TemporalPrimitive e

(valid_time, transaction_time e bitemporal) em TemporalType. Para adicionar um literal

clique com o botão direito do mouse sobre a enumeração pretendida e selecione attributes.

Na janela que de atributos adicione um nome para o novo literal, não esquecendo de marcar

a opção is literal.

Após a inserção dos literais espera-se que as enumerações fiquem como na imagem a seguir.

13

Agora, adicione ao perfil o estereótipo TemporalObj e inclua dois atributos com tipos das

enumerações criadas anteriormente: temporalPrimitive do tipo TemporalPrimitive e

temporalType do tipo TemporalType.

Para adicionar os atributos e seus tipos, basta clicar com o botão direito do mouse em cima

do estereótipo TemporalObj a fim de encontrar a opção attributes. Na janela que abrir

adicione o nome desejado e clique no botão com reticências para encontrar as enumerações

definidas anteriormente.

14

A Figura a seguir ilustra a janela aberta ao clicar nas reticências que aparecem em frente ao

Type. Podem então ser escolhidas as enumerações criadas no perfil.

Deve-se então estender a metaclasse Class novamente para o estereótipo criado. Inclua mais

um elemento Extension do estereótipo TemporalObj para a metaclasse Class.

Com isso já é possível criar o diagrama com as especificações e estereótipos do perfil

GeoProfile; inclua os demais Estereótipos Generalizações e Extensões que faltam de

forma a deixar o modelo como se segue, lembrando que o estereótipo Network também é

abstrato.

15

4. Adicionando Restrições OCL

A ferramenta Enterprise Architect oferece suporte à linguagem OCL (Object Constraint

Language), que tem como objetivo permitir a adição de constraints (restrições) aos

diagramas elaborados pelo projetista e também validar o diagrama elaborado utilizando os

construtores da UML. As restrições OCL descritas nesta seção se enquadram nesta última

opção, sendo especificadas no perfil GeoProfile para validar os diagramas elaborados

através de seus construtores possuindo sempre como contexto um de seus estereótipos.

As restrições especificadas para o GeoProfile basicamente evitam a ocorrência de três tipos

de erros: adição de estereótipos incompatíveis a um mesmo elemento; má construção de

redes; e adição de relacionamentos topológicos impossíveis de acontecer entre dois

elementos (ex.: relacionamento Cross entre dois objetos geográficos com representação de

ponto). Estes três grupos de restrições são analisados a seguir.

Para declarar Constraints, primeiro clique com o botão direito sobre o estereótipo ao qual

se deseja aplicar a restrição e em seguida na opção Properties. Na janela de propriedades

acesse o menu RulesConstraints selecione o tipo de restrição no campo Type como OCL

e Status como aprovado. Para adicionar uma expressão OCL clique em New, no campo

Constraint coloque a descrição da restrição OCL, e no campo de texto abaixo da descrição

insira a restrição OCL. Ao no botão 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

restrições OCL nos estereótipos.

16

As restrições do GeoProfile existentes até o momento da elaboração deste tutorial estão no

quadro a seguir. O campo context refere-se ao estereótipo onde a restrição será aplicada.

Restrições OCL para verificação de estereótipos incompatíveis em uma classe.

A context GeoField

inv: self.base_Class.getAppliedStereotypes() -> select(s | s.name = ‘Point’ or s.name = ‘Line’ or s.name = 'Polygon' or s.name = 'ComplexSpatialObj') -> isEmpty()

B context Network

inv:self.base_Class.getAppliedStereotypes() -> 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()

17

C context NetworkObj

inv: self.base_Class.getAppliedStereotypes()-> 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 context Node

inv: self.base_Class.getAppliedStereotypes() -> select(s | s.name = 'UnidirectionalArc' or s.name = 'BidirectionalArc') -> isEmpty()

E context UnidirectionalArc

inv: self.base_Class.getAppliedStereotypes() -> select(s | s.name = 'BidirectionalArc') -> isEmpty()

Restrições OCL para verificação da existência de estereótipos incompatíveis em uma

associação entre classes.

F context Cross

inv: self.base_Association.getAppliedStereotypes() -> select(s | s.name = 'Disjoint' or s.name = 'In' or s.name = 'Overlap' or s.name = 'Touch') -> isEmpty()

G context Disjoint

inv: self.base_Association.getAppliedStereotypes() -> select(s | s.name = 'Cross' or s.name = 'In' or s.name = 'Overlap' or s.name = 'Touch') -> isEmpty()

H context In

inv: self.base_Association.getAppliedStereotypes() -> select(s | s.name = 'Disjoint' or s.name = 'Cross' or s.name = 'Overlap' or s.name = 'Touch') -> isEmpty()

I context Overlap

inv: self.base_Association.getAppliedStereotypes() -> select(s | s.name = 'Disjoint' or s.name = 'Cross' or s.name = 'In' or s.name = 'Touch') -> isEmpty()

J context Touch

inv: self.base_Association.getAppliedStereotypes() -> select(s | s.name = 'Disjoint' or s.name = 'Cross' or s.name = 'In' or s.name = 'Overlap') -> isEmpty()

Restrições OCL para validação das redes definidas no esquema.

K context

inv: not self.base_Class.ownedAttribute.association.m

18

Network emberEnd.class.getAppliedStereotypes() -> select(s | s.name = 'Node') -> isEmpty()

L context Network

inv: not self.base_Class.ownedAttribute.association.memberEnd.class .getAppliedStereotypes() -> select(s | s.name = 'UnidirectionalArc' or s.name = 'BidirectionalArc') -> isEmpty()

M context Arc

inv: not self.base_Class.ownedAttribute.association.memberEnd.class .getAppliedStereotypes() -> select(s | s.name = 'Node') -> isEmpty()

N context Node

inv: not self.base_Class.ownedAttribute.association.memberEnd.class .getAppliedStereotypes() -> select(s | s.name = 'UnidirectionalArc' or s.name = 'BidirectionalArc') -> isEmpty()

Restrições OCL para validação de relacionamentos topológicos do tipo In e Disjoint.

O context In

inv: self.base_Association.memberEnd.class -> forAll (c | c.getAppliedStereotypes() -> select(s | s.name = ‘Point’ or s.name = ‘Line’ or s.name = ‘Polygon’) -> notEmpty())

P context Disjoint

inv: self.base_Association.memberEnd.class -> forAll (c | c.getAppliedStereotypes() -> select(s | s.name = ‘Point’ or s.name = ‘Line’ or s.name = ‘Polygon’) -> notEmpty())

Restrições OCL para validação de relacionamentos topológicos do tipo Cross, Overlap e

Touch.

Q context Cross

inv: let classes : OrderedSet(Class) = 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

19

((classes -> at(1)).getAppliedStereotypes() -> select(s | s.name = ‘Polygon’) -> notEmpty() and (classes -> at(2)).getAppliedStereotypes() -> select(s | s.name = ‘Line’) -> notEmpty() )

R context Overlap

inv: let classes : OrderedSet(Class) = 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 = 'Polygon') -> notEmpty() and (classes -> at(2)).getAppliedStereotypes() -> select(s | s.name = 'Polygon')-> notEmpty() )

S context Touch

inv: let classes : OrderedSet(Class) = 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 ->

20

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

geográficas. Para utilizar o GeoProfile, o primeiro passo é criar um arquivo no formato

XMI, para isso clique com o botão direito do Mouse em algum espaço vago da área de

diagramação. Ao aparecer um Menu selecione a opção 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.

21

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 disponível. Caso não

esteja, clique em View -> More Project Tools -> Project Resources.

Na aba Resources clique com o botão direito em UML Profiles onde aparecerá uma opção

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.

22

Com a nova tecnologia importada para a ferramenta é possível criar diagramas para

modelagem de Banco de Dados Geográficos. Para visualizar os elementos de modelagem

geográfica vá em Toolbox->More tools e selecione a opção 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 diagramação, como é

ilustrado na Figura a seguir.

A ferramenta Enterprise Architect permite usar mais de um estereótipo por classe. Isto

garante a múltipla representação geográfica de classes em diagramas criados com o

GeoProfile. A Figura a seguir ilustra a utilização de mais de um estereótipo por classe.

23

A inserção de mais de um estereótipo sobre uma classe pode ser feito da seguinte forma:

Ao clicar no estereótipo desejado e arrastar para a classe que deverá conter mais de uma

representação espacial, aparecerá um menu contendo 3 opções: a primeira para adicionar o

estereótipo na classe; a segunda para adicionar outra classe com este estereótipo; e a terceira

para cancelar. Desta forma clique na primeira opção.

Há outra forma para se adicionar estereótipos em uma classe. Ao clicar com o botão 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 botão com reticências que ao ser clicado

abre uma janela com todos os estereótipos disponíveis. Nesta nova janela, no campo Profile

selecione a opção GeoProfile, selecione os estereótipos desejados e clique em ok.

24

Outro tipo de objeto que pode ser encontrado em aplicações geográficas é 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 estereótipo TemporalObj.

25

Em seguida clique com o botão direito do mouse sobre a classe estereotipada e acesse a

opção Properties. Na aba GeoProfile podem ser atribuídos os valores das tag values como

exemplificado na imagem abaixo.

Por se tratar de uma ferramenta voltada para a criação de modelos utilizando a UML, outros

tipos de diagramas da UML também podem ser utilizados, como por exemplo, de

componente, atividade, implantação e até mesmo outros perfis já incorporados. Para isso use

a aba More Tools e escolha o tipo diagrama ou tecnologia a ser utilizada.

26

Para se adicionar novos atributos a uma classe, clique com o botão direito do mouse sobre a

classe e em seguida na opção Atributes. Novos atributos podem então 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 modificações. A

imagem a seguir ilustra esse procedimento.

27

Com relação a OCL, anteriormente aplicada ao perfil GeoProfile, pode ser utilizada para

avaliar o diagrama elaborado. Para isso clique em Project->Model Validation->Validate

Selected.

Após a validação a seguinte janela aparecerá.

Com relação a múltipla representação Geográfica o diagrama abaixo possui as classes

Cidade, Bairro e Escola com estereótipos do tipo <<point>> e <<polygon>> para suas

representações em uma aplicação geográfica. A múltipla representação é utilizada pelos

Sistemas de Informação Geográfica de acordo com a forma como se deseja representar, por

exemplo, um Bairro, em um determinado instante. Um exemplo típico de uso da múltipla

representação é dado de acordo com a escala utilizada, podendo-se utilizar a representação

ponto do Bairro em uma escala pequena e o polígono em uma escala grande. A classe

Professor, por não possuir representação geográfica, não possui estereótipo e foi criada

como uma classe convencional (alfanumérica).

28

Foram aplicados também estereótipos aos relacionamentos. O estereótipo <<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. Não existe

relacionamento topológico entre Professor e Escola, sendo utilizada apenas uma associação

comum. Esta associação comum pode receber um nome, no caso do exemplo, Trabalha,

clicando-se com o botão direito do mouse sobre a associação e selecionando a opção

Association Properties... onde uma janela de propriedades de associação será apresentada,

podendo-se então entrar com o nome da associação no campo Name.

29

6. Importação e Exportação de arquivos XMI

A ferramenta Enterprise Architect também permite a importação e exportação 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 opção 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 também podem ser escolhidos outros

formatos de exportação disponíveis clicando-se em Publish. Depois de escolhido o formato

clique em Export.

30

Para importar um arquivo XML clique em Project->Model Import/Export->Import

Package to XMI. Na janela de importação informe no campo Filename a pasta e o nome

do arquivo XML a ser importado.

Mais informações a respeito desta ferramenta podem ser encontradas no site:

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