GERADOR DE CÓDIGO JAVA A PARTIR DE ARQUIVOS DO ORACLE FORMS 6I



Documentos relacionados
GERADOR DE CÓDIGO JAVA A PARTIR DE ARQUIVOS DO ORACLE FORMS 6I

Técnicas de Programação II

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

APLICATIVO PARA CÁLCULO DE MÉTRICA DE SOFTWARE EM CÓDIGO-FONTE PL/SQL

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Cronograma de Aulas 2º Módulo 11/07/2009 a 05/09/2009

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

EMENTA DO CURSO. Tópicos:

SQL Procedural. Josino Rodrigues Neto

Interface com o Usuário (UI) UIs Desacopladas (2/3) BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos

Pratica JFlex. Prática criando o primeiro analisador léxico

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

Gerador de aplicativos Oracle PL/SQL WEB baseado na estrutura das tabelas do. Wagner da Silva Orientando Prof. Alexander Roberto Valdameri Orientador

Programação Orientada a Objetos II

Programação de Interfaces Gráficas. Aula 1. Carlos Eduardo de Carvalho Dantas

Tratamento de Eventos

Oracle PL/SQL Overview

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Ontologia Aplicada ao Desenvolvimento de Sistemas de Informação sob o Paradigma da Computação em Nuvem

Sumário Introdução à 3a. Edição Introdução Dia 1 - Conceitos Iniciais Dia 2 - Bem-vindo ao Mundo Real... 43

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

RUI ROSSI DOS SANTOS PROGRAMAÇÃO DE COMPUTADORES EM. Java

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

INTRODUÇÃO OBJECT PASCAL/DELPHI

Programando em C# Orientado a Objetos. By: Maromo

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

Introdução ao Android

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Java Foundation Classes Coleção de pacotes para criação de aplicações completas Desktop Interfaces gráficas (GUIs- Graphical User Interface)

Sintaxe e Semântica. Fases da Compilação. programa fonte

Especialização em Engenharia de Software - CEUT

Expressões. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Sistema para aprendizado de Álgebra Relacional e Linguagem SQL

Acadêmico: Fabiano Bender. Orientadora: Joyce Martins FURB 2012/2

Sistemas de Informação

Ambiente Virtual de Avaliações Utilizando Certificados Digitais. Fernando Gevard Acadêmico Paulo Fernando da Silva - Orientador

Logado no OracleXE vamos acessar a opção:

FERRAMENTA PARA CONSTRUÇÃO DE INTERFACES DE SOFTWARE A PARTIR DE DIAGRAMA DE CLASSES

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento

Programação Java. Construção de Interfaces com Swing (I)

Um Ambiente Gráfico para Desenvolvimento de Software de Controle para Robôs Móveis Utilizando Simulação 3D

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Treinar - Cursos e Treinamentos C# Módulo I. Carga horária: 32 Horas

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

FERRAMENTA PARA CONVERSÃO DE INTERFACES JAVA SWING EM HTML E JAVASCRIPT

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

QUALIFICAÇÃO TÉCNICA EM DESENVOLVIMENTO DE SISTEMAS

PLANIFICAÇÃO MODULAR

JCheckbox JRadioButton JComboBox JList JMenu... Alguns componentes já vistos em aula JButton JLabel JTextField

Padrão Arquitetura em Camadas

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Java. Marcio de Carvalho Victorino

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Cursos e Treinamentos Profissionais

PERES JULIAO CORGOSINHO BRUNO BORGES LEMOS DE OLIVEIRA RAFAEL REIS GOMES

Tecnologia em Análise e Desenvolvimento de Sistemas Linguagem de Programação Orientada a Objeto Luis Carlos dos Santos

Programação de Computadores - I. Profª Beatriz Profº Israel

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Programação Web com Webdev 19 Julio Cesar Pedroso Conteúdo

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Programação Orientada a Objetos em Java. GUI Graphical User Interface

PL/pgSQL por Diversão e Lucro

2 Orientação a objetos na prática

Sintaxe Básica de Java Parte 1

Análise e Projeto Orientados por Objetos

GERADOR DE DOCUMENTAÇÃO PARA LINGUAGEM C, UTILIZANDO TEMPLATES. Acadêmico: Vilmar Orsi Orientadora: Joyce Martins

Treinamento. DBA Oracle 11g. Duração: 120 horas

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Aula 11: Interfaces gráficas (1/2): elementos de interface Swing

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

SISTEMA PARA CONTROLE DE ESTOQUE DOS ALMOXARIFADOS DE AGÊNCIAS DE CORREIOS NO ESTADO DE SANTA CATARINA

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto

Prof.: Clayton Maciel Costa

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

SISTEMA PARA AUTOMATIZAR O MONITORAMENTO DE ROTEADORES DE UM PROVEDOR DE ACESSO

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

Curso de Aprendizado Industrial Desenvolvedor WEB

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

e à Linguagem de Programação Python

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

SQL Gatilhos (Triggers)

Universidade Federal de Uberlândia

Programação Orientada a Objetos

Módulo 16 Projeto de software

1.6. Tratamento de Exceções

Transcrição:

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO ALUNO:CLAUDIO SCHVEPE ORIENTADORA: JOYCE MARTINS GERADOR DE CÓDIGO JAVA A PARTIR DE ARQUIVOS DO ORACLE FORMS 6I Converte Forms

Roteiro Introdução Objetivos Contextualização Conclusões Extensões

Introdução Migração sistemas legados Reengenharia de software Tradução de código Oracle Forms Java

Objetivos Migrar aplicações desenvolvidas em Oracle Forms 6i para Java; Traduzir um subconjunto de código PL/SQL, incluindo apenas as construções procedurais; Permitir a conversão de alguns objetos visuais (Canvas, CheckBox, Frame, Image, Line, ListItem, PushButton, RadioGroup, Tab, Text, TextItem, Window); Mapear eventos (gatilhos ou triggers) de controle de objetos visuais para eventos Java; Utilizar templates para configurar o formato do código de saída.

Contextualização Tradução de código fonte

Contextualização Geradores de código Geradores de código são programas que geram programas. Vantagens: Qualidade Produtividade Abstração Etapas de desenvolvimento: Escrever o código de saída manualmente; Projetar o gerador; Analisar a entrada; Definir os templates; Gerar a saída usando templates.

Contextualização Código de saída em Java Bibliotecas gráficas Swing e AWT. Mecanismo de tratamento de eventos em Java.

Contextualização Código de entrada Oracle Forms

Contextualização Análise de entrada

Contextualização Motor de templates Mecanismo que permitem desenvolver geradores de código independentes do código alvo. Código estático. Código dinâmico. Linguagem de templates.

Contextualização Motor de templates enitl

Contextualização Reestruturação de sistemas procedurais em orientados a objetos Identificação das construções sintáticas. Elaboração das regras de mapeamento. CÓDIGO PROCEDURAL arquivo ou tabela de banco de dados e seus campos estrutura de dados e seus campos interface de interação e seus componentes unidade de programa que faz referência a um arquivo ou a uma tabela de banco de dados unidade de programa associada a um componente de interface CÓDIGO ORIENTADO A OBJETOS classe de persistência com respectivos atributos classe com respectivos atributos classe de interface com respectivos atributos, um para cada componente método da classe correspondente ao arquivo ou à tabela de banco de dados método da classe de interface correspondente Geração automática do código orientado a objeto.

Especificação Entreprise Architect Conceitos de orientação a objetos Diagrama de casos de uso Diagrama de classes Diagrama de seqüência

Elicitação dos requisitos Análise das linguagens PL/SQL e Java Especificação da saída Análise da entrada Especificação Implementação Elaboração de templates Testes

Elicitação dos requisitos: requisitos funcionais Processar arquivos fontes do Oracle Forms (Form, Menu, PL/SQL Libray); Analisar léxica e sintaticamente os arquivos de entrada; Produzir, para cada arquivo de entrada, a tradução especificada nos templates correspondentes; Traduzir um subconjunto de código PL/SQL (procedimentos, funções e blocos, com atribuições, testes condicionais, declarações de variáveis, laços de repetição, blocos de exceções e expressões); Traduzir objetos visuais (Canvas, CheckBox, Frame, Image, Line, ListItem, PushButton, RadioGroup, Tab, Text, TextItem e Window), implementando suas principais funcionalidades; Mapear gatilhos de controle de objetos visuais para eventos.

Elicitação dos requisitos: requisitos não funcionais Implementar a ferramenta utilizando o ambiente de desenvolvimento Microsoft Visual C++ 6.0; Implementar a ferramenta utilizando a linguagem de programação C++; Utilizar a ferramenta Flex para gerar o analisador léxico; Utilizar a ferramenta Bison para gerar o analisador sintático; Utilizar o motor de templates enitl; Utilizar a biblioteca Forms API para manipulação de arquivos do Oracle Forms 6i; Utilizar a biblioteca wxwidgets-2.6.2 na implementação da interface da ferramenta.

Mapeamento Oracle Forms Java: objetos visuais OBJETO VISUAL ORACLE FORMS Canvas CheckBox Frame Graphics Image Line ListItem Menu PushButton RadioButton RadioGroup Tab Text TextItem Window COMPONENTE EM SWING JLayeredPane JCheckBox Graphics2D Graphics2D ImageIcon Graphics2D JComboBox, JList JMenu JButton JButton ButtonGroup JTabbedPane JTextArea JTextArea, JPasswordField, JTextField JInternalFrame

Mapeamento Oracle Forms Java: objetos visuais

Mapeamento Oracle Forms Java: gatilhos GATILHO (TRIGGER) KEY-F1 a KEY-F12 KEY-OTHERS WHEN-BUTTON-PRESSED WHEN-CHECKBOX-CHANGED WHEN-LIST-CHANGED WHEN-MOUSE-CLICK WHEN-MOUSE-DOUBLECLICK WHEN-MOUSE-DOWN WHEN-MOUSE-ENTER WHEN-MOUSE-LEAVE WHEN-MOUSE-MOVE WHEN-MOUSE-UP WHEN-RADIO-CHANGED WHEN-WINDOW-ACTIVATED WHEN-WINDOW-CLOSED WHEN-WINDOW-DEACTIVATED WHEN-WINDOW-RESIZED LISTENER KeyListener ActionListener ItemListener MouseListener MouseListener MouseListener MouseListener MouseListener MouseListener ItemListener InternalFrameListener InternalFrameListener InternalFrameListener InternalFrameListener MÉTODO keypressed actionperformed itemstatechanged mouseclicked mousepressed mouseentered mouseexited mousemoved mousereleased itemstatechanged internalframeactivated internalframeclosed internalframedeactivated InternalFrameListener

Mapeamento Oracle Forms Java: gatilhos //-- método responsável pelos eventos disparados na tela private void criareventos() { java.awt.event.itemlistener cancelaritemlistener= new java.awt.event.itemlistener(){ public void itemstatechanged (java.awt.event.itemevent event ){ blbloco.cancelaritemselectable(event); } }; screen.getblbloco().getcancelar_1().additemlistener(cancelaritemlistener); screen.getblbloco().getcancelar_2().additemlistener(cancelaritemlistener); screen.getblbloco().getcancelar_3().additemlistener(cancelaritemlistener); screen.getblbloco().getcancelar_4().additemlistener(cancelaritemlistener); screen.getblbloco().getcancelar_5().additemlistener(cancelaritemlistener); } public class BLBLOCO { public BLBLOCO () { } private void cancelaritemselectable(java.awt.event.itemevent event) { } }

Mapeamento Oracle Forms Java: código PL/SQL ESTRUTURA SINTÁTICA EM ORACLE FORMS If <expressão> then... [ Elsif <expressão> then... ]* [ Else... ]? End if Loop... End loop Exit when <expressão> ; identificador := <expressão> ; For I in 1..10 loop... End loop While (<expressão>) loop... End loop ESTRUTURA SINTÁTICA EM JAVA if (<expressão>) {... } [ else if (<expressão>) {... } ]* [ else {... } ]? while (true) {... } if (<expressão>) break ; identificador = <expressão> ; for (long i=1; i<=10; i++) {... } while (<expressão>) {... }

Mapeamento Oracle Forms Java: código PL/SQL CÓDIGO FONTE EM ORACLE FORMS PROCEDURE TESTE IS str VARCHAR2(40); nreal NUMBER(5,2); nint INTEGER; bx BOOLEAN; BEGIN str:= 1; str:= str + 3; nreal:= nint * 5 + str; str:= str + 1 str; nreal:= nint + 5 + 1; nreal:= str; if str = 4 then nreal:= (nint + 5); elsif str = 5 then str:= str + 3; nint:= str; elsif (str = 6) and (str = 5) then str:= str + 3; else str:= str + 3; end if; END; public void teste(){ String str; double nreal; long nint; boolean bx; CÓDIGO FONTE EM JAVA str = String.valueOf(1); str = String.valueOf(Long.parseLong(str) + 3); nreal = nint * 5 + Long.parseLong(str); str = String.valueOf(Long.parseLong(str)+1)+str; nreal = nint + 5 + 1; nreal = Double.parseDouble(str); if (String.valueOf(4).equals(str)) { nreal = (nint + 5); } else if (String.valueOf(5).equals(str)) { str = String.valueOf(Long.parseLong(str)+3); nint = Long.parseLong(str); } else if ((String.valueOf(6).equals(str)) && (String.valueOf(5).equals(str))) { str = String.valueOf(Long.parseLong(str) + 3); } else { str = String.valueOf(Long.parseLong(str) + 3); } }

Especificação da saída Geração de classes Java Pacote view Pacote Controller Pacote model

Análise da entrada Arquivos Oracle Forms Código PL/SQL

Especificação: casos de uso Convert Forms UC01 - Criar proj eto UC02 - Alterar propriedades de um proj eto UC03 - Adicionar arquiv os a um proj eto Usuário UC04 - Especificar Template UC06 - Conv erter Código UC05 - Compilar Template

Especificação: diagrama de classe cd Plugin EngineTraslator VarClass CFileObject BaseAcess -m_fileobject LinkObj FormTemplate Access PlSqlFilter -m_lstpry CListProperty -m_proprty -m_translator -m_listpropery cbenginetranslatorplugin cbenginetranslator -m_translator EngineTemplate wxthread -m_enginetmpl -m_palettecolor -m_palettecolor -m_palettecolor ImportPaletteColor

Especificação: diagrama de classe cd Forms Files CFileForms CFileObject CFileMenu CFileLibrary cd PL/SQL - Analyzer PSQLFlexLexer FlexLexer VarClass +m_parse PlSqlEngine BaseAcess PlSqlFilter -m_plsqlengine TableAcess

Especificação: diagrama de seqüência sd Diagrama de Sequencia :cbenginetranslator :EngineTemplate :List :_Template :CFileObject :LinkObjFormTemplate Usuario OnConvertFile(event) EngineTemplate(this) AddFileProcess(file) SetMode(pmode) SetListProperty(pListPropery) SetStartTemplate(m_Project->GetStartTemplate()) [template!= last template]: *AddFileTemplate(fileName) SetPathBaseOutput(pathBase) Run() List(this) [template!= last Template]: * bool:= addgroup(iread) _Template(this,m_Engine) _Template*:= finditem(m_starttemplate) _Template*:= CFileObject:= CFileObject() int:= OpenFile(fileName) retatt=astuff;:= LinkObjFormTemplate() SetBaseOutput(FileObject) SetGUITranslator(m_Translator) SetPaletteColor(m_PaletteColor) run(astuff,owrite,iouts,oid) ~LinkObjFormTemplate() ~CFileObject() ~List() ~EngineTemplate()

Especificação: diagrama de seqüência

Especificação: diagrama de seqüência

Técnicas e ferramentas utilizadas Interface Plugin Forms API Flex e Bison enitl

Implementação da ferramenta: projetos criados no ambiente de desenvolvimento Microsoft Visual C++ 6 Sdk TinyXML wxscintilla PlSqlEngine ManegerConvert_Forms wxdockit EngineTranlator Convert_Forms

Comparativo Característica Ferramenta Código gerado baseado em API open source Suporte a todas as construções PL/SQL Conversão de componentes visuais Exodus Sim Sim Sim SwisSQL Sim Forms2 Net Não Converte Forms Sim Sim Não Instruções PL Não Sim Sim Migração para J2EE Sim Não mencionado Não Não Suporte a JDBC Uso de templates para a geração de código Sim Não Não mencionado Não mencionado Não Não Não Sim Linguagem alvo Java Java ASP.NET Java

Conclusões Reengenharia de software Motor de templates Oracle Forms API Restrições

Extensões Efetuar a conversão dos demais componentes visuais e de todo o código PL/SQL; Implementar classes Java para prover comportamentos idênticos ao objeto Block do Oracle Forms; Implementar conectividade com banco de dados para as classes geradas; Permitir traduzir todas as funções nativas da linguagem Oracle Forms ; Possibilitar o acesso à propriedade coordinate system dos módulos Forms; Exportar imagens contidas nos módulos Forms; Especificar templates para a geração de código para outra linguagem, como por exemplo, C#; Implementar plugin para gerar a especificação a partir dos arquivos do Oracle Form.