Maringá - Paraná
Brasil
ii
TG-01-98
Maringá - Paraná
1998
iii
Este exemplar corresponde à redação final da monografia aprovada como requisito parcial
para obtenção do grau de Bacharel em Ciência da Computação da Universidade Estadual
de Maringá, pela comissão for mada pelos professores:
________________________________________
Orientador: Profa. Itana Maria de Souza Gimenes
Departamento de Informática, CTC, DIN
________________________________________
Prof. Carlos José Maria Olguin
Departamento de Informática, CTC, DIN
________________________________________
Prof. Osvaldo Alves dos Santos
Departamento de Informática, CTC, DIN
Agradecimentos
Agradeço a Deus, que me ofereceu proteção, perseverança e muita força para que eu
pudesse lutar pela realização dos meus ideais.
Aos meus pais, meu irmão, Elisa e Cristiane, que significam tanto para mim, agradeço pelo
apoio que me deram quando o cansaço me abateu, apoiando-me nos momentos mais
difíceis.
À minha orientadora, Professora Dra. Itana Maria de Souza Gimenes, agradeço pela
compreensão e pela paciência que teve comigo durante a realização deste trabalho.
A todos os meus colegas que estiveram do meu lado enfrentando juntos as dificuldades do
curso, com muito companheirismo e amizade.
Aos meus grandes amigos, Gérson, Luciano, Alexandre, Fabiano, André, Hélerson e
Adriano agradeço por estarem ao meu lado nas horas difíceis e pelo incentivo que deram
tornando muito mais fácil enfrentar as dificuldades.
v
Resumo
Abstract
Software Engineering environments integrate several CASE tools to support the whole
software development life cycle, including control, validation and maintenance of the
software process. Those environments operate in distributed architectures where users
located in geographically distant sites can cooperate to produce software.
The wide diffusion of the computer networks brought about the need to maintain an
independence between the code to be executed and the host machine. The Java language
was proposed to support these require ments. The language is based on the object oriented
paradigm. This paradigm is of great importance in respect to data integration. In addition,
Java was developed to deal with web-based information systems. It supports several host
architectures as well as improving the safety of the transport of software components
through the network.
The processes manager in Java is responsible for the control and management of all the
applications accomplished in the environment, including its tasks, tools, roles and artifacts.
The interface of the environment will use HTML pages and applets, following the patterns
of web -browsers. These browsers will be used for execution of the processes starting from
the workstations.
vii
Índice
INTRODUÇÃO 1
1.1 MOTIVAÇÃO 1
1.2 OBJETIVO DO TRABALHO 2
1.3 ES TRUTURA DA MONOGRAFIA 2
A LINGUAGEM JAVA 11
CONCLUSÕES 38
BIBLIOGRAFIA 43
ix
Listas de Ilustrações
Capítulo 1
Introdução
1.1 Motivação
1
Experimental Process-centered Software Engineering Environment
2
Computer Aided Software Engineering
3
Process-centered Software Engineering Environment
2
Os PSEE’s, apesar de distribuídos ainda não fazem muito uso desta tecnologia. Logo, a
utilização dos recursos oferecidos por Java através da web em um PSEE serão a base deste
trabalho.
Para a avaliação de tais aplicações foi construído um protótipo que tem como meta permitir
a integração de interface, gerenciador de processos, módulos gerenciadores e base de
dados, atuando de forma distribuída.
4
Common Object Request Broker Archit ecture
5
Remote Method Invocation
6
Distribuited Component Object Model
7
Hiper Text Transfer Protocol
3
nas soluções Java para ExPSEE. Neste capítulo também são apresentados a interface do
ambiente, detalhes da implementação do gerenciador de processos e um estudo do uso de
banco de dados em ambientes distribuídos. Finalmente no quinto capítulo são apresentadas
conclusões deste trabalho.
4
Capítulo 2
Este capítulo procura mostrar as bases do processos de software. Para isto, é realizado uma
descrição dos processos de software e dos ambientes que se destinam a utilizar tais
processos. SEE8 e PSEE são os ambientes voltados ao desenvolvimento e manutenção de
processos. O projeto ExPSEE é uma continuação dos estudo de processos, principalmente
do ambiente PSEE. O ExPSEE possui um modelo de processos e uma arquitetura do
ambiente que serão usados no desenvolvimento deste trabalho. Na sequencia é realizada
uma descrição de linguagens de programação de processos e por último, os serviços
oferecidos pela base de dados em um ambiente de engenharia de software.
Um processo de software pode também ser definido como o conjunto de todas atividades
relacionadas ao ciclo de vida de um software. Estas atividades incluem determinação e
especificação dos requisitos de software; a implementação, a verificação e validação do
software, o controle de qualidade, a integração dos componentes, a documentação, a
gestação de configurações e versões e a avaliação do software entre outras[GIM97]. Com
estes exemplos, é possível notar a quantidade e complexidade dos serviços que podem
pertencer a um PSEE.
8
Software Engineering Environment
5
Um modelo de processo de software pode visto como uma representação, ou abstração dos
objetos e atividades envolvidas no processo de software. Além disso, oferece uma forma
mais abrangente e fácil de representar o gerenciamento de processo de software e
consequentemente o progresso do projeto. Uma versão de um modelo de processo de
software pode ser vista através do Meta-Modelo do ExPSEE
6
Type
0+
produces 1+
Process Arterfact 0+ leader
has 1+ Task Type needs 1+ Tool Type 0+ Role Type
Architecture Type
0+
1+ 1+ handles 1+ 1+ 1+
manipulates
List of Actions
Types
List of Rights
uses
accesses
requires
refines
requires
accesses
uses
List of Rights
List of Actions
is preceded by
manipulates
0+ 1+ 1+ handles 1+ 1+ 1+
produces 1+
Software
1+ Task needs Artefact 0+ Tool 0+ Role
Process has
0+ 1+
1+ 1+
dependes on has plays
leader
has 1
Agenda Actor
1+ 1+
is allocated to
has
Quanto a parte instancia da do meta -modelo, o comportamento das suas relações são
mantidos da mesma forma que a parte anterior. Porém, nesta etapa teremos o acréscimo
dos atores(actors), que são os usuários responsáveis pelo desenvolvimento do processo de
software. Cada ator possui um ou mais cargos(ou funções) dentro do ambiente.
Interface
Gerenciador de Processos
Meta Gerenciador
de Procesos
Interpretador
Gerenciador de Gerenciador de
Ferramentas Cargos
base
de dados
Além dos gerenciadores, existe um interpretador responsável pela definição das tarefas em
uma linguagem de programação de processos. Para um processo ser especificado e
executado pelo gerenciador de processos, é necessário a especificação destes em uma
linguagem de programação de processos[GIM98].
Além disso, uma linguagem de processos requer o uso da abordagem multiparadigma, que
combina diferentes formas de representação. A aplicação de uma linguagem convencional
que só usa um paradigma, é improvável para uso em processos. Alguns conceitos do
9
Em PSEE’s, assim como nos SEE’s, os banco de dados devem permitir o acesso a uma
série de serviços básicos que manipulam com eficiência grande volumes de informações. O
conjunto de informações de um PSEE é uma de sua s principais virtudes, pois nele estão
incluídos serviços largamente utilizados pelo gerenciador de processos, tais
como[NAN95]:
Capítulo 3
A linguagem Java
Outra característica de Java é o fato de que ela não deixa de possuir uma sintaxe simples,
até mesmo tradicional, sendo muito parecida com C e C++.
Orientação a objetos
Em uma linguagem orientada a objetos, uma classe é uma coleção de dados e métodos que
operam sobre estes dados. Desta maneira, os dados representam as características do objeto
e os métodos descrevem seu comportamento.
9
Application Programming Interfaces
12
Java.lang, que possui a classe Object. Esta classe é responsável pelo comportamento geral
das outras classes.
As classes estão organizadas em uma hierarquia, onde uma subclasse pode herdar todo
comportamento de uma superclasse. As classes são unidades únicas e básicas de
compilação e execução em Java . Todos os programas em Java são formados por
classes[FLA97].
Multiplataforma
Java oferece a vantagem de ser uma linguagem interpretada. O compilador Java gera byte -
codes, para a Máquina Virtual Java , ao invés de código de máquina nativo[FLA97].
Assim, para rodar um programa cliente/servidor em Java , usa-se o interpretador Java (na
máquina cliente) para executar os byte-codes gerados na máquina servidora. A Máquina
Virtual Java e os interpretadores vem atualmente acoplados em web-browsers, através de
um ambiente run-time. Quando um programa em Java é carregado para a máquina cliente,
em forma de applets, na verdade são carregados os byte-codes já compilados na máquina
servidora. Dessa forma, o applet é um código interpretado através da Máquina Virtual Java
embutida nos browsers, tornando-o possível de ser executado em qualquer plataforma
cliente.
Java é uma linguage m que permite execução dinâmica. Qualquer classe pertencente a Java
pode ser carregada no interpretador Java em qualquer momento, sendo então instanciadas
10
Java Virtual Machine
13
Java também é conhecida como distribuída, pelo fato de fornecer vários suportes de alto
nível para uso em redes[FLA97]. Por exemplo, a classe URL11 e outras classes
pertencentes a pacotes Java como Java .net tem a capacidade de tornar mais fácil o acesso a
um arquivo ou recurso remoto - como se fosse um arquivo ou recurso local.
Juntando estas duas características, torna -se possível acessar e executar códigos pela
Internet[FLA97]. Por exemplo, quando um web-browser acessa e executa um applet Java.
Threads
Um outro fator que precisa ser lembrado, é o uso de Multithreads. Numa aplicação de rede
GUI(Graphical User Interface) - baseando-se num web -browser - é fácil de imaginar
múltiplas atividades acontecendo em um mesmo tempo. Dessa maneira, podemos rotular
Java como sendo uma linguagem multithread[FLA97]. Java suporta múltiplos threads de
execução que podem aplicar-se a diferentes tarefas. Um importante benefício dos múltiplos
threads, é a melhoria ou aperfeiçoamento de desempenhos interativos de aplicações
gráfic as para o usuário.
Java faz da programação com threads algo simples, fornecendo um suporte embutido na
linguagem justamente para threads. O pacote Java .lang oferece uma classe thread que
suporta métodos para inicializar e finalizar threads e suas prioridades, entre outras
coisas[FLA97].
Eventos são sempre enviados para os métodos chamados “receptores”. Para cada tipo de
evento existe um determinado listener que descreve o método que ele deve utilizar para
receber o evento correspondente[FLA97], conforme ilustra a figura 3.
"escuta" quando um
evento é acionado
Evento listener
Métodos
Receptores
Com a utilização de métodos receptores, não se torna necessário criar funções que
entendam que componentes da interface foram acionados. Nos métodos receptores é
definido o que acontece quando um componente é disparado. Métodos receptores fazem
parte do código fonte da interface.
O fato da interface ser carregada e executada na máquina cliente, significa que quanto
menor o número de linhas em um código muito mais interessante se torna a aplicação, pois
a quantidade de transferência de dados do servidor para o cliente é menor. As classes
usadas na construção da interface já estão localizadas no cliente, através dos browsers.
11
Uniform Resource Locators
15
Evento
Listener
12
listeners: É a escuta da int erface inserida no código fonte que serve para informar quando um evento
pertencente a um componente foi disparado.
16
13
Abstract Window Toolkit
17
TextField
ActionEvent ActionListener ActionPerformed()
Button
List
ItemEvent ItemListener ItemStateChanged()
Choice
ComponentAdded()
ContainerEvent All Containers ContainerListener
ComponentRemoved()
Além dos recursos já descritos acima, Java oferece serviços orientados a objetos
distribuídos. Isto pode ser melhor detalhado através do método RMI.
RMI permite o uso de objetos distribuídos em redes heterogêneas como uma extensão da
programação orientada a objetos. A atuação destes objetos é a garantia de
interoperabilidade num sistema.
Um objeto RMI é um objeto remoto, cujos métodos podem ser chamados de outra máquina
virtual Java normalmente usando redes. RMI permite aos clientes interagir com o objetos
remotos via interfaces públicas. Os clientes não interagem diretamente com as classes que
implementam as interfaces[RAJ98].
Como sabemos, objetos distribuídos podem falhar pelos mais variados motivos, motivos
estes ainda mais variados do que em objetos locais. Então devemos ser capazes de tratar
exceções que possam ocorrer durante a chamada de um método remoto. Para isso, RMI
estendeu as características de tratamento de exceções em Java , facilitando o tratamento e
captura de falhas com objetos remotos[RAJ98].
Através do protocolo RMI, Java permite a serialização de seus objetos, que por sua vez
permite a transmissão de objetos via rede. Desta forma, é possível a criação de objetos
servidores e objetos clientes Java /RMI. O servidor é o responsável por definir uma
18
instância da classe que implementa a interface remota. A interface remota deverá declarar
todos os métodos que serão chamados remotamente no servidor.
Para um cliente localizar um objeto remoto, pela primeira vez o RMI depende da execução
de um mecanismo chamado RMIRegistry. Este mecanismo é quem roda o servidor,
manipulando informações sobre os objetos servidores disponíveis, bem como mantém um
mapeamento entre os objetos do host e o nome com os quais foram registrados. Para a
aplicação cliente ser capaz de invocar um método de um objeto remoto servidor, o cliente
precisa primeiro adquirir uma referência para o objeto remoto. Na maioria das vezes, a
referência será obtida como valor de retorno de um método remoto ou como uma passagem
de parâmetro para tal método. Quando o objeto referenciado é encontrado no servidor,
ocorre a invocação de métodos do objeto servidor. Um objeto RMI pode ser referenciado
como se estivéssemos chamando um objeto local não remoto. Se o RMIRegistry não
estiver sendo executado, a conexão entre cliente e servidor irá falhará[RAJ98].
Como já descrito acima, uma referência a um objeto remoto pode ser obtida através da
passagem de parâmetros para métodos. Assim, quando um cliente invoca um método, os
parâmetros são transformados em blocos de dados(marshalling na linguagem RPC14) pelo
stub e são enviados a uma máquina servidora remota, através de um protocolo TCP/IP15 e
uma porta anônima de comunicação(Transport). Quando estes blocos de dados(ou
mensagens) chegam na máquina remota, eles serão transformados em
argumentos(unmarshalling) pelo skeleton. Em seguida, ocorre a chamada da
implementação do método convertendo o resultado do objeto referenciado em uma outra
mensagem, mas que será redirecionada à máquina cliente. O stub será novamente utilizado.
Agora ele é o responsável pela extração deste valor de retorno[RAJ98].
14
Remote Procedure Call
15
Transmission Control Protocol/Internet Protocol
19
Apesar do RMI ser um método original de Java e por isso só usado nesta linguagem,
existem outros tipos de métodos que oferecem serviços orientados a objetos, que permitem
uma integração com Java e valem ser citados. Os mais conhecidos são DCOM e CORBA,
principalmente este último[RAJ98].
CORBA
Em uma arquitetura CORBA tudo depende do ORB16. Este funciona como um barramento
de objetos, capaz de realizar a comunicação entre o cliente e o servidor. O ORB está
localizado no servidor e tem a função de localizar um objeto invocado(através de métodos)
e encaminhá-lo de volta ao cliente que fez o pedido. Cada objeto servidor CORBA tem
uma interface que expõe um conjunto de métodos. Para realizar um serviço, o cliente
adquiri uma referência do objeto remoto, exatamente como no RMI, a não ser pelo fato de
16
Object Request Broker
20
DCOM
Neste capítulo mostramos os aspectos principais da linguagem Java, bem como abordamos
alguns padrõe s de comunicação de objetos distribuídos, em particular o Java RMI. Como o
interesse principal deste trabalho é testar o uso de Java em PSEE’s, adotamos o RMI,
como padrão de comunicação no nosso protótipo.
21
Capítulo 4
Este capítulo da monografia destina -se ao estudo dos recursos oferecidos pela linguagem
Java voltados para um ambiente ExPSEE. Para a realização do estudos foram aplicadas
técnicas de programação e também conhecimentos teóricos de Java amplamente aceitos no
âmbito computacional. Com isso, foi possível a construção de um protótipo com vistas a
realização de testes operando em modo cliente/servidor.
O modelo MVC 17, mostrado na figura 7, tem como objetivo a representação de uma
estrutura básica formada por classes concretas e abstratas e seus relacionamentos, sendo
esta estrutura chamada de framework . Um framework MVC é um método de construção
que separa logicamente interface, estrutura e comportamentos em vários módulos. Dessa
forma, é possível a implementação de um protótipo sujeito a substituições, sem
comprometer certas partes do ambiente[ITO97].
17
Model/View/Controller
22
Desta maneira a visão é responsável por capturar eventos disparados, o Controlador pela
interpretação das ações passadas à ele pela Interface e pela realização de determinado
serviço, utilizando o modelo de dados. O resultados processados na base de dados(Modelo)
retornam ao Controlador, sendo padronizadas por ele, para então serem processadas, agora
pela interface. E neste momento que o feedback com o usuário ocorre[ITO97].
Usuário
Manipulação realimentação
Visão
ação ações
interpretada solicitadas
Controlador
ações resultados
solicitadas
Modelo
a sua interface por exemplo, pode permanecer intacta, enquanto o comportamento do resto
do ambiente é modificado ou vice -versa.
Com o estudo de aplicações Java , banco de dados e principalmente RMI foi possível
realizar uma nova arquitetura de ambiente, que é apresentado na figura 8. Ela caracteriza-
se pelo fato de que é baseada na arquitetura proposta pela do ExPSEE.
Cliente
HTML/Applets
(GerenciaApplet)
Web Browser
Ambiente Run-time
Interface
Carregador de classes
Verificador de byte-code
Interpretador de Byte-code
JVM
Bibliotecas de
classe Java
RMI
Máquina
Servidora
Método Remoto
(método_remoto) Gerenciador de Processos e
Gerencador de Processos seus módulos
(Gerencia)
classes
(módulos)
tarefas cargos ferramentas artefatos
SGBD
MySQL
Repositório de Dados
Servidor
de Banco de Dados
18
Hiper Text Markup Language
25
4.4.1 JDBC
Para a aplicação de um banco de dados em applets, existem dois modelos que podem ser
seguidos. O modelo duas-camadas e o modelo três-camadas.
No modelo de dua s-camadas, conforme ilustra a figura 11, um applet Java fala diretamente
com a base de dados instalado na própria máquina servidora. O driver JDBC se comunica
com o sistema gerenciador da base de dados inicialmente acessado[SUN97]. Este modelo é
baseado na configuração cliente/servidor, onde a máquina do usuário serve como cliente, e
a máquina onde está alojada o banco de dados como servidor. O JDBC é carregado para
um cliente, quando o applet Java é referenciado na máquina servidora.
19
Java DataBase Connectivity
27
SGBD-protocolo
proprietário
HTTP,RMI, CORBA
Aplicação Máquina
Servidora(Java) Servidora
(Camada do Meio)
JDBC
SGBD - protocolo
proprietário
Banco de Servidor da Base de
dados Dados
20
Structured Query Language
21
Sistema Gerenciador de Banco de Dados
28
Para que isso funcione, é preciso ser declarado o nome da máquina servidora de banco de
dados no arquivo que contém o JDBC.
Através das vantagens mostradas neste projeto, optou-se pelo modelo de três camadas para
a ser utilizado no projeto. Ainda em relação ao desenvolvimento do projeto, são utilizadas
três máquinas. Uma contendo a interface(cliente), e outras duas atuando como servidores.
Outra vantagem é que o usuário pode empregar uma API de alto-nível traduzida pela
camada do meio em uma chamada de baixo-nível[SUN97]. Logo, esta camada do meio
pode providenciar uma melhora de desempenho, compensando a desvantagem da
transferência de dados entre três camadas ao invés de duas.
Abaixo está um pequeno exemplo de como o JDBC pode ser usado em um applet. A
declaração dbUrl contém o endereço do servidor de dados.
Carregando o driver
Class.forName("gwe.sql.gweMysqlDriver");
Setando a conexão
Connection con = DriverManager.getConnection(dbUrl,user,password);
29
Statement j = con.createStatement();
4.4.3 MySQL
O fato dela ser relacional, implica em uma maior facilidade de integração com o JDBC,
porém apresenta um problema. A incompatibilidade de tipos entre uma linguagem
orientada a objeto e uma base de dados relacional. Isto ocorre, já que em Java existirá um
objeto não equivalente ao armazenado no banco de dados. O uso de um banco de dados
orientado à objetos facilitaria a resolução deste problema[MAU98], porém para efeito de
prototipação, o MySQL mostrou-se mais adequado devido a disponibilidade e facilidade de
uso.
Neste projeto, o MySQL apresenta uma boa integração com o driver JDBC Java ,
facilitando muito a integração Java/MySQL. A bases de sua construção suportam um
conjunto de rotinas, o que garante a sua usabilida de por um bom tempo[MYS98].
O uso de declarações SQL é um de seus pontos mais fortes. Pois SQL atingi atualmente o
status de ser uma das linguagem de base de dados mais conhecidas e estudas no mundo.
RMI foi o método priorizado no projeto, não pelo fato de ser o padrão mais adequado, mas
simplesmente por ser um método oriundo e exclusivo de Java. Desta forma, a idéia
principal do projeto é seguida - o desenvolvimento de PSEE para testes baseado somente
em técnicas de programação Java .
?? a classe tarefa
?? a classe cargo
?? a classe ferramenta
?? a classe artefato
Para um objeto ser manipulado, Java /RMI fornece um conjunto de facilidades que
permitem a integração entre interface e gerenciador de processos e repositório de dados,
em modo cliente/servidor. Como facilidades, podem ser citadas a implementação de uma
interface remota localizada no servidor onde são declarados todos os métodos que serão
chamados remotamente. Neste projeto bastou a definição de um método. Este método é
que faz o papel do gerenciador de processos.
32
Definir uma instância de classe que implementa a interface remota e manipula exceções
que podem ocorrer durante a chamada de um método remoto é um dos recursos disponíveis
desta interface (declarada através de uma classe java.rmi.RemoteException pertencente a
Java). A interface remota deve ser declarada no servidor e deve também declarar o tipo de
dado do objeto referenciado que é passado como um valor de retorno para o cliente(String
valor(int evento)).
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface metodo_gerencia extends Remote{
String valor(int evento) throws RemoteException;
}
Figura 13 –Interface remota do ambiente
Um objeto deve declarar que é implementação de pelo menos uma interface remota(através
do UnicastRemoteObject) e desta forma criar um objeto remoto simples. Assim, é possível
fornecer implementações para os métodos que podem ser invocados remotamente, como
ilustradas na figura 14.
Também deverão ser criadas uma ou mais instâncias do objeto remoto para ficarem
disponíveis à aplicação cliente(através do Gerenciador obj). Uma vez criado este objeto,
ele estará pronto para escutar alguma "chamada" remota do cliente.
33
Gerenciador funciona como o gerenciador de processos do ambiente, pois é nele que serão
especificados a sequência de processos. Os parâmetros int evento pertencentes a valor()
(invocados através do cliente) são uma forma do gerenciador distinguir quais eventos
foram acionados na interface cliente e consequentemente indicar qual processo deve ser
aplicado.
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
public class Gerenciador extends UnicastRemoteObject implements
metodo_gerencia {
public String valor(int evento) throws RemoteException {
if (evento=1)
{
cargo.obj = new cargo.obj;
return obj.cargo;
}
......
}
......
public static void main(strings args[])
{
Gerenciador obj = new Gerenciador();
Naming.rebind("//sequoia.din.uem.br:1999/metodo_gerencia",obj);
......
}
}
Figura 14- O Gerenciador de Processos
34
Por exemplo, se o cliente invoca o objeto valor(1), ou seja, o valor com parâmetro igual a
1 será indicado qual aplicação e qual módulo gerenciador vai realizá-la. Se o parâmetro for
diferente de 1, então outros módulos serão comunicados.
Uso de classes
O driver JDBC(responsável pela comunicação com a base de dados MySQL) está instalado
nos módulos. Com isso é possível um módulo gerenciador pode obter as informações
necessárias para o desenvolvimento deste processo inseridas no banco de dados. Logo, ele
está separando os domínios de gerenciamento.
O return , localizado no fim do arquivo contém os dados a serem retornados pelo módulo
ao gerenciador de processos. Ao chegar no gerenciador, ele será novamente retornado, só
que agora a interface do ambiente.
import java.net.URL;
import java.sql.*;
import java.rmi.*;
import gwe.sql.*;
public class cargo {
public String cargo()
{
String informações;
........
(realiza as consultas ao banco de dados)
return informações;
}
}
Figura 15 – Módulos Gerenciadores
35
O applet, apresentado na figura 16, também invoca valor(1) como um objeto e até os seus
parâmetros. O seu valor de retorno será armazenado em uma var iável do tipo String
chamada message(usada para imprimir o valor de retorno na interface do ambiente).
import java.awt.*;
import java.rmi.*;
message = obj.valor(1);
Por fim, será construída uma página HTML, ilustrada na figura 17, onde será carregado o
applet Java. Depois de compilado na máquina servidora, o applet recebe a extensão class e
36
é transformado em byte-codes. Assim, está pronto para ser usado pelos padrões da web e
pela máquina cliente(onde o applet fica instalado) .Os applets diferem entre si, somente no
momento que invocam o objeto valor() através de parâmetros diferentes, ou seja, quando
indicam qual processo deve ser aplicado pelo gerenciador.
<HTML>
<applet
code="GerenciaApplet_tarefa.class" >
</applet> </HTML>
4.6 Testes
Quanto as outras características, o PSEE baseado em Java é projetado para rodar através
da Internet com o auxílio de arquivos HTML, próprios para o protocolo HTTP, enquanto
que o ExPSEE usa uma pequena rede centralizada.
Inclusão dos tipos cargos, tarefas, artefatos e ferramentas. A criação de uma arquitetura de
processos será parecida com a do projeto ExPSEE e a sua principal característica está no
relacionamento entre os tipos existentes. Assim que criados, os dados serão armazenados
na base de dados.
37
Abrir arquitetura
Localizar e carregar os dados pertencentes a uma arquitetura referencia da. Para isso um
pedido do cliente para o servidor é realizado.
Remover arquitetura
Quando não se deseja mais utilizar determinados tipos(ou dados) de uma arquitetura eles
são removidos da base de dados.
Todos estes testes precisam explorar bem a integração repositório de dados e classes
remotamente instanciadas, pois é através desta comunicação que serão realizadas as
declarações SQL, como INSERT, REMOVE e SELECT .
Capítulo 5
Conclusões
O fato do ambiente ser proposto para o uso em sistemas distribuídos, fez de Java a
linguagem ideal para o desenvolvimento deste trabalho. Java possui fortes “laços” com o
paradigma cliente/servidor, além de poder ser aplicado em qualquer plataforma, permitir a
criação e manipulação de threads e muitos outros fatores já citados neste trabalho. Tudo
isso mostra que atualmente Java aponta como uma das melhores linguagens de
programação para uso em redes, seja aplicado em programas convencionais, seja em
programas mais complexos e de grande porte(como um PSEE), normalmente orientados a
objeto.
Com isso, objetivou-se a aplicação de testes mais nas formas de integração de banco de
dados, módulos gerenciadores, gerenciadores e interface.
O uso do driver JDBC oferece um bom suporte de integração entre o ambiente e banco de
dados MySQL. Um banco de dados constitui a base de todas as informações de um PSEE.
39
O RMI também providencia suportes para construção de PSEE, pois oferece recursos de
orientação a objetos estendido para uso em redes através de protocolos HTTP.
Com RMI é possível usar métodos de invocação remota(neste trabalho foi usado apenas
um) funcionando como um gerenciador de processos. Assim, este método é usado como
um gerenciador de PSEE, podendo dizer quais aplicações serão realizadas e por qual
módulo.
Mesmo o RMI sendo testado, analisado e observado como um método muito útil na
construção de PSEE’s, podemos referenciar CORBA como o padrão que melhor oferece
serviços de integração de objetos remotos. Desta forma, CORBA pode ser destacado para
futuros trabalhos envolvendo Java e PSEE, pois apresenta:
Com mostra a comparação, CORBA está a frente de RMI tanto em desempenho quanto no
número de recursos oferecidos[UNI98]. Mas, RMI apresenta facilidades que não seriam
encontradas em CORBA, tais como:
Além de CORBA, outras aplicações Java podem ser destacadas para futuros trabalhos, tais
como:
Referência Bibliográficas
[BAR98] Baruzzi, Flávio. Por que Integrar Bancos de Dados à World Wide Web ,
Developer’s Magazine ,Janeiro de 1998, Ano 2, N. 17.
[BRA98] Brasileiro, Francisco Vilar e Stanchi, Tatiana Simas. Quando CORBA encontra
Java e World Wide Web: novos paradigmas para a programação cliente servidor, XII
Simpósio Brasileiro de Engenharia de Software : Tutorial, 1998.
[GIM98] Gimenes, Itana M. S., Silva, Sérgio R.P., Ito, Sérgio Akira, e Haeberer,
Armando. FORMLAB: Um Ambiente Integrado de Apoio aos Métodos Formais para o
Desenvolvimento de Software, Universidade Estadual de Maringá, 1997.
[RAJ98] Raj, Gopalan Suresh. A Detailed Comparision of CORBA, DCOM and Java/RMI.
Rede Internet, 1998.
[SUN97]JDBCTM Database Access from Java TM: A Tutorial and Annotated Reference. Sun
Microsystem, Rede Intrenet,1997
[UNI98] Comparando uma Aplicação Cliente/Servidor usando RMI com uma usando
CORBA, Rede Inter net, UNICAMP -Universidade de Campinas, www.dcc.unicamp.br-
~973245-rmi, 1998
43
Bibliografia
Recife Java Team, The, composto por Alcantara, A.A., Fernandes, J.H.C., Martins, J.F.T.,
Pepeu, J.F.S., Meira, S.L., Introdução a Java, Universidade Federal de Pernambuco,1997.