CASE (Computer-Aided Software Engineering) significa engenharia de software com o auxílio de computador, a ferramenta refere-se a um tipo de programa utilizado para apoiar atividades de processos de software. Todos os métodos atualmente que utilizam tecnologia CASE, possuem editores para as notações utilizadas, módulos de análise que verificam o modelo de acordo com as regras do método e geradores de relatórios para ajudar na criação da documentação de sistemas. As ferramentas CASE podem também incluir um gerador de códigos que, automaticamente, origina código-fonte a partir do modelo de sistemas e algumas orientações de processo (SOMERVILLE, 2003).
Para facilitar a compreensão e utilização dos elementos, a ferramenta CASE Enterprise Architect foi utilizada. Isto se deve unicamente ao fato de que este software encontra-se licenciado na Universidade sendo que esta ferramenta permite a definição de novos estereótipos e tem custo relativamente acessível1.
Enterprise Architect é uma ferramenta CASE, muito utilizada no auxílio a desenvolvimento de aplicações, desenvolvida pela empresa Sparx Systems. A versão utilizada para criação do diagrama proposto é a 3.51.618, de 01 de outubro de 2002 possuindo como principais funcionalidades:
⇒ Criação de elementos da linguagem UML;
⇒ Disposição dos elementos em diagramas e pacotes;
⇒ Conexão entre elementos;
⇒ Documentação dos elementos criados;
⇒ Geração de código para compiladores de software; e
⇒ Engenharia reversa de código escrito em várias linguagens.
1 O custo de uma licença com todas funcionalidades (Enterprise Edition) é de US$ 160,00 de acordo com o website da empresa, disponível em http://www.sparxsystems.com.au, 2003.
Esta ferramenta também serve para gerência de projetos, que permite descrever os ciclos de desenvolvimento de um projeto, além de prover recursos de rastreamento de informações desde a concepção inicial até os vários aspectos do ciclo de vida destes projetos, como testes, manutenção e controle de versões (TUTORIAL ENTERPRISE ARCHITECT, 2003).
A ferramenta Enterprise Architect permite a adição de novos estereótipos através de um esquema aberto, no formato XML (Extensible Meta-Language). Neste arquivo é possível configurar todas as propriedades que os novos objetos podem receber. As tags (valores etiquetados) criam propriedades e, opcionalmente, valores de atribuição a estas. As constraints (restrições) limitam o escopo de utilização dos estereótipos, como pré-condições de utilização, por exemplo.
Os estereótipos propostos neste trabalho estão descritos em um arquivo XML no esquema do Enterprise Architect, com o mesmo conteúdo mostrado na notação do diagrama, como mostra o quadro 2.
<?xml version="1.0" encoding="UTF-8"?>
<UMLProfile>
<Documentation id="TimeProfile" name="UML Profile para Sistemas Baseados em Linha do Tempo"
version="1" notes="Um conjunto de estereotipos para Modelagem de sistemas baseados em Linha do Tempo"/>
<Content>
<!-- Lista de estereotipos que serao usados-->
<Stereotypes>
<!-- <<Filme>> -->
<Stereotype name="Filme" notes="" cx="172" cy="178" metafile="filme.emf" >
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
</TaggedValues>
<Constraints>
<Constraint name="" type="" notes=""/>
</Constraints>
</Stereotype>
<!-- <<Cena>> -->
<Stereotype name="Cena" notes="" cx="132" cy="138" metafile="cena.emf">
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Descricao" description="" />
</TaggedValues>
<Constraints>
<Constraint name="constraint" type="pre" notes="A cena deve ser inserida dentro de um filme" />
</Constraints>
</Stereotype>
<!-- <<Quadro-chave>> -->
<Stereotype name="Quadro-chave" notes="" cx="105" cy="105"
metafile="quadro.emf">
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Descricao" description=" " />
<Tag name="Actions" description=" " />
</TaggedValues>
<Constraints>
<Constraint name="constraint1" type="pre" notes="O quadro deve ser inserido dentro da cena" />
</Constraints>
</Stereotype>
<!-- <<MovieClip>> -->
<Stereotype name="Clip de filme" notes="Representa um Movie Clip" cx="28"
cy="28" metafile="movie.emf">
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Descricao" description=" " />
<Tag name="Actions" description=" " />
<Tag name="Variavel" description=" " />
<Tag name="Movimento" description="" values="Sim | Não"
default="Não" />
<Tag name="Imagem" description="" />
</TaggedValues>
<Constraints>
<Constraint name="constraint3" type="pre" notes="O MovieClip devera ser inserido dentro da cena" />
</Constraints>
</Stereotype>
<!-- <<Especificacao>> -->
<Stereotype name="Nivel" notes="Representa um nivel de especificacao" cx="10"
cy="10" metafile="nivel2.emf" >
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Nivel" description=" " />
</TaggedValues>
<Constraints>
<Constraint name="" type="pre" notes="" />
</Constraints>
</Stereotype>
<!-- <<Especificacao>> -->
<Stereotype name="Repeticao" notes="Representa que um elemento se repete"
cx="10" cy="10" metafile="repetir1.emf" >
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Nivel" description=" " />
</TaggedValues>
<Constraints>
<Constraint name="" type="pre" notes="" />
</Constraints>
</Stereotype>
<!-- <<Grafic>> -->
<Stereotype name="Grafico" notes="Representa um Grafico" cx="28" cy="28" >
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Especificacao" description=" " />
<Tag name="Actions" description=" " />
<Tag name="Movimento" description="" values="Sim | Não"
default="Não" />
<Tag name="Imagem" description="" />
</TaggedValues>
<Constraints>
<Constraint name="constraint4" type="pre" notes="O Grafico devera ser inserido dentro da cena"/>
</Constraints>
</Stereotype>
<!-- <<Button>> -->
<Stereotype name="Botao" notes="Representa um Botao" cx="76" cy="20"
metafile="but.emf" >
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Eventos" description="" values="Onclick | Mousedown | Mouseup | " default="Onclick" />
<Tag name="Acao" description="" />
</TaggedValues>
<Constraints>
<Constraint name="constraint3" type="pre" notes="O Botao deve ser inserido dentro da cena"/>
</Constraints>
</Stereotype>
<!-- <<Banco>> -->
<Stereotype name="Banco" notes="Representa o Banco a ser utilizado" cx="60"
cy="65" metafile="banco.emf">
<AppliesTo>
<Apply type="GUIElement"/>
</AppliesTo>
<TaggedValues>
<Tag name="Tabela" description="" />
</TaggedValues>
<Constraints>
<Constraint name="" type="" notes=""/>
</Constraints>
</Stereotype> </Stereotypes> </Content>
</UMLProfile>
Quadro 2: Arquivo XML
Uma vez definidos os estereótipos no arquivo XML, estes devem ser incorporados ao Enterprise Architect. Portanto, é importante que os meta-arquivos (imagens no formato EMF) estejam no mesmo diretório do arquivo a ser importado e que exista um projeto em execução.
O processo de importação é realizado através da aba Resource View do componente Workspace (Figura 26), deve-se acessar com o botão direito em UML Profiles, selecionar a opção Import Profile (Figura 27) e apontar o diálogo de abertura de arquivo para o documento XML.
Figura 26: Interface do Enterprise Architect.
Figura 27: Exemplo de importação do arquivo XML.
Tendo-se o processo de importação concluído com sucesso, tem-se os elementos disponíveis na barra UML Profile em Resouce View, sendo que para acessá-los deve-se clicar no elemento desejado e arrastar para onde se deseja criar o diagrama. As tags dos elementos aparecem na barra Properties quando os mesmos estão selecionados, como apresentado na Figura 28.
Os diagramas fornecem o ambiente principal de trabalho da ferramenta e são carregados quando se clica em seus respectivos ícones do Project Explorer (Figura 28).
Figura 28: Exemplo dos estereótipos já importados na ferramenta.
3. INTEGRAÇÃO DIAGRAMA PROPOSTO COM PROCESSO DE