SOFTWARE DE INTEGRAÇÃO DA
FERRAMENTA CASE RATIONAL
ROSE COM O BANCO DE DADOS
JASMINE
Acadêmico : Rômulo Bendini Madalena
Orientador : Prof. Everaldo Artur Grahl
Roteiro da Apresentação
•
Introdução
•
Objetivo do Trabalho
•
Orientação a Objetos
•
UML
•
Ferramenta CASE Rational Rose
•
MDL – Model
•
Banco de Dados Jasmine
•
Linguagem ODQL
Roteiro da Apresentação
•
Desenvolvimento do Trabalho
•
Requisitos principais do Problema a ser trabalhado
•
Especificação do Software
•
Técnicas e Ferramentas utilizadas
•
Apresentação da Especificação
•
Implementação
•
Técnicas e Ferramentas utilizadas
•
Operacionalidade da Implementação
•
Resultados e Discussão
•
Conclusão
Introdução
A Orientação a Objetos é uma técnica de desenvolvimento
de software que utiliza abstração para dissimular a tarefa de Programação
A UML é uma linguagem para especificação, visualização,
construção e documentação de modelos de sistema de Software.
A ferramenta CASE Rational Rose fornece suporte a UML
O Jasmine possui uma interface simples e integrada, para desenho
de banco de dados a aplicações, fazendo integral uso dos recursos da UML.
Objetivo do trabalho
Um software de geração de código para o banco Jasmine a
partir dos arquivos gerados pela ferramenta CASE Rational Rose
Obter o diagrama de classe a partir do arquivo MDL Traduzir os dados obtidos para a linguagem ODQL
Orientação a Objetos
A Orientação a Objetos traz vários benefícios no desenvolvimento
e manutenção de software.
UML
Ferramenta CASE Rational Rose
Uma ferramenta de apoio ao processo de desenvolvimento de
software, não a solução mágica para os problemas da área.
MDL - Model
As especificações na linguagem de modelagem MDL permitem
recuperar o projeto orientado a objeto do sistema na ferramenta Rational Rose
Arquivo texto do MDL
(object Class "Gente"
quid "3A390AA50050"
class_attributes (list class_attribute_list
(object ClassAttribute "Rg"
quid "3A390AD80294")
(object ClassAttribute "nome"
quid "3A390AE0026C")
(object ClassAttribute "endereço"
quid "3A390AE50082")
(object ClassAttribute "fone"
quid "3A390AE50090")
(object ClassAttribute "CPF"
quid "3A390AEA0046")))
(object Class "Professor"
quid "3A390AA9005A"
superclasses (list inheritance_relationship_list
(object Inheritance_Relationship
quid "3A390B370348"
supplier "Gente"
quidu "3A390AA50050"))
class_attributes (list class_attribute_list
(object ClassAttribute "carteira trabalho"
quid "3A390B0B015E")
(object ClassAttribute "salário"
Banco de Dados Jasmine
O BDOO Jasmine incorpora uma série de classes
pré-definidas para exploração de recursos multimídia como vídeo, som, coordenadas espaciais, mapas, além dos tipos de dados tradicionais dos SGBDR.
Linguagem ODQL
A linguagem ODQL é um componente muito importante
para a operabilidade do banco Jasmine, pois nesta linguagem você manipula qualquer objeto, classes, instâncias e métodos.
Contexto atual do Tema
Protótipo de software para a geração de código CDL através
do repositório da ferramenta CASE System Architect, trabalho realizado pelo Danilo (1999).
Software para geração de código fonte a partir do repositório
da ferramenta CASE System Architect, trabalho realizado pelo Marcos Aurélio (2000).
Código Fonte ODQL defaultCF t; defineClass Gente { instance: String Rg; String nome; String endereço; String fone; String CPF; }; defaultCF t;
defineClass Professor super: Gente {
instance:
String carteiratrabalho;
String salário;
};
Desenvolvimento do Trabalho
Requisitos principais do
Problema a ser Trabalhado
Facilitar a migração de uma especificação gerada pelo CASE
Para um banco BDOO.
As informações sobre o diagrama de classe gerada pelo CASE
Rational Rose estão contida na linguagem Object Petal.
O banco Jasmine tem internamente um compilador para a
Especificação do Software
Para especificar o Software foi realizado o Diagrama de Uso,
Diagrama de Classe e o Diagrama de Seqüência.
Técnicas e Ferramentas
Utilizadas
Para especificar o protótipo foi utilizado a ferramenta CASE
Rational Rose.
Apresentação da especificação
Diagrama de Uso
Gerar Codigo ODQL Ler arquivo MDL
Diagrama de Classe TRole Name : String Supplier : String Cardinality : String Create( ) GetSupplier( ) GetName( ) 1 0..* 1 TRRFile FLine : Integer FCountAbreParenteses : Integer FCountFechaParenteses : Integer SL : TStringList Dictionary : TDictionary SLODQL GetObjectName( ) CountToken( ) DeleteSubStr( ) ReadMethods( ) ReadSuperClasse( ) ReadAttributes( ) ReadAssociations( ) ReadParameters( ) ReadDependencys( ) Destroy( ) ReadClasses( ) IsValid( ) Create( ) RetiraCifrao( ) ODQLGeneration( ) 1..* 1 0..* TAssociation Name : String RoleA : Role RoleB : Role Create( ) 1 0..* 1 0..* TDependency Name : String Supplier : String SupplierCardinality : String ClientCardinality : String Create( ) GetSupplier( ) GetName( ) 1 TDictionary Associations : Association Classes : Classe Create( ) Destroy( ) LiberaMemoria( ) 1 1..* 1 0..* 1..* 1 0..* 1..* TClasse Name : String SuperClass : String SuperClassRelationName : String Attributes : Attribute Methods : Method Dependencys : Dependency Create( ) Destroy( ) GetName( ) GetSuperClass( ) 1 0..* 1 1..* 0..* TMethod Name : String
Retorno : String = Void Visible : String
Parameters : Attribute = TList.Create Create( ) Destroy( ) GetResult( ) GetName( ) 1 0..* TAttribute Name : String Tipo : String Visible : String Create( ) GetTipo( ) GetName( ) GetDefault( ) 1..* 0..*
Diagrama de Seqüência – Ler Arquivo MDL
Analista : Analista RRFile : TRRFile Dictionaty : TDictionary Classes : TClasse Association : TAssociation Role : TRole Dependency : TDependency Attibute : TAttribute Method : TMethod Create ( Create ( IsValid ( LiberaMemoria ( ReadClasses ( Create ( Create ( Create ( Create ( Create ( Create ( ReadMethods (Classe) ReadAttributes ReadDependencys ReadAssociations (Dictionary) RetiraCifrao (String)
Diagrama de Seqüência – Gerar Código ODQL
: Analista : TRRFile : TClasse : TAttribute : TDependency : TMethod : TRole ODQLGeneration (String, String) GetName ( )
GetSuperClass ( ) GetTipo ( ) GetName ( ) GetDefault ( ) GetResult ( ) GetName ( ) GetTipo ( ) GetName ( ) GetSupplier ( ) GetName ( ) GetSupplier ( ) GetName ( ) GetName ( ) GetName ( )
Implementação
Técnicas e Ferramenta Utilizada
Para a confecção do Software foi utilizado a Ferramenta Delphi 5.0
com a linguagem de programação Object Pascal.
foi utilizado uma programação orientado a Objeto com o auxilio da
técnica UML.
Para obtenção dos dados desejados do diagrama de classe foi
utilizado tokens para ler o arquivo MDL.
Foi utilizado a BNF da linguagem ODQL para se basear e comparar
Operacionalidade da
Implementação
O processo para a geração do código fonte pelo Software está
dividido em três partes.
•Criação do diagrama de classe pelo CASE Rational Rose • geração do código fonte através do Software.
•Compilar o arquivo gerado pelo Banco Jasmine.
Para a criação do diagrama de classe precisa configurar o Rational
Resultados
e Discussão
Algumas limitações do protótipo
Para a implementação da interface, leitura e armazenamento
de informações foi utilizado a ferramenta Delphi 5.0 junto com a Linguagem de programação Object Pascal.
Leitura do arquivo MDL da Ferramenta CASE Rational Rose Foi implementada a orientação a objetos para dar suporte a
armazenamento dos dados obtidos pelo arquivo fonte MDL e para a geração do código fonte ODQL.
Conclusões
O protótipo conseguiu atingir o seu objetivo principal
A ferramenta CASE Rational Rose tem um repositório em um
Arquivo texto chamado Object Petal (MDL)
A configuração e a conexão do Banco de Dados Jasmine é muito
Fácil, mesmo sendo restrita a sua documentação
Em relação a outros trabalhos já desenvolvidos nesta linha
pode-se comentar que este trabalho seguiu os objetivos pretendidos pelo trabalho do Kramel (2000)
Já em relação ao trabalho de Wehrmeister (2001), o mesmo se
mostrou mais amplo porque permite a geração para qualquer linguagem
Uma das vantagens do trabalho é a integração da Ferramenta
CASE Rational Rose para o BDOO Jasmine, porque dá maior suporte ao analista que, apenas precisa especificar qualquer aplicação que por sua vez gera a base de dados para o banco
Extensões
Para extensões deste trabalho sugere-se:
• especificar uma metalinguagem para ler a BNF do ODQL
• possibilitar que o protótipo crie os métodos ao nível de classe e ao nível de coleção
• possibilitar também que o usuário possa criar as próprias
procedures em ODQL para que o banco Jasmine compile para já incorporar nas classes criadas