Você está na página 1de 22

Sumrio

1. 2. 3. 4. StarUML - UML/MDA Plataform ........................................................................................... 1 Criando Perfis no StarUML .................................................................................................... 2 Criando o perfil GeoProfile.................................................................................................... 5 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>

... </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).

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.

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>

</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>

</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>

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

<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">

<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