Você está na página 1de 22

Sumrio

1. StarUML - UML/MDA Plataform ........................................................................................... 1

2. Criando Perfis no StarUML .................................................................................................... 2

3. Criando o perfil GeoProfile.................................................................................................... 5

4. Aplicando o Perfil GeoProfile .............................................................................................. 12

1. StarUML - UML/MDA Plataform

Star UML (STAR UML, 2010) uma ferramenta CASE de cdigo aberto (opensource) e
est sob a licena GPL (General Public License). Ela d suporte modelagem de
sistemas utilizando os diagramas da UML2 e tambm MDA, com definies de
transformaes para algumas plataformas especficas. permitida tambm a
importao/exportao de modelos utilizando o formato XMI.

rea de trabalho do StarUML

A especificao de perfis UML na ferramenta feita de forma diferente das outras


ferramentas analisadas. No h uma forma visual de se implementar perfis.

1
necessrio escrever o cdigo do perfil em um documento XML, salvar o arquivo com a
extenso .PRF e coloc-lo em um dos diretrios de instalao da ferramenta.

A seguir ser mostrado passo a passo o processo de criao e um exemplo de


utilizao do perfil GeoProfile para modelagem de banco de dados geogrficos.
Lembrando que este tutorial foi feito utilizando a verso 5.0 da ferramenta.

2. Criando Perfis no StarUML


Neste tutorial vamos focar apenas nos elementos XML que sero teis na criao do
perfil Geoprofile.

A estrutura bsica de um documento XML para se criar um perfil para o StarUML


mostrado a seguir:
<?xml version=1.0 encoding=... ?>
<PROFILE version="...">
<HEADER>
...
</HEADER>
<BODY>
...
</BODY>
</PROFILE>

Onde a seo <HEADER> define a descrio do perfil e <BODY> o corpo do perfil em


si, onde sero definidos os esteretipos, classes, atributos e tipos de dados do perfil.

A seo <HEADER> pode conter os seguintes elementos:


<HEADER>
<NAME>...</NAME>
<DISPLAYNAME>...</DISPLAYNAME>
<DESCRIPTION>...</DESCRIPTION>
<AUTOINCLUDE>...</AUTOINCLUDE>
</HEADER>

NAME: Contm o nome do perfil.

DISPLAYNAME: Esta a legenda usada no dilogo do perfil e outras interfaces com o


usurio.

DESCRIPTION: Contm a descrio do perfil.

AUTOINCLUDE: Especifica se inclui o perfil automaticamente quando cria novo projeto.

A seo <BODY> pode conter os seguintes elementos:


<BODY>
<STEREOTYPELIST>
...
</STEREOTYPELIST>
<TAGDEFINITIONSETLIST>
2
...
</TAGDEFINITIONSETLIST>
</BODY>

STEREOTYPELIST: Lista dos esteretipos do perfil. Para definio de esteretipos veja a


seo de <STEREOTYPE>

TAGDEFINITIONSETLIST: Define mltiplas definies de tag. Para definio de tag veja a


seo <TAGDEFINITIONSET>.

DATATYPELIST: Define mltiplos tipos de dados. Para definio de tipos de dados veja
a seo <DATATYPE>

A seo <STEREOTYPE> define as informaes do esteretipo e a estrutura de herana,


pode conter os seguintes elementos:
<STEREOTYPE>
<NAME>...</NAME>
<DESCRIPTION>...</DESCRIPTION>
<BASECLASSES>
<BASECLASS>...</BASECLASS>
...
</BASECLASSES>
<PARENT>...</PARENT>
<RELATEDTAGDEFINITIONSET>...</RELATEDTAGDEFINITIONSET>
<ICON>...</ICON>
</STEREOTYPE>

NAME: Nome do esteretipo.

DESCRIPTION: Descrio do esteretipo.

BASECLASSES: Pode conter nomes de mltiplos elementos UML que podem ser
aplicados ao esteretipo. O nome dos elementos usados aqui <BASECLASS> so os
nomes dos elementos UML (UMLClass, UMLAssociation, UMLClassifier, UMLAttribute,
UMLPackage, UMLAbstractClass... ).

Nota: Se o nome de uma classe abstrata como UMLClassifier usado, todos os


elementos herdados desta sero aplicados. Se o esteretipo de nvel superior
(elemento pai) definido, esta seo no ser definida; qualquer definio desta
seo ignorada e o valor BASECLASSES do esteretipo de nvel superior aplicado.

PARENT: O esteretipo pode ter relacionamento do tipo herana. O elemento PARENT


contm o nome do elemento pai do esteretipo.

RELATEDTAGDEFINITIONSET: Contm o nome do TagDefinitionSet relacionado com o


esteretipo (nome do conjunto de atributos do esteretipo).

3
ICON: Um esteretipo pode tambm ser indicado por um cone. Este elemento contm
o nome do arquivo do cone para o esteretipo. O arquivo do cone deve estar
localizado no mesmo diretrio que o documento do perfil.

A seo <TAGDEFINITIONSET> define um conjunto de TaggedValues que podero ser


relacionados a um esteretipo, este possui a seguinte estrutura:
<TAGDEFINITIONSET>
<NAME>...</NAME>
<BASECLASSES>
<BASECLASS>...</BASECLASS>
...
</BASECLASSES>
<TAGDEFINITIONLIST>
...
</TAGDEFINITIONLIST>
</TAGDEFINITIONSET>

NAME: Nome do conjunto de TagDefinition. Se a TagDefinition interessada a um


esteretipo especfico, aconselhado usar o nome do esteretipo.

BASECLASSES: Contm os nomes dos elementos UML a serem aplicados no


TagDefinitionSet.

TAGDEFINITIONLIST: Contm mltiplas definies de tags includas no conjunto. Veja a


seo <TAGDEFINITION>.

A seo <TAGDEFINITION> define um TaggedValue de um conjunto de listas de tags.


Possui a seguinte estrutura:
<TAGDEFINITION lock=...>
<NAME>...</NAME>
<TAGTYPE>...</TAGTYPE>
<DEFAULTDATAVALUE>...</DEFAULTDATAVALUE>
<LITERALS>
<LITERAL>...</LITERAL>
....
</LITERALS>
</TAGDEFINITION>

lock (Elemento de TAGDEFINITION): Define se o valor da tag pode ou no ser alterado


pelo usurio. Pode ser True no caso de no poder sofrer alterao, ou False caso
contrrio.

NAME: Nome da tag. Este tem que ser nico dentro do conjunto de tags ao qual essa
tag pertence (TagDefinitionSet).

TAGTYPE: Define o tipo da tag. Este pode ser definido como sendo dos tipos: Integer,
Boolean, Real, String, Enumeration, Reference ou Collection.

DEFAULTDATAVALUE: Valor default da tag.

4
LITERALS: Define os literais <LITERAL> se o tipo da tag for Enumeration.

Infelizmente, esta ferramenta no d suporte definio de constraints na linguagem


OCL para os perfis.

3. Criando o perfil GeoProfile


O perfil GeoProfile mostrado na figura abaixo.

Esteretipos do GeoProfile

Com esta definio e os elementos XML definidos acima, podemos agora criar o perfil
GeoProfile para ser utilizado na ferramenta StarUML. Lembrando que o arquivo com o
cdigo XML deve ser salvo com a extenso .prf

O cdigo XML do GeoProfile mostrado abaixo.

<?xml version="1.0" encoding="UTF-8"?>


<PROFILE version="1.0">
<HEADER>
<NAME>GeoProfile</NAME>
<DISPLAYNAME>GeoProfile</DISPLAYNAME>
<DESCRIPTION>GeoDB conceptual modeling</DESCRIPTION>
</HEADER>
<BODY>
<STEREOTYPELIST>
<STEREOTYPE>
<NAME>GeoObject</NAME>
<DESCRIPTION>Object view.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAbstractClass</BASECLASS>
</BASECLASSES>

5
</STEREOTYPE>
<STEREOTYPE>
<NAME>Point</NAME>
<DESCRIPTION>Indicate a Point.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoObject</PARENT>
<ICON>Point.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Line</NAME>
<DESCRIPTION>Indicate a Line.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoObject</PARENT>
<ICON>Line.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Polygon</NAME>
<DESCRIPTION>Indicate a Polygon.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoObject</PARENT>
<ICON>Polygon.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>ComplexSpatialObj</NAME>
<DESCRIPTION>Indicate a Complex Object.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoObject</PARENT>
<ICON>ComplexSpatialObj.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>GeoField</NAME>
<DESCRIPTION>Object view.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAbstractClass</BASECLASS>
</BASECLASSES>
</STEREOTYPE>
<STEREOTYPE>
<NAME>TIN</NAME>
<DESCRIPTION>Indicate a Triangular Irregular
Network.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoField</PARENT>
<ICON>TIN.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Isolines</NAME>
<DESCRIPTION>Indicate Isolines.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
6
</BASECLASSES>
<PARENT>GeoField</PARENT>
<ICON>Isolines.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>GridOfCells</NAME>
<DESCRIPTION>Indicate a Grid Of Cells.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoField</PARENT>
<ICON>GridOfCells.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>GridOfPoints</NAME>
<DESCRIPTION>Indicate a Grid Of Points.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoField</PARENT>
<ICON>GridOfPoints.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>IrregularPoints</NAME>
<DESCRIPTION>Indicate Irregular Points.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoField</PARENT>
<ICON>IrregularPoints.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>AdjPolygons</NAME>
<DESCRIPTION>Indicate Adjacent Polygons.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>GeoField</PARENT>
<ICON>AdjPolygons.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>NetworkObj</NAME>
<DESCRIPTION>Object view.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAbstractClass</BASECLASS>
</BASECLASSES>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Node</NAME>
<DESCRIPTION>Indicate a Node.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>NetworkObj</PARENT>
<ICON>Node.bmp</ICON>
</STEREOTYPE>
7
<STEREOTYPE>
<NAME>Arc</NAME>
<DESCRIPTION>Object view.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAbstractClass</BASECLASS>
</BASECLASSES>
<PARENT>NetworkObj</PARENT>
</STEREOTYPE>
<STEREOTYPE>
<NAME>UnidirectionalArc</NAME>
<DESCRIPTION>Indicate an Unidirectional Arc.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>Arc</PARENT>
<ICON>UnidirectionalArc.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>BidirectionalArc</NAME>
<DESCRIPTION>Indicate a Bidirectional Arc.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<PARENT>Arc</PARENT>
<ICON>BidirectionalArc.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Network</NAME>
<DESCRIPTION>Indicate a network.</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<ICON>Network.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>TemporalObj</NAME>
<DESCRIPTION>Indicate a Temporal object.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLClass</BASECLASS>
</BASECLASSES>
<RELATEDTAGDEFINITIONSET>TemporalObj
</RELATEDTAGDEFINITIONSET>
<ICON>Temporal.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Touch</NAME>
<DESCRIPTION>Indicate a Touch relationship.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAssociation</BASECLASS>
</BASECLASSES>
<ICON>Touch.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>In</NAME>
<DESCRIPTION>Indicate an In relationship.
</DESCRIPTION>
8
<BASECLASSES>
<BASECLASS>UMLAssociation</BASECLASS>
</BASECLASSES>
<ICON>In.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Cross</NAME>
<DESCRIPTION>Indicate a Cross relationship.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAssociation</BASECLASS>
</BASECLASSES>
<ICON>Cross.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Overlap</NAME>
<DESCRIPTION>Indicate a Overlap relationship.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAssociation</BASECLASS>
</BASECLASSES>
<ICON>Overlap.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Disjoint</NAME>
<DESCRIPTION>Indicate a Disjoint relationship.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAssociation</BASECLASS>
</BASECLASSES>
<ICON>Disjoint.bmp</ICON>
</STEREOTYPE>
<STEREOTYPE>
<NAME>Temporal</NAME>
<DESCRIPTION>Indicate a Temporal relationship.
</DESCRIPTION>
<BASECLASSES>
<BASECLASS>UMLAssociation</BASECLASS>
</BASECLASSES>
<ICON>Temporal.bmp</ICON>
</STEREOTYPE>
</STEREOTYPELIST>
<TAGDEFINITIONSETLIST>
<TAGDEFINITIONSET>
<NAME>TemporalObj</NAME>
<BASECLASSES>
<BASECLASS>UMLAttribute</BASECLASS>
</BASECLASSES>
<TAGDEFINITIONLIST>
<TAGDEFINITION lock="False">
<NAME>temporalPrimitive</NAME>
<TAGTYPE>Enumeration</TAGTYPE>
<DEFAULTDATAVALUE>instant
</DEFAULTDATAVALUE>
<LITERALS>
<LITERAL>instant</LITERAL>
<LITERAL>interval</LITERAL>
</LITERALS>
</TAGDEFINITION>
<TAGDEFINITION lock="False">
9
<NAME>temporalType</NAME>
<TAGTYPE>Enumeration</TAGTYPE>
<DEFAULTDATAVALUE>valid_time
</DEFAULTDATAVALUE>
<LITERALS>
<LITERAL>valid_time</LITERAL>
<LITERAL>transaction_time
</LITERAL>
<LITERAL>bitemporal</LITERAL>
</LITERALS>
</TAGDEFINITION>
</TAGDEFINITIONLIST>
</TAGDEFINITIONSET>
</TAGDEFINITIONSETLIST>
</BODY>
</PROFILE>

Agora basta copiar o cdigo XML acima para um editor de texto de sua preferncia e
salv-lo com a extenso .prf para que este possa ser reconhecido pelo StarUML.

Para o perfil ser reconhecido automaticamente, devemos coloc-lo em um


subdiretrio da ferramenta: <diretrio de instalao>\modules. O StarUML procura e
l os perfis que esto na pasta modules no seu diretrio de instalao e os registra
automaticamente quando o programa iniciado. Caso o arquivo do perfil seja invlido
ou sua extenso no seja .prf, o programa ir ignorar o arquivo. aconselhvel criar-se
uma nova pasta dentro do subdiretrio modules contendo os arquivos do perfil,
arquivo .prf e cones.

Note que na figura acima o caminho at o diretrio desejado :


C:\Arquivos de Programas\StarUML\modules
Que o diretrio padro de instalao do sistema operacional utilizado.

10
Logo, para nosso perfil GeoProfile ser reconhecido pela ferramenta, basta criarmos
uma nova pasta neste subdiretrio, vamos cham-la staruml-geoprofile.

Agora, basta copiarmos os arquivos do perfil (.prf e cones) para esta pasta do perfil.

Agora basta iniciarmos o StarUML para que o perfil seja reconhecido automaticamente
pela ferramenta. Note que, aps iniciarmos o programa, na aba inferior Output,
aparecer a mensagem The Profile GeoProfile is loaded successfully informando
que o perfil foi carregado corretamente. Se esta mensagem no aparecer porque
houve algum erro ao criar o perfil.

11
Perceba tambm que agora na opo de adio de perfis Model -> Profile -> Profile
Manager, o GeoProfile estar disponvel para ser adicionado sua aplicao.

4. Aplicando o Perfil GeoProfile


Com o perfil criado e disponvel para uso na ferramenta, podemos utiliz-lo em nossa
modelagem de classes geogrficas. Para utilizar o perfil comece criando um novo
modelo. Ao iniciar a ferramenta escolha a opo Empty Project. Caso a janela abaixo
no aparea no inicio da aplicao voc pode ir em: File -> New Project.

12
Para criarmos uma aplicao utilizando o GeoProfile precisamos primeiro adicion-lo
ao modelo, para isto, v em Model -> Profiles e na janela que se segue adicione o
perfil GeoProfile. Certifique-se tambm de que o perfil UML Standard Profile tambm
esteja adicionado.

Agora, na aba Model Explorer do lado superior direito selecione o objeto Untitled
com um clique do boto direito do mouse e escolha a opo Add -> Design Model para
criar um novo modelo de desenho em branco.

13
Para mudar o nome do modelo, selecione-o e utilize o campo Name da aba Properties.

Agora vamos criar um novo diagrama de classes dentro deste modelo, para isto
selecione o modelo criado anteriormente com o boto direito do mouse e escolha a
opo Add Diagram -> Class Diagram. D um nome qualquer ao novo diagrama.

14
Agora possvel aplicarmos os esteretipos do GeoProfile nos elementos UML do
diagrama criado anteriormente. Para testar o GeoProfile adicione um elemento Class,
contido na aba Class do lado esquerdo, no diagrama.

Tenha a classe selecionada, e na aba Properties v em Stereotype. Uma janela com os


esteretipos disponveis para um elemento do tipo Class ir aparecer. Para esta
aplicao apenas nos interessa os esteretipo do GeoProfile.

15
Note que, ao selecionarmos um esteretipo do GeoProfile, seu cone ser mostrado no
campo Icon preview.

Selecione um esteretipo qualquer e clique em OK para aplic-lo a classe. Perceba que


o nome do esteretipo ser visualizado entre <<>> na parte superior da classe.

16
O StarUML s nos permite adicionar um esteretipo por elemento e nos permite
visualizar os esteretipos na forma textual Textual, na forma de cone Iconic ou
ambos Decoration. Para alterar o tipo de visualizao, selecione o objeto e na aba
superior de opes selecione o tipo de visualizao desejado na opo Stereotype
Display. A visualizao do esteretipo tambm pode ser alterada clicando com o boto
direito do mouse sobre o objeto, na opo Format -> Stereotype Display.

Como definido no perfil GeoProfile, esteretipos tambm podem ser aplicados a


relacionamentos. Adicione mais uma classe ao modelo e um elemento Association
entre elas.

17
Para aplicarmos um esteretipo a um elemento Association devemos proceder da
mesma maneira descrita anteriormente para elementos do tipo Class.

Perceba que agora os nicos esteretipos disponveis so aqueles previamente


definidos como sendo do tipo UMLAssociation no perfil.

O StarUML s permite a visualizao de esteretipos do tipo Association na forma


textual, mesmo que tenham sido definidos cones aos esteretipos.

18
Lembrando que o StarUML s permite a adio, e portanto visualizao, de apenas um
esteretipo por elemento, e tambm que esta ferramenta no d suporte definio
de constraints na linguagem OCL para os perfis. Portanto, verificar a validade e
consistncia do modelo de responsabilidade do projetista.

Outro tipo de objeto geogrfico que pode ser encontrado em nossas aplicaes so os
objetos temporais, definidos no GeoProfile como TemporalObj. Para este tipo de
objeto foram definidos dois tagged values, temporalType e temporalPrimitive. Para
definirmos seus valores, primeiro devemos adicionar uma classe no modelo com o
esteretipo TemporalObj.

O valor de cada tagged value para este tipo de objeto pode ser definido no campo
Tagged Values com um clique do boto direito sobre a classe.

19
O valor de cada tagged value da classe poder ser editado na janela Tagged Value
Editor que aparece. Na definio do perfil mostrada anteriormente, foram escolhidos
os valores instant como valor default para o campo temporalPrimitive, e valid_time
como valor default para o campo temporalType.

Por se tratar de uma ferramenta voltada para a criao de modelos utilizando a UML,
outros elementos UML tambm podem ser adicionados ao modelo como pacotes,
atributos, operaes, tipos de dados, etc.

As propriedades dos elementos adicionados no modelo podem ser alteradas na aba


Properties, que contm todos os atributos do elemento selecionado na aba Model
Explorer ou no prprio diagrama de desenho.

20
Com isto, j possvel criarmos um modelo UML para modelagem de banco de dados
geogrficos na ferramenta StarUML utilizando o GeoProfile. Um exemplo Escola
utilizando este perfil mostrado abaixo.

Perceba que a as classes Cidade, Bairro e Escola possuem esteretipos do tipo


<<point>> e <<polygon>>, isso mostra como a classe poder ser representada em uma

21
aplicao geogrfica. A classe Aluno, por sua vez, no possui esteretipo, por se tratar
de uma classe sem representao geogrfica, logo, ser criada como um objeto Class
comum sem aplicar nenhum esteretipo.

Note que tambm foram aplicados 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 Aluno e Escola, logo, utilizamos
apenas um relacionamento do tipo Association comum, sem aplicar nenhum
esteretipo.

O StarUML tambm permite a importao e exportao de modelos no formato XMI


(XML Metadata Interchange). Na opo File -> Import/Export -> XMI o projetista pode
exportar o modelo atual para o formato XMI ou importar um modelo j criado
anteriormente.

Mais informaes sobre esta ferramenta podem ser encontradas no stio:


http://staruml.sourceforge.net

22

Você também pode gostar