- Faculdade Mater Dei

Propaganda
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
MATER DEI
Vol. 3 – número 3 – ano 2006 – Anual
Pato Branco
Paraná
1
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
Catalogação na fonte por:
Berenice de Lima Rodrigues/Bibliotecária
CRB-9/1160
R454 Revista de Informática Mater Dei / Faculdade Mater
Dei. -- Pato Branco, PR, v. 3, n. 3, jan./dez. 2006.
Periodicidade: anual
ISSN: 1806-857X
1. Informática - Periódicos.
CDD: 004.05
2
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
REVISTA DE INFORMÁTICA
MATER DEI
ÓRGÃO DE DIVULGAÇÃO CIENTÍFICA DO CURSO DE
BACHARELADO EM SISTEMAS DE INFORMAÇÃO DA
FACULDADE MATER DEI
ISSN 1806-857X
Vol. 3 – número 3 – ano 2006 – Anual
Pato Branco - Paraná
3
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
Os artigos publicados na Revista de Informática Mater Dei são de responsablidade de seus autores. As informações neles
contidas, bem como as opiniões emitidas, não representam pontos de vista da Instituição de Ensino Superior: Faculdade Mater Dei.
Diretor Geral
Vice-Diretora Geral
Diretor Executivo
Coordenador de
Sistemas de Informação
Editor
Dr. Guido Victor Guerra
Profa. Ivone Maria Pretto Guerra
Prof. Rubens Fava
Prof. Géri Natalinho Dutra, Mestre pela UFPR
Prof. Omero Francisco Bertol, Mestre pela PUC-PR
[email protected]
Supervisor Editorial
Prof. Dirceu Antonio Ruaro, Doutor pela UNICAMP
[email protected]
Conselho Consultivo
Prof. Ademir Roberto Freddo, Mestre pelo CEFET-PR
[email protected]
Profa. Andréia Smiderle, Mestre pela UFPR
[email protected]
Profa. Beatriz Terezinha Borsoi, Mestre pela UFPR
[email protected]
Prof. Edenilson José da Silva, Mestre pela UFPR
[email protected]
Prof. Fernando José A. Schenatto, Mestre pela UFSC
[email protected]
Prof. Fernando Schütz, Mestre pela UFSC
[email protected]
Prof. Géri Natalino Dutra, Mestre pela UFPR
[email protected]
Prof. Henrique Oliveira da Silva, Doutor pela UFRGS
[email protected]
Prof. Marcos Vinícius de Bortolli, Mestre pela UFPR
[email protected]
Profa. Soelaine Rodrigues, Mestre pela UFSC
[email protected]
Secretária Editorial
Diagramação e Capa
Revisão Ortográfica
Marisol Tomasini Dutra
Lilyane Helena Sartori
Impressão
Maureen Elizabeth D´Aquino Mendry
(46)3224-2277
Faculdade Mater Dei
Fone: (46)3224-2882 - www.materdei.edu.br
4
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
APRESENTAÇÃO
A utilização de ferramentas de informática na atualidade é fator indiscutível.
O que torna-se prioridade é oferecer recursos e espaços para a divulgação de tantas
novidades.
Com periocidade anual, a revista do curso de Sistemas de Informação da
Faculdade Mater Dei pretende ser um elo entre a instituição e a comunidade na questão da informática, abrindo uma nova possibilidade para que acadêmicos, professores
e profissionais da área, apresentem o resultado de seus estudos e pesquisas.
Todos os envolvidos no processo de criação do terceiro volume desta revista
acreditam que a modernidade pode ser suplantada a cada dia e cabe a eles buscar os
caminhos para que um número cada vez maior de pessoas possa usufruir de tanto
conhecimento, aplicando-o no seu dia-a-dia, o que resulta na melhoria da qualidade de
vida de todos.
A Faculdade Mater Dei sente-se orgulhosa de oferecer à comunidade esta
revista que, muito mais do que um informativo técnico, é uma das novas janelas para
a inclusão digital.
Dr. Guido Victor Guerra
Diretor Geral
5
FACULDADE MATER DEI
6
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
NOTA DO EDITOR
Neste terceiro número da Revista de Informática Mater Dei, são apresentados artigos de
professores, pesquisadores, especialistas, acadêmicos e profissionais da área de informática.
Na abertura o acadêmico Maykon Titon apresenta o seu trabalho de diplomação no qual
descreve a implementação de um framework para criação e manutenção de bancos de dados através
de sentenças SQL. No artigo seguinte, o professor Robison Cris Brito e o acadêmico Juliano
Simionatto, falam sobre a linguagem Java na automação industrial. A seguir, a pesquisadora e
professora Rúbia Eliza de Oliveira Schultz, apresenta parte da sua pesquisa de mestrado abordando
algoritmos de programação genética.
No quarto artigo, o especialista Luciano Basso Buzzacaro, discorre sobre a importância da
administração de recursos de hardware e software em ambientes corporativos. Concluindo a primeira
metade da revista, um grupo de acadêmicos do Departamento de Sistemas de Informação da UNIPAR
de Cascavel, apresentam uma proposta para a geração de interfaces adaptativas. No artigo seguinte,
Jair Ott e Pablo A. Michel, também acadêmicos da UNIPAR, abordam a importância do gerenciamento
de riscos em projetos de desenvolvimento de software.
Ainda nesta edição, o analista de sistemas, Evandro Miguel Kuszera, descreve a implementação
de um firewall baseado em GNU/Linux que utiliza as funcionalidades de bridging e filtro de pacotes
fornecidos pelo kernel do sistema operacional. Em seguida, a mestranda Lissandra Luvizão Lazzarotto
e seu colega Alcione de Paiva Oliveira, apresentam aspectos teóricos e aplicações relacionadas ao
data mining e às redes neurais.
Completando esta edição, o professor Elcio Luiz Pagani Bortolin, fala sobre a configuração
de acesso remoto com autenticação de usuários através dos modelos de segurança radius e portslave.
No último artigo, o professor Jorge Roberto Grobe e o acadêmico Gustavo Julian Grobe, descrevem
a aplicação da estatística em resultados de análise de solos utilizando o aplicativo Microsoft® Excel.
Boa Leitura !
Prof. Omero Francisco Bertol, M.Sc.
[email protected]
Editor
7
FACULDADE MATER DEI
8
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
SUMÁRIO
ARTIGO 1 - MAYKON TITON
FRAMEWORK PARA CRIAÇÃO E MANUTENÇÃO DE BANCOS DE DADOS SQL.....................11
ARTIGO 2 – ROBISON CRIS BRITO E JULIANO SIMIONATTO
JAVA NA AUTOMAÇÃO INDUSTRIAL.............................................................................19
ARTIGO 3 - RÚBIA ELIZA DE OLIVEIRA SCHULTZ
PROGRAMAÇÃO GENÉTICA: EVOLUINDO PROGRAMAS DE COMPUTADOR.......................27
ARTIGO 4 - LUCIANO B. BUZZACARO
ADMINISTRAÇÃO DE RECURSOS DE HARDWARE E SOFTWARE EM AMBIENTE CORPORATIVO..........................................................................................................................37
ARTIGO 5 - DOUGLAS T. S. FINKLER, ANDRÉ A. DOS SANTOS, MARILSON M. DOS SANTOS E
GIANI CARLA ITO
UMA PROPOSTA PARA A GERAÇÃO DE INTERFACES ADAPTATIVAS...................................45
ARTIGO 6 - JAIR OTT E PABLO A. MICHEL
A IMPORTÂNCIA DO GERENCIAMENTO DE RISCOS EM PROJETOS DE DESENVOLVIMENTO DE
SOFTWARE: ESTUDO DE CASO DO SISTEMA DE CONTROLE DE VEÍCULOS..........................51
ARTIGO 7 - EVANDRO MIGUEL KUSZERA
IMPLEMENTAÇÃO DE BRIDGING FIREWALL UTILIZANDO GNU/LINUX.................................59
ARTIGO 8 - LISSANDRA LUVIZÃO LAZZAROTTO E ALCIONE DE PAIVA OLIVEIRA
ASPECTOS TEÓRICOS E APLICAÇÕES RELACIONADOS AO DATA MINING E ÀS REDES
NEURAIS.....................................................................................................................65
ARTIGO 9 - ELCIO LUIZ PAGANI BORTOLINI
CONFIGURAÇÃO DE ACESSO REMOTO COM AUTENTICAÇÃO DE USUÁRIOS ATRAVÉS DE
RADIUS E PORTSLAVE...................................................................................................75
ARTIGO 10 - JORGE ROBERTO GROBE E GUSTAVO JULIAN GROBE
APLICAÇÕES DA ESTATÍSTICA USANDO MICROSOFT EXCEL..............................................83
9
FACULDADE MATER DEI
10
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 1
FRAMEWORK PARA CRIAÇÃO E
MANUTENÇÃO DE BANCOS DE
DADOS SQL
MAYKON TITON1
[email protected]
RESUMO
A
utilização de bancos de dados baseados no padrão SQL fornece meios relativamente simples de realizar mudanças na estrutura dos
dados através de scripts SQL; contudo, o
gerenciamento desses scripts torna-se um problema à medida que aumenta a demanda por
alterações na base de dados. Para minimizar esse
problema, é necessário o uso de um Framework
capaz de facilitar as operações com o banco de
dados. Neste cenário este artigo, que se baseia
na monografia de minha autoria com o título de
“Framework para criação e manutenção de bancos de dados SQL em Delphi para .NET”, visa descrever os principais aspectos relacionados ao funcionamento do Framework proposto.
1. A QUESTÃO DA ATUALIZAÇÃO DAS
ESTRUTURAS DE DADOS
Muitos dos aplicativos atualmente desenvolvidos utilizam algum tipo de banco de dados.
Na maioria dos casos, é utilizado um banco de
dados com suporte à linguagem SQL (Structured
Query Language, ou Linguagem de Consulta
Estruturada), pelo fato de que esse é o padrão
dominante de bancos de dados, especialmente
para uso comercial.
Grande parte das aplicações que utilizam
bancos de dados tem um problema relacionado
à atualização de suas estruturas de dados, quando se faz necessário modificar a mesma: é neces1
Universidade Tecnológica Federal do Paraná (UTFPR).
REVISTA DE INFORMÁTICA
sário desenvolver scripts em SQL capazes de transformar uma estrutura já existente, que está em
uso, para uma nova estrutura, de forma que não
ocorra perda das informações já incluídas. Nessa
categoria encontram-se vários tipos de modificações, como a adição ou exclusão de colunas
em uma tabela, manutenção de stored
procedures e triggers, entre outras coisas que
eventualmente necessitam de modificações em
uma base de dados. Tais alterações são feitas através de scripts no padrão SQL, capazes de modificar as estruturas anteriormente citadas.
No caso de aplicativos desenvolvidos como
Sistemas de Informação corporativos, esse cenário de modificação das estruturas de dados é relativamente comum, a fim de adaptar o sistema
às necessidades da empresa. Especialmente nesses casos, o problema da atualização do modelo
lógico das informações armazenadas é bem significativo, e despende um certo esforço para criar, manter e distribuir os scripts responsáveis pela
atualização de cada versão do modelo lógico.
Além disso, como cada script é construído presumindo uma estrutura de dados específica, eles
se tornam obsoletos assim que uma nova atualização do modelo lógico de informações se faz
necessária.
Também há o problema das atualizações
seqüenciais: se uma determinada base de dados
encontra-se em uma versão X, e ela deve ser atualizada para uma versão X+k, é necessário que
seja feita a execução do script que atualiza a versão X para a versão X+1, depois o script que atualiza a versão X+1 para a versão X+2, e assim
por diante, até X+k; isso acontece porque cada
script presume a existência de uma determinada
estrutura de dados, e a única forma de garantir
que essa estrutura vai estar de acordo com o esperado é fazendo as atualizações em seqüência.
Tudo isso gera um problema de distribuição desses scripts, e necessita de algum esforço para que
esse processo seja estruturado.
Com o uso de um Framework que seja capaz de lidar com esses problemas, todo o processo de manutenção das estruturas de dados,
triggers e stored procedures seria desnecessário,
pois o próprio Framework seria responsável por
gerar os comandos SQL necessários para tornar
a estrutura lógica de informações existente no
11
FACULDADE MATER DEI
servidor de banco de dados igual ao modelo
descrito através do uso do Framework. Ou seja,
com o uso do Framework proposto todo o trabalho atribuído à criação e manutenção de scripts
SQL direcionados para a manutenção das estruturas de dados não seria mais necessário, reduzindo assim o esforço para modificar o modelo
lógico de armazenagem das informações utilizadas por um aplicativo.
Por conseqüência, o Framework também
seria responsável por criar a base de dados, caso
ela ainda não esteja criada no SGBD. Também é
interessante prover, através do Framework, uma
estrutura capaz de fornecer um controle de versão das estruturas de dados utilizada pelo
aplicativo.
2.
SGBD E O PADRÃO SQL
Um SGBD (Sistema Gerenciador de Banco
de Dados) é o conjunto de softwares capazes de
realizar o gerenciamento de uma base de dados.
O principal objetivo de um SGBD é retirar da aplicação cliente a responsabilidade de gerenciar o
acesso, manipulação e organização dos dados,
permitindo que através de uma interface padronizada seja possível que seus clientes incluam,
alterarem ou consultem informações. Em bancos
de dados relacionais a interface é constituída
pelas APIs (Application Programming Interface)
ou drivers do SGBD, que executam comandos na
linguagem SQL.
Na definição de Korth e Silberschatz
(1989), um SGBD pode ser definido por:
“... uma coleção de arquivos inter-relacionados e um conjunto de programas, que permitem a diversos usuários acessar e modificar
esses arquivos. Um propósito central de um
sistema de banco de dados é proporcionar aos
usuários uma visão abstrata dos dados. Isto é
o sistema esconde certos detalhes de como os
dados são armazenados ou mantidos. Porém,
para que o sistema seja utilizável, os dados
precisam ser recuperados eficientemente.”
Segundo Garcia-Molina e Ullman (2001),
um SGBD é caracterizado por:
“... sua habilidade de admitir o acesso eficiente a grandes quantidades de dados, os quais
persistem ao longo do tempo. Eles também são
12
REVISTA DE INFORMÁTICA
caracterizados por seu suporte para linguagens
de consulta poderosas e transações duráveis
que podem ser executadas de forma concorrente de um modo que parece atômico e independente de outras transações.”
Um sistema gerenciador de banco de dados é caracterizado por ser extremamente complexo, sendo responsável pela persistência, organização e recuperação dos dados. Basicamente,
um SGBD é responsável por disponibilizar:
• Métodos de acesso;
• Integridade Semântica;
• Segurança;
• Controle de Concorrência;
• Independência.
Existem vários modelos de implementação
desses requisitos. Do ponto de vista da aplicação
cliente, a característica fundamental é a questão
do método de acesso, que consiste normalmente da utilização de uma linguagem padronizada, na qual a aplicação cliente pode fazer requisições ao SGBD. Normalmente esta linguagem é
dividida em partes:
• Linguagem de definição de dados (DDL, Data
Definition Language, do inglês).
• Linguagem de manipulação de dados (DML,
Data Manipulation Language, do inglês).
A fim de suprir essa necessidade de definição de linguagens para tratamento das partes
acima citadas, foi desenvolvido o padrão SQL que
é amplamente utilizado nos SGBDs atuais. A linguagem SQL então opera como um meio de comunicação entre o cliente e o SGBD, sendo capaz de suportar todas as especificações
estabelecidas para a DDL e DML em um determinado SGBD.
A SQL (Structured Query Language, ou Linguagem de Consulta Estruturada), é uma linguagem de pesquisa declarativa para bancos de dados relacionais. O padrão SQL deriva da Álgebra
Relacional, e muitas de suas funções são derivadas desse modelo.
Existem muitas versões da SQL. Originalmente, essa linguagem foi desenvolvida pela IBM
no Laboratório de Pesquisa de San José, e
implementada inicialmente como parte do projeto do Sistema R no início dos anos 70. Com o
tempo a SQL se estabeleceu como um padrão,
FACULDADE MATER DEI
vindo a incorporar a maioria dos produtos comerciais atuais.
Em 1986 o ANSI (American National
Standards Institute) e a ISO (International
Standards Organization) estabeleceram um padrão para a SQL. Em 1989 foi publicada uma
extensão para esse padrão, e em 1992 foi feita
uma nova revisão, gerando assim o padrão SQL92, que é amplamente difundido.
A linguagem SQL pode ser dividida em diversas partes:
• Linguagem de definição de dados (DDL, Data
Definition Language), que proporciona comandos para definição de esquemas de relações,
exclusão de relações, criação de índices e modificação nos esquemas de relações.
• Linguagem interativa de manipulação de dados (DML, Data Manipulation Language), é
uma linguagem de consulta baseada tanto na
álgebra relacional quanto no cálculo relacional
de tuplas. Também inclui comandos para adição, exclusão e modificação de tuplas (linha
de uma relação) no banco de dados.
• Definição de visões: uma parte da SQL DDL
que possui comandos para definição de visões.
• Autorização: parte da SQL DDL com comandos responsáveis por definir permissões de
acesso a relações e visões.
• Integridade: Outra parte da SQL DDL, possui
comandos para especificação de regras de integridade que os dados armazenados devem
obedecer. Isso inclui a manipulação de chaves
primárias, chaves estrangeiras, restrições de
valores de domínio, entre outros.
• Controle de transações: A SQL inclui comandos para especificação de inicialização e
finalização de transações no banco de dados.
Por se tratar de um padrão extremamente
difundido, a SQL representa uma alternativa viável para ser utilizada no Framework proposto.
3.
MODELO DE IMPLEMENTAÇÃO
É notório o problema que existe para criar,
manter e distribuir scripts SQL de atualização da
base de dados. A necessidade de alterar as estruturas lógicas de armazenamento de informações
em softwares da área de Sistemas de Informação
é relativamente alta, e de uma forma geral ocorre
REVISTA DE INFORMÁTICA
com freqüência significativa em qualquer software
que faça uso de um SGBD. Para resolver esse problema, o Framework proposto visa disponibilizar
ao desenvolvedor de software uma forma simples
de manter atualizada a estrutura lógica das informações utilizada por seus aplicativos. Isso é feito
através de um conjunto de classes capazes de abstrair as estruturas de dados, tornando-as simples
de serem manipuladas.
O Framework, chamado de DataStruct, consiste essencialmente das seguintes classes:
• TInst: Responsável pelo processo de criação
e manutenção das estruturas de dados no servidor. É capaz de abstrair tabelas, índices, restrições, stored procedures e triggers e fornecer uma forma estabelecer controle de versão
sobre o modelo de dados.
• TSQLGen: Uma classe especial, cujos métodos são abstratos, utilizada como interface
entre a classe TInst e as classes responsáveis
por gerar os scripts SQL específicos de cada
SGBD. Seus métodos abstratos são utilizados
como um indicativo do que as classes descendentes devem implementar.
• TDSConnection: Classe com métodos abstratos, utilizada como interface entre a classe
TInst e a classe que realiza a conexão efetiva
com o banco de dados. Essa classe não é
instanciada diretamente, mas sim as suas classes descendentes. Seus métodos abstratos são
utilizados como um indicativo do que as classes descendentes devem implementar.
• TDSQuery: Com objetivos semelhantes à classe TDSConnection, compõe-se de uma coleção de métodos abstratos, que atuam como
uma interface, especificando o que as classes
descendentes devem implementar. As classes
descendentes de TDSQuery devem
implementar as funcionalidades descritas nesta
classe, que são relativas a consultas de dados.
Essa classe não é instanciada diretamente.
• TTableDescriptions: Classe capaz de
encapsular uma coleção de objetos
TTableDescriptionItem. Esta classe é
encapsulada por TInst.
• TTableDescriptionItem: Descreve os dados referentes a uma tabela, como seu nome e campos no banco de dados.
• TFieldDescriptions: Armazena uma coleção
de TFieldDescriptionItem e é utilizada por
TTableDescriptionItem.
13
FACULDADE MATER DEI
• TFieldDescriptionItem: Abstrai os dados referentes aos campos de uma tabela no banco
de dados.
As classes acima descritas representam o
núcleo do Framework. Contudo, há uma série de
classes auxiliares, como classes que descrevem
os índices, restrições, stored procedures e triggers.
A idéia básica de funcionamento do
Framework é a seguinte: em um primeiro momento, todas as estruturas de dados são definidas na forma de instâncias de classes do
DataStruct. Uma vez definidas estas informações,
é chamada uma rotina de uma instância de TInst,
que vai se conectar ao banco de dados e comparar as estruturas de dados existentes no servidor
com a estrutura de dados que está definida na
forma de instâncias de classes naquele momento. Após identificar as diferenças, os comandos
SQL necessários para tornar o modelo de dados
no SGBD igual à estrutura definida em memória
na forma de instâncias de classes são gerados e
emitidos para o banco de dados. Ao final da rotina, a estrutura dos dados no servidor é igual à
estrutura de dados definida localmente, na forma de instâncias de classes.
Dessa forma, o programador não se preocupa em momento nenhum sobre os comandos
SQL que devem ser enviados para o SGBD a fim
de adaptar a estrutura de dados existente às novas necessidades. Tudo o que o programador
precisa fazer é adicionar a estrutura lógica necessária nas instâncias das classes do DataStruct,
e o próprio Framework se encarrega de gerar os
comandos SQL necessários para efetivar a alteração de estrutura dos dados, dispensando o esforço de criar, manter e distribuir scripts SQL para
realizar tal tarefa.
A questão de como obter as informações
da estrutura de dados presente no SGBD é uma
tarefa difícil, pois os metadados (dados sobre os
dados, ou seja, a especificação de que dados estão armazenados e quais as suas características)
são armazenados de formas diversas, dependendo do SGBD utilizado. A fim de resolver esse problema, o DataStruct gerencia tabelas de
metadados criadas e mantidas pelo próprio
Framework, que contém os metadados necessários para efetivar a operação de atualização do
modelo lógico de dados anteriormente descrita.
14
REVISTA DE INFORMÁTICA
Devido à grande quantidade de instruções
SQL específicas de cada SGBD, bem como variações de sintaxe de comandos de uso geral, é necessário modularizar a geração do código SQL
efetivo. Por isso, a classe TInst é responsável apenas por abstrair as principais características das
estruturas de dados, enquanto que um descendente da classe TSQLGen implementa de fato a
montagem dos comandos SQL. Assim, para cada
SGBD pode ser desenvolvida uma classe descendente de TSQLGen específica, sem precisar alterar o código existente na classe TInst. Tal
modularização também facilita enormemente a
utilização de vários SGBDs por uma única aplicação, já que, essencialmente, basta alterar a classe descendente de TSQLGen utilizada por TInst
para que os comandos SQL gerados pelo
DataStruct sejam compatíveis com outro SGBD.
Como a conexão com o SGBD pode ser feita
com o uso de diversas tecnologias de acesso a
dados,
uma
classe
descendente
de
TDSConnection deve ser utilizada, de acordo com
a tecnologia que se deseja utilizar. Por conseqüência da diferença entre classes de cada tecnologia
de acesso a dados, é preciso abstrair também a
consulta aos mesmos (query). Isso é feito através
de uma classe descendente de TDSQuery,
construída para implementar consultas através de
uma tecnologia de acesso a dados específica.
Na figura 1 podem ser vistas as dependências das principais classes do Framework:
Figura 1. Dependências das principais classes do Framework
Estão presentes também no DataStruct uma
série de classes que auxiliam a manipulação dos
FACULDADE MATER DEI
metadados. De uma forma geral, essas classes não
possuem funcionalidades especiais codificadas em
métodos, e são utilizadas essencialmente para armazenar informações utilizados por outras classes.
Nessa categoria estão as classes TFieldMetadata,
TIndexData, TIndexMetadata, TConstraintData,
TPrimaryKeyData,
TPrimaryKeyMetadata,
TForeignKeyData,
TForeignKeyMetadata,
TUniqueKeyData,
TUniqueKeyMetadata,
TCheckConstraintData, TCheckConstraintMetadata,
TStoredProcedureData, TStoredProcedureMetadata,
TTriggerData e TTriggerMetadata. Nas figuras 2 e 3
pode-se visualizar a hierarquia de tais classes.
Figura 2. Hierarquia das classes de dados de constraints
Na figura 2 estão as classes que abstraem
informações relacionados a restrições
(constraints) no banco de dados. Dessas,
TConstraintData é a classe base das demais classes citadas e contém algumas propriedades comuns a todos os tipos de restrições de dados,
como o nome da restrição e o nome da tabela a
que se aplica a restrição. As classes imediatamente
descendentes de TConstraintData representam
tipos específicos de restrições:
• TPrimaryKeyData: Contém as informações necessárias para descrever uma restrição do tipo
chave primária.
• TForeignKeyData: Contém as informações necessárias para descrever uma restrição do tipo
chave estrangeira.
• TUniqueKeyData: Contém as informações necessárias para descrever uma restrição do tipo
chave única.
• TCheckConstraintData: Contém as informações necessárias para descrever uma restrição
do tipo checagem (check).
Já as classes do terceiro nível, descendentes
das classes TPrimaryKeyData, TForeignKeyData,
TUniqueKeyData e TCheckConstraintData são utilizadas para representar os metadados armazena-
REVISTA DE INFORMÁTICA
dos no próprio SGBD.
Figura 3. Hierarquia das demais classes de suporte do
Framework
Presentes na figura 3, existem mais algumas classes de suporte do Framework.
TFieldMetadata é uma classe capaz de armazenar os metadados de um campo de tabela, e uma
instância dessa classe representa uma tupla da
tabela de metadados de campos mantida pelo
Framework. TIndexData e TIndexMetadata são
classes complementares, utilizadas para abstrair
os dados relativos a um índice no banco de dados, onde a primeira é capaz de abstrair os as
informações essenciais de um índice, enquanto
a segunda abstrai uma tupla completa da tabela
de metadados de índices mantida pelo
DataStruct.
As
últimas
classes,
TStoredProcedureData e TTriggerData, são utilizadas para abstrair as informações de Stored
Procedures e Triggers, respectivamente; já suas
classes descendentes TStoredProcedureMetadata
e TTriggerMetadata são capazes de abstrair uma
tupla completa da tabela de metadados de
Stored Procedures e Triggers.
4.
MODELO DE UTILIZAÇÃO
A utilização do DataStruct é relativamente
simples. O primeiro objeto instanciado normalmente é da classe TInst, já que esta classe agrupa toda a definição do modelo lógico. Em seguida, um objeto de geração de SQL deve ser
instanciado (descendente de TSQLGen), de acordo com o SGBD utilizado, e ligado à classe TInst
através da propriedade SQLGenerator presente
na classe TInst.
Do ponto de vista da geração do código
SQL efetivo proporcionado por descendentes de
TSQLGen, atualmente existe suporte para quatro SGBDs diferentes no DataStruct: SQLServer,
MySQL, Interbase e Oracle, que são providos pelas classes TSQLServerGen, TMySQLGen,
15
FACULDADE MATER DEI
TIBSQLGen e TOraSQLGen, respectivamente. Vale
lembrar também, para adicionar suporte a outros SGBDs basta implementar uma classe descendente de TSQLGen com a sintaxe e comandos específicos para o SGBD desejado. A partir
desse ponto já é possível utilizar esse novo SGBD
em conjunto com o DataStruct, bastando ligar
uma instância dessa nova classe a uma instância
de TInst.
O último passo é adicionar os componentes de conexão ao SGBD. O DataStruct tem suporte a duas tecnologias de acesso a dados, que
estão presentes na linguagem em que foi
implementado: dbExpress e dbGo. Essas duas
tecnologias são suportadas pelas classes
TDbExpConnection e TDbGoConnection, respectivamente. Estas classes são descendentes de
TDSConnection, e funcionam como uma
interface entre a classe de conexão específica da
tecnologia escolhida e o DataStruct; por isso,
além dessas classes de interface, é necessário
adicionar uma instância da classe de conexão com
o SGBD específica da tecnologia que se pretende utilizar. As classes descendentes de
TDSConnection não implementam o protocolo
de comunicação em si, atuando apenas como
mediadores entre o DataStruct e o acesso efetivo
ao SGBD. Uma vez adicionadas as instâncias das
classes de conexão efetiva com o SGBD e a instância da classe de interface com o DataStruct,
basta ligar o objeto de interface com a instância
de TInst, através da propriedade DSConnection
presente em TInst.
Um exemplo típico do uso do DataStruct
está demonstrado na figura 4.
REVISTA DE INFORMÁTICA
dbExpress. A ligação entre esses objetos pode ser
visualizada na figura 5.
Figura 5. Ligações entre os objetos do exemplo de uso do
DataStruct (em vermelho)
A definição do modelo lógico dos dados
pode ser feita através de métodos disponíveis na
classe TInst. Para isso existem métodos que definem tabelas, campos de tabelas, índices, restrições, Stored Procedures e Triggers. Tais métodos
devem ser incluídos em eventos específicos disponíveis na classe TInst, como demonstrado na
figura 6.
Figura 6. Eventos de definição do modelo lógico de dados.
Figura 4: Exemplo de uso do DataStruct
Na figura 4, o objeto Inst é uma instância
de TInst; OraSQLGen1 uma instância de
TOraSQLGen; DbExpConnection1 uma instância
de TDbExpConnection e SQLConnection1 uma
instância de TSQLConnection, que é a classe de
conexão com o SGBD nativa da tecnologia
16
Uma vez definidas as instâncias de classes
necessárias e o modelo lógico dos dados, basta
efetivar uma chamada ao método InstallSystem
da classe TInst, em tempo de execução do
aplicativo, para que a estrutura definida nas instâncias de classes do aplicativo seja comparada
com a estrutura existente no servidor, e as altera-
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
ções necessárias sejam feitas automaticamente.
Assim, sempre que necessário o programador
apenas altera a definição do modelo lógico nos
eventos de TInst, sem se preocupar de forma nenhuma com as implicações em gerar scripts SQL
para modificar a estrutura dos dados no SGBD.
REFERÊNCIAS
5.
KORTH, Henry F.; SILBERSCHATZ, Abraham. Sistema de Bancos de Dados. São Paulo: McGrawHill, 1989.
CONSIDERAÇÕES FINAIS
O uso do DataStruct facilita em muito a
manutenção de bases de dados. Através dele é
possível dispensar a criação e manutenção de
scripts SQL necessários para alterar o modelo lógico dos dados utilizados por um software. Devido à enorme flexibilidade do DataStruct, é possível implementar o suporte a praticamente qualquer SGBD utilizando uma ampla gama de
tecnologias; isso é possível graças às classes que
fornecem uma interface padronizada tanto na
questão da geração do código SQL efetivo para
um SGBD quanto na interface com a tecnologia
de acesso a dados. Além disso, a abstração da
conexão com o SGBD possibilitada através das
classes TDSConnection e TDSQuery, permite que
seja possível implementar suporte a praticamente qualquer tecnologia de acesso a dados, bastando implementar descendentes dessas classes
utilizando a tecnologia desejada.
Do ponto de vista da tecnologia envolvida,
o DataStruct representa um modelo funcional e
padronizado de definição da estrutura lógica de
dados utilizada por um aplicativo, facilitando a
manutenção da mesma. Não obstante o
DataStruct seja implementado em uma linguagem específica, o modelo de classes e funcionamento pode ser implementado em qualquer linguagem, representando uma alternativa testada
e comprovada em relação a qualquer outro modelo de definição de dados existente. Em última
análise, o uso do DataStruct aumenta a produtividade do desenvolvedor de software, já que dispensa uma série de atividades necessárias para
manter uma base de dados.
GARCIA-MOLINA, Hector; ULLMAN, Jeffrey
D.;WIDOM, Jennifer. Implementação de Sistemas de Banco de Dados. Rio de Janeiro: Campus,
2001. Pg 19.
TITON, Maykon. Framework para criação e manutenção de bancos de dados SQL em Delphi
para .NET. Monografia (Tecnólogo em Sistemas
de Informação) – UTFPR, Pato Branco.
17
FACULDADE MATER DEI
18
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 2
JAVA NA AUTOMAÇÃO
INDUSTRIAL
ROBISON CRIS BRITO1,
JULIANO SIMIONATTO2
[email protected]
[email protected]
RESUMO
E
ste artigo apresenta as informações necessárias para o desenvolvimento de aplicativos
Java que utilizam a porta serial e paralela. A utilização dessas portas se torna necessário no processo de automação, onde o software acessa remotamente dispositivos eletro-eletrônicos como
lâmpada e sensores.
1.
REVISTA DE INFORMÁTICA
utilizada, pois pode-se usar todo o poder
computacional, como Sistemas Gerenciadores de
Banco de Dados e acesso a rede, unindo-o com
o ato de acionar equipamentos, abrir portas, ligar dispositivos e ainda poder receber informações do meio, como temperatura e pressão. Vale
lembrar que esses hardwares podem ser acionados via Internet, ou ainda via dispositivos móveis, onde o usuário pode enviar ou receber informações de qualquer parte do mundo.
O segredo para que um programa possa
trabalhar com outros hardwares são as portas de
comunicação serial e paralela. Essas portas podem enviar e receber bits. Estes, sendo recebidos
e interpretados por circuitos eletrônicos, chamados interfaces de comunicação, que devem ser
compatíveis com o tipo de comunicação: serial
ou paralela. Essas interfaces podem ser desenvolvidas ou adquiridas em eletrônicas. Seu funcionamento também pode variar de acordo com
a necessidade do aplicativo.
INFORMAÇÕES GERAIS
A
utilização
de
um
ambiente
computacional para o acionamento de dispositivos é algo que vem sendo explorado há muitos
anos, desde os primeiros filmes de ficção científica, onde personagens controlavam equipamentos ou verificavam seus estados utilizando telas
de computadores ou ainda comandos de voz.
Com a difusão dos computadores, esse tipo de
operação tornou-se cada vez mais freqüente. Inicialmente os programadores utilizavam linguagens de programação mais complexas, como C
ou ainda, assembler. Com o avanço das linguagens de alto nível, começaram a ser desenvolvidas rotinas e componentes para o acesso a esse
tipo de recurso, sem a necessidade do programador estudar arduamente seus conceitos e funcionalidades.
A automação é uma técnica cada vez mais
1
Professor da UTFPR – Campus Pato Branco – PR - Brasil.
Via do Conhecimento, Km 1 - Pato Branco – PR - 85503-390.
2
Acadêmico da UTFPR – Campus Pato Branco – PR - Brasil.
Figura 1. Estrutura de um aplicativo que utilize acionamento/
recepção remota
A Figura 1 exibe o funcionamento de um
aplicativo que utiliza o processo de Automação.
O computador, que na verdade pode ser um PDA,
ou mesmo um celular desde que tenha uma porta de comunicação, executa o software desenvolvido. Esse software, modifica as informações
binárias existentes nas portas serial ou paralela
do computador, que por sua vez é ligado em um
dispositivo eletrônico chamado interface. Esse
dispositivo deve ser compatível com a porta utilizada pelo sistema desenvolvido, se o mesmo
utiliza a comunicação pela porta paralela (ex.
porta da impressora, chamada DB-25P). Assim,
deve ser desenvolvida uma interface para receber essas informações no padrão paralelo, acionando interruptores ou liberando energia elétrica para algum acionamento. Também pode ocor19
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
rer o inverso, onde sensores enviam informações
do ambiente para a interface, que encaminham
essas informações para a porta serial/paralela,
onde o software fica recebendo as variações dos
sinais.
Atenção
As portas seriais e paralela estão ligadas
diretamente à placa mãe de seu computador. Muito cuidado ao conectar circuitos
eletrônicos a essa porta, pois, uma descarga elétrica ou um componente com a polaridade invertida poderá causar danos
irreparáveis ao seu computador.
2.
Figura 2 – Comunicação Paralela, cada bit é representado por
uma linha de comunicação e devem chegar ao destino ao
mesmo tempo.
COMUNICAÇÃO SERIAL X PARALELA
É importante, antes do desenvolvimento de
um aplicativo que utilize automação, conhecer
as principais características - particularidades,
vantagens e desvantagens - da comunicação
serial/paralela.
A comunicação paralela é a mais simples
de programar. Por serem enviados todos os bits
simultaneamente, são necessários vários pinos
para comunicação. Para enviar um byte (8 bits)
são necessários 8 pinos, por esse motivo periféricos que utilizam essa comunicação, como algumas impressoras, necessitam de cabos onde no
seu interior se encontram vários fios, e esses cabos devem ser curtos, para não acontecer o
espalhamento de bits (os bits sofrem atrasos aleatórios na transmissão, quanto menor o cabo,
menor o espalhamento).
Outra desvantagem da comunicação paralela é que quando ligamos o computador (boot),
o mesmo costuma enviar informações para os
pinos paralelos, a fim de fazer testes, e se tiver
dispositivos ligados a essa porta, os mesmos serão ligados e desligados de forma aleatória.
Na Figura 2, pode-se ver como funciona a
comunicação paralela e na Figura 3 a porta paralela existente em alguns computadores.
Figura 3 – Conectores DB25 Macho e DB25 Fêmea, o último é
encontrado em alguns computadores para ligar a impressora.
Na comunicação serial, como o próprio
nome sugere, os bits são enviados em série, um
após o outro, e para saber onde termina um byte
e começa o outro, é utilizada uma taxa de transmissão, chamada baudrate, fazendo com que o
transmissor e o receptor trabalhem na mesma
velocidade. Na comunicação serial pode ser usado apenas dois fios, um para enviar informação
e outro para receber. Os cabos costumam ser mais
finos e seu comprimento pode ser maior do que
um cabo paralelo. Hoje, essa é a tecnologia mais
utilizada, a prova é a substituição das portas serias e paralelas tradicionais por portas seriais USB
(Universal Serial Bus ou barramento serial universal). A desvantagem da serial está no hardware
que receberá essas informações, que são mais
complexos. Na Figura 4 temos o funcionamento
da comunicação serial e na Figura 5 é apresentada a porta serial tradicional encontrada em grande parte dos computadores.
Figura 4 – Porta Serial, os bits são enviados um após o outro,
sendo utilizado uma única linha de comunicação.
20
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
4.
Figura 5 – Conectores DB9 Macho e DB9 Fêmea, encontrados
em alguns computadores para conectar mouse.
3. CONVERSÃO DE DECIMAL PARA
BINÁRIO
A conversão de decimal para binário é um
assunto bastante abordado nas graduações e
pós-graduações, embora muitos acadêmicos não
as usem com freqüência. Para fazer a comunicação com as portas é necessário entender bem esse
processo, já que a informação enviada deve ser
em decimal (base 10) mas será transformada em
binário quando chegar na porta.
Uma comunicação com a porta serial/paralela é feita por meio de bits. Cada bit pode conter apenas dois estados lógicos, ligado ( binário
1 ) ou desligado (binário 0). Logo, se tivéssemos
3 bits, teríamos 8 combinações diferentes: 000,
001, 010, 011, 100, 101, 110 e 111. O número
de combinações é dado pela fórmula 2n, onde
dois é o número de variações do binário e n é o
número de bits, Por exemplo para o valor de n
igual a 3 aplica-se: 23 = 8 combinações, a maior
parte das comunicações é feita usando bytes ( 8
bits ). Utilizando 8 bits para n, utilizando a formula, 28 = 256, que vão de 00000000 (todos os
bits desligados) até 11111111 (todos os bits ligados). Para enviar a informação “01010101”
para a porta de comunicação, é necessário fazer
a conversão do número para decimal. Pode-se
utilizar a tabela abaixo:
Tabela 1. Tabela de conversão de decimal para binário
ENDEREÇOS DE MEMÓRIAS
No computador, para ter acesso a informações na memória RAM, é necessário conhecer os
endereços de memória onde se encontram essas
informações. Porém, para acesso as portas seriais
e paralelas, é necessário conhecer o endereço de
memória das mesmas. Além disso, para enviar
uma informação para a porta paralela, você envia a informação ao endereço de memória associada a ela e automaticamente é redirecionado,
escrevendo ou lendo informações fisicamente na
porta paralela.
4.1 Endereço da Porta Paralela
O seu computador nomeia as Portas Paralelas, chamando-a de LPT1. Porém nada impede
de se ter portas paralelas adicionais. Nesse caso,
as demais portas serão chamadas de LPT2, LPT3
e assim por diante. A porta física padrão de seu
computador é a LPT1, e seus endereços são:
378h ( para enviar um byte de dados pela Porta,
o h representa que esse endereço deve ser expresso em hexadecimal), 379h (para receber um
valor através da Porta, 5 bits) e, 37Ah (para enviar mais 4 bits de dados). Às vezes pode estar disponível a LPT2, e seus endereços são: 278h, 279h
e 27Ah, com as mesmas funções dos endereços
da porta LPT1 respectivamente.
4.2 Endereço da Porta Serial
Com a porta serial, o funcionamento é bem
parecido, mas como alguns computadores costumam ter duas portas seriais, elas são chamadas de COM1 e COM2, com os respectivos endereços de memória 3F8h e 2F8h.
Esses endereços podem ser modificados no
SETUP do computador.
5. APIS PARA O TRABALHAR COM
PORTA SERIAL/PARALELA
Somando os resultados: 0x128 + 1x64 + 0x32
+ 1x16 + 0x8 + 1x4 + 0x2 + 1x1 = 85
Logo, 85 em decimal equivale a 01010101 em
binário.
Foram selecionadas duas API’s que trabalham com as portas serial/paralela em Java, são
elas: PARPORT, muito fácil de usar mas trabalha
apenas com a porta paralela e a COMMAPI, desenvolvida pela Sun e que trabalha com ambas:
serial e paralela.
21
FACULDADE MATER DEI
6. DESENVOLVENDO UM APLICATIVO
UTILIZANDO A API PARPORT
A API Parport foi desenvolvida por Juan
Gabriel Del Cid, estudante da universidade de
Galileo na Guatemala para atender a aplicações
que trabalham com a porta paralela.
Na seqüência é preparado o ambiente para
o desenvolvimento de um aplicativo que envia e
recebe informações usando a porta paralela, no
sistema operacional Windows.
O download da API Parport pode ser feito
http://
a
partir
da
seguinte
URL:
www.geocities.com/Juanga69/parport.
6.1 Instalação
Para a instalação da API Parport,
descompacte o arquivo “parport-win32.zip”.
Desta extração resultará uma pasta chamada
“parport”. Copie o arquivo “parport.dll” para o
diretório “bin” do JDK (JAVA_HOME\bin). Também é necessário copiar o arquivo
“ParallelPort.jar” para a pasta “lib” do JDK
(JAVA_HOME\lib) e adicionar esse arquivo no
CLASSPATH do Windows.
6.2 Aplicativo Desenvolvido
O aplicativo desenvolvido na Listagem 1 faz
o envio de informação para a porta paralela, acionando cada um dos 8 pinos associados ao endereço 378h, com o intervalo de 1 segundo entre um acionamento e outro. Na seqüência, é
exibido na console a informação coletada da
porta paralela, no endereço de memória 379h.
REVISTA DE INFORMÁTICA
//variável auxiliar, iniciando com 1 em
decimal, isso significa
//que a primeira informação enviada em
binário será 00000001
int aux = 1;
//executa um looping, enviando informação
para todos os bits da porta
//paralela (endereco 378), lembrando que
a informação deve ser enviada
//em decimal para posteriormente ser
convertida em binário
//decimal —> binario
//1
—> 00000001
//2
—> 00000010
//4
—> 00000100
//8
—> 00001000
//16
—>
00010000
//32
—>
00100000
//64
—>
01000000
//128
—>
10000000
while ( aux <= 128 ) {
//envia informação para porta paralela
(endereço 378h)
lpt1.write( aux );
//executa uma pausa de 1 seg no
processamento
try {
Thread.sleep( 1000 );
} catch( Exception e ) { }
//duplica o valor de aux
aux = aux * 2;
}
//re-instancia o objeto lpt1, que
receberá as informações
//da porta paralela, usando o endereço de
memória 379h
lpt1 = new ParallelPort( 0x379 );
//lê a informação da porta paralela
(endereço 379h) e imprime o valor
//na console
System.out.println( lpt1.read() );
}
}
O UsingParport envia informações para os
8 pinos da 378h, como mostra a Figura 6. Após
os oito acionamentos, o programa lê as informações vindas da 379h.
Listagem 1. UsingParport.java: Aplicativo que envia e recebe informação
para porta paralela, usando a API Parport:
//importa a classe responsável para
comunicação paralela
import parport.ParallelPort;
public class UsingParport {
public static void main( String args[] ) {
//instancia um objeto chamado lpt1, que
envia as informações
//para porta paralela, usando o endereço
de memória 378h
ParallelPort lpt1 = new ParallelPort(
0x378 );
22
Figura 6 – Pinagem da porta paralela, com os respectivos
endereços de memória.
É interessante relembrar, que ao enviar as
informações para um determinado pino (binário
1), fisicamente é enviado 5 volts para ele, quan-
FACULDADE MATER DEI
do não é enviado informação para o pino (binário 0), o mesmo fica valorizado com 0 volt.
Os pinos de entrada de dado (endereço
379h) estão preparados para receber 5 volts. Essas informações técnicas são importantes para
projetar a interface paralela, que farão o tratamento das informações.
7. DESENVOLVENDO UM APLICATIVO
UTILIZANDO A COMMAPI
A COMMAPI é uma API desenvolvida pela
Sun para comunicação serial e paralela. É gratuita e esta disponível para download na URL: http:/
/java.sun.com./products/javacomm.
7.1. Instalação
Após o download, descompacte o arquivo
“javacomm20-win32.zip” e siga as instruções
abaixo:
• copie o arquivo win32com.dll para
JAVA_HOME\jre\bin;
• copie o arquivo javax.comm.poperties
para o diretório JAVA_HOME\jre\lib;
• copie o arquivo comm.jar para o diretório
JAVA_HOME\jre\lib\ext;
• adicione o arquivo comm.jar ao
CLASSPATH.
A COMMAPI possui a classe abstrata
CommPort, que representa o modelo geral de
comunicação, e possui duas subclasses, a
SerialPort e a ParallelPort que descrevem os dois
principais tipos de portas (serial e paralela).
7.2 Usando a COMMAPI para o envio
de comunicação serial.
Na Listagem 2, segue o código de uma
classe que utiliza a COMMAPI para o envio de
informações para a porta serial, e na Listagem 3,
o aplicativo que lê informações da porta serial.
Listagem 2. WriteSerial.java: Aplicativo que envia informação para porta
serial, utilizando a COMMAPI:
import java.io.*;
import java.util.*;
//importar COMMAPI para comunicação serial
import javax.comm.*;
REVISTA DE INFORMÁTICA
public class WriteSerial
{
public static void main(String[] args) {
//Define qual porta serial será utilizada
String
portaEscolhida = “COM1”;
//declara um objeto do tipo SerialPort
SerialPort portaSerial = null;
//captura em uma lista todas as portas
disponível no computador
Enumeration listaPortas =
CommPortIdentifier.getPortIdentifiers();
//esse looping pesquisa pela porta
selecionada
while (listaPortas.hasMoreElements()) {
//captura as portas do computador
CommPortIdentifier porta =
(CommPortIdentifier)
listaPortas.nextElement();
//verifica se a porta é serial
if (porta.getPortType() ==
CommPortIdentifier.PORT_SERIAL) {
//verifica se a porta é igual a porta
escolhida
if
(porta.getName().equals(portaEscolhida)) {
//tenta alocar a porta serial
selecionada, os parâmetros do método open
//são: Nome do aplicativo que
utilizará a porta serial (WriteSerial)
//e tempo de timeout (2000 ms)
try {
portaSerial = (SerialPort)
porta.open( “WriteSerial”, 2000 );
} catch (PortInUseException e) {
System.out.println( “Porta em
uso, tente mais tarde” );
System.exit( 0 );
}
}
}
}
//verifica se foi encontrada a porta
escolhida no looping anterior
if ( portaSerial == null ) {
System.out.println( “Porta “ +
portaEscolhida + “ não encontrada” );
System.exit( 0 );
} else {
try {
//define o fluxo de saída de dados
para a porta serial
DataOutputStream out = new
DataOutputStream(
portaSerial.getOutputStream() );
//Parametros para a configuração da
transmissão de dados
//9600 indica a taxa de transmissão,
dada em bits por segundo
//DATABITS_8
parametro que
representa o tamanho dos dados, 8 bits
//STOPBITS_1 é o bit de parada, bit
que indica o término do dado
//PARITY_NONE indica se haverá
paridade para o envio de dados
//neste caso não haverá paridade
portaSerial.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
23
FACULDADE MATER DEI
//escreve a informação 85 em decimal,
01010101 em binário
out.writeByte( 85 );
//mensagem de sucesso
System.out.println(“Informação
enviada com sucesso.”);
//libera a porta serial
portaSerial.close();
} catch (Exception e) {
//tratamento da exceção
System.out.println( “Erro: “ +
e.getMessage() );
}
}
}
}
Listagem 3. ReadSerial.java: Aplicativo que recebe informação da porta
serial, utilizando a COMMAPI:
import
import
import
java.io.*;
java.util.*;
javax.comm.*;
//A classe ReadSerial implementa o evento de
leitura da Porta Serial
public class ReadSerial implements
SerialPortEventListener
{
private DataInputStream in = null;
public ReadSerial() {
//porta selecionada para comunicação COM1
String portaEscolhida = “COM1”;
//a lógica para selecionar a porta é
identica ao programa WriteSerial
SerialPorta portaSerial = null;
Enumeration listaPortas =
CommPortIdentifier.getPortIdentifiers();
while (listaPortas.hasMoreElements()) {
CommPortIdentifier porta =
(CommPortIdentifier)
listaPortas.nextElement();
if (porta.getPortType() ==
CommPortIdentifier.PORT_SERIAL) {
if
(porta.getName().equals(portaEscolhida)) {
try {
portaSerial = (SerialPort)
porta.open(“ReadSerial”, 2000);
break;
} catch (PortInUseException e) {
System.out.println( “Porta em
uso, tente mais tarde” );
System.exit( 0 );
}
try {
//Define um fluxo para entrada de
dados
in = new DataInputStream(
portaSerial.getInputStream() );
//adiciona o evento para recepção
de dados a porta paralela
portaSerial.addEventListener(this);
//habilita a notificação para
recepção de dados
portaSerial.notifyOnDataAvailable(true);
24
REVISTA DE INFORMÁTICA
//seta os parametros para
recepção, esses parametros devem ser
//identicos ao do programa
WriteSerial
portaSerial.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
//o programa pausa por 20
segundos, aguardando informações
Thread.sleep(20000);
} catch ( Exception e) {
System.out.println( “Erro: “ +
e.getMessage() );
System.exit( 0 );
}
}
}
}
}
public static void main( String args[] ) {
//chama o método construtor do aplicativo
new ReadSerial();
}
//método que recebe informações vindas da
porta serial
public void serialEvent(SerialPortEvent
event) {
//verifica se a informação recebida é um
dado válido
if ( event.getEventType() ==
SerialPortEvent.DATA_AVAILABLE ) {
try {
//o conteudo é armazenado na variável
dados
byte dados = in.readByte();
//conteudo é impresso na tela
System.out.println( dados );
} catch (IOException e ) {}
System.out.println( “Erro: “ +
e.getMessage() );
System.exit( 0 );
}
}
}
8. SISTEMAS OPERACIONAIS E AS
PORTAS
Nem todo o sistema operacional trabalha
da mesma maneira com a porta paralela e serial.
Por exemplo, no Linux as portas são tratadas
como diretório, no Windows as mesmas são
acessadas por meio de endereços de memórias.
Abaixo seguem informações sobre a utilização das portas em alguns sistemas
operacionais.
FACULDADE MATER DEI
8.1 Windows 9/98 e Windows
Millenium
No Windows 95/98 e Millenium as portas
já estão desbloqueadas por padrão, bastando
acessá-las através do endereço de memória correspondente.
8.2 Windows NT/2000 E XP
Por questões de segurança as versões do
Windows NT/2000 e XP não permitem o acesso
direto à porta paralela. Para isso é necessário um
software que “converse” com o núcleo (kernel)
do sistema operacional, disponibilizando o acesso à porta física do computador.
O software UserPort. foi desenvolvido por
Tomas Franzon e desbloqueia a porta paralela. O
download pode ser feito a partir do site http://
www.rogercom.com.
Após
o
download
do
arquivo
“UserPort.zip”, descompacte-o e copie o arquivo
“UserPort.sys” para a pasta drivers do Sistema
Operacional. No Windows XP a pasta está localizada em: C:\WINDOWS\system32\. Na seqüência execute o arquivo “UserPort.exe”. Será exibida a tela, conforme Figura 7.
REVISTA DE INFORMÁTICA
8.3 Linux
O sistema operacional Linux utiliza a porta
serial/paralela de uma maneira bem diferente. Por
esse motivo existe uma versão especial do
PARPORT desenvolvido para o Linux. Para utilizar COMMAPI, é necessária a utilização da JCL
(Java Comm for Linux). O JCL é um conjunto de
drivers gratuitos para a versão oficial da Sun da
CommAPI, permitindo realizar as chamadas em
Java para comunicação com a porta serial e paralela, independente do sistema operacional.
Adicionalmente, é necessária a instalação da biblioteca nativa RXTX para Linux. Esta biblioteca
provê comunicação serial e paralela.
9. CONCLUSÃO
O presente artigo apresenta o controle de
dispositivos de hardware usando a linguagem de
programação Java, utilizando para isso as portas
serial/paralela. Como fugia do escopo do trabalho, não foi apresentado o funcionamento das
interfaces seriais e paralelas. O site http://
www.rogercom.com/ apresenta mais detalhes
sobre o funcionamento desses hardware. Ressalta-se que para o programador interessa enviar e
receber as informações para a porta serial e paralela. O acionamento real dos dispositivos eletroeletrônicos, como lâmpadas ou motores é feito
pelas interfaces.
Além das API’s estudadas nesse artigo, existem outras para o controle das portas seriais e
paralelas, cada uma com suas características, mas
a COMMAPI se destaca por ser mantida pela Sun
Microsystems e a PARPORT por ser de fácil utilização.
Figura 7 – Aplicativo UserPort
Para a liberação da porta, deve ser pressionado o botão “Start”. Uma vez iniciado o
aplicativo, a porta será liberada não havendo a
necessidade de executar o aplicativo novamente
após reiniciar o computador. Já para bloquear a
porta, pressiona-se o botão “Stop”.
25
FACULDADE MATER DEI
REFERÊNCIAS
PRESS, Cambridge University “The Java
Communications API”, disponível em http://
www.particle.kth.se/~lindsey/JavaCourse/Book/
Part3/Chapter23/commAPI.htm
GOMES, D. V. “Comunicação Serial Utilizando a
API da SUN”, disponível em http://
www.guj.com.br/content/articles/javacommapi/
JavaCommAPI.pdf.
MESSIAS, A. R. “Artigos sobre porta paralela e
serial”, disponível em http://www.rogercom.com.
SUN, Microsystens. “Java Communications”, disponível em http://java.sun.com/products/
javacomm/.
26
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 3
PROGRAMAÇÃO GENÉTICA:
EVOLUINDO PROGRAMAS DE
COMPUTADOR
RÚBIA ELIZA DE OLIVEIRA SCHULTZ
[email protected]
RESUMO
Algoritmos de Programação Genética (PG)
são técnicas de busca e otimização baseadas no
modelo Darwiniano da evolução dos seres vivos.
Como uma extensão dos mecanismos aplicados
em Algoritmos Genéticos, a Programação Genética representa atualmente uma das principais
frentes de pesquisa em computação
evolucionária. Neste artigo são apresentados os
propósitos, estrutura geral, e princípios de operação desta técnica que permite a geração automática de programas de computador para a solução de problemas.
1. INTRODUÇÃO
De acordo com a Teoria da Evolução de
Charles Darwin (DARWIN, 1859), o princípio da
seleção natural indica que os indivíduos cujas
variações se adaptam melhor ao ambiente em
que vivem terão maior probabilidade de sobreviver e se reproduzir. Pode-se considerar que os
organismos que se tem hoje são conseqüências
da evolução de outros organismos inferiores que
se extinguiram e que sem eles, provavelmente,
não existiriam. A espécie é o beneficiário final
do processo evolutivo.
Tomando como base estes conceitos herdados da Biologia, a Programação Genética (PG)
permite simular matematicamente todo o mecanismo da evolução biológica, com todas as características e vantagens desse processo, a fim de
gerar automaticamente programas de computador. Este artigo fornece informações sobre a ori-
REVISTA DE INFORMÁTICA
gem, funcionamento e principais componentes
dos algoritmos de Programação Genética.
2. ORIGEM
A representação de programas em árvores
e a definição de operadores genéticos foram
apresentadas inicialmente por Cramer (1985).
Seguindo esta linha de raciocínio, e tomando
como base os trabalhos de Holland (1975) em
Algoritmos Genéticos (AG), Koza (1989; 1992)
introduziu o conceito de programação genética
utilizando-a como meio de conduzir a pesquisa
por programas no espaço de soluções.
Em Koza (1994), a PG é aplicada para prover escalabilidade e reuso de programas. Em Koza
et al. (1999), são apresentadas resoluções de problemas utilizando PG, e em Koza et al. (2003), a
PG já é empregada com o objetivo de prover soluções
comparáveis
a
soluções
humanas.Conceitualmente, a Programação Genética representa uma abordagem para a geração automática de programas de computador.
Ela pode ser vista como uma extensão dos
algoritmos genéticos no domínio dos programas,
representando um método sistemático para tornar os computadores aptos a resolver problemas.
Algoritmos Genéticos e Programação Genética são as duas principais frentes de pesquisa
em Computação Evolutiva (CE). Ambas as técnicas compartilham a mesma base teórica, inspirada na competição entre indivíduos pela sobrevivência, porém não mantêm vínculos de dependência ou subordinação. A diferença essencial
entre AG e PG é que em PG as estruturas manipuladas são um tanto mais complexas, assim
como várias das operações realizadas pelo
algoritmo.
A Programação Genética se baseia na combinação de idéias da teoria da evolução (seleção
natural), genética (reprodução, cruzamento e
mutação), inteligência artificial (busca heurística)
e teoria de compiladores (representação de programas como árvores sintáticas) (RODRIGUES,
2002).
27
FACULDADE MATER DEI
3. FUNCIONAMENTO
Segundo Koza (1992), o processo
evolutivo ocorre na natureza quando quatro condições básicas são satisfeitas:
o Um indivíduo tem a habilidade de se reproduzir;
o Existe uma população desses indivíduos;
o Existe alguma variedade entre esses indivíduos;
o Alguma diferença em habilidade de sobrevivência está associada com a variedade.
O processo de seleção natural que ocorre
na natureza pode ser simulado no mundo
computacional através de algoritmos evolutivos,
onde ao invés de uma população de seres vivos,
têm-se uma população de possíveis soluções para
um determinado problema.
Em programação genética, a população é
composta por programas de computador, e o
objetivo dos algoritmos é, através da evolução
da população, chegar ao indivíduo (programa)
que apresenta a melhor solução ou pelo menos
uma boa aproximação para resolver determinado problema. Para isso, começa-se com uma população inicial aleatória e, geração após geração, aplica-se os operadores genéticos para simular o processo evolutivo até que um determinado critério de término seja satisfeito.
A estrutura básica do algoritmo de programação genética é apresentada na figura 1, conforme descrito em Rodrigues (2002).
4. REPRESENTAÇÃO DOS PROGRAMAS
A representação dos indivíduos (programas) em PG tradicionalmente se baseia em árvore de sintaxe abstrata, formada pela livre combinação de funções e terminais adequados ao domínio do problema. Cada função é um ramo e
cada terminal uma folha do indivíduo.
Parte-se de dois conjuntos: como o conjunto de funções e como o conjunto de terminais. O conjunto pode conter operadores aritméticos (+, -, *, etc.), funções matemáticas (seno,
log, exp, etc.), operadores lógicos (E, OU etc.),
A aridade é responsável por definir o número n de argumentos de uma função
ou expressão.
1
28
REVISTA DE INFORMÁTICA
operadores condicionais (Se, Então, Senão, etc.),
operadores de condição, dentre outros. Cada tem
associada uma aridade1 (número de argumentos) superior a zero. O conjunto é composto pelas variáveis, constantes e funções de aridade zero
(sem argumentos) (RODRIGUES, 2002).
Figura 1: Estrutura básica de um algoritmo de Programação
Genética (RODRIGUES, 2002).
Desta forma, o espaço de busca é determinado por todas as árvores que possam ser criadas pela livre combinação de elementos dos conjuntos F e T .
Como exemplo, considere um conjunto
F = {+,−,*, /} e um conjunto T = {x,5} . A partir
da combinação dos elementos destes dois conjuntos, podem-se produzir expressões matemáticas diversas, como
ou
. Estas duas expressões matemáticas
podem ser representadas em formato de árvore
de sintaxe conforme apresentado na figura 2. A
figura 2 apresenta também um terceiro exemplo
de indivíduo, que corresponde a uma expressão
booleana.
Figura 2: Exemplos de representação de programas em formato
de árvore de sintaxe.
FACULDADE MATER DEI
4.1 Fechamento e Suficiência
n
A propriedade de fechamento (closure) foi
definida por Koza (1992), a fim de garantir a viabilidade das árvores de sintaxe abstrata. Para
satisfazê-la, cada função pertencente ao conjunto
de funções deve aceitar como argumentos, qualquer valor e tipo de dado que possa ser retornado
por qualquer função ou terminal. O atendimento a esta propriedade permite que o cruzamento
efetuado entre dois nós quaisquer da árvore de
derivação produza indivíduos sintaticamente
corretos.
Um exemplo típico de problema de fechamento é a operação de divisão. Afinal, matematicamente não é possível dividir um valor por zero.
Para contornar este problema, pode-se utilizar
uma função alternativa proposta por Koza
(1992): a função de divisão protegida (protected
division) %. Esta função recebe dois argumentos
e retorna o valor 1 (um) caso seja feita uma divisão por zero e, caso contrário, o seu quociente.
A fim de garantir a convergência para uma
solução, Koza (1992) definiu a propriedade de
suficiência (sufficiency), onde os conjuntos de
funções (operações) e o de terminais (variáveis e
constantes) devem ser capazes de representar
uma solução para o problema. Isto implica na
existência de uma forte evidência de que alguma composição de funções e terminais possa
produzir uma solução. Dependendo do problema, esta propriedade pode ser óbvia ou exigir
algum conhecimento prévio de como deverá ser
a solução (RODRIGUES, 2002). Portanto, o usuário deve saber a priori que a composição de funções e terminais por ele fornecida induz à solução do problema.
4.2 População Inicial
A população inicial de um algoritmo de
programação genética é em geral composta por
árvores geradas aleatoriamente a partir dos conjuntos de funções ( F ) e de terminais ( T ). Inicialmente se escolhe aleatoriamente uma função
f pertencente ao conjunto de funções ? F . Para
cada um dos argumentos de f , escolhe-se um
elemento de { F ∪ T }. O processo prossegue até
que se tenham apenas terminais como nós folha
da árvore. Usualmente se especifica um limite
REVISTA DE INFORMÁTICA
máximo para a profundidade da árvore para se
evitar árvores muitos grandes (RODRIGUES,
2002). Vale ressaltar que a profundidade de um
em uma árvore é o comprimento do caminó
nho da raiz até , e que a profundidade de uma
árvore é a mesma do seu nó de maior profundidade (TERADA, 1991).
A população inicial deve ser uma amostra
significativa do espaço de busca, contendo diversidade suficiente de composição nos programas para que o algoritmo possa, através da
recombinação de códigos (características), convergir para uma solução.
Diversos métodos já foram desenvolvidos
com o objetivo de melhorar a qualidade dos programas gerados na população inicial. Conforme
apresentado em Luke (2001), os métodos mais
comuns são: Ramped-half-and-half (KOZA,
1992), random-branch (CHELLAPILLA, 1997),
Uniform (BOHM e GEYER-SCHULZ, 1996) e, mais
recentemente, Probabilistic tree-creation (LUKE,
2000). A seguir serão apresentadas as principais
características de cada método.
4.2.1 Ramped-half-and-half
Desenvolvido por Koza (1992), o Rampedhalf-and-half corresponde a uma combinação de
dois métodos simples: grow e full. O método
grow envolve a criação de árvores cuja profundidade é variável. A escolha dos nós é feita aleatoriamente entre funções e terminais, respeitandose uma profundidade máxima. Já o método full
envolve a criação de árvores completas, isto é,
todas as árvores terão a mesma profundidade.
Para isso é feito a seleção de funções para os nós
cuja profundidade seja inferior a desejada e a
seleção de terminais para os nós de profundidade máxima.
O método ramped-half-and-half consiste
em gerar um número igual de árvores para cada
profundidade, entre dois e a profundidade máxima. Por exemplo, supondo que a profundidade máxima seja seis, então serão geradas árvores
com profundidades de dois, três, quatro, cinco e
seis eqüitativamente. Isto significa que 20% terão profundidade dois, 20% terão profundidade
três e assim sucessivamente. Para cada profundidade, 50% são geradas pelo método full e 50%
pelo método grow (RODRIGUES, 2002).
29
FACULDADE MATER DEI
4.2.2 Random-branch
Desenvolvido por Chellapilla (1997), este
método trabalha com a informação de tamanho
máximo da árvore e não profundidade (o tamanho de uma árvore corresponde ao número de
nós que a compõe (KOZA, 1992)).
Considere
o tamanho máximo desejado
para a árvore. Devido ao fato de random-branch
dividir igualmente S dentre as árvores de um nópai não-terminal, existem muitas árvores que não
são possíveis de serem produzidas. Isto torna o
método muito restritivo apesar de ter complexidade linear (LUKE, 2001).
4.2.3 Uniform
Desenvolvido por Bohm e Geyer-Schulz
(1996), visa garantir que as árvores são geradas
uniformemente do conjunto de todas as árvores
possíveis. Conforme apresentado em Rodrigues
(2002), o algoritmo é extremamente complexo,
pois necessita calcular em várias tabelas o número de árvores possíveis de serem criadas para
cada tamanho desejado, gerando um alto custo
computacional.
4.2.4 Probabilistic tree-creation
Desenvolvido por Luke (2000), trabalha
com as probabilidades de ocorrência das funções
na árvore. Possui duas variantes, o PTC1 e PTC2.
O PTC1 é uma variante do grow onde para
cada terminal e função associa-se uma probabilidade de escolha, garantindo que as árvores serão geradas dentro de um tamanho esperado.
E o PTC2 usa um tamanho máximo e uma
distribuição de probabilidades para cada árvore
de tamanho 1 a . Além do controle sobre o tamanho esperado da árvore, têm-se um controle
sobre a distribuição destes tamanhos.
4.3 Função de Aptidão
Na natureza, os indivíduos que apresentam
melhor adaptação ao ambiente em que vivem
são os que têm maior probabilidade de evoluir.
Da mesma forma, na programação genética cada
indivíduo da população possui um valor de aptidão (Fitness). Este valor é calculado através de
uma função que mede quão próximo o indivíduo está da solução desejada ou quão boa é a
30
REVISTA DE INFORMÁTICA
solução que ele representa.
É essencial que esta função seja muito representativa e diferencie na proporção correta as
más soluções das boas. Se houver pouca precisão na avaliação, uma ótima solução pode ser
posta de lado durante a execução do algoritmo,
além de gastar mais tempo explorando soluções
pouco promissoras (RODRIGUES, 2002).
Usualmente, o valor de fitness é obtido com
base em um conjunto de casos de treinamento,
denominados fitness cases, contendo valores de
entrada e saída a serem aprendidos. Cada programa (indivíduo) da população trabalha com
valores de entrada para chegar a um resultado,
que é confrontado com o valor esperado de saída. Quanto mais próximo o resultado apresentado pelo programa estiver do valor de saída, melhor é a solução apresentada pelo programa, e
conseqüentemente, melhor sua aptidão e tendência à evolução.
Segundo Banzhaf et al. (1998), a avaliação
de fitness estabelece uma forma de se diferenciar os melhores dos piores, servindo como a força
mestre do processo evolutivo, sendo a medida
(usada durante a evolução) do quanto o programa aprendeu a predizer as saídas das entradas
dentro de um domínio de aprendizagem.
A seguir serão apresentadas as principais
características dos métodos para avaliação de
fitness mais comumente utilizados (KOZA, 1992):
A) Aptidão nata (raw fitness): É a avaliação
pura e simples do programa frente aos fitness
cases. O método mais comum de aptidão nata é
a avaliação do erro cometido, isto é, a soma de
todas as diferenças absolutas entre o resultado
obtido pelo programa e o seu valor correto.
B) Aptidão padronizada (standardized
fitness): Devido ao fato da aptidão nata depender do domínio do problema, um valor bom pode
ser um valor pequeno (quando se avalia o erro)
ou um valor grande (quando se avalia a taxa de
eficiência). A avaliação da aptidão padronizada
é feita através de uma função de adaptação do
valor da aptidão nata de forma que quanto melhor o programa, menor deve ser a aptidão padronizada. Desta forma, o melhor programa apresentará o valor zero (0) como aptidão padronizada, independentemente do domínio do problema.
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
C) Aptidão ajustada (adjusted fitness): é
obtida através da aptidão padronizada. Se representa a aptidão padronizada do indivíduo na
geração , então a aptidão ajustada é calculada
da seguinte forma:
(1)
Percebe-se que a aptidão ajustada varia
entre zero (0) e um (1), sendo que os maiores
valores representam os melhores indivíduos. A
aptidão ajustada tem o benefício de exagerar a
importância de pequenas diferenças no valor da
aptidão padronizada quando esta se aproxima
de zero (KOZA, 1992).
D) Aptidão normalizada (normalized
fitness): se a(i, t ) é a aptidão ajustada do indivíduo i na geração , então sua aptidão normaliserá obtida da seguinte forma:
zada
(2)
tn(i, t )
T
A soma de todas as aptidões normalizadas
dentro de uma população vale um (1).
4.4 Métodos de Seleção
O método de seleção é responsável por escolher quais indivíduos da população irão gerar
descendentes, e quantos serão. O objetivo da
seleção é privilegiar, em média, os indivíduos
melhor adaptados, na esperança de que seus
descendentes tenham desempenho ainda melhor. A seleção deve ser tal que produza um balanço adequado entre a pressão seletiva e a variação introduzida pelos operadores genéticos
(MITCHELL, 1996).
Métodos de seleção muito fortes tendem a
gerar super-indivíduos (indivíduos com medida
de desempenho muito superior aos demais), reduzindo a diversidade necessária para alterações
e progressos futuros. A geração de super-indivíduos pode levar a uma convergência prematura
do processo evolutivo. Por outro lado, métodos
de seleção excessivamente fracos (pouca pressão
seletiva) tendem a produzir progressos muito lentos na evolução (DELGADO, 2002).
A seguir, serão descritos os métodos de se-
leção encontrados com maior freqüência na literatura.
A) Seleção Proporcional ao Desempenho
(fitness-proportionate selection): Empregada inicialmente por Holland (1975) em Algoritmos
Genéticos, foi o método adotado por Koza
(1992) em seu primeiro livro. Neste método, a
probabilidade de um indivíduo se reproduzir na
próxima geração é diretamente proporcional ao
seu grau de aptidão (fitness). Este esquema é
também conhecido como seleção por roleta
(roulette wheel), pois usa a aptidão normalizada disposta em segmentos consecutivos em uma
roleta imaginária. Cada indivíduo da população
ocupa um segmento e a probabilidade de escolha de cada segmento depende diretamente de
seu tamanho. A seleção proporcional ao desempenho pode ser problemática se os indivíduos
da população apresentarem desempenhos muito próximos entre si. Além disso, se o tamanho
da população é pequeno, a perda de diversidade pode levar à convergência prematura, pois a
busca fica reduzida a poucos pontos, causando
uma diminuição no poder de exploração do
algoritmo (DELGADO, 2002).
B) Seleção por Torneio (tournament
selection): Apresentada por Goldberg e Deb
(1991) para Algoritmos Genéticos, foi utilizada
em vários problemas por Koza (1994) no seu segundo livro. A seleção por torneio pode ser feita da seguinte forma: t indivíduos são selecionados aleatoriamente da população e o melhor
deste grupo é o escolhido; Este processo é repetido até que se tenha uma nova população; O
valor de t é conhecido como o tamanho do torneio. No esquema apresentado acima, a escolha entre os candidatos é determinística, entre
uma porcentagem da população. Contudo, existem algumas variações deste algoritmo, em que
o retorno da seleção corresponde ao melhor e
pior indivíduo do grupo.
C) Seleção por Truncamento (truncation
selection): Com base em um valor de limiar
entre zero (0) e um (1), a seleção
(threshold)
é feita aleatoriamente entre os T melhores indivíduos (MUHLENBEIN e SCHIERKAMPVOOSEN, 1993). Por exemplo, se T = 0.4 , então a seleção é feita entre os 40 % melhores indivíduos e os outros 60 % são descartados.
31
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
D) Seleção por Nivelamento Linear (Classificação) (linear ranking selection): Sugerido por
Baker (1989) para eliminar as sérias desvantagens do uso de seleção proporcional, como o
surgimento de super-indivíduos (relativos aos
demais existentes na população atual) e a ocorrência de convergência prematura. Neste método os indivíduos são ordenados de acordo com
os valores de fitness e o nível N é associado ao
melhor indivíduo e o nível 1, ao pior. Em seguida, a cada indivíduo i é associada uma probabilidade
de ser selecionado. Esta probabilidade
é representada pela equação a seguir:
(3)
4.5 Operadores Genéticos
Onde
O valor de
representa a probabilidade
de o melhor indivíduo ser escolhido e
do
pior ser escolhido. É interessante perceber que
cada indivíduo pertence a um único nível, isto é,
mesmo que dois indivíduos tenham o mesmo
fitness, eles apresentam probabilidades diferentes de serem escolhidos. A seleção por classificação tem a desvantagem de exigir a ordenação
de toda a população, que pode representar um
custo computacional excessivo em algumas aplicações específicas (DELGADO, 2002).
E) Seleção por Nivelamento Exponencial
(exponential ranking selection): Semelhante à
seleção por nivelamento Linear, diferencia-se
apenas no fato das probabilidades pi serem
exponencialmente ponderadas (BAKER, 1989).
Um parâmetro c entre zero (0) e um (1) é usado
como base. Quanto mais próximo de um, menor
é a “exponencialidade” da seleção. A probabilidade de um indivíduo ser selecionado no método de seleção por nivelamento exponencial é
dado por
:
(4)
32
F) Elitismo: O termo elitismo foi introduzido por De Jong (1975), e está associado à adoção de uma operação adicional junto aos métodos de seleção, que força o algoritmo a reter o
melhor indivíduo ou um número de melhores
indivíduos, a cada geração. O elitismo melhora
o desempenho de algoritmos genéticos na maioria dos casos (MITCHELL, 1996), e seguindo a
mesma lógica, pode apresentar ganhos também
quando aplicado à programação genética. O uso
de estratégias elitistas permite manter na população os melhores indivíduos, pois estes poderiam ser perdidos se não fossem selecionados de
forma determinística para compor a próxima geração, ou então se fossem modificados por
crossover ou mutação.
Os operadores genéticos alteram a composição genética dos filhos durante a reprodução. A
sua função é criar novos indivíduos a partir dos
antigos. Os operadores trabalham sobre a
codificação das possíveis soluções (genótipo) e não
sobre as soluções (fenótipos) propriamente ditas.
Os três principais operadores genéticos segundo Koza (1992) são descritos a seguir:
A) Reprodução: É um operador que assegura a permanência de determinado indivíduo
(programa) na próxima geração. O indivíduo é
selecionado com base em algum critério que
considere sua aptidão, e copiado para a próxima
geração sem sofrer nenhuma mudança em sua
estrutura.
B) Cruzamento (crossover): Também conhecido por recombinação, este operador une informações de dois ou mais genótipos pais a fim de
gerar descendentes. Um ponto aleatório de cruzamento é escolhido em cada programa-pai e as
árvores abaixo destes pontos são trocadas. Um
exemplo de cruzamento pode ser visto na Figura
3. Neste exemplo, foram escolhidos os programas:
e
. Em seguida
foram selecionados aleatoriamente um nó em
cada árvore, identificados com um traçado mais
denso e cores diferentes na figura. As árvores são
então trocadas, gerando os novos programas:
(RODRIGUES, 2002).
Para que o cruzamento seja sempre possível, o conjunto de funções deve apresentar a pro-
FACULDADE MATER DEI
priedade de fechamento (closure), caso contrário, devem-se estabelecer critérios de restrição na
escolha dos pontos de cruzamento.
C) Mutação (mutation): A mutação é um
operador que introduz uma pequena mudança
na estrutura de um programa selecionado, dando origem a um descendente. Basicamente, seleciona-se uma posição em um cromossomo (indivíduo) e muda-se o valor do gene correspondente aleatoriamente para um outro alelo2 possível. Neste ponto existem duas possibilidades:
• A árvore cuja raiz é o nó selecionado é
então eliminada e substituída por uma
nova árvore gerada aleatoriamente;
• O conteúdo do nó selecionado (função
ou terminal) é substituído por uma nova
função ou terminal, com as mesmas características.
Este operador genético garante (ou pelo
menos torna teoricamente possível) o surgimento
de características novas, inexistentes até então
em uma população finita.
A figura 4 apresenta dois exemplos de aplicação do operador genético de mutação.
REVISTA DE INFORMÁTICA
Figura 4: Exemplo de mutação. a) Mutação através da criação
de uma nova sub-árvore. b) Mutação através da substituição
da função existente no nó selecionado.
As novas soluções candidatas geradas a
partir do cruzamento e da mutação constituem
a próxima geração. Segundo Barreto (2003), não
é difícil perceber que os indivíduos desse novo
conjunto tendem a ser melhores do que aqueles
que lhe deram origem, uma vez que a seleção
valoriza os indivíduos mais aptos. Se esse processo for sucessivamente repetido, existe uma
boa chance de que a solução ótima seja
alcançada — embora muitas vezes uma solução
razoavelmente boa seja mais do que satisfatório.
Uma vez encontrada a solução, o processo deve
ser interrompido. Para tal, é necessário definir um
critério de término, cujo conceito é apresentado
a seguir.
4.6 Critério de Término
Figura 3: Exemplo de cruzamento entre dois programas
(Adaptado de Rodrigues (2002)).
2
Um gene é a porção de um cromossomo que codifica uma característica
específica do fenótipo. Os valores que um gene pode assumir são ditos alelos.
A evolução natural é um processo contínuo
que aparentemente não tem data para acabar.
Desta forma, não se pode esperar que um
algoritmo de programação genética pare espontaneamente quando encontrar a solução ótima.
Para isso, define-se um critério de término (condição de parada), que é responsável por interromper o laço de repetição do processo evolutivo
que, idealmente, não teria fim.
O critério mais comum é limitar o número
máximo de gerações e/ou manter a evolução até
que uma solução satisfatória seja encontrada
(KOZA, 1992). Existem outras abordagens, como
as baseadas no próprio acompanhamento do
processo evolutivo, isto é, enquanto houver
33
FACULDADE MATER DEI
melhoria na média da população, o processo
evolutivo prossegue (KRAMER, 2000). Ou ainda,
pode-se trabalhar com a convergência da população, ou seja, quando todos os indivíduos da
população já estiverem muito parecidos, o processo é interrompido.
5. LIMITAÇÕES
A obrigatoriedade da propriedade de fechamento (closure) limita a aplicação da programação genética em determinadas situações. A
fim de minimizar estes problemas, Koza, (1992)
propõe alterações no algoritmo a fim de adequálo a domínios que apresentem restrições sintáticas. Porém, estas alterações direcionam o
algoritmo para solucionar problemas de determinado tipo, restringindo a sua aplicabilidade.
Uma alternativa para ampliar a
aplicabilidade da Programação Genética
corresponde à utilização de gramáticas. Proposta por Gruau (1996), esta alternativa utiliza além
dos conjuntos de funções e terminais, as regras
de formação dos programas. Desta forma é possível guiar genericamente a aplicação dos operadores genéticos a fim de produzir programas
sintaticamente corretos frente ao domínio
(RODRIGUES, 2002).
6. APLICABILIDADE
Atualmente a PG representa uma área muito promissora de pesquisa em Inteligência Artificial devido a sua simplicidade e robustez. Seu
uso tem sido estendido a problemas de diversas
áreas do conhecimento, como por exemplo:
biotecnologia, engenharia elétrica, análises financeiras, processamento de imagens, reconhecimento de padrões, mineração de dados, linguagem natural, dentre muitas outras.
A tabela 1 relaciona alguns exemplos de
problemas que podem ser solucionados através
da programação genética, bem como as informações envolvidas no processo.
34
REVISTA DE INFORMÁTICA
Tabela 1: Exemplos de aplicação da PG.
A figura 5 apresenta uma visualização das
possíveis áreas de aplicação da Programação
Genética.
Figura 5: Aplicações da Programação Genética.
7. CONCLUSÕES
A Programação genética não representa
absolutamente, a solução para todos os problemas de otimização, mas é, sem dúvida, uma técnica útil, robusta e eficaz para auto-programação
de Computadores. Puros ou combinados com
outros métodos, os algoritmos de programação
genética têm sido aplicados com sucesso a um
grande número de problemas, visto que já há patentes e produtos desenvolvidos com o uso de PG.
Cursos regulares de computação evolutiva
são oferecidos em universidades do mundo todo
em nível de pós-graduação, e o número de praticantes já é grande e continua crescendo rapidamente. Há listas eletrônicas com milhares de
assinantes, várias conferências de caráter internacional, e empresas investindo recursos generosos em PG, indicando que esta técnica tem um
futuro promissor pela frente.
REFERÊNCIAS
BAKER, J. E. “An analysis of the the effects of
selection in genetic algorithms”. PhD thesis,
Graduate Schol of Vanderbilt University.
Nashiville, Tennessee, 1989.
FACULDADE MATER DEI
BANZHAF, W; NORDIN, P.; KELLER, R. E.;
FRANCONE, F. D. “Genetic Programming: an
introduction”. ISBN 155860510X. Morgan
Kaufmann Publishers, 1998.
BARRETO, A. M. S. “Algoritmo Genético dos Mínimos Quadrados Ortogonal para o Treinamento de Redes RBF”. Dissertação de Mestrado em
Ciências em Engenharia Civil. Programa de PósGraduação de Engenharia Civil da COPPE/UFRJ.
Rio de Janeiro, 2003.
BOHM, W., GEYER-SCHULZ, A. “Exact uniform
initialization for genetic programming”.
Foundations of Genetic Algorithms IV (FOGA 4).
ISBN 155860460X. pp 379-407. Morgan
Kaufmann Publishers, 1996.
CHELLAPILLA, K. “Evolving computer programs
without sub-tree crossover ». IEEE Transactions
on Evolutionary Computation. Vol. 1 Issue 3. pp
209-216. IEEE Press, September, 1997.
CRAMER, N. “A representation for the adaptive
generation of simple sequential programs”. In
Grefenstette, J., editor, Proceedings of an
International Conference on Genetic Algorithms
and the Applications, pages 183-187, CarnegieMellon University, Pittsburgh, PA, USA. 1985.
DARWIN, C. “On the origin of species by means
of natural selection or the preservation of favored
races in the struggle for life”. Murray, London,
UK. 1859.
DE JONG, K. A. “An Analysis of the Behavior of a
Class of Genetic Adaptive Systems”. PhD thesis,
Departament of Computer and Communications,
University of Michigan. 1975.
DELGADO, M. R. B. S. “Projeto automático de sistemas nebulosos: uma abordagem co-evolutiva”.
Tese de Doutorado em Engenharia Elétrica.
UNICAMP. Campinas, SP, 2002.
GOLDBERG, D. E., DEB, K. “A comparative analysis
of selection schemes used in genetic algorithms”.
Foundations of Genetic Algorithms (FOGA). ISBN
1558601708. pp 69-93. Morgan Kaufmann
Publishers, 1991.
GRUAU, F. “On syntactic constraints with genetic
programming”.
Advances
in
Genetic
Programming II. ISBN 0262011581. pp. 377394. MIT Press, 1996.
HOLLAND, J. H. “Adaptation in natural and artificial systems”. The University of Michigan Press,
Ann Arbor, MI, 1975.
KOZA, J. R. “Hierarchical genetic algorithms
operating on populations of computer
REVISTA DE INFORMÁTICA
programs”. In Proceedings of the Eleventh
International Joint Conference on Artificial
Intelligence IJCAI-89, N. S. Sridharan (Ed.), volume 1, pp 768—774, Morgan Kaufmann
Publishers, 1989.
KOZA, J. R. “Genetic Programming: On the
Programming of Computers by Means of Natural Selection”. ISBN 0262111705. MIT Press,
1992.
KOZA, J. R. “Genetic Programming II: Automatic
Discovery of Reusable Programs”. ISBN
0262111896. MIT Press, 1994
KOZA, J.R.; BENNETT, F.H.; ANDRE, D.; KEANE,
M.A. “Genetic Programming III: Darwinian
Invention and Problem Solving”. Morgan
Kaufmann Publishers, 1999.
KOZA, J. R.; KEANE, M. A. ; STREETER, M. J.;
MYDLOWEC, W.; YU, J.; LANZA, G. “Genetic
Programming IV: Routine Human-Competitive
Machine Intelligence”. Kluwer Academic
Publishers. 2003.
KRAMER, M. D.; ZHANG, D. “GAPS: a genetic
programming system”. The 24th Annual
International Computer Software and
Applications Conference 2000 (COMPSAC 2000)
ISBN 0769507921. pp 614–619. IEEE Press,
October, 2000.
LUKE, S. “Two fast tree-creation algorithms for
genetic programming”. IEEE Transactions in
Evolutionary Computation, Vol 4 Issue 3 pp. 274283 IEEE Press. September, 2000.
LUKE, S.; PAINAIT, L. “A survey and comparison of
tree generation algorithms”. Proceedings of the
6th Annual Conference in Genetic Programming
(GECCO 2001). ISBN 1558607749. SpringerVerlag, 2001.
MITCHELL, M. “An Introduction to Genetic
Algorithms”. MIT Press. 1996.
MUHLENBEIN, H.; SCHIERKAMP-VOOSEN, D.
“Predictive models for the breeder genetic
algorithms”. Evolutionary Computation Vol 1
Issue 1, ISBN 10636560. pp 25-49. MIT Press,
1993.
RODRIGUES, E. L. M. “Evolução de Funções em
Programação Orientada a Gramáticas”. Dissertação de Mestrado em Informática. Programa de
Pós Graduação em Informática do Setor de Ciências Exatas da UFPR. Curitiba, 2002.
TERADA, R. “Desenvolvimento de algoritmos e
estruturas de dados”. ISBN 0074609602.
McGraw-Hill, Makron, 1991.
35
FACULDADE MATER DEI
36
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 4
ADMINISTRAÇÃO DE RECURSOS
DE HARDWARE E SOFTWARE EM
AMBIENTE CORPORATIVO
LUCIANO B. BUZZACARO1
[email protected]
RESUMO:
A
tualmente, a área de Tecnologia da
informação e comunicação (TIC) se faz uma necessidade irremediável em qualquer ambiente
corporativo ou não, independente do ramo de
atuação da empresa. Dessa forma, é muito importante a existência de setores responsáveis pela
gestão dos recursos de TIC. É necessário que exista planejamento para administrar o parque
tecnológico da empresa. A gestão dos recursos e
das ferramentas de hardware e software interfere, diretamente, em fatores como segurança das
informações e segurança da rede corporativa.
Existe ainda, o fator humano que participa, efetivamente, da utilização do hardware e software
da empresa, interferindo no contexto da política
de qualidade, haja vista, a necessidade de comprometimento com o uso consciente dos recursos tecnológicos e das informações corporativas.
1. INTRODUÇÃO
Com o crescimento atual do setor de
tecnologia da informação e comunicação (TIC),
as empresas corporativas necessitam muito que
suas equipes de informática, estabeleçam critérios e procedimentos normativos em busca de
padronização interna, tanto de hardware quanto de software, como forma de minimizar os problemas de heterogeneidade e outras incompatibilidades que, comumente, causam muita dor de
cabeça e aumentam muito o custo de suporte
1
Graduado em Sistemas de Informação, Especialista em Desenvolvimento para
Ambiente Internet, UTFPR - Universidade Tecnológica Federal do Paraná – Campus
Pato Branco. 85.501-250 – Pato Branco – PR – Brasil.
REVISTA DE INFORMÁTICA
ao usuário da equipe de TIC da empresa. De forma que, é extremamente importante estabelecer diretivas e procedimentos de segurança, que
garantam a integridade das informações de relevância armazenadas em microcomputadores
(desktops e notebooks) dos usuários, ou seja,
aqueles dados que não são armazenados nos
servidores ou mainframe da empresa e que, na
maioria das vezes, ou poderia ser dito, quase
em sua totalidade, não passam por rotinas de
backups diários, diferentemente do que acontece nos servidores, onde as cópias de segurança
são priorizadas. O objetivo é proteger essas informações das diversas ameaças virtuais e físicas,
a fim de garantir a continuidade dos negócios, a
integridade e a disponibilidade dos recursos e
dos dados.
O fator humano ou peopleware também
tem participação bastante efetiva na utilização
do hardware e software da empresa, interferindo diretamente no contexto da política de qualidade, visto a necessidade de comprometimento
com o uso consciente do parque tecnológico da
corporação.
Da mesma forma que cabe ao setor de TIC
da empresa: pesquisar, selecionar, homologar e
adquirir as melhores ferramentas e equipamentos, cabe também a ela, a tarefa de buscar a
minimização de custos com a área de tecnologia,
seja buscando equipamentos de hardware mais
baratos, mas que não comprometam a qualidade, seja buscando ferramentas de software gratuito ou de menor custo, mas que não comprometam a segurança dos dados da empresa,
disponibilizando as ferramentas de hardware e
software necessárias, para a realização das tarefas administrativas, bem como, o armazenamento
das informações e estabelecer a especificação de
configurações padrões nos equipamentos de
informática da empresa.
2. FUNDAMENTOS DO ESTUDO
As empresas, independente da área de atuação, têm de forma crescente potencializado o
uso amplo e intensivo de informações e suas
tecnologias, com o objetivo de desenvolver modelos de negócio, sugerir modelos
organizacionais e de integração de cadeia de
37
FACULDADE MATER DEI
valor física e virtual, aperfeiçoar processos de
implementação e gestão de tecnologia de informação para melhorar os processos, e desenvolver ferramentas e técnicas de análise qualitativa
e quantitativa de grandes volumes de informações. Inserido nesse contexto, o estudo de certos
fatores como a análise de custo versus benefícios, que interferem direta ou indiretamente no
funcionamento das atividades da empresa, se
tornam importantes ferramentas de decisão.
Considerando-se os efeitos decorrentes da
transformação ocasionada pela informatização
e o fato da grande dificuldade em mensurar o
retorno sobre o investimento em TI, a gestão
da implementação de recursos de informática
deve visar os benefícios e não a diminuição de
custos decorrentes. Um primeiro passo para
uma decisão acertada é ter consciência de que
os benefícios advindos do investimento em TI
não estão diretamente ligados ao próprio investimento, mas ao uso que é feito dela.
(GRAEML, 2000)
Para bem conduzir a administração dos recursos de informática os gestores devem reconhecer os fatores importantes na sua administração e implementação, enfocando o
gerenciamento da nova cultura, das mudanças,
das tendências e das transformações provocadas
pela utilização das TICs no âmbito global da
empresa.
Partido do pressuposto que o fator humano é determinante na área de TIC, da mesma forma como em muitas outras áreas da empresa, este
fator precisa ser criteriosamente analisado no
ambiente corporativo da empresa, pois, fraudes
internas, mau uso de computadores e violações
de segurança que partem do mau uso da “engenharia social” dos computadores são cada vez mais
explorados. Atualmente comprovado, em diversos
estudos “GARTNER” que a engenharia social é
responsável por muitos dos problemas de segurança das empresas. A GARTNER é uma companhia que se dedica à análise e pesquisa de assuntos relacionados com as TICs. O resultado dessas
análises toma corpo sob a forma de relatórios de
situação, de prospectiva, “case-studies”, “bestpractices”, que visam fundamentar as escolhas dos
clientes, contribuindo assim para a criação de vantagens competitivas. A GARTNER desenvolve
igualmente serviços de consultoria nas áreas dos
38
REVISTA DE INFORMÁTICA
produtos e serviços de TIC.
Verdadeiramente, as TICs trouxeram mudanças de paradigma que precisam ser assimiladas nas corporações conforme REZENDE (2003),
a corrida pela produtividade requer a substituição, onde possível, do papel e tinta por sinais eletrônicos, o que nos leva aos diversos
planos de análise desta possibilidade. Em cada
um desses planos, listados abaixo, há que se
considerar os enfoques de viabilidade e de risco, para alcançarmos o significado do rito que
transmuta bits em verdades presumidas.
Em relação à viabilidade:
Plano técnico: O advento das redes de comunicação de hierarquia aberta e topologia
escalável,
que
aqui
chamaremos
abreviadamente de redes abertas, tais como a
Internet e a telefonia móvel, viabilizou, do
ponto de vista semiológico, a substituição do
documento em papel pelo documento eletrônico, tornando os canais de comunicação digital ubíquos;
Plano econômico: Nos casos em que os custos
para a disseminação das respectivas
tecnologias, a saber, as de armazenamento,
identificação, proteção, transporte, apresentação, controle e interoperação, são compensados por ganhos de eficiência e de escala, a
substituição se torna racional na lógica econômica.
Plano jurídico: O legislador deve ser acionado
para regulamentar novas práticas comunicativas na medida em que se consolidem como
socialmente aceitáveis, para adequá-las aos
preceitos normativos que regem os costumes,
em consonância com aqueles já sedimentados
nas diversas jurisprudências, se tais novas práticas não são alcançáveis pela Hermenêutica.
Visto a importância que a área de TIC alcançou no cenário mundial, seja no ramo industrial, empresarial, comercial, financeiro ou
outro qualquer, tornou-se uma necessidade global e inerente às necessidades básicas para o funcionamento de qualquer negócio que trabalhe
inserido no meio globalizado.
A TI passou a ser o quarto principal recurso
disponível para os executivos, depois das pessoas, do capital e das máquinas. (GRAEML, 2000)
A partir do momento que as empresas passam a ser dependentes das TICs para que seus
negócios fluam de forma harmônica, se faz ne-
FACULDADE MATER DEI
cessário o estudo aprofundado dos critérios e
procedimentos de utilização do ambiente
informatizado da empresa e estes devem ser observados de forma sumária. Devem ser utilizados
somente para atender as necessidades de negócio da corporação, sendo o seu uso limitado ou
proibido para quaisquer outras atividades.
Esses procedimentos passam a ser necessários
para segurança e proteção dos dados, a fim de
garantir a integridade das informações de relevância para os negócios da empresa, informações
estas armazenadas em meios eletrônicos. Além
disso, é preciso acompanhamento e gestão do
parque tecnológico para garantir a manutenção
e a renovação periódica dentro das necessidades de utilização dos recursos de hardware e
software, garantindo assim a eficiência dos serviços que dependem dos recursos de TIC. É nesse ponto que infere o estudo de caso que segue.
3. O ESTUDO DE CASO
O estudo realizado apresenta observações
das normas, instruções técnicas e de apoio baseadas na política de qualidade adotada pela Companhia de Saneamento do Paraná – SANEPAR, a
qual apresenta uma metodologia de padronização de ferramentas de hardware e software, a
fim de facilitar o trabalho de gerenciamento da
Unidade de Serviço de Tecnologia da Informação (USTI), no que diz respeito ao parque de TIC
da empresa. A USTI é o setor da SANEPAR responsável por oferecer todo suporte em TIC para
os demais setores da Companhia. No decorrer do
artigo será utilizada a expressão “unidade gestora
de TIC” ou “unidade de serviços de TIC” para
generalizar o setor interno que atende a todos
os serviços de TIC da empresa. Vale ressaltar que
em cada empresa existem formas particulares
para determinar a divisão em grupos, setores,
equipes, unidades, departamentos ou outra expressão que determina o foco de atuação interno, sendo que todos esses setores juntos é que
efetivamente formam a empresa. É importante
estender o entendimento da organização interna de forma genérica e aplicável a quaisquer
outras empresas.
É importante salientar, que cada empresa
define, baseada em seu ramo de atuação, quais
REVISTA DE INFORMÁTICA
as prioridades em termos de hardware e software
são necessárias, ou ainda, essenciais para
melhoria da produtividade, buscando sempre o
melhor custo/beneficio para a corporação. O setor de TIC não só têm que responder às necessidades empresariais recentemente percebidas,
mas, com a mudança das tecnologias, têm que
adaptar procedimentos e práticas. Adequar a
capacidade de processamento e armazenamento
ao porte da empresa de forma que atenda a necessidades em relação à carga e ao fluxo de informações das transações eletrônicas.
3.1 Gestão de Recursos de Hardware
e Software
3.1.1 Critérios Gerais
Os usuários devem garantir o controle de
acesso às estações de trabalho sob sua responsabilidade. Evitando o uso indevido e acessos não
autorizados às informações da empresa. As sessões de trabalho devem ser encerradas ao fim do
expediente, ou quando o usuário se ausentar de
sua estação de trabalho por períodos prolongados de tempo, desligando ou bloqueando seu
equipamento no período de ausência.
A manutenção deve ser feita somente por
pessoas autorizadas pela área de informática.
Nenhum usuário tem a permissão de instalar
modem, kit multimídia ou qualquer outro recurso adicional nos equipamentos de informática.
A conexão à rede de dados, de equipamento, que não sejam de propriedade da empresa, e
não estejam devidamente autorizados pela área
de informática, não é permitida.
Uso simultâneo de modem e placa de rede
nos equipamentos de informática conectada a
rede corporativa não deve ser permitido, sem
expressa autorização e justificativa da utilização,
além de passar por monitoramento, pois o acesso com modem pode ser considerado ponto de
falha com relação à segurança. Portanto o acesso a Internet ou qualquer outra rede externa ao
ambiente informatizado deve ser feito exclusivamente pela rede corporativa, a qual possui recursos de proteção com serviços de firewall,
proxy, entre outros.
A unidade gestora dos recursos de
informática, pode monitorar e restringir o aces39
FACULDADE MATER DEI
so aos recursos de informática, através de políticas de segurança implementadas por software
ou hardware, monitorando e impedindo alterações nos componentes de software ou hardware.
Visando a implementação destas políticas, as estações de trabalho cliente, devem utilizar como
padrão o sistema operacional homologado e licenciado pela empresa, observando que o equipamento atenda os requisitos mínimos de
hardware.
Em quaisquer ambientes informatizados,
sejam corporativos ou não, o uso de senha é um
aspecto fundamental da segurança da informação, pois é a primeira barreira para proteção das
contas de acesso dos usuários contra pessoas não
autorizadas. A senha deve ser individualizada e
secreta. O uso de uma senha de má qualidade,
ou seja, senha que possa ser revelada com facilidade, dependendo dos níveis de acesso do usuário, pode resultar no comprometimento de todo
o ambiente informatizado da corporação.
O processamento e armazenamento de informações devem ser desenvolvidos respeitando
os elementos de controle interno da política de
segurança da informação (CUNHA, 2006).
Conforme Constituição Federal, Artigo 5º,
Inciso XXII e XXIII, a empresa pode se reservar o
direito de acesso, auditoria, revisão, eliminação,
revelação ou uso de todas as informações armazenadas nos microcomputadores, inclusive verificação de correio eletrônico da Companhia a
qualquer momento e sem notificação prévia, ou
seja, verificar logs (registros) para análise de acessos impróprios e tomar as devidas providências
para evitar o uso indevido. O objetivo é dar maior segurança às informações da empresa.
3.1.2 Gestão de Software
A unidade de serviços de TIC deve ficar responsável pelo provimento, homologação,
licenciamento, desenvolvimento, suporte e manutenção dos software necessários ao provimento dos subsídios tecnológicos para as funções
administrativas, operacionais, financeiras, entre
outras existentes no âmbito da Companhia.
Somente devem ser instalados e utilizados software homologados pela unidade de
serviços de TIC que avalia através de diversos testes como estabilidade, funcionalidade, compati40
REVISTA DE INFORMÁTICA
bilidade com as plataformas de sistema
operacionais utilizados pela empresa. Quando o
software necessita de licença para ser instalado
a questão custo é amplamente avaliada para
analise da real necessidade e se os benefícios
justificam a custo da aquisição. Com a ampla difusão do software livre, o qual não exige o pagamento de licença para a utilização do mesmo, o
processo de homologação se torna mais simples.
Após a análise e os testes realizados com o
software, já pode ser instalado nos computadores da empresa. A SANEPAR, tem intensificado
os esforços pela difusão e utilização de software
livre, apoiando e contribuindo com projetos
como o BrOffice.org, que recebe o apoio de inúmeras organizações públicas e privadas, bem
como da comunidade de desenvolvedores e colaboradores de software livre. O BrOffice.org se
tornou o software padrão em termos de pacote
de aplicativos para escritório, substituindo o
Microsoft® Office. O BrOffice.org atende as necessidades da empresa com planilhas de cálculo, editor de textos e editor de apresentações, mas
a maior vantagem se apresenta na inexistência
de custo da licença para utilização mesmo em
âmbito corporativo. Segundo dados da administração de TIC da SANEPAR a economia com licenças de software obtida com a utilização do
BrOffice.org no último ano na aquisições de computadores, atingiu cerca de 1,8 milhão de reais.
Esse fator incentiva a empresa a investir ainda
mais na difusão do software livre e gratuito.
A SANEPAR possui normas que orientam os
usuários sobre a correta utilização dos computadores e software instalados. Ainda existe rígido
controle de utilização de internet, e-mail,
software de mensagens instantâneas e aplicativos
do sistema corporativo. O controle é feito através de autenticação no servidor com login e senha individual. Nos locais onde os computadores são logados a rede através de autenticação
no servidor de domínio, o usuário é responsável
pela correta utilização do computador a partir
do momento que realiza seu login na rede
corporativa. O servidor de domínio permite
gerenciar de forma individualizada a utilização
dos computadores. Porém, nas cidades do interior do estado os computadores não são logadas
ao servidor de domínio por causa da baixa banda de comunicação existente no momento e que
FACULDADE MATER DEI
inviabiliza o procedimento. Mesmo assim, todos
os acessos à internet e a qualquer aplicativo
corporativo são feitos sob a exigência de login e
senha. E ainda, o conteúdo da internet é filtrado
utilizando servidor proxy com serviço Squid e
servidor NAT. Existem listas de acesso que permitem ou bloqueiam o conteúdo solicitado. O
software antivírus também é uma importante ferramenta utilizada para inibir problemas de vírus,
invasões e outras pragas virtuais.
Não devem ser permitidos acessos a web sites,
cujo conteúdo, não seja de real utilidade aos
negócios ou que contrariem qualquer elemento da segurança da informação da Companhia.
Ainda, não é permitido efetuar cópia de
software na internet, assim como materiais gráficos, logomarcas, documentos e outros que
possam caracterizar pirataria e/ou violação de
direitos autorais, de acordo com a Lei 9609 de
19/12/1998.No ambiente corporativo, software
antivírus e de gerenciamento de rede, por questões de segurança, não podem ser desabilitados
ou impedidos de funcionar, ficando o responsável sujeito à advertência. (CUNHA, 2006)
A utilização de correio eletrônico (e-mail), é
outro recurso que precisa ser muito bem administrado, deve ser feita por usuários autorizados, com
a finalidade de agilizar os contatos de negócio,
sendo proibido o uso para envio de mensagens
que não sejam de interesse da empresa ou que
possam comprometer a imagem da empresa perante seus clientes e a comunidade em geral.
Em cada setor da empresa, os ativos (sistemas, aplicações e diretórios) utilizados no ambiente informatizado devem possuir gestores responsáveis por gerenciar a utilização correta, garantindo a aplicação dos níveis adequados de
confidencialidade, integridade e disponibilidade nas informações, dados e processos envolvidos. Gerenciar o controle de acesso, autorizando as solicitações de acesso dos usuários e definindo o nível de acesso (somente leitura ou leitura e escrita).
Nessa linha de aplicação, são necessários
soluções de software que auxiliem as equipes de
TIC. Por exemplo, ferramentas de TI para o
gerenciamento de redes. Como é o conceito de
administração zero implementável no Windows
2000 Server. Segundo ORTIZ (2001, pág.105),
“a administração zero é um conjunto de proce-
REVISTA DE INFORMÁTICA
dimentos que tenta reduzir o custo total de posse das redes de computador. Quanto maior a
rede, mais custos ela gera para a empresa”.
O Active Directory é outra ferramenta importante para a gestão da rede corporativa. Com
ele, cada usuário precisa estar cadastrado no servidor para conseguir logar em qualquer estação
de trabalho da empresa.
O Active Directory é um banco de dados de
contas, que é compatível com diversas soluções de protocolos abertos, entre eles estão o
LDAP, o DNS e o KERBEROS. Um banco de dados de contas nada mais é que um banco de
dados que armazena informações sobre todos
os recursos disponíveis na rede (ORTIZ, 2001,
pág.197).
Outro exemplo interessante, em termos de
ferramentas de TI para o gerenciamento de rede
corporativa e que está sendo utilizado pela Companhia de Saneamento do Paraná é a suíte Trauma Zero (Tz0). É um conjunto de módulos de
software voltados para a administração de recursos de informática, possibilitando a centralização das informações, permitindo maior segurança e controle para a empresa. Através de uma
coleta detalhada dos dados, disponibiliza informações precisas sobre utilização e licenciamento
de software, inventário completo de software e
hardware, falhas de segurança, entre outras que
permitem um melhor uso e maior segurança dos
recursos da empresa, racionalizando e
otimizando sua utilização. Possibilita o suporte e
a manutenção remota, assim como o
monitoramento de todas as estações de trabalho
mesmo em conexões lentas, criação de políticas
de uso das estações, controle de todo hardware
instalado, entre outras (GERENCIAMENTO..., 2006)
Esta solução tem por objetivo atender as
seguintes necessidades da empresa:
- Gestão do parque de máquinas instaladas na rede corporativa;
- Gestão de hardware instalado nas estações;
- Gestão de software instalado;
- Suporte remoto às estações clientes;
- Melhor utilização dos recursos das estações.
A suíte Trauma Zero é utilizada da seguin41
FACULDADE MATER DEI
te forma: o software agente é instalado através
de login script e fica rodando em cada computador da rede. Durante a carga do sistema
operacional o agente se conecta ao servidor. O
gerenciamento é feito através da Console do Trauma Zero que fica restrito aos administradores da
rede. Os técnicos tem acesso ao módulo que permite visualizar os computadores da rede para
prestar serviço de assistência remota aos usuários. Os administradores têm uma gama de recursos através da console do Trauma Zero como
monitorar todo e qualquer serviço que esteja instalado ou venha a ser instalado no sistema
operacional de qualquer maquina da rede,
monitoramento de uso de CPU, uso de memória,
espaço livre em disco, velocidade das conexões
TCP-IP, estabilidade dos computadores, serviços
associados a banco de dados corporativos como
SQL-Server®, programas de backup, antivírus,
entre inúmeras outras análises gerenciais. Retirar relatório de utilização por software. Permite
e controla a distribuição de software em rede,
bem como agendamentos ou instalações em tempo real. Geração de estatísticas de quem mais
usa o link e para que. Monitoramento de alterações de hardware e software, por exemplo, se
um dispositivo qualquer for conectado a um
micro, numa porta USB, é possível monitorar esse
dispositivo sabendo que tipo de dispositivo se
trata. Além de outros relatórios gerenciais.
Os recursos apresentados são exemplos de
casos de uso. Cada empresa precisa fazer um estudo detalhado das suas necessidades, para a
aquisição das soluções que melhor atendam ao
perfil da empresa.
3.1.3 Gestão de Hardware
A gestão de hardware diz respeito à
padronização do parque tecnológico da empresa. A aquisição ou substituição de equipamentos em série ou lotes, permite uma melhor padronização de hardware desktop da empresa. A
instalação, configuração e manutenção de
hardware tornam-se mais fáceis com a utilização
de clonagem de disco rígido. Este procedimento
funciona através da utilização de software, que
cria uma imagem matriz a partir de um computador instalado e configurado. Essa imagem
pode ser replicada para ilimitado número de equi42
REVISTA DE INFORMÁTICA
pamentos que possuem as mesmas características de hardware, sem problema algum. A outra
vantagem é que essa mesma imagem pode ser
salva e retornada quando o computador apresentar problemas de funcionamento causados
por software.
A Companhia de Saneamento do Paraná
adota uma padronização para configuração de
computadores bastante interessante. Os discos
rígidos são particionados em unidade C (Sistema), onde fica armazenado o sistema
operacional e uma partição estendida - unidade
lógica D (Dados), onde ficam armazenados os
dados do usuário, como pasta Meus Documentos, pasta Desktop, pasta Favoritos, pasta Dados
de Aplicativos, uma pasta de E-mail e uma pasta
Suporte que contém software necessário para
reinstalações futuras, drivers de configuração e
a imagem matriz. Dessa forma o suporte técnico
consegue minimizar o tempo de manutenção e
recuperação dos computadores. Esta configuração é feita para todos os computadores desktop
da rede corporativa.
A utilização de armazenamento de dados
nos computadores desktop fica limitada a capacidade do disco rígido e a realização de cópias
de segurança é de inteira responsabilidade do
usuário. Para maior segurança pode ser utilizado o armazenamento em servidores de arquivos
na rede.
O gerenciamento do uso dos servidores de
arquivos e sistema de diretórios atribui limite de
cota de disco por usuário, sendo que os arquivos
com conteúdos impróprios ou não autorizados ficam sujeitos a serem apagados, sem aviso prévio,
no caso de falta de espaço em disco no servidor.
Numa empresa corporativa a atualização
ou substituição de hardware deve acompanhar
a evolução das necessidades exigidas pelos
software utilizados, e também, deve ser
dimensionada de forma adequada para a utilização dos usuários, procurando distribuir os equipamentos com maior capacidade de
processamento para as áreas que mais necessitam, como por exemplo, área de projetos e engenharia e direcionando os computadores com
menor capacidade para áreas de menor exigência de processamento, como por exemplo, atividades administrativas simples. Isso minimiza a
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
sub-utilização e aumenta o período de tempo de
utilização do hardware dos computadores na
empresa.
armadilhas que se apresentam no setor de TIC.
4. CONSIDERAÇÕES FINAIS
CUNHA, N.M. “Uso do Ambiente Informatizado”,
Companhia de Saneamento do Paraná. PF/INF/
001-10, 2006.
As empresas corporativas necessitam de
padronização para gestão do parque
tecnológico de hardware e software. Isso fica
evidenciado na necessidade de existência de um
departamento de informática eficaz e competente, que estabeleça critérios e procedimentos
normativos, buscando padronizar a aquisição,
utilização, suporte e manutenção, tanto de
hardware quanto de software, como forma de
minimizar os problemas de heterogeneidade e
outras incompatibilidades, que podem gerar custos e dor de cabeça a gerência de TIC da empresa. Os investimentos em tecnologia precisam estar muito bem embasado em parâmetros técnicos para que sejam realizados de forma acertada, proporcionando melhorias à empresa, e não
se tornando um gasto desnecessário.
O destino de uma organização pode ser
afetado profundamente por suas decisões
tecnológicas. A ousadia nessas horas pode levar
a casos de sucesso de grande repercussão ou a
estrondosos fracassos. (GRAEML, 2000)
Da forma como foi visto, a padronização e
o uso inteligente dos recursos tecnológicos podem, se não impedir, mas com certeza, minimizar
em muito os problemas com tecnologia da informação,
promovendo
uma
maior
interoperabilidade dos recursos corporativos.
Da mesma forma que, é extremamente importante estabelecer diretivas e procedimentos
de segurança, que garantam a integridade das
informações de relevância armazenadas em
microcomputadores,
bem
como
o
gerenciamento do fator humano, que se apresenta como um dos principais ativos na gestão e
manipulação de informações que devem ser trabalhadas, respeitando os elementos de controle
interno da política de segurança e informações
da empresa.
Observados os fatores apresentados, os objetivos de maximizar a segurança das informações
corporativas, podem ser alcançados, sem cair em
REFERÊNCIAS
GERENCIAMENTO de Infra-estrutura. Disponível
em: http://www.criterium. com.br/site/content/
home/template-foto-acima.asp?secao_id=54.
Acesso em: 03 ago. 2006.
GRAEML, Alexandre Reis. Sistemas de Informação: o alinhamento da estratégia de TI com a
estratégia corporativa. São Paulo: Atlas, 2000.
ORTIZ, E. B. “Microsoft Windows 2000 Server.
Instalação, Configuração e Implementação”, 5a
ed. Érica. São Paulo. 2001. Pág. 105 e 197.
REZENDE, P. A. D. “Responsabilidades e Escolhas
num mundo de Chaves Públicas”, Brasília, 11 Jun.
2003. Universidade de Brasília. Disponível em:
http://www.iti.br/twiki/pub/Forum/ArtigoA04/
a04-rezende.rtf. Acesso em: 03 ago. 2006.
43
FACULDADE MATER DEI
44
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 5
UMA PROPOSTA PARA A
GERAÇÃO DE INTERFACES
ADAPTATIVAS
DOUGLAS T. S. FINKLER¹,
ANDRÉ A. DOS SANTOS¹,
MARILSON M. DOS SANTOS¹,
GIANI CARLA ITO¹
{dtsfinkler, andreaugusto_cvel, marilson_ms}@hotmail.com,
[email protected]
RESUMO
Este artigo descreve as características do
protótipo de um aplicativo que foi desenvolvido
para possibilitar a construção de sites Web que
possam ser acessados em diferentes tipos de dispositivos móveis, proporcionando a adaptabilidade do mesmo. A validação deste protótipo será
apresentada através de um estudo de caso que
demonstrará os resultados obtidos com o desenvolvimento deste trabalho.
1.
INTRODUÇÃO
Com a revolução da computação móvel, o
acesso à informação a qualquer instante e em
qualquer lugar faz com que os as aplicações desenvolvidas para a Web sejam capazes de adaptar suas interfaces conforme as características dos
diversos dispositivos móveis existentes. Segundo
[Menkhaus e Pree 2002] a nova variedade de
dispositivos tem um profundo impacto na maneira como as interfaces de usuário de serviços
baseados na Web são construídas. Assim sendo,
as páginas acessadas por esses dispositivos móveis são exibidas de forma desconfigurada e,
dependendo da compatibilidade dos componen¹Departamento de Sistemas de Informação Universidade Paranaense (UNIPAR) –
Cascavel, PR – Brasil.
REVISTA DE INFORMÁTICA
tes da interface, algumas vezes podem não ser
exibidas corretamente.
[Kostakos e O’Neill 2003] afirmam que os
problemas relacionados à usabilidade são apresentados tomando uma interface desenvolvida
para monitores de computadores de mesa, bem
como uma interface gráfica de um sistema
operacional para estes tipos de computadores e
colocando-o com um mínimo de alterações em
um Pocket PC que possui uma tela de área pequena e dispositivos de entrada muito diferentes. Assim, um dos grandes desafios da computação móvel atualmente é o desenvolvimento de
sites que possam ser visualizados de forma clara
e objetiva em dispositivos móveis.
Este trabalho visa apresentar uma ferramenta para a Geração de Interfaces Adaptativas (GIA)
que partindo de um modelo genérico tem como
objetivo a criação de interfaces que se adaptem
às características distintas de dispositivos móveis,
retornando dinamicamente para cada cliente.
Utilizar-se-á uma forma de reconhecimento para dispositivos móveis proposta pela W3C
(World Wide Web Consortium), denominada CC/
PP (Composite Capability Preference Profile) que
tem a finalidade de proporcionar um mecanismo estruturado e universal para descrever e transmitir informações sobre as características de um
dispositivo móvel para um servidor.
Este artigo está dividido nas seções descritas a seguir. A seção 2 abordará os Trabalhos
Relacionados, a seção3 sobre o Composite
Capabilities / Preferences Profile, a seção 4 sobre
a Arquitetura para Geração de Interfaces
Adaptativas (GIA), a seção 5 abordará o Ambiente de Desenvolvimento, a seção 6 apresentará
os Testes Realizados e a seção 7 a Conclusão.
2.
TRABALHOS RELACIONADOS
O ambiente da computação móvel exige a
necessidade de uma maior flexibilidade do
software, impondo novos desafios para a modelagem e desenvolvimento. Atualmente diversos
estudos estão sendo realizados em busca de
interfaces mais dinâmicas, que permitam ao usuário realizar suas tarefas de maneira mais agradável e eficiente.
45
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
[Viana, Teixeira, Cavalcante e Andrade 2005],
apresentaram um ambiente para integrar soluções
para o desenvolvimento de aplicações para dispositivos móveis integrando as plataformas
Superwaba, J2ME MIDP 1.0/CLDC 1.0 e J2ME MIDP,
2.0/CLDC 1.1. O trabalho fornece uma infra-estrutura Web e uma coleção de clientes móveis que
em
conjunto
oferecem
aos
MAS
(MobileApplication Servers) informações para a realização da adaptação. Estas informações são descritas utilizando as especificações (CC/PP) e UAProf
(User Agent Profiling Specification). Contudo, o
framework apresenta restrições como suportar apenas algumas plataformas de programação.
[Lemlouma e Layaïda 2004] propuseram o
NAC (Negotiation and Adaptation Core), uma
adaptação voltada a serviços multimídia para
ambientes heterogêneos.
Oferece dois tipos de adaptação, estrutural como XHTML (Extensible HyperText Markup
Language) para WML (Wireless Markup
Language), SMIL (Synchronized Multimedia
Integration Language) e XHTML (eXtensible
HyperText Markup Language), e a adaptação de
mídias, como compressão de imagens e textos
para SMS (Short Message Service). Os documentos também podem ser adaptados para o idioma
do cliente solicitante e a interface pode ser convertida de XHTML para WML caso sejam
acessados por celulares. Um conjunto de regras
são utilizadas por um proxy para realizar o processo de adaptação. Quando um dispositivo desejar acessar um documento Web, fará a requisição ao proxy. Este por sua vez, obterá o documento original dos servidores de conteúdo e o
documento CC/PP com o perfil do dispositivo,
realizando a adaptação baseada nas regras préestabelecidas, devolvendo-o ao dispositivo de
forma adaptada. Uma desvantagem desta arquitetura é a necessidade de descrever cada novo
dispositivo em UPS (Universal Profiling Schema),
escrita em [Layaïda e Lemlouma 2003].
3. COMPOSITE CAPABILITIES
PREFERENCES PROFILE ( CC/PP)
/
O CC/PP é um framework reconhecido pela
W3C que é responsável pelo reconhecimento dos
dispositivos que tentam acessar o documento
46
Web. Segundo [Klyne et. al. 2004], um perfil CC/
PP é uma descrição das potencialidades do dispositivo e das preferências do usuário. Tem como
objetivo proporcionar um mecanismo
estruturado e universal para descrever e transmitir informações sobre as capacidades de um cliente Web para um servidor, de forma que o conteúdo seja direcionado a essas características.
O DELI (Delivery Context Library) é uma biblioteca desenvolvida pela HP (Hewlett Packward),
que permite ao servlet, tratar requisições de dispositivos que possuam perfis CC/PP. [Silva, Ribeiro
e Ito 2005] descrevem um exemplo de uso e aplicação do DELI integrado ao CC/PP.
Os perfis podem estar armazenados em um
servidor Web local ou não, de acordo com [Butler
2002]. Quando não são locais, ou seja, não se
encontram no contexto da aplicação, estão armazenados em um repositório de dados externo
e localizados em um servidor Web. Apesar de ser
uma arquitetura mais lenta, ao contrário de um
repositório local, ela proporciona uma atualização de perfis menos trabalhosa, sendo que estes
podem ser recuperados através de URI´s (Uniform
Resource Identifier) disponibilizadas pelos fabricantes.
[Lassila e Swick 1999] afirma que o CC/PP
é apresentado em RDF (Resource Description
Framework), que é a linguagem utilizada pela
W3C para modelagem de meta dados. Proporciona uma melhor interoperabilidade entre aplicações e permite uma estrutura mais flexível e
descentralizada.
O RDF é implementado em XML (eXtensible
Markup Language), que segundo [Bray et. al.
2004] é uma descrição de uma classe de objetos
de dados chamada de XML Documents que descrevem parcialmente o comportamento dos programas que os processam.
4. ARQUITETURA PARA GERAÇÃO DE
INTERFACES ADAPTATIVAS (GIA)
A geração de interfaces proposta pela arquitetura GIA utiliza a descrição de uma interface
genérica que tem como finalidade principal atender as solicitações de diversos usuários a uma
mesma aplicação considerando o tipo de dispositivo móvel para responder devidamente a soli-
FACULDADE MATER DEI
citação em tempo de execução.
Outro fator de destaque é permitir uma
implementação que esteja voltada a um ambiente multi-plataforma, ampliando assim, a relação um para um, para uma relação um para n,
ou seja, uma aplicação pode gerar várias
interfaces. O processo de adaptação ocorre durante a solicitação facilitando o processo de desenvolvimento de interfaces, pois um único projeto de interface poderá ser exibido em múltiplos tipos de dispositivos.
A figura 1 ilustra a arquitetura GIA composta por dois níveis: cliente e servidor; onde os
clientes podem fazer solicitações de serviços
munidos de diversos tipos de PDA’s dentre eles
Palms, Pocket PC´s ou Smartphones. No servidor
estão localizados o interceptador, o framework
DELI, o redirecionador de regiões, o gerador de
componentes, o handler e o banco de dados,
descritos a seguir:
• Interceptador: é um servlet que intercepta a conexão realizada pelo usuário com o
objetivo de identificar as características do
dispositivo. Tem a função de acionar o DELI,
e se comunicar com o repositório de perfis
externo, o CC/PP, a fim de obter os dados
do dispositivo cliente e retorná-las para o
handler;
• DELI e Repositórios de Perfis: realiza o
reconhecimento dos dispositivos que
acessam a aplicação, como descrito na seção 3;
• Handler: é responsável por todo o
gerenciamento da arquitetura. Associa funcionalidades do framework DELI com a arquitetura GIA para obter as características
do dispositivo que está requisitando o site.
Controla o redirecionador de regiões e o
gerador de componentes;
• Interface: é a aplicação implementada em
código JSP;
• Redirecionador de Regiões: o handler
verificará se a interface está fragmentada e
o tamanho de tela do dispositivo
solicitante, a fim de utilizar ou não as regiões declaradas no código. Caso estas duas
condições sejam verdadeiras, o handler inserirá no código um algoritmo que gerará
um menu, possibilitando a navegação en-
REVISTA DE INFORMÁTICA
tre as regiões definidas pelo desenvolvedor;
• Gerador de Componentes: é um
algoritmo que tem a função de converter o
código JSP referente ao componente, na
linguagem que o dispositivo solicitante reconheça, como por exemplo, XML, HTML e
WML;
• Banco de Dados: contêm as informações
sobre browser, fabricante, perfis, componentes, tags e dispositivos, que serão utilizadas para a geração de componentes.
Figura 1 - Arquitetura para Geração de Interfaces Adaptativas
Para exemplificar um cenário de utilização
da arquitetura GIA, supõe-se que o usuário faz
uma solicitação à aplicação através de um dispositivo móvel ou computador pessoal. O
interceptador captura-a e faz uma chamada para
o DELI, para identificar o dispositivo e localizar
no repositório de perfis externo as informações
relevantes, tais como, o tamanho de tela,
browser, sistema operacional, etc. Após o processo anterior, o interceptador passa as informações para o handler que por sua vez, verificará se
a interface está fragmentada. Caso positivo solicitará ao redirecionador que exiba as regiões prédefinidas pelo desenvolvedor.
O gerador de componentes usará as informações geradas pelo DELI para converter as tag-libs
declaradas no código em uma linguagem que o
dispositivo solicitante interprete. Após este processo, o handler utiliza as informações do
redirecionamento de regiões (caso tenha sido necessário) e das tag-libs convertidas e gera a interface
de acordo com o perfil do dispositivo. O cliente re47
FACULDADE MATER DEI
ceberá se necessário, uma interface fragmentada e
codificada conforme suas características.
5.
AMBIENTE DE DESENVOLVIMENTO
A ferramenta de desenvolvimento GIA tem
a finalidade de proporcionar um ambiente para
a criação de interfaces adaptativas, conforme a
arquitetura proposta na seção 4. Foi
implementada na linguagem Object Pascal através do Borland Delphi 7.
A linguagem de programação que será utilizada para o desenvolvimento das interfaces na
ferramenta GIA é a JSP (Java Server Pages), uma
especificação da Sun Microsystems que combina Java e HTML com o objetivo de fornecer conteúdo dinâmico para páginas Web. Permite a inserção nas páginas JSP de conteúdo HTML, proporcionando agilidade no processo de implementação,
já que designers e desenvolvedores podem trabalhar separadamente.
Ao iniciar a construção da página o
desenvolvedor deverá mapear a interface seguindo uma técnica de programação que propõe a
divisão do código em regiões, de forma hierárquica, mantendo uma relação lógica entre elas
de acordo com a funcionalidade atribuída, que
tem por objetivo a intercalação do código.
Cada região poderá ser composta por subregiões e também por componentes visuais
como textos, botões, links, combos, imagens, etc.
Foram determinados 9 tamanhos de região, numa
escala aritmética de 100 a 500 pixels com coeficiente de variação de 50. Para determinar o tamanho mínimo e máximo de uma região analisou-se que o menor tamanho da tela dos dispositivos móveis, incluindo celulares e PDA’s, aproximam-se de 100 pixels e o maior de 500 pixels.
Caso o tamanho da tela do dispositivo ultrapasse 500 pixels a interface não será fragmentada,
sendo mostrada na íntegra. Para viabilizar o processo de adaptação, foi estabelecido que seja
mostrada a menor região que mais se aproxima
da resolução do aparelho.
A arquitetura GIA permite utilizar durante
o processo de desenvolvimento uma forma de
reduzir o conteúdo que será visualizado no dispositivo móvel, pois as restrições relacionadas ao
tamanho da tela do dispositivo tornam necessá48
REVISTA DE INFORMÁTICA
rias, em alguns casos, a classificação das informações. A seleção do conteúdo que será exibido é determinada de acordo com as delimitações
das regiões.
Durante o processo de desenvolvimento, a
interface poderá ser visualizada de forma completa ou fragmentada, como ilustra a figura 2.
Figura 2 – Formas de visualização da interface
Para que seja possível o processo de fragmentação de uma página pelo handler da ferramenta, foram definidas tag-libs, que delimitam
e identificam as regiões determinadas pelo
desenvolvedor durante a implementação da
interface, conforme o exemplo a seguir:
<prefix:regiao id=’’topo’’ seq=’’2'’>
<prefix:componente tipo=’’fonte’’propriedades=’’size=2;
color=#000000'’>
Exemplo de Identificação de Região
</prefix:componente>
</prefix:regiao>
As tag-libs têm como função também representar de forma genérica o respectivo componente de cada dispositivo e converter o modelo cadastrado em banco em uma linguagem
que o browser do cliente reconheça.
6.
TESTES REALIZADOS
Para a realização da análise proposta foi
desenvolvida uma interface escrita em JSP e configurado o servidor Web Apache TomCat 5.5. Para
fins de testes, utilizou-se o Internet Explorer 6.0
da máquina local e os simuladores Openwave
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
Phone Simulator, de celular e Palm Os Cobalt
Simulator 6.0.1, da Palm, acessando através de
cada um deles o site desenvolvido.
Observa-se na figura 3 que a exibição no
navegador Internet Explorer 6.0 na resolução de
1024x768 pixels mostra que a página está adaptada conforme as características deste browser.
Figura 5 – Interface visualizada no Openwave Phone Simulator
7. CONCLUSÃO
Figura 3 – Interface visualizada no browser Internet Explorer 6.0
A partir da captura de telas do Palm Os
Cobalt Simulator 6.0.1, observa-se na figura 4
que a interface também se adaptou as características do dispositivo. Devido à tela do Palm ser
maior em relação a do Openwave, o conteúdo
visualizado na tela é maior, o que resulta na menor rolagem da barra horizontal. O handler inseriu no topo e no final de cada região um menu
que possibilita a navegação entre as telas.
Neste trabalho apresentou-se uma Arquitetura para Geração de Interfaces Adaptativas,
com o intuito de contribuir para uma maior facilidade de desenvolvimento no ambiente móvel.
Como principais vantagens da utilização da
arquitetura GIA podem-se ressaltar o processo de
adaptação da interface ao tipo de dispositivo
móvel em tempo de execução, bem como a facilidade de desenvolvimento, pois um único código poderá ser visualizado em múltiplos dispositivos.
No contexto da adaptação de interfaces
Web, apresentou-se os resultados obtidos através
da implementação de um estudo de caso, em um
ambiente de desenvolvimento. Para tal, utilizouse uma técnica de fragmentação do código em
regiões, que serão redirecionadas de acordo com
o tipo de dispositivo que solicitar a aplicação.
Figura 4 – Interface visualizada no Palm OS Cobalt Simulator 6.0.1
Acessando esta mesma interface através do
simulador Openwave Phone Simulator, observase através da figura 5 que o site foi adaptado às
características do dispositivo pois não gerou barra horizontal e o conteúdo pôde ser visualizado
de uma maneira clara e objetiva. Como no
Openwave, o handler inseriu no topo e no final
de cada região um menu que possibilita a navegação entre as telas.
49
FACULDADE MATER DEI
REFERÊNCIAS
Bray, T., Paoli, J., Sperberg-Mcqueen, C., Maler,
E., Yergeau, F. Extensible Markup Language (XML)
1.0 (Third Edition), W3C Recommendation. Disponível em <http://www.w3.org/TR/REC-xml/>.
Acessado em 02/07/2006.
Butler, M. H. (2002) DELI: A Delivery Context
Library for CC/PP and UAProf. Disponível em:
http://www.hpl.hp.com/personal/marbut/
DeliUserGuideWEB.htm. Acessado em 19/03/
2006.
Klyne, G., Reynolds, F., Woodrow, C., Ohto, H.,
Hjelm, J., Butler, M., Tran, L. (2004) Composite
Capability/Preference Profiles (CC/PP): Structure
and Vocabularies 1.0. Disponível em: <http://
www.w3.org/TR/2004/REC-CCPP-struct-vocab20040115/>. Acessado em 10/05/2006.
Kostakos, V., O´Neill, E. (2003) A Directional
Stroke Recognition Technique for Mobile
Interaction in a Pervasive Computing World.
Department of Computer Science, University of
Bath.
Lassila, O., Swick, R. (1999) Resource Description
Framework (RDF) Model and Syntax
Specification, Disponível em <http://
w w w. w 3 . o r g / 1 9 9 9 / s t a t u s / R E C - r d f s y n t a x 19990222/status>. Acessado em 13/06/2005.
Layada N., Lemlouma T. (2003) NAC: An
Architecture for Multimedia Content Adaptation
for Mobile Devices. Disponível em < http://
www.ercim.org/publication/Ercim_News/enw54/
layaida.html>. Acessado em 10/03/2006.
Lemlouma, T., Layada, N. (2004) Context-aware
adaptation for mobile devices. Proceedings of
IEEE International Conference on Mobile Data
Management. Saint Martin, France.
Menkhaus, G., Pree, W. (2002) User Interface Tailoring
for MultiPlatform Service Access. Disponível em:
<http://portal.acm.org/citation.cfm?id=502760>.
Acessado em 20/04/2006.
Silva, A. C. B., Ribeiro, N. N. T. J., Ito, G. C. (2005)
Análise de um Repositório de Perfis para Reconhecimento de Dispositivos Móveis. Anais, XII
Simpep.
Viana, W., Teixeira R., Cavalcante P., Andrade R.
(2005) Mobile Adapter: Uma abordagem para a
construção de Mobile Application Servers
adaptativos utilizando as especificações CC/PP e
UAProf. Disponível em <www.sbc.org.br/
bibliotecadigital/download.php?paper=173>.
Acessado em 08/02/2006.
50
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 6
A IMPORTÂNCIA DO
GERENCIAMENTO DE RISCOS
EM PROJETOS DE DESENVOLVIMENTO DE SOFTWARE:
ESTUDO DE CASO DO SISTEMA
DE CONTROLE DE VEÍCULOS
JAIR OTT¹,
PABLO A. MICHEL¹
[email protected], [email protected]
RESUMO
Esse artigo apresenta a importância da gerência de risco através da aplicação de conceitos
e técnicas em um estudo de caso que consiste
em desenvolver um sistema para controle de veículos, e porque se devem controlar as mudanças envolvidas em projetos de desenvolvimentos
de software.
1. INTRODUÇÃO
A área de engenharia de software tem produzido vários modelos de melhoria, processos,
métodos e ferramentas para aumentar a probabilidade de que os projetos de software tenham
sucesso (SOMMERVILLE, 1996). Apesar de todos
esses esforços, a literatura relata a falha nos projetos como algo comum (PRESSMAN, 1997).
Os projetos de software lidam com um alto
nível de incertezas, oriundas das mais diversas
fontes, dentre elas, a mudança de tecnologia, a
imaturidade nos processos, a adequação do perfil técnico para exercer uma atividade e a mudança contínua de requisitos. As incertezas são
uma fonte de risco em potencial.
A disciplina que faz com que se prospere
¹Departamento de Sistemas e Computação Universidade Paranaense (UNIPAR) –
Cascavel, PR - Brasil.
REVISTA DE INFORMÁTICA
em circunstâncias de grandes incertezas é chamada de gerência de risco. Segundo Heldman
(2005), quando for aplicada a gerência de risco
em alguma instância, as possíveis conseqüências são todas aceitáveis, podendo haver convivência com o pior resultado esperado, sendo que o
processo inicia com preocupações, dúvidas e
desconhecimentos que se transformam em riscos aceitáveis.
2. AS EMPRESAS E OS SISTEMAS DE
INFORMAÇÕES GERENCIAIS
A informação nos dias de hoje tem um valor altamente significativo e pode representar
grande poder para quem a possui. Atualmente,
existem mais computadores e tecnologias gerando informações úteis, precisas, a um custo menor, em menos tempo, usando menos recursos e
gerando riquezas.
Segundo Rezende e Abreu (2000) para organizar as informações, devem-se avaliar e dar
atenção às questões de uso de tecnologia moderna de banco de dados, de agilidade de acesso, de produtividade, de menor custo de operação e maior retorno.
Uma empresa inserida na sociedade da informação deverá tirar total vantagem do uso de
modernas tecnologias da informação para ganhar
competitividade, onde demanda um alto nível
de conhecimento focado para desenvolvimento
de estratégias, planejamento de longo prazo e
controles de gestão e de negócios.
O trabalho de uma empresa depende de
uma forma crescente do que os Sistemas de Informação são capazes de fazer, como o aumento da participação no mercado, a redução de
custos e o desenvolvimento de novos produtos.
Segundo Rezende e Abreu (2000) para obter um
diferencial competitivo com base no processo
acelerado de acúmulo de conhecimento, as empresas devem: automatizar as rotinas, motivar as
pessoas a assumirem atividades que requerem
criatividade e desenvolver autocapacitação nas
empresas.
As novas tecnologias vão sempre provocar
mudanças no ambiente social da empresa, sendo difícil imaginar alguma inovação tecnológica
51
FACULDADE MATER DEI
que possa ser introduzida sem provocar algum
efeito. Existe uma forte preocupação com a
competitividade e o desempenho da concorrência, sem dizer as pressões dos clientes que também estão presentes.
A tecnologia adquirida não garante todos
os benefícios esperados, nem sequer que os investimentos, feitos em sua aquisição, tenham
retorno. É preciso antes de tudo saber aproveitar
as oportunidades que essas mudanças proporcionam. Todo trabalho de análise, programação e
treinamento do usuário desenvolvido devem ser
cuidadosamente conduzidos em todas as fases
do projeto, pois esse trabalho, onde tanto esforço foi empregado, tanto pode dar certo como
pode dar errado.
Para controlar as mudanças que deverão ser
feitas, existem quatro estágios e que seus efeitos
podem por em risco qualquer organização, segundo Cruz (2000) são os seguintes: rejeição,
boicote, aceitação, cooperação: É preciso que o
usuário seja estimulado a todo o momento a
prosseguir com as mudanças, e que seja acompanhado até não mais pareçam que foram feitas
as mudanças e sim um cotidiano.
Os projetos de desenvolvimento de software
lidam com um alto nível de incertezas, oriundas
das mais diversas fontes, dentre elas, a mudança
de tecnologia, a imaturidade nos processos, a
adequação do perfil técnico para exercer uma atividade e a mudança contínua de requisitos.
3. PROJETO
Para Prado (2001) projeto é um esforço
temporário, levado o efeito para criar um produto/serviço único. Já para PMBOK (2000) salienta
que, o projeto é um empreendimento temporário com o objetivo de criar um produto ou serviço único. Vieira (2003) cita que, projeto é um
empreendimento não repetitivo, com início, meio
e fim, sendo conduzido por pessoas dentro de
parâmetros predefinidos de tempo, custo, recursos envolvidos e qualidade.
Concordando com Prado (2001) e
Leopoldino (2004), todo projeto possui um ciclo de vida, o primeiro afirma que, durante o ciclo de vida, o projeto passa por diversas fases ou
etapas e o conhecimento das características de
52
REVISTA DE INFORMÁTICA
cada uma delas é fundamental para seu sucesso,
onde se podem destacar quatro fases genéricas:
conceituação, desenvolvimento, execução e
finalização. Já segundo PMBOK (2000) afirma
que, o ciclo de vida de um projeto independe da
área em que seja conduzido, baseando-se em
etapas mais ou menos delineadas: definição, planejamento, execução, controle e finalização por
conclusão ou cancelamento.
Portanto, todas as fases do ciclo de vida do
projeto são de suma importância planejar e controlar, e a gerência de projeto têm um papel fundamental para planejar a sua execução antes de
iniciá-lo e acompanhar a sua execução, pois não
havendo o planejamento e o controle de cada
etapa pode ocorrer problemas que poderão ser
irreversíveis.
4. GERÊNCIA DE PROJETOS
Na definição do PMBOK (2000),
gerenciamento de projetos é a aplicação de conhecimentos, habilidades e técnicas para projetar atividades que visem a atingir ou exceder as
necessidades e expectativas dos stakeholders, ou
seja, as partes envolvidas no projeto.
A Gerência de Projetos é um ramo que trata do planejamento e controle de projetos, ou
seja, planejar a sua execução antes de iniciá-lo e
acompanhar durante todo o projeto, sendo que
no planejamento são estabelecidas às metas, as
tarefas a serem realizadas.
Mesmo gerenciando o projeto não significa que não haverá problemas e nem haverá surpresas, ou os riscos irão desaparecer. Um bom
gerenciamento do projeto está nos processos
padronizados, elaborados para lidar com qualquer tipo de contingência, requerendo tempo e
esforço onde é recompensado durante a vida do
projeto como resolvendo os problemas de maneira rápida, resolvendo riscos futuros antes que
esses possam ocorrer.
4.1 Exemplos de Software
Existe vários software que auxiliam no
gerenciamento de projetos. Não serão feitas comparações de funcionalidades entre os aplicativos,
pois o objetivo é apenas exemplificar a existên-
FACULDADE MATER DEI
cia de tais produtos que muito auxiliam e agregam valor ao projeto.
O Task Tracking é um software nacional,
desenvolvido pelo Laboratório de Tecnologia da
Informação de Uberlândia/MG. Uma correta avaliação da produtividade permite aperfeiçoar o
cronograma, alocando recursos corretos para
cada tarefa, que pode ser avaliada em partes.
A suíte do Task Tracking é composta por
três módulos: TTCliente, TTAdministrador e TTOffline, que podem auxiliar o gerente de projetos
concentrando-se nos recursos:
• TTCliente: este é o módulo no qual as tarefas
definidas pelo gerente de projetos são apresentadas aos recursos, permitindo assim aos
recursos trabalharem nas tarefas e atualizá-las
em tempo real.
• TTAdministrador: este é o módulo no qual o
gerente de projetos pode manipular os usuários do sistema e suas permissões, visualizar o
log das operações efetuadas.
• TTOff-line: esse módulo possui as mesmas
funcionalidades que o TTCliente, mas trabalha
de um forma totalmente independente do
repositório. O recurso pode utilizar o TTCliente
para gerar um arquivo de trabalho que será
usado pelo TTOff-line, ou seja, pode-se trabalhar fora da sede da organização.
O Microsoft Project 2002 inclui vários novos recursos e algumas melhorias muito significativas:
• Os recursos do Microsoft Project 2002 tornaram-se mais intuitivos;
• Os dados sobre projetos estão mais acessíveis, facilitando a colaboração entre os integrantes de equipes de projetos;
• As empresas podem utilizar uma plataforma
de gerenciamento de projetos corporativos.
• Os benefícios de migração é para as organizações que já possuem soluções da Microsoft
para os seus ambientes de gerenciamento de
projetos, que são:
• Planejamento intuitivo: guia de instruções
orienta o usuário, como organizar, gerenciar
as tarefas e recursos, acompanhar o projeto;
• Integração total: importa listas de tarefas criadas no Microsoft Excel diretamente para o
Microsoft Project;
• Facilidade de uso: com o auxílio de novos
assistentes, pode-se simplificar o processo de
REVISTA DE INFORMÁTICA
configuração e acompanhamento de
cronogramas de projetos.
• Melhor apresentação das informações: tenha uma visão mais abrangente dos projetos,
com os displays de agrupamento e apresentação das informações.
5. GERENCIAMENTO DOS RISCOS
Segundo Prado (2001) pode-se conceituar
gerenciamento do risco como uma quantificação
das conseqüências que poderão ocorrer caso o
projeto atrase ou ultrapasse o orçamento ou que
possa ter problemas técnicos. Concordando
Vargas (2002) e Belloquim (2006) gerenciamento
de risco possibilita a chance de melhor compreender a natureza do projeto, envolvendo os membros da equipe de modo a identificar os riscos
envolvidos em um projeto e responder a eles.
É necessário que o gerente de projetos seja
capaz de identificar problemas concretos, e, de
preferência, com sua probabilidade de ocorrer.
Determinados tipos de projetos são intrinsecamente mais arriscados do que outros. Eis aí mais
uma coisa que pode dar uma baita dor de cabeça ao gerente: não ser capaz de identificar o nível de risco do projeto.
O gerenciamento eficiente dos riscos pode
significar uma melhoria na conclusão do projeto
no tempo e custo esperados, sendo capaz de identificar os fatores que podem prejudicar o bom
andamento de um projeto é um fator crítico.
5.1 Fontes de Riscos
Os métodos de análise de risco empregados procuram verificar diversas fontes de risco,
tais como: riscos provenientes de fornecedores,
riscos provenientes de fatores externos, da disponibilidade de recursos e do grau de comprometimento da alta administração.
Segundo Rezende e Abreu (2000) também
uma das maiores ameaças ao sucesso dos projetos de tecnologia em informação diz respeito às
falhas de comunicação como, por exemplo, o
não envolvimento do usuário em todas as etapas ou fases do projeto, a falta de apoio dos altos executivos e levantamento de requisitos inconsistentes. Por isso recomenda-se que nenhu-
53
FACULDADE MATER DEI
ma ação seja tomada sem antes comunicar o fato
ao usuário e sem documentar e ter seu aval, mesmo nas alterações de definições e/ou mudanças
no escopo.
5.2 Gerência de risco no PMBOK
O PMI – Project Management Institute é
uma instituição internacional sem fins lucrativos
tendo sido criada com o objetivo de
profissionalizar a área de gerenciamento de projetos, tem definido como prática essencial da
gerência de projetos a execução do processo de
gerência de riscos. A gerência de risco tem como
objetivo maximizar os resultados de ocorrências
positivas e minimizar as conseqüências de ocorrências negativas, através dos seguintes processos: planejar a gerência de risco, identificar riscos, analisar riscos qualitativamente, analisar riscos quantitativamente, planejar as respostas aos
riscos, controlar e monitorar riscos, que serão vistos nas próximas subseções.
5.2.1 Planejar a Gerência de Risco
Este processo tem a finalidade de definir a
estratégia do gerenciamento de risco, dos recursos necessários para a realização do processo e
por fim, da efetivação das ações consideradas
necessárias no plano de gerência de risco.
5.2.2 Identificar Riscos
Segundo Machado (2002) o processo de
identificação dos riscos visa identificar todos os
riscos capazes de afetar o projeto e documentálos e as suas características, que se trata de um
processo iterativo, passando por constantes renovações, podendo envolver integrantes da equipe, stakeholders, usuários e quem mais estiver
sendo afetado negativamente ou não o projeto.
Entretanto, é necessário identificar todos os eventos de risco e suas respectivas conseqüências,
onde se podem citar alguns riscos como orçamentos, cronogramas, mudanças no escopo, problemas técnicos, problemas com pessoal,
hardware, riscos de âmbito jurídico.
É importante detectar todos os riscos tão
logo quanto possível. Quanto mais eficiente for
o trabalho de identificação de riscos na etapa de
planejamento, melhor será o plano de resposta
a eles.
54
REVISTA DE INFORMÁTICA
5.2.3 Analisar Riscos Qualitativamente
Esse processo visa à detecção do impacto
dos riscos identificados no projeto e sua probabilidade de ocorrência, classificando-os por prioridade, de acordo com os efeitos sobre os objetivos do mesmo que deve ser efetuada. É no desenvolvimento de um plano de resposta aos riscos onde é possível calcular a probabilidade de
ocorrência de um risco, avaliar suas conseqüências e corrigir distorções do plano do projeto.
5.2.4 Analisar Riscos Quantitativamente
Essa atividade avalia os impactos e
quantifica a exposição do projeto aos riscos por
meio da atribuição de probabilidade numéricas
a cada um e aos seus impactos, determinando
assim a probabilidade de atingir, quantificar a
exposição dos riscos e o tamanho das reservas
de contingência de custos e prazos do projeto.
5.2.5 Planejar as Respostas aos Riscos
Esse processo é de planejar as medidas a
serem tomadas para reduzir ameaças e tirar proveito das oportunidades encontradas nos processos de análise de riscos, quanto mais eficazes os
planos de respostas aos riscos, maiores as chances
de êxito no projeto; quando bem desenvolvidos
e bem escritos, esses planos reduzem os riscos
globais do projeto, onde são usadas várias estratégias neste processo para reduzir ou controlar o
risco, sendo que a tabela 1 é um exemplo. É importante escolher a estratégia certa para cada risco, de modo que o risco e seus impactos sejam
tratados de forma eficaz. Após determinar a estratégia a ser empregada, desenvolva um plano
de ação para levá-la a cabo se o evento de risco
se concretizar.
Em todos os projetos existem riscos, e o planejamento contra eles é uma parte importante
do processo de planejamento do projeto. O simples ato de identificar os riscos e planejar respostas pode diminuir seu impacto, caso eles se confirmem.
5.2.6 Controlar Riscos e Monitorar
Riscos
A atividade de controlar e monitorar riscos
FACULDADE MATER DEI
envolve a avaliação da situação atual para determinação de possíveis desvios do plano inicial de
gerência de risco. A atividade de controle dos riscos avalia a situação corrente para determinar
eventuais desvios do planejado.
O controle dos riscos envolve alteração das
estratégias de mitigação, quando se fizer necessário, na utilização de ações previamente planejadas de contingência.
REVISTA DE INFORMÁTICA
Um outro questionário de riscos segundo
Vieira (2003) pode ser utilizado para identificar
as maiores fontes de riscos. A tabela 3 fornece
alguns exemplos de perguntas do questionário.
Tabela 3: questionário de riscos
5.3 Técnicas
Nessa seção serão apresentadas algumas
técnicas que poderão auxiliar como base para o
gerenciamento dos riscos que podem afetar futuramente o projeto. São tabelas retiradas de obras
literárias dando a credibilidade e a confiabilidade
de que se conduzidas de forma correta poderão
identificar, estabelecendo assim como será tratado o risco se porventura acontecer.
Na tabela 1, fornece um exemplo de técnica de como podemos identificar e o que deve
ser feito quando o risco identificado acontecer,
ou seja, o objetivo é estabelecer as contramedidas
para eliminar os riscos levantados (BRUZZI, 2002).
Tabela 1: Plano de ação para contramedidas
A tabela 2 fornece alguns exemplos com o
objetivo de facilitar o preenchimento do quadro
de riscos, onde aquelas perguntas para as quais
as respostas forem “não” devem ser analisadas
em profundidade (PRADO, 2001):
Tabela 2: Exemplo de quadro de riscos
5.4 Controle de Mudanças
O controle de mudanças é um processo interno podendo ser utilizado para impedir que
qualquer pessoa, inclusive a gerência, altere o
projeto sem justificativa apropriada, onde se exige que o solicitante tenha um bom motivo, sendo após isso as mudanças propostas são avaliadas em relação ao seu impacto sobre todos os
lados do projeto.
Mudanças no projeto, mesmo que pareçam
pequenas à primeira vista, são sempre mudanças importantes. Segundo Vieira (2006) seja firme e exija da gerência, dos clientes e da equipe
de projeto que permaneçam concentrados na
visão original.
Muitas vezes a mudança é fundamental ao
escopo do produto, e o gerente de projeto procure encaixar o plano do projeto nas novas e
complexas exigências Philips (2003). Para evitar
tal situação, é preciso que haja um controle da
mudança e a sua implementação seja feita quando necessário.
Para auxiliar no diagnóstico, o gerente de
projeto pode utilizar-se de algumas questões a
seguir:
• Algum aspecto da solicitação de mudança
requer fundos adicionais? (em caso positivo,
que aspecto?);
• Algum aspecto da solicitação de mudança
requer tempo adicional? (em caso positivo,
que aspecto?);
55
FACULDADE MATER DEI
• Que áreas da solicitação de mudança têm
mais impacto sobre o projeto?
Quando as mudanças forem inevitáveis,
será necessário um processo formal para incorporar-las no plano do projeto. A tabela 4 é um
exemplo de formulário para se controlar essas
mudanças.
Tabela 4: Formulário de solicitação de mudança do projeto
O solicitante precisa descrever a mudança e
explicar o motivo pelo qual deseja a mudança.
Depois o gerente de projeto tem como verificar se
a mudança realmente é necessária, se deve ser
rejeitada ou adiada até a conclusão do projeto.
Conforme Philips (2003) após uma mudança proposta comprovar ter algum mérito, necessita-se que o gerente de projeto pesquise a mudança para determinar seu impacto sobre o projeto. Para auxiliar no diagnóstico, o gerente de
projeto pode utilizar-se de algumas questões a
seguir:
• Algum aspecto da solicitação de mudança
requer recursos adicionais? (em caso positivo,
que aspectos?);
• Algum aspecto da solicitação de mudança
requer fundos adicionais? (em caso positivo,
que aspecto?);
• Algum aspecto da solicitação de mudança
requer tempo adicional? (em caso positivo,
que aspecto?).
• Que áreas da solicitação de mudança têm
mais impacto sobre o seu projeto?
Uma reunião para gerenciamento de problemas permite que trate dessas questões com a
equipe, com o fornecedor ou com o pessoal-chave em busca de soluções. São técnicas que permitem que coloque o projeto de volta no caminho certo de forma rápida e precisa.
Reúna-se com a equipe de projeto inteira e
discuta a solução a que chegou e explique a justificativa para o plano, sendo que esse plano permitirá uma solução para o problema e mostrará como
afetará as tarefas restantes no caminho crítico.
56
REVISTA DE INFORMÁTICA
6. ESTUDO DE CASO
A técnica adotada para a condução do estudo de caso foi a de entrevistas com os
stakeholders. Através do estudo de caso serão
aplicados os conceitos de projeto, de
gerenciamento de projeto e de risco, como também software para o gerenciamento dos mesmos
e de técnicas para minimizar os riscos aqui estudados. O estudo de caso consiste em desenvolver um sistema de controle de veículos de uma
empresa de ônibus, onde a mesma controla os
dados relevantes dos seus veículos como placa,
chassi, multas tanto da esfera municipal, estadual e federal como também multas aplicadas pelo
Ministério dos Transportes, as respectivas defesas entre outros, através de planilhas.
O sistema proposto é que sejam interligados esses dados evitando assim redundâncias e
que forneça a informação desejada. Para que o
sistema fosse desenvolvido fez-se necessário que
se aplicassem os conceitos, software e técnicas
para o bom andamento do trabalho, controlando assim o projeto do início até o fim, controle
esse focado no gerenciamento de risco.
6.1 Metodologia
Primeiramente, foi explicado como seriam
conduzidos os trabalhos, os resultados obtidos
através da pesquisa de campo e o formulário a
ser preenchido durante a entrevista.
Como observação, vale ressaltar que foram
colocadas para os gerentes que seria normal as
mudanças durante o projeto, pois algum tratamento dos fatores de risco era esperado, tanto
em termos de prevenção como de contingência,
e que novos fatores poderiam surgir.
Para atingir aos objetivos estabelecidos foram realizadas entrevistas para a coleta de dados que consistiam no preenchimento das tabelas 1, 2 e 3, sendo recolhidos dados de gerentes,
usuários e desenvolvedor e definição de datas
para cada etapa e custo do projeto.
O instrumento de coleta dos dados foi inicialmente concebido em três etapas, contendo a
caracterização da amostra, onde foram recolhidos dados sobre a empresa, as estimativas de
gravidade e de ocorrência dos riscos.
FACULDADE MATER DEI
Para o acompanhamento e controle do projeto utilizou-se o software MSProject 2002, para
controlar o tempo e o custo, como também as
etapas a serem executadas no projeto.
Após a fase inicial foi elaborada a lista de
riscos a ser utilizada conforme a tabela 1. Foram
identificados vários riscos entre elas: a falta de
comprometimento da alta gerência com o projeto, sendo que a contramedida é reunir-se para
discutir e cobrar o que foi acordado na reunião.
Também foi identificada a falta de
envolvimento adequado do usuário e a falta de
cooperação dos usuários. Nesse caso, primeiramente, haveria uma reunião com as partes para verificar o que estava acontecendo e, não resolvendo, a
gerência seria comunicada. O prazo de execução
de tarefas mal estimadas ou requisitos mal entendidos também foi citado e em contramedida ficou
estabelecido que primeiramente se averiguasse o
que estaria acontecendo através de relatórios periódicos que o MSProject 2002 emite e depois reunir-se-ia para a busca da solução.
Com a lista elaborada, seguiu-se a sua validação, ou seja, todos concordaram sobre o que
estava escrito. Então, após a aplicação da tabela
1, aplicou-se juntamente com os envolvidos no
projeto as tabelas 2 e 3 para somente o preenchimento das questões já formuladas.
6.2 Resultados Obtidos
A geração da aplicação de técnicas no
gerenciamento de risco em projetos de software
através de estudo de caso foi atingida satisfatoriamente. Foram identificados riscos mais relevantes em termos de probabilidade, impacto e da
união das duas variáveis.
Durante o andamento do projeto houve
vários problemas que foram identificados no início do projeto e que pôde ser contornado, mesmo com a identificação do risco o prazo foi comprometido, em contrapartida o custo e qualidade não foram afetados. Se tais riscos não tivessem sido identificados, poderia levar o projeto a
problemas irreversíveis, ou seja, ao fracasso. No
entanto, não foi estimado que o projeto tivesse
de ser paralisado, devido a questões financeiras
que a empresa estava atravessando. Os
stakeholders decidiram que o projeto teria de ser
cancelado, mas através de estudos foi demons-
REVISTA DE INFORMÁTICA
trado que o projeto não precisaria ser cancelado
e sim adiado temporariamente, não se perdendo todo o trabalho até aqui desenvolvido e nem
toda a documentação feita até então.
Mudanças como essa em que o projeto
deve ser cancelado ou paralisado por problemas
financeiros não foge da realidade do mundo dos
negócios em que se vive hoje. Portanto quando
ocorrer um fato dessa natureza, cabe ao gerente
de projetos negociar juntamente com os envolvidos no projeto realizando pesquisa da viabilidade do não cancelamento.
Ao retornarem os trabalhos houve a necessidade de adequar o cronograma e o custo do
projeto para se ter a real situação do mesmo, aumentando significativamente o custo e o tempo
da conclusão das atividades, e constatou-se a importância dessa documentação no ato do reinicio
do projeto. Caso a documentação de todas as etapas do projeto feitas anteriormente a paralisação
do projeto não tivesse sido feita, ninguém saberia ao certo o que fazer primeiro ou por onde começar. Mesmo assim alguns profissionais na área
de tecnologia de informação e de clientes não
acreditarem serem necessários ter um controle do
projeto e dos riscos envolvido no mesmo, dizendo que quando acontecerem irão resolvê-los, que
é perda de tempo e aumenta muito o custo para
documentar e controlar o projeto.
As principais contribuições desta pesquisa
foi constatar a importância de se implementar a
gerência de risco nos projetos de desenvolvimento de software e o levantamento de componentes de risco que podem ser utilizados pelos gerentes de projetos nas suas atividades de gerência de riscos, levando-se em conta a gravidade e
a ocorrência dos riscos como fatores distintos.
7. CONCLUSÃO
Primeiramente é importante ressaltar que
o tempo demandado para a execução do processo de identificação e quantificação não é
muito longo, pois o estudo de caso levou em
torno de 2 dias para preenchimento e discussão
do projeto, e 1 dia de explanação sobre o trabalho que seria realizado.
O enfoque desta pesquisa foi de apresen57
FACULDADE MATER DEI
tar técnicas e ferramentas eficientes e eficazes
para o desenvolvimento de software, ligado à
metodologia de gestão de risco. Pode-se afirmar
que as tendências atuais da gestão de projetos
proporcionam às empresas maior confiabilidade
nos produtos que estão sendo desenvolvidos,
estabelecendo assim uma seqüência de processos, evitando assim desperdícios, retrabalhos e
evitar jornadas de trabalho exaustivas.
Ficou também evidenciado que a
implementação da gestão de risco em projetos
de desenvolvimento de software exige investimento em soluções de tecnologia e na formação de recursos, pois desenvolver um sistema não
é apenas inserir linhas de comandos.
Este artigo confirma a importância da gerência de risco para a seleção e controle de projetos de software com o objetivo de que as organizações passem a tratar riscos de uma maneira
menos intuitiva em projetos de software.
Pode-se observar que a ligação dos procedimentos práticos baseados em processos teóricos que envolvem profissionais e tecnologias,
possibilitam automatizar e centralizar os processos e documentações inerentes ao desenvolvimento de sistemas.
Também se pôde comprovar que a gerência
de risco é uma disciplina onde se deve considerar
não somente processo, pessoa e tecnologia, que
fazem parte do desenvolvimento do software, mas
também aspectos administrativos da empresa,
como por exemplo, a influência política da organização e do cliente no projeto.
REFERÊNCIAS
Belloquim, Áila. (2006) “Riscos de Projetos: que
fazer com eles?”, http://www.galegale.com.br/
artigo_info.asp?cod=7, Março.
Cruz, Tadeu. (2000). “Sistemas de informações
gerenciais: tecnologias da informação e a empresa do século XXI”, São Paulo: Editora Atlas.
Heldman, Kill. (2005) “Gerência de projetos: guia
para o exame oficial do PMI”, Rio de Janeiro:
Elsevier.
58
REVISTA DE INFORMÁTICA
Leopoldino, Cláudio Bezerra. (2004) “Avaliação
de riscos em desenvolvimento de software”, Dissertação (Mestrado de Administração) Universidade Federal do Rio Grande do Sul, Rio Grande
do Sul, http://www.pmirs.org/Estudos/
TccClaudioBezerra.pdf, Março.
Machado, Cristina Ângela Filipak. (2002) “A-Risk:
Um método para identificar e quantificar risco
de prazo em projetos de desenvolvimento de
software”, Dissertação (Mestrado em Ciências)
Pontifícia Universidade Católica do Paraná,
www.sbbd-sbes2005.ufu.br/arquivos/19%209560.pdf, Março.
Philips, Joseph. (2003) “Gerência de projetos de
tecnologia da informação”, Rio de Janeiro:
Campus.
PMBOK (2000) “Project Management Institute
Headquarters”, http://www.recad.usp.br/ gefim/
projetos/pmbok2000.pdf, Abril.
Prado, Darci Santos do. (2001) “Planejamento e
controle de projetos”, Belo Horizonte: Editora de
Desenvolvimento Gerencial.
Pressman, Roger S. (1997) “Software
engineering: a practitioner’s approach”, New
York: McGraw-Hill.
Rezende, Denis Alcides e Abreu, Aline França de.
(2000) “Tecnologia da informação aplicada a sistemas de informação empresariais”, São Paulo:
Editora Atlas.
Sommerville,
Ian.
(1996)
“Software
Engineering”, New York: Addison-Wesley.
Vargas, Ricardo Viana. (2002) “Gerenciamento
de Projetos: Estabelecendo Diferenciais Competitivos”, Rio de Janeiro: Editora Brasport.
Vieira, Eduardo Newton Oliveira. (2006)
“Gerenciando projetos na era de grandes mudanças: uma breve abordagem do panorama atual”,
http://www.pmisp.org.br/exe/
artigos/
EduardoNewton_ArtigoGProjetosI.pdf, Abril.
Vieira, Marconi. (2003) “Gerenciamento de projetos de tecnologia da informação”, Rio de Janeiro, Editora Elsevier.
Vieira, Richard William D. D. (2006) “Gerenciando
Mudanças”, http://www.ietec.com.br/ietec/
techoje/techoje/gestaodeprojetos/2003/03/19/
2003_03_19_0004.2xt/-template_interna, Maio.
FACULDADE MATER DEI
ARTIGO 7
IMPLEMENTAÇÃO DE
BRIDGING FIREWALL
UTILIZANDO GNU/LINUX
EVANDRO MIGUEL KUSZERA1
[email protected]
RESUMO
Este artigo descreve a implementação de
um firewall baseado em GNU/Linux que utiliza
as funcionalidades de bridging e filtro de pacotes fornecidos pelo kernel do sistema
operacional. Este tipo de firewall, devido à ausência de endereço IP, é transparente e de fácil
instalação, não sendo necessárias alterações na
topologia da rede e configurações nos dispositivos existentes. A transparência do bridging
firewall dificulta a detecção e ação de invasores,
sendo uma alternativa para aumentar ou complementar a segurança de redes existentes.
1. INTRODUÇÃO
A Internet deixou de ser um acessório para
tornar-se essencial no dia-a-dia das organizações.
A necessidade cada vez maior de manter os equipamentos da rede local conectados com o mundo externo aumenta os riscos de segurança, despertando o interesse em soluções de firewall.
Firewall é um componente ou conjunto de
componentes que restringe o acesso entre uma
rede protegida e a Internet, ou ainda, entre outros conjuntos de redes [1].
Um firewall pode ser baseado apenas em
software ou em hardware e software dedicado.
Existem soluções baseadas em produtos comerciais e outras em software livre. A escolha da solução de firewall depende das necessidades específicas de cada organização, sendo que nada
1
Analista de Sistemas – UTFPR – Universidade Tecnológica Federal do Paraná. Avenida do Conhecimento, KM 01 – Pato Branco – PR - Brasil.
REVISTA DE INFORMÁTICA
impede que uma solução baseada em produto
comercial seja complementada com outra baseada em software livre e vice-versa.
Geralmente, o firewall é visível e está em
uma posição privilegiada na topologia da rede,
essa característica torna-o o principal alvo da
ação de invasores. O presente artigo descreve a
implementação de um firewall transparente, também chamado bridging firewall, que utiliza as
funcionalidades de bridging e filtragem de pacotes fornecida pelo sistema operacional GNU/
Linux. A “transparência” mencionada é devido à
ausência de endereço IP, facilitando a sua instalação em redes existentes e dificultando a
detecção pelos invasores.
2. O QUE É BRIDGE
Dispositivo utilizado para interconexão de
duas ou mais redes. Devido à solução de firewall
apresentada neste artigo desempenhar a função
de bridge de rede, esta seção descreve as características e funcionamento deste dispositivo.
As bridges ficam localizadas entre duas ou
mais redes, escutando todo o tráfego. Atuam na
camada de enlace de dados do modelo OSI (Figura 1), tomando as decisões de encaminhamento de quadros através da consulta ao endereço
MAC contido no cabeçalho de cada quadro.
Figura 1: Atuação na camada de enlace do modelo OSI (Open
Systems Interconnection).
2.1 Tipos de Bridge
O comitê IEEE desenvolveu dois projetos de
bridge: Transparent Bridge [7] e Source Routing
Bridge [6].
A Transparent Bridge foi projetada para ser
59
FACULDADE MATER DEI
de fácil instalação, sem alterações na configuração das redes existentes. “Não deveria haver necessidade de alterações no hardware ou no
software, nenhuma definição de chaves de
endereçamento, nenhum download de tabelas
ou parâmetros de roteamento, nada. Bastava
conectar os cabos e pronto.” [2]. Esse tipo de dispositivo opera no modo promíscuo, aceitando
todos os quadros provenientes das redes
conectadas. Cada quadro é analisado e com base
na tabela de rotas é definido se deve ou não ser
encaminhado para outra rede. Inicialmente, a
Transparent Bridge não possui informação a respeito dos equipamentos que estão conectados
em cada porta, ela precisa “aprender” a
topologia da rede, desta forma, cada quadro é
retransmitido para todas as portas menos para a
porta a qual chegou e o endereço de origem dos
quadros é armazenado na tabela de rotas. À
medida que os endereços de origem e destino
dos quadros são armazenados na tabela de rotas, a bridge encaminha os novos quadros somente para a rede necessária.
A Source Routing Bridge foi desenvolvida
para interligação de redes Token Ring, onde no
cabeçalho de cada quadro, é inserida a informação de roteamento. Desta forma, não é necessário manter tabelas de roteamento para definir o
destino de cada quadro. “Reduzindo a seus princípios básicos, o roteamento na origem presume
que o transmissor de cada quadro sabe se o destino está ou não em sua própria rede. Quando
um quadro é enviado a outra rede, a máquina
de origem ativa o bit de alta ordem do endereço
de origem em 1, a fim de marcá-lo. Além disso,
ela inclui no cabeçalho do quadro o caminho
exato que ele deve seguir.”[2].
2.2 Funcionamento de uma Bridge
Para exemplificar o funcionamento, a Figura 2 apresenta três segmentos de rede interligados através da bridge transparente br0.
REVISTA DE INFORMÁTICA
Figura 2: Interligação de três segmentos de rede através de
bridge.
Inicialmente a bridge br0 não tem conhecimento de quais equipamentos estão
conectados em cada segmento de rede, a tabela
de rotas está vazia. Quando a estação A, pertencente ao segmento de rede S1, transmite um
quadro para a estação C, br0 transmite esse quadro para todos os segmentos de rede e armazena na tabela de rotas a informação que a estação A pertence ao segmento S1. A estação C recebe e processa o quadro, prepara a resposta e
envia para a estação A, a bridge br0 recebe e
analisa o quadro, e como já sabe em qual segmento de rede a estação A está conectada encaminha a resposta somente para o segmento de
rede S1, e armazena na tabela de rotas a localização da estação C, segmento S2.
A partir do ponto que a bridge possui conhecimento dos equipamentos conectados em
cada segmento de rede, os quadros serão encaminhados somente para os segmentos corretos,
evitando a difusão de tráfego desnecessário, diminuindo o congestionamento da rede.
3. EXEMPLO DE APLICAÇÃO DE
BRIDGING FIREWALL
A Figura 3 ilustra o cenário tomado como
exemplo para a implementação do bridging
firewall. Abaixo as características de cada rede:
• Rede Interna: onde estão localizadas todas
as estações de usuários e sistemas internos,
protegida pelo host dual-homed2 atuando
60
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
como NAT e firewall filtro de pacotes;
• Rede de Perímetro: onde residem os serviços disponíveis tanto para rede interna quanto para a Internet, por exemplo, servidores de
e-mail, proxy, NAT, páginas WWW;
• Internet (Rede Externa): rede mundial de
computadores.
Figura 4: Adição do bridging firewall.
A próxima seção descreve a configuração
necessária para o host dual-homed atuar como
bridge de rede e na seqüência a configuração para
agregar a função de firewall filtro de pacotes.
3.1 Requisitos para Configurar o
Bridging Firewall
Figura 3: Cenário de exemplo.
Neste cenário, a conexão com a Internet é
fornecida através do ROUTER localizado na rede
de perímetro, onde a função desse equipamento é apenas fornecer o link de comunicação com
a Internet, não sendo responsável por desempenhar funções de firewall. Para aumentar a segurança da rede citada, uma alternativa é inserir um
firewall entre o ROUTER e a rede de perímetro,
assegurando somente a passagem de tráfego
considerado aceitável. Entretanto, alguns cenários possuem limitações que não permitem alterações na topologia da rede ou configuração dos
dispositivos existentes.
Como alternativa para essas limitações, este
estudo demonstrará a implementação de um
bridging firewall baseado em GNU/Linux, que
utiliza as funcionalidades de bridging e filtragem
de pacotes fornecida pelo kernel do sistema
operacional. Devido a esse tipo de firewall atuar
na camada de enlace do modelo OSI, a instalação é transparente, não sendo necessária alterações nas rotas e endereçamento IP dos dispositivos da rede. A Figura 4 ilustra o ponto onde será
adicionado o bridging firewall.
As configurações presentes neste artigo
têm como base sistema operacional Conectiva 10,
kernel versão 2.6 e um microcomputador com
duas interfaces de rede instaladas e configuradas corretamente. O recurso de bridge é suportado pela maioria das distribuições GNU/Linux
com kernel versão 2.4 ou superior.
Os requisitos de software necessários são [3]:
• Distribuição contendo kernel com suporte a
bridge ativado;
• O pacote bridge-utils instalado;
• Patch bridge-nf se desejar usar o netfilter com
as interfaces de entrada e saída, ao invés de
controlar o tráfego apenas pela interface criada pela bridge.
O kernel deve estar com as opções referente a bridge ativas. Nas configurações do kernel,
seção Networking Options, a opção 802.1d
Ethernet Bridging deve estar ativa (Figura 5).
2
Um sistema de computação de uso geral que tem pelo menos duas interfaces
de rede.
61
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
Figura 5: Configuração do kernel.
# Adiciona uma nova bridge chamada br0.
brctl addbr br0
# Adicionam as interfaces eth0 e eth1 para atuar
como portas da bridge br0.
brctl addif
br0 eth0
brctl addif
br0 eth1
# Ativa a bridge
ifconfig br0 up
Caso necessária alguma alteração, é preciso salvar e recompilar o kernel para que as configurações tornem efeito.
O pacote Bridge-Utils fornece os utilitários
necessários para criar e configurar uma bridge,
onde o principal responsável por estas tarefas é
o comando brctl. Caso o pacote não esteja instalado, as informações sobre a instalação e
download podem ser encontradas no endereço
abaixo:
http://sourceforge.net/project/
showfiles.php?group_id=26089
Após a instalação do pacote Bridge-Utils, a
execução do comando brctl, deve retornar como
resultado o conteúdo da Figura 6:
Figura 6: Resultado da execução do comando brctl.
3.2 Script de Configuração
A seguir o conteúdo do script bridge_conf
com os comandos necessários para o host em
questão atuar como bridge transparente:
# Ativa as interfaces eth0 e eth1 sem endereço IP
configurado. A Bridge não receberá nenhum
endereço IP, desta forma, ela não será visível pelos
demais equipamentos da rede.
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
62
Esse arquivo pode ser executado manualmente através do comando ./bridge_conf ou toda
vez que o host for iniciado, sendo para isso, necessária à adição de uma nova entrada no arquivo rc.local, localizado em /etc/rc.d/, informando
o caminho completo do script bridge_conf.
A bridge é tratada pelo sistema operacional
como uma interface lógica de rede. Através do comando ifconfig é possível listar todas as iterfaces
físicas e lógicas configuradas no sistema.
Os respectivos comandos para remover as
interfaces de rede da bridge e remover a própria
bridge são:
brctl
delif
br0 eth0
brctl
delif
br0 eth1
brctl
delbr br0
A verificação do funcionamento pode ser
realizada através da interligação de dois segmentos de rede em cada interface da bridge. A comunicação deve ocorrer da mesma forma como
se os dois segmentos estivessem interligados
entre si através de dispositivos como Hub ou
Switch.
3.3 Agregando Funções de Firewall a
Bridge
Através do Netfilter [4], módulo embutido
no kernel do Linux, é possível controlar todo o
fluxo de dados que passa pelo sistema
operacional, característica responsável por prover a função de firewall do sistema.
O controle do fluxo de dados
implementado pela solução proposta neste artigo deve ser aplicado sobre a tabela Filter, per-
FACULDADE MATER DEI
tencente ao Netfilter, responsável por tratar das
situações (chains) implementadas por um firewall
filtro de pacotes. As situações possíveis são INPUT,
FORWARD e OUTPUT. A situação INPUT trata do
fluxo destinado ao próprio firewall enquanto a
OUTPUT trata do fluxo gerado pelo firewall, e,
por final, a FORWARD trata do fluxo que passa
pelo firewall, mas que não é destinado a ele.
Como o objetivo do bridging firewall é filtrar o
fluxo que é encaminhado através dele, as regras
são aplicadas sobre a situação FORWARD.
As regras são aplicadas ao Netfilter através
da utilização da ferramenta Iptables[5], presente a partir da versão 2.4 do kernel, que é uma
espécie de Front-End para manipulação das tabelas e situações. Maiores informações sobre essa
ferramenta podem ser encontradas no endereço
http://iptables.org/.
Abaixo algumas regras de exemplo:
# Alterando a política padrão ACCEPT para DROP.
iptables –P FORWARD DROP
# Liberando tráfego estabelecido e relacionado à conexões
existentes.
iptables -A FORWARD -m state —state
ESTABLISHED,RELATED -j ACCEPT
# Liberando o tráfego para os protocolos DNS, HTTP,
SMTP, POP3, respectivamente.
iptables –A FORWARD –p udp —dport 53 –j ACCEPT
iptables –A FORWARD –p udp —sport 53 –j ACCEPT
iptables –A FORWARD –p tcp —dport 80 –j ACCEPT
iptables –A FORWARD –p tcp —dport 25 –j ACCEPT
iptables –A FORWARD –p tcp —dport 110 –j ACCEPT
As regras acima definem uma política de
bloqueio padrão, onde nenhum tráfego é permitido, o administrador deve informar o tráfego que
é expressamente permitido. No exemplo acima, o
tráfego referente aos protocolos DNS, HTTP, SMTP
e POP3 são permitidos, o restante é negado.
4.
CONCLUSÃO
É sabido que a troca de informações entre
organizações é facilitada com o uso da Internet,
e, fornecer essa comunicação de forma confiável
é um desafio cada vez maior para os profissionais
de segurança de redes. Os firewalls são uma importante ferramenta para a proteção, atuando
REVISTA DE INFORMÁTICA
como verdadeiros filtros que impedem que tráfego indesejado entre na rede da organização.
O presente artigo descreveu a
implementação de um firewall transparente,
unindo as características de bridge e firewall filtro de pacotes fornecidos pelo kernel do Linux.
Esse tipo de firewall, também chamado de
bridging firewall, é uma alternativa para
implementação de segurança em redes que não
permitem alterações no endereçamento IP dos
dispositivos ou mesmo mudanças na infra-estrutura da rede existente.
Essa implementação pode ser utilizada para
filtrar o tráfego entre a rede local e a Internet ou
apenas como um mecanismo de monitoração.
Ausência de endereço IP facilita a instalação e
remoção do dispositivo, sendo possível sua adição em qualquer local da rede, protegendo apenas determinadas partes da organização. A
“transparência” dificulta à detecção e ação de
invasores, tornando essa solução, baseada em
software livre, uma alternativa interessante para
aumentar a segurança da rede.
REFERÊNCIAS
[1] Elizabeth D. Zwicky, Simon Cooper & D. Brent
Chapman. “Construindo Firewalls para a
Internet”. 2 ed. Campus. 2000.
[2] Andrew S. Tanenbaum. “Redes de Computadores”. 3 ed. Campus. 1997.
[3] Gleydson Mazioli da Silva. “Guia Foca GNU/
Linux, Capítulo 5 – Configurações Especiais de
Rede”, http://focalinux.cipsga.org.br/guia/
avancado/ch-cfgrede.htm, Julho de 2006.
[4] Rusty Russel “Netfilter”, http://
www.netfilter.org/, Julho de 2006.
[5] Rusty Russel “Iptables”, http://iptables.org/,
Julho de 2006.
[6] IEEE, “Source Routing Annex to MAC Bridges”. IEEE Draft Standard P802.5M/D4, 1991.
[7]
IEEE,
“Information
Technology
Telecommunications and information exchange
between systems Local and metropolitan area
networks Common specifications Media access
control (MAC) bridges”. IEEE Draft Standard
802.1D, 1998.
63
FACULDADE MATER DEI
64
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
ARTIGO 8
ASPECTOS TEÓRICOS E
APLICAÇÕES RELACIONADOS
AO DATA MINING E ÀS REDES
NEURAIS
LISSANDRA LUVIZÃO
LAZZAROTTO1,
ALCIONE DE PAIVA OLIVEIRA2
[email protected], [email protected]
RESUMO
Os bancos de dados das organizações podem armazenar grande número de informações
que, se devidamente tratadas, geram subsídios
úteis para a proposição e/ou avaliação dos mais
diversos processos organizacionais. Assim, neste
trabalho buscou-se: 1) sumarizar e discutir os
principais fundamentos que cercam o data
mining e as redes neurais artificiais (RNAs); 2)
destacar aplicações e técnicas relacionadas com
o data mining; e 3) analisar interessantes aplicações das RNAs. Para isso, efetuaram-se análises
da literatura especializada acerca do data mining
e das RNAs. Sobre o data mining, ele é uma ferramenta que, utilizando algumas tarefas, como
previsão e descrição, permite extrair informações
relevantes a partir de bancos de dados diversos.
Quanto às RNAs, elas são técnicas de data mining
que fornecem métodos de aprendizagem a partir de amostragens de testes.
1. INTRODUÇÃO
Na última década, os bancos de dados
informatizados das organizações têm armazena1
Rua Olívia de Castro Almeida, 295/401. Bairro Clélia Bernardes. 36570-000,
Viçosa - MG.
2
Universidade Federal de Viçosa - Departamento de Informática, Viçosa - MG.
REVISTA DE INFORMÁTICA
do grande número de informações. Muitas dessas informações escondem conhecimentos valiosos e úteis para os processos de tomada de decisões. Assim, se devidamente tratadas em termos analíticos, podem gerar subsídios de significativa relevância para a proposição, elaboração
e/ou avaliação dos mais diversos processos e políticas, que cercam os vários setores sociais.
Para que os dados (ou informações) sejam
transformados em conhecimentos, podem ser
utilizadas ferramentas (ou técnicas) de data
mining. Com essas ferramentas, é possível, entre
outras coisas, identificar padrões ou conhecimentos que estão além das consultas simples que um
bancos de dados pode fornecer. Portanto, cada
uma das ferramentas em questão pode ser utilizada para explorar um banco de dados, visando
desenvolver uma tarefa específica, como previsão, classificação ou clusterização.
Dentre as diversas técnicas de descoberta
do conhecimento, destacam-se às redes neurais
artificiais (RNAs), que podem trazer grandes contribuições para a realização de previsões para os
vários segmentos da economia.
Partindo dessas considerações iniciais e com
base em análises da literatura especializada, buscou-se avaliar importantes aspectos relacionados
com o data mining, dando-se destaque especial
à técnica relacionada com as RNAs. Em termos
específicos, foram definidos três objetivos principais: 1) sumarizar e discutir os principais fundamentos teóricos que cercam o data mining e
as RNAs; 2) destacar importantes aplicações e
técnicas relacionadas com o data mining; e 3)
analisar, para diversos setores socioeconômicos,
interessantes aplicações das RNAs.
Para atingir os objetivos, o trabalho, além
desta seção introdutória, contempla três seções
principais. Na seção dois são apresentados os
fundamentos teóricos e as principais técnicas e
aplicações das técnicas do data mining. A seção
três contempla fundamentos teóricos e aplicações das RNAs. Por fim, as considerações finais
deste estudo são apresentadas na seção quatro.
2. O DATA MINING
Esta seção está dividida em três partes. Na
primeira, é realizada uma abordagem geral acer65
FACULDADE MATER DEI
ca da descoberta do conhecimento e do data
mining. Na segunda parte, discorre-se sobre as
principais técnicas de data mining. Na terceira,
são destacadas algumas aplicações de técnicas
de data mining.
2.1. Considerações gerais sobre a
descoberta do conhecimento e o data
mining
A descoberta do conhecimento, que constitui área interdisciplinar específica, conhecida
como KDD (Knowledge Discovery in Databases),
surgiu em resposta às necessidades de novas
abordagens e soluções para viabilizar a análise
de grandes bancos de dados, pois os mesmos
armazenam conhecimentos valiosos e úteis para
os mais diversos processos de tomada de decisões (Romão et al., 2005).
De maneira geral, a KDD pode ser definida
como um processo não trivial de identificar padrões válidos, inusitados, potencialmente úteis
e, finalmente, compreensíveis em dados (Fayyad
et al., citados por Wong & Leung, 2002; Romão
et al., 2005).
O conhecimento pode ser extraído diretamente de um banco de dados ou a partir de um
armazém de dados, denominado de Data
Warehousing (Elmasri & Navathe, 2002). Para essa
extração, são necessárias ferramentas de exploração, conhecidas como mineração de dados, que
podem incorporar técnicas estatísticas e/ou de inteligência artificial, capazes de fornecer respostas
as várias questões ou descobrir novos conhecimentos (Romão et al., 2005). Portanto, a mineração
de dados, ou data mining, faz parte do processo
de descoberta de conhecimento.
O ato de descobrir padrões úteis em dados
recebe, em diversas comunidades, diferentes
designações: extração de conhecimento, descoberta de informação, colheita de informação,
arqueologia de dados, processamento de padrão
de dados e, inclusive, data mining.
O termo data mining é muito usado por estatísticos, pesquisadores de banco de dados e comunidades de negócio, constituindo uma das ferramentas mais utilizadas para extração de conhecimento ou informações relevantes a partir de bancos de dados, tanto nos meios comercial quanto
66
REVISTA DE INFORMÁTICA
científico (“Data mining overview”, 2005;
Silberschatz, 1999; Elmasri & Navathe, 2002). Esse
termo, a partir do tratamento de grandes quantidades de dados armazenados diretamente em
repositórios e por meio da utilização de tecnologias
baseadas em ferramentas quantitativas de reconhecimento de padrões, refere-se ao processo de descobrimento de correlações significativas, padrões,
tendências, associações e anomalias. Portanto,
busca-se, de maneira automática, descobrir automaticamente regras e modelos estatísticos a partir
dos dados (“Data mining overview”, 2005;
Silberschatz, 1999; Elmasri & Navathe, 2002; Grupo Gartner, citado por Larose, 2005).
A idéia por trás do data mining pode causar
um certo desconforto devido à ampla gama de
objetivos em que o mesmo pode ser usado: uma
empresa de varejo interessada em oferecer a melhor oferta para seus consumidores regulares; a receita federal pesquisando transações fraudulentas
em remessas de moeda estrangeira; a análise de
crédito de um banco, decidindo quais clientes devem receber a próxima mala direta de um novo financiamento; a classificação de clientes de uma
operadora de telefonia, sugerindo qual plano se
adapta melhor a cada um deles; e outros. Estes são
apenas alguns exemplos das inúmeras aplicações
do data mining (Vessoni, 2005).
Como destacado, o conhecimento obtido
a partir de um banco de dados pode ser representado pela definição de regras, que podem ser
descobertas por meio do uso de dois modelos:
1) o usuário está diretamente envolvido no processo de descoberta do conhecimento; e 2) o sistema é responsável por descobrir automaticamente o conhecimento a partir do banco de dados, detectando, assim, modelos e correlações.
Entretanto, os sistemas de descoberta do conhecimento podem ter elementos de ambos os modelos: o sistema descobrindo algumas regras
automaticamente e o usuário guiando o processo de descoberta de regras (Silberschatz, 1999).
Para descobrir conhecimentos que sejam
relevantes, é fundamental o estabelecimento de
metas bem definidas. Essas metas, que segundo
Fayyad et al. (citados por Romão et al., 2005) são
definidas em função dos objetivos associados
com a utilização do sistema, podem ser de dois
tipos básicos: verificação ou descoberta. Enquan-
FACULDADE MATER DEI
to na meta de verificação o sistema está limitado
a verificar hipóteses definidas pelo usuário, na
meta de descoberta o sistema, de forma automática, deve encontrar novos padrões. A meta
do tipo descoberta pode, ainda, ser subdividida
em previsão e descrição. A descrição procura
encontrar padrões, interpretáveis pelos usuários,
que descrevam os dados de maneira concisa e
resumida, apresentando propriedades gerais, interessantes, dos dados. Na previsão, que partese de diversas variáveis, é construído um conjunto de modelos, a partir do qual são efetuadas
inferências sobre os dados disponíveis, bem como
previsões acerca de outras variáveis ou do comportamento de novos conjuntos de dados.
De maneira sintética, a partir da leitura de
diversos autores, como Elmasri & Navathe, (2002),
“Data mining overview”, 2005, Passari (2003),
Larose (2005) e Romão et al. (2005), é possível
destacar que o data mining pode realizar pelo
menos uma das seguintes tarefas principais: previsão, sumarização e descrição, classificação,
segmentação ou clustering, associação e identificação de padrões dentro de séries temporais.
A previsão, que lida com comportamentos futuros, envolve a descoberta de um conjunto de informações relevantes para o atributo de
interesse. A partir desse conjunto, pode-se prever a distribuição de valores semelhantes ao(s)
objeto(s) selecionado(s). Usualmente, a análise
de regressão, o modelo linear generalizado, a
análise de correlação e as árvores de decisão têm
constituídos as principais ferramentas úteis para
a predição de qualidade. Também são usados
algoritmos genéticos e redes neurais com bastante sucesso.
Com a sumarização e descrição busca-se
aumentar o grau de compreensão sobre um fenômeno complexo, representado por grande
quantidade de dados de difícil compreensão. Para
tanto, são utilizadas, basicamente, técnicas estatísticas descritivas e ferramentas de visualização
gráfica. Assim, os resultados do modelo com data
mining deveriam descrever padrões claros, que
são factíveis à interpretação e à explicação intuitiva. Alguns modelos com data mining são mais
adaptados que outro para a interpretação transparente. Por exemplo, árvores de decisão provêem explicação intuitiva e humanamente amigá-
REVISTA DE INFORMÁTICA
vel dos seus resultados. Por outro lado, redes
neurais são, comparativamente, opacas a não
especialistas, devido a não lineariadade e complexidade do modelo.
A classificação constitui a tarefa mais comum de utilização de data mining. A partir do
exame das características de um grande conjunto de objetos, essa tarefa consiste em colocar
cada objeto dentro de uma série de classe ou
categoria pré-definidas. Com isso, pode-se tanto
entender melhor cada classe no banco de dados,
como facilitar a classificação de futuros dados.
A segmentação ou clustering refere-se à
atividade de separar, em grupos homogêneos,
uma população heterogênea. Os grupos de registros semelhantes são chamados de clusters. A diferença básica entre a segmentação e a classificação é que, enquanto nesta as classes são pré-definidas, na segmentação elas são dinamicamente
criadas a partir de similaridades entre os elementos. Portanto, um cluster é, em termos gerais, uma
coleção de registros que são similares.
A tarefa de associação procura descobrir
regras para quantificar o relacionamento entre
dois ou mais atributos. É usada para determinar
afinidades ou ligações entre objetos, consistindo, basicamente, na geração de probabilidades
conjuntas (exemplo: quem compra o produto A
tem um determinado percentual de chances de,
também, comprar o produto B).
A identificação de padrões em séries temporais1, basicamente, representa uma tarefa cujo
objetivo fundamental é identificar comportamentos semelhantes dos dados dentro de posições
dessas séries.
Apesar da mineração de dados ser a etapa
principal na descoberta do conhecimento, é importante destacar que o processo completo da
KDD abrange mais do que a mineração. Ela consiste em seis etapas principais: 1) seleção e limpeza dos dados; 2) pré-processamento; 3) transformação ou codificação de dados; 4) data
mining e análise; 5) assimilação e interpretação;
e 6) avaliação e divulgação das informações descobertas (Elmasri & Navathe, 2002; Wong &
Leung, 2002). Além disso, o cumprimento dessas etapas assegura a obtenção do conhecimento útil, derivado dos dados, já que a aplicação
de métodos de data mining pode ser uma ativi67
FACULDADE MATER DEI
dade perigosa, que pode conduzir a descoberta
de padrões sem sentido (“Data mining overview”,
2005).
Em termos operacionais, para efetivação do
referido processo, é necessário cumprir três grandes estágios: 1) pré-processamento, que consiste, sobretudo, em selecionar os dados mais importantes para o estudo e efetuar as transformações necessárias de modo a serem retiradas as
inconsistências e incompletudes dos dados; 2)
data mining, que, utilizando os dados já preparados no estágio anterior, corresponde à aplicação de métodos (algoritmos) para extrair padrões
presentes nos dados; e 3) pós-processamento,
que está relacionado com a avaliação dos resultados obtidos no estágio de aplicação do data
mining, visando determinar se algum conhecimento adicional foi descoberto, bem como definir a importância dos fatos gerados. Além disso,
para avaliar a qualidade do processo de descoberta de conhecimento, deve-se incluir algumas
abordagens, como: exatidão dos resultados (alguma medida da taxa de acerto), eficiência (tempo de processamento), facilidade de compreensão do conhecimento extraído e outras (“Data
mining overview”, 2005; Romão et al., 2005).
2.2. Principais técnicas de data mining
As mais diversas técnicas empregadas para
realizar descobertas de conhecimento, que foram desenvolvidas, sobretudo, pela comunidade de inteligência artificial, tentam encontrar, de
maneira automática, regras e modelos estatísticos, que permitem, entre outras coisas, avaliar o
comportamento dos dados. De maneira geral, o
campo de investigação associado com data
mining combina idéias de descoberta de conhecimento com a implementação eficiente de técnicas, que possibilitam usá-las em banco de dados muito grandes. (Silberschatz, 1999).
Em termos concretos, as técnicas de mineração de dados estão relacionadas com o uso de
algoritmos, que modelam relações ou padrões
não-aleatórios (estatisticamente significativos)
em grandes bases de dados (Berry & Linoff, citados por Passari, 2003). Nessa mesma linha de
pensamento, Romão et al. (2005) ressaltam que
as técnicas de data mining utilizam dados histó1
Séries temporais são séries que possuem regularidade nas observações ao longo
de um período de tempo (exemplos: observações diárias, mensais ou anuais).
68
REVISTA DE INFORMÁTICA
ricos para aprendizagem, cujo objetivo é realizar
uma determinada tarefa particular. Como essa
tarefa tem como meta responder alguma pergunta específica de interesse do usuário, é necessário informar qual problema se deseja resolver.
É importante ressaltar que não existe um
método de mineração de dados universal, portanto a escolha de um algoritmo particular para
uma aplicação é, de certa forma, uma arte (Fayyad
et al., citados por Romão et al., 2005). Nessa
mesma perspectiva, a partir da leitura dos trabalhos de Gargano & Raggad (1999) e Berry & Linoff
(citados por Passari, 2003), podem ser destacados alguns critérios utilizados para a avaliação e
a escolha da técnica mais adequada para atingir
um determinado objetivo: robustez, grau de
automação, velocidade, poder explanatório,
acurácia, quantidade de pré-processamento necessário, escabilidade, facilidade de integração,
habilidade para lidar com muitos atributos, facilidade de compreensão do modelo, facilidade de
treinamento, facilidade de aplicação, capacidade de generalização, utilidade e disponibilidade. Ainda de acordo com os referidos autores, os
principais fatores que determinam a escolha da
técnica a ser utilizada estão relacionados com
preponderância de variáveis categóricas ou numéricas, números de campos, número de variáveis dependentes, orientação no tempo e presença de dados textuais.
Apesar de cada técnica de mineração de
dados ter sua própria abordagem, elas compartilham algumas características em comum: conforme “aprendem” a partir dos dados de treinamento coletados, ela melhora, gradativamente,
a sua performance; e existe sempre uma fase de
treinamento, onde o modelo “aprende” os padrões e os relacionamentos (essa fase de treinamento é seguida pela fase implementação, quando o modelo é posto à prova) (Passari, 2003).
Para encontrar respostas, ou extrair conhecimentos interessantes, existem diversas técnicas
de mineração de dados. A partir da leitura de alguns trabalhos (Bispo, 1998; Elmasri & Navathe,
2002; Passari, 2003; Wong & Leung, 2002;
Romão et al., 2002) que enfocam esse tema,
pode-se citar seis técnicas principais relacionadas com data mining: indução de regras, redes
neurais, algoritmos genéticos, árvores de regres-
FACULDADE MATER DEI
são, lógica nebulosa e clustering e segmentação.
Técnicas de indução de regras consistem
no uso de ferramental matemático e estatístico,
que visam o desenvolvimento de relacionamentos a partir dos dados apresentados. Tipicamente, são criadas correspondências do tipo “se-então”, baseadas em relações causais detectadas
nas variáveis. Cada relacionamento “se-então”
extraído é chamado de “regra”.
Redes neurais constituem técnicas derivadas de pesquisas, na área da inteligência artificial, que utilizam a regressão generalizada. Essas
técnicas fornecem “métodos de aprendizagem”,
pois são conduzidas a partir de amostragens de
testes, utilizadas para inferências e aprendizagem
iniciais. Com esses métodos de aprendizagem,
respostas a novas entradas podem ser passíveis
de serem interpoladas a partir das amostras conhecidas. Essa interpolação, no entanto, depende do modelo mundial desenvolvido através do
método de aprendizagem.
Os algoritmos genéticos estão relacionados com técnicas de otimização, onde se utilizam combinações de processos (exemplo: combinação genética, mutação e seleção natural).
Essas técnicas estão associadas, sobretudo, com
o conceito de seleção natural.
As árvores de regressão são técnicas simples, baseadas na autonomia de uma árvore.
Nesse sentido, cada galho particiona, de forma
estratégica e sucessiva, os dados em classes e
subclasses. A cada divisão, é escolhida a melhor
forma de separar e classificar os dados, de acordo com a característica que mais os distingue.
Para isso, são utilizadas, também, medidas estatísticas. As árvores de regressão possuem
algoritmos não-supervisionados, ou seja, são capazes de processar automaticamente os dados.
Técnicas de lógica nebulosa são utilizadas
para capturar informações vagas, que, em geral,
são descritas na sua forma natural, e convertêlas em um formato numérico, para facilitar as
suas análises. Em termos operacionais, essas técnicas utilizam a teoria dos conjuntos nebulosos,
que tem mostrado ser muito apropriada para se
trabalhar com vários tipos de dados e informações, superando, muitas vezes, os resultados obtidos com o emprego das tradicionais técnicas
estatísticas e probabilísticas.
REVISTA DE INFORMÁTICA
O clustering e segmentação estão relacionados com técnicas de data mining direcionadas
aos objetivos de identificação e classificação. O
clustering tenta identificar um conjunto finito de
categorias, ou clusters, para os quais cada objeto de dado pode ser mapeado. As categorias
podem ser disjuntas ou sobrepostas e, às vezes,
ser organizadas em árvores.
2.3. Aplicações de técnicas de data
mining
Para mostrar a relevância do uso das técnicas de data mining nos mais diversos setores da
sociedade, neste item são apresentados oito
exemplos de sucesso onde foram aplicadas as
referidas técnicas:
a) a Wal-Mart constitui uma das maiores cadeias varejistas dos Estados Unidos. É conhecida tanto por sua política de baixos níveis de
estoque e ressuprimento constante de produtos (baixos lotes e alta freqüência), como por
sua política agressiva com os concorrentes regionais. Utilizando ferramentas de data mining,
que auxiliam na previsão de cada item
transacionado nas lojas da empresa, esta modificou seus sistemas de ressuprimento automático de produtos. Além disso, identificou
padrões de consumo, em cada loja, para a escolha do mix de produtos a ser ofertado
(Rodrigues, 2005);
b) a ShopKo, rede varejista americana, utilizou ferramentas de data mining para determinar quais produtos eram vendidos por meio
da venda indireta de outros produtos. Como
resultado, resistiu à concorrência da Wal-Mart
em 90% dos mercados e, ainda, aumentou suas
vendas (Rodrigues, 2005);
c) o Banco Itaú costumava enviar mais de um
milhão de malas diretas aos correntistas, com
uma taxa de resposta de apenas 2%. Com um
banco de dados contendo as movimentações
financeiras de seus três milhões de clientes,
durante 18 meses, e utilizando ferramentas de
data mining, conseguiu reduzir em um quinto
a conta com despesas postais e, ainda, aumentou sua taxa de resposta para 30% (Rodrigues,
2005);
d) o Bank of America usou técnicas de data
mining para selecionar, entre seus 36 milhões
de clientes, aqueles com menor risco de dar
calote num empréstimo. A partir dos resulta69
FACULDADE MATER DEI
dos obtidos, enviou cartas oferecendo linhas
de crédito para os correntistas cujos filhos tivessem entre 18 e 21 anos e, portanto, precisassem de empréstimos financeiros para ajudar os filhos a comprar o próprio carro, uma
casa ou arcar com os gastos da faculdade.
Como resultado final, em três anos o banco
lucrou 30 milhões de dólares (“Data mining
overview”, 2005);
e) a empresa American Express, a partir da definição de estratégias de marketing com o auxílio de técnicas de KDD, fez aumentar as vendas, com utilização de cartão de crédito, em
cerca de 20% (Fayyad et al., citados por Romão,
2005);
f) empresas de telecomunicações dos Estados
Unidos, a partir da utilização de malas diretas
personalizadas com data mining, obtiveram
reduções da ordem de 45% nas taxas de serviço com novos consumidores (Rodrigues,
2005). Relacionado a esse mesmo setor, segundo o “Data mining overview” (2005), atualmente, existe uma explosão nos crimes contra
a telefonia celular, dentre os quais, a clonagem.
Assim, técnicas de data mining poderiam ser
utilizadas para detectar hábitos dos usuários
de celulares. Quando um telefonema fosse feito
e considerado pelo sistema como uma exceção, o programa poderia fazer uma chamada
para confirmar se foi ou não uma tentativa de
fraude;
g) no vestibular PUC-RJ, utilizando as técnicas de data mining, um programa de obtenção de conhecimento, depois de examinar milhares de alunos, forneceu a seguinte regra: se
o candidato é do sexo feminino, trabalha e teve
aprovação com boas notas, então não efetiva
matrícula. Uma reflexão justifica essa regra: de
acordo com os costumes do Rio de Janeiro,
uma mulher com idade para realizar o vestibular, se trabalha é porque precisa, e nesse caso
deve ter feito, também, inscrição para ingressar na universidade pública gratuita. Se teve
boas notas, provavelmente, foi aprovada na
universidade pública, onde efetivará a matrícula. Claro que há exceções: pessoas que moram em frente à PUC, pessoas mais velhas,
pessoas de alto poder aquisitivo e pessoas que
voltaram a estudar por outras razões. Mas a
grande maioria obedece à regra anunciada
(“Data mining overview”, 2005); e
h) algumas aplicações desenvolvidas pelo Data
Mining Center (Universidade do Alabama) es70
REVISTA DE INFORMÁTICA
tão voltadas à utilização de técnicas de mineração de dados para efetuar previsão de fenômenos naturais. Dentre os projetos, está o desenvolvimento do AMSU (Advanced
Microwave Sounding Unit), que é um
radiômetro de microondas utilizado para detectar temperaturas em diferentes níveis da
atmosfera. Com base nesse tipo de informação, é possível estimar velocidades de ventos
radiais, que, combinadas com outros fatores,
podem ser utilizadas para detectar ciclones
tropicais (Silva, 2003).
3. AS REDES NEURAIS
Esta seção está relacionada com as RNAs e
foi estruturada em duas partes principais. Na primeira, são abordados os fundamentos mais importantes acerca das RNAs. Na segunda parte,
discorre-se sobre relevantes aplicações dessa técnica de data mining em diversas áreas do conhecimento científico.
3.1. Fundamentos principais das redes
neurais
RNAs são sistemas de processamento de informações, compostos por muitos elementos
computacionais simples, que interagem por meio
de conexões, que recebem pesos distintos. Inspiradas na arquitetura do cérebro humano, as RNAs
exibem algumas características, como a habilidade de aprender padrões complexos de informação e generalizar a informação aprendida (Baets
& Venugopal, citados por Passari, 2003).
De maneira geral, as RNAs são modelos que
relacionam dados de entrada com suas respectivas saídas (Azoff, citado por Ribeiro et al., 2005).
A partir da observação de exemplos e seu constante treinamento, obtêm-se uma matriz de pesos, os quais representam as ligações entre os
neurônios de entrada e saída, imitando o que ocorre nas interconexões entre as células nervosas do
cérebro humano (Figura 1). A grande vantagem
do uso das RNAs relaciona-se com a adaptabilidade, que permite seu refinamento e minimização
dos erros de previsão (Ribeiro et al., 2005).
As RNA´s são compostas de nós ou unidades (Figura 1), usualmente não-lineares,
conectadas por vínculos orientados. Um vínculo
FACULDADE MATER DEI
de unidade j para a unidade i serve para propagar a ativação aj, desde j até i. Cada vínculo, também, tem um peso numérico Wji associado a ele,
o qual determina a intensidade e o sinal da conexão. Os nós operam em passos discretos, de
forma análoga a uma função de dois estágios.
No primeiro estágio cada unidade i calcula uma
soma ponderada de suas entradas (1). O segundo estágio consiste da aplicação de uma função
de saída g para derivar a saída. Essa função é
denominada de função de ativação (2) (Russel &
Norvig, 2004):
(1)
(2)
⎞
⎛ n
ai = g (ini ) = g ⎜⎜ ∑ W j ,i a j ⎟⎟
⎠
⎝ j =0
onde: i e j são unidades, aj é a ativação de saída da
unidade j e Wj,i é o peso no vínculo da unidade j até
essa unidade.
n
ini = ∑ W j ,i a j
j =0
Portanto, cada nó recebe um ou mais valores de entrada, que são combinados em um único valor a partir do uso de diferentes pesos para
cada entrada. Assim, por meio de uma função
de ativação, são transformados em um valor de
saída. Uma das funções de ativação mais utilizadas é a função logística (3) (Petron, citado por
Passari, 2005).
(3)
1
f(g)= y = 1 + e − x
onde: e é a base do logaritmo natural; x é o peso a ser
transformado; y é o resultado gerado.
FIGURA 1- Um modelo matemático simples para um neurônio
artificial (estrutura de uma RNA).
Fonte: (Russel & Norvig, 2004).
REVISTA DE INFORMÁTICA
Esse funcionamento aparentemente simples de cada neurônio artificial (Figura 1) resulta, após o processamento coletivos de todos os
nós, em uma capacidade de execução, com eficiência, de diversas tarefas (Passari, 2003).
As redes neurais podem ser caracterizadas
por três propriedades principais: topologia, propriedade computacional e propriedade de treinamento (Baets & Venugopal, Kuo & Xue
Almeida, citados por Passari, 2003). A topologia,
que corresponde à estrutura da rede, refere-se
ao número de camadas e nós utilizados. Uma
rede neural artificial deve ser composta por pelo
menos duas camadas: uma contendo as entradas e a outra contendo as saídas. Em geral são
utilizadas, também, uma ou mais camadas intermediárias, caracterizando, assim, as chamadas
redes neurais multicamadas: camada de entrada, que representa as variáveis de entrada do
modelo (essas variáveis devem ser sempre conhecidas); camada de saída, que contém um ou mais
nós representando os resultados finais do
processamento (para uma dada entrada, a rede
fornece uma saída correspondente); e camada
intermediárias ou ocultas, que tornam o modelo
mais refinado e não-linear, com a capacidade de
aprender padrões mais complexos.
A propriedade computacional refere-se ao
modo pelo qual os nós são ativados e processados, ou seja, corresponde ao “como” e ao “o que”
a rede processa.
A propriedade de treinamento, que relaciona-se com os aspectos de como a rede aprende, constitui o processo no qual uma série de
valores de entrada é apresentada, forma
seqüencial, e os pesos da rede são ajustados até
que ela reflita a saída desejada. As estratégias de
treinamento são divididas em treinamento supervisionado e não supervisionado. O treinamento
supervisionado requer a presença de valores de
entrada e seus respectivos valores de saída (alvo),
a partir dos quais é calculado o erro, utilizado
para corrigir o peso das conexões da rede. No
treinamento não supervisionado, são apresentados à rede apenas vetores de entrada, não requerendo valores de saída. Nesse caso, a rede
agrupa os valores de maior semelhança (cluster).
O processo de refinamento dos resultados,
mediante o estudo dos erros e envio destes para o
71
FACULDADE MATER DEI
início do ciclo, é conhecido como feedforward
backpropagation. O feedforward backpropagation
é um algoritmo tradicionalmente usado, que utiliza
técnicas de otimização mediante gradiente descendente para o ajuste dos pesos entre conexões. Dessa
forma, segue em direção a um ponto de mínimo na
curva da superfície de erros (Ribeiro et al., 2005).
Com a característica de poder realizar previsões, além de outras possibilidades, as RNAs
representam, portanto, uma importante alternativa aos tradicionais procedimentos estatísticos.
Isso porque possui características próprias que,
entre outras coisas, facilitam o seu uso em situações onde são exigidas inferências de relações
não lineares complexas, entre as variáveis de entrada e de saída, de um modelo previsor (Freiman
& Pamplona, 2005).
3.2. Aplicações das RNAs
Inúmeras são as possibilidades de aplicações das redes neurais: reconhecimento de padrões (p. ex.: reconhecimento de faces humanas);
classificação de dados (exemplo: reconhecimento ótico de caracteres); predição (exemplo.: previsão de séries temporais, como cotações em
bolsas de valores); controle de processos e aproximação de funções (exemplo: robótica); análise
e processamento de sinais; filtros contra ruídos
eletrônicos; análise de imagens e de voz; avaliação de crédito; e outras possibilidades (Freiman
& Pamplona, 2005).
No ambiente das organizações, algumas
aplicações das redes neurais já são consideradas
tradicionais. Nesse sentido, Smith e Gupta (2000)
destacam quatro relevantes aplicações:
a) em relação ao marketing, as modernas técnicas consiste em identificar clientes que respondam positivamente a um produto e, assim,
direcionar a propaganda para esses clientes. Para
tanto, deve-se efetuar uma segmentação do
mercado, dividindo-o em grupos distintos de
clientes, de acordo com diferentes hábitos de
consumo. Essa segmentação pode ser obtida
através das RNAs, separando-se a clientela a
partir de características básicas: localização
geográfica, condição sócio-econômica, poder
aquisitivo, atitude em relação ao produto e outras. A partir da segmentação, o marketing direto pode ser utilizado para promover as vendas do produto, sendo desnecessária ações in72
REVISTA DE INFORMÁTICA
termediárias, como propaganda ou promoção;
b)quanto às vendas no varejo,
freqüentemente, é necessária ter previsões
para que se possa tomar decisões relativas a
estoques, contratação de funcionários, preço
do produto e outras. Nesse campo, a utilização de RNAs tem tido muito sucesso devido à
sua habilidade para considerar, simultaneamente, múltiplas variáveis, como a demanda pelo
produto, a capacidade de compra dos consumidores, o tamanho da população e o preço
do produto. A previsão de vendas nos supermercados e centrais de atacadistas tem sido
muito estudada, e os resultados têm mostrado
bom desempenho, quando comparados com
aqueles obtidos tanto com o emprego das técnicas de estatísticas tradicionais, como a regressão linear, quanto com a opinião de especialistas;
c) a área de finanças tem sido um dos setores com grande aplicação das RNAs visando,
sobretudo, efetuar previsões financeiras e de
comércio. As RNA’s têm sido aplicadas com
sucesso em problemas de preço e de hedge de
derivativos de seguro, previsão de preço futuro para taxa de câmbio e seleção e previsão de
desempenho de ações. Atualmente, as RNAs
constituem a técnica básica para auxiliar na
tomada de decisão com respeito ao risco de
crédito, bem como na previsão de falência das
corporações. Uma área promissora é a que utiliza RNA’s para avaliar as relações entre a estratégia, o desempenho e a saúde financeira
das empresas. Além disso, a sua utilização já é
significativa para a detecção de fraudes na utilização de cartões de crédito e falsificação de
assinaturas em cheques; e
d) na indústria de seguros a questão da definição do valor dos prêmios, também, pode ser
facilitada pelo uso das RNA’s, por meio de previsões da freqüência dos pedidos de indenização. Assim como na área bancária e em outros
setores financeiros, aqui se faz necessária a
detecção de fraudes a partir da análise de circunstâncias incomuns;
De maneira geral, as RNAs têm sido utilizadas por inúmeros grupos de pesquisa das mais
diversas áreas. Na literatura, encontram-se muitos estudos envolvendo RNAs visando, principalmente, a realização de previsões. Dentre as várias linhas de pesquisa que utilizam essa técnica
de data mining, algumas merecem ser destacadas: análises de preços agropecuários (Freiman
FACULDADE MATER DEI
& Pamplona, 2005; Ribeiro et al., 2005); estudos
da incidência de doenças em seres humanos
(Markey et al., 2002; Santos et al., 2005; Eng,
2002); avaliações na construção civil (Mendes Jr.,
1997; Vaidyanathan et al., 2005); prognóstico
de utilização de recursos naturais (Ballini et al.,
2003); previsões na área financeira ((Burrell &
Folarin, 1997; Guimarães & Silva Neto, 2005;
O´Leary, 1998); análises mercadológicas, especialmente envolvendo vendas (West et al., 1997;
Yao et al., 1998; Passari, 2003); avaliações na
indústria de produtos alimentícios (Moita Neto
et al., 2003); entre outras.
4.
CONSIDERAÇÕES FINAIS
O data mining é um processo poderoso,
que pode depender ou não do usuário, para
transformar grandes quantidades de dados em
conhecimento. Esse conhecimento poderá auxiliar, sobretudo, nos processos de tomada de decisões nas mais diversas áreas. Apesar dessa grande vantagem em transformar informações em
conhecimento, existem, também, algumas limitações relacionadas, principalmente, com a análise dos resultados gerados. Isso porque, em geral, não podem ser facilmente interpretados por
pessoas que não tenham conhecimentos específicos na área, exigindo, assim, profissionais mais
especializados.
Dentre as diversas ferramentas do data
mining, têm-se as redes neurais, que são empregadas em muitos setores, visando, entre outras
coisas, realizar previsões de comportamentos futuros. Essa ferramenta de previsão, em relação
às tradicionalmente usadas, exige do usuário
uma maior atenção referente a alguns aspectos:
seleção das variáveis de entrada, tipos de função
de ativação, definição do número de camadas
necessárias para um melhor processamento dos
dados e cuidados especiais na interpretação dos
resultados gerados, pois as redes neurais são,
normalmente, de difícil interpretação.
Grande parte dos trabalhos encontrados na
literatura relacionado às RNAs destacam que a
fase mais importante, quando se utiliza essa técnica, refere-se à definição das variáveis de entrada. Isso porque é através dessas variáveis que a
rede aprende (processa) e oferece um resultado.
REVISTA DE INFORMÁTICA
Com a realização desse estudo, foi possível
observar que as RNAs têm sido aplicadas, nas
mais diversas áreas e, na maioria dos casos, os
resultados obtidos, quando comparados com os
de outras técnicas, têm sido considerados de
satisfatórios a excelentes. Apesar disso, em geral, alguns cuidados devem ser tomados quando
da implementação dessa ferramenta: as variáveis
para entrada na rede precisam ser testadas por
meio de métodos estatísticos; a entrada da rede
deve permitir a atualização constante dos dados;
a estrutura de uma RNA específica deve ser
construída a partir de um problema de pesquisa
bem delimitado e com grande aparato teórico
acerca desse problema; e, sempre que possível,
realizar análise dos dados também por meio de
métodos alternativos (exemplo: análise de regressão) para que se possam comparar os resultados
das saídas das RNAs.
REFERÊNCIAS
Ballini, R., Soares, S. & Andrade, M. G. (2003).
Previsão de vazões médias mensais usando redes neurais nebulosas. Revista Controle &
Automação. n.3, v.14. Jul./Set.
Bispo, C. A. F. (1998). Uma análise da nova geração de sistemas de apoio à decisão. São Carlos:
UFSCAR. (Dissertação de mestrado).
Burrell, P. R. & Folarin, B. O. (1997). The impact
of neural networks in finance. Neural Computing
& Applications, n.4, v.6, p.193-200.
DATA mining overview (2005). Disponível em:
< h t t p : / / w w w. d e 9 . i m e . e b . b r / ~ i n t e c /
Data%20Mining/Artigos%20de%20Suporte/
Overview%20Data%20Mining.pdf>. Acesso em:
10 out. 2005.
Elmasri, R., & Navathe, S. B. (2002). Sistemas de
banco de dados: fundamentos e aplicações. 3.ed.
Rio de Janeiro: LTC.
Eng, J. (2002). Predicting the presence of acute
pulmonary embolism: a comparative analysis of
the artificial neural network, logistic regression,
and threshold models. American Journal of
Roentgenology. n.179, p.869-874.
Freiman, J. P., & Pamplona, E. de O. (2005). Redes
neurais artificiais na previsão do valor de commodity
do agronegócio. In: Encuentro Internacional de
Finanzas, 5. Anais…, Santiago, Chile, 14p.
73
FACULDADE MATER DEI
Guimarães, B. B., Silva Neto, F. R. da. (2006). Redes neurais para a previsão de índices do mercado de ações: uma análise do trabalho de Amol S.
Kulkarni. Disponível <http://twiki.im.ufba.br/pub/
MAT054/SemestreArtigos20052/
artigoBrunoGuimaraesFranciscoRamos.pdf>.
Acesso em: 15 fev. 2006.
Larose, D. T. (2005). Discovering knowledge in
data: an in introduction to data mining. New
Jersey: John Wiley & Sons.
Markey, M. K., Lo, J. Y. & Floyd Jr., F. E. C. (2002).
Differences between computer-aided diagnosis of
breast masses and that of calcifications. Radiological
Society of North America, n.223, p.489-493.
Mendes JR, R. (1997). Aplicações de redes neurais
no gerenciamento de construções. In: Congresso Brasileiro de Redes Neurais, 3. Anais...,
Florianópolis.
Moita Neto, J.M.; Souza, E. A. de.; Teixeira, L. C.
V; Mello M. R. P. do; Torres & E. A. F. da S.(2003).
Aplicação de redes neurais para avaliação do teor
de carne mecanicamente separada em salsicha
de frango. Revista de Ciência e Tecnologia de
Alimentos. Set/Dez.
O´Leary, D. E. (1998). Using neural networks to
predict corporate failure. International Journal
of Intelligent Systems in Accounting, Finance
& Management, n.3, v.7, p. 187-197.
Passari, A. F. L. (2003). Exploração de dados
atomizados para previsões de vendas no varejo
utilizando redes neurais. São Paulo: USP. (Dissertação de Mestrado).
Ribeiro, C. de O., Sosnoski, A. A. K. B., & Widonsck,
C. A. (2005). Redes neurais aplicadas à previsão
de preços da soja no mercado futuro. In: Congresso Brasileiro de Economia e Sociologia Rural, 43. Anais..., Ribeirão Preto: SOBER. 1 CD-Rom.
Rodrigues, A. M. (2005). Escavando dados no
varejo.
Disponível
em:
<http://
www.cel.coppead.ufrj.br/fs-busca.htm?frvarejo.htm>. Acesso em: 08 out. 2005.
Romão, W., Freitas, A. A., & Pacheco, R. C. S.
(2005). Uma revisão de abordagens genéticodifusas para descoberta de conhecimento em
banco de dados. Disponível em: <http://
www.din.uem.br/~wesley/AGFuzzy.pdf>. Acesso
em: 13 nov. 2005.
Russel, S. J. & Norvig, P. (2004). Inteligência artificial. 2.ed. Rio de Janeiro: Campus.RJ.
Santos, A. M dos, Seixas, J. M. de, Pereira, B. de
B. & Medronho, R. de A. (2005). Usando redes
neurais artificiais e regressão logística na predição da hepatite A. Revista Brasileira
Epidemiologia, n.8, v.2, p.117-126.
74
REVISTA DE INFORMÁTICA
Siberschatz, A., Korth, H. F., & Sudarshan, S.
(1999). Sistema de banco de dados. 3.ed. São
Paulo: Makron Books.
Silva, M. P. dos S. (2003). Mineração de dados
em bancos de Imagens. São José dos Campos:
INPE. (Monografia do Exame de Qualificação do
Doutorado em Computação Aplicada).
Smith, K. A. & Gupta, J. N. D. (2000). Neural
networks in business: techniques and applications
for the operations researcher. Computers &
Operations Research, p.1023-1044. Set.
Vaidyanathan, C. V., Kamatchi, P. & Ravichandran,
R. (2005). Artificial neural networks for predicting
the response of structural systems with
viscoelastic dampers. In: Computer-Aided Civil
and Infrastructure Engineering. Oxford:
Blackwell Publishing.
Vessoni, F. (2005). Introdução à Mineração de
Dados. Disponível em: <http://www.mv2.com.br/
datamining.doc>. Acesso em: 27 out. 2005.
West, P. M., Brockett, P. L. & Golden, L. L. (1997). A
comparative analysis of neural networks and
statistical methods for predicting consumer choice.
Marketing Science, n.4, v.16, p. 370-391.
Wong, M. L. & Leung, K. S. (2002). Data mining
using grammar based genetic programming and
applications. New York: Kluwer Academic
Publisher.
Yao, J., Teng, N., Poh, H. & Tan, C. L. (1998).
Forecasting and analysis of marketing data using
neural networks. Journal of Information Science
and Engineering, n.14, pg. 843-862.
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
2 INTRODUÇÃO
ARTIGO 9
CONFIGURAÇÃO DE ACESSO
REMOTO COM AUTENTICAÇÃO
DE USUÁRIOS ATRAVÉS DE
RADIUS E PORTSLAVE
ELCIO LUIZ PAGANI BORTOLINI
[email protected]
1 APRESENTAÇÃO
Uma solução de segurança é essencial para
a proteção das informações e continuidade das
operações.
Para garantir sistemas seguros, tratando-se
de provedores de acesso à internet, existem opções de hardware e protocolos para garantir a
autenticação, autorização e configuração das
informações entre um servidor de acesso, que
deseja autenticar as conexões e requisições, e um
servidor de autenticação. Conforme o Clube das
Redes (CLUBE DAS REDES, 2006), a autenticação
é muito importante quando uma corporação oferece acesso à sua rede privada, através de uma
rede pública como a Internet, a funcionários que
estão em trânsito, e que precisam acessá-la para
atualizar dados ou consultar informações úteis.
Um usuário externo, com o cliente de autenticação instalado no computador, tenta uma
conexão com um endereço dentro da rede protegida pelo mecanismo servidor de autenticação.
Esse, verifica que o computador remoto tem o cliente de autenticação e que possui uma regra válida na estratégia de segurança, disponibilizando
então o acesso. Vale ressaltar que o acesso poderá ser válido para um período limitado de tempo.
Quando o período de tempo se esgotar, o processo de autenticação deve ser refeito.
1
2
Internet Engineering Task Force.
Remote Authentication Dial-In User Service.
Autenticação é o processo de reconhecimento dos dados que sÜao recebidos, comparando-os com os dados que foram enviados e
verificando se o transmissor que fez a requisição
é, na verdade, o transmissor real. Uma autenticação utiliza o modelo cliente-servidor, ou seja, um
cliente faz a requisição para o servidor, que verifica se o cliente tem a permissão para acessar o
servidor. Este último também verifica quais são
estas permissões, quais as informações que o cliente poderá acessar. Após isto, retorna a requisição para o cliente.
Baseado em um modelo de segurança distribuída previamente definido pela (IETF) 1, o
Radius2 provê um sistema de segurança Cliente/
Servidor aberto e escalonável. O servidor Radius
pode ser adaptado facilmente para trabalhar com
produtos de segurança de terceiros ou em sistemas de segurança proprietário. Qualquer mecanismo de comunicação, seja um software ou um
hardware que utilize o protocolo cliente Radius
pode se comunicar com um servidor Radius. O
protocolo Radius é adequado em sistemas de
serviços remotos discados.
Radius simplesmente permite que os acessos sejam autenticados de um servidor central
(ou servidor Radius), sem a necessidade de manter as informações sobre as contas dos usuários
em várias máquinas. Como servidor de acesso, é
possível optar pela utilização de hardware específico (Livingston Portmaster II, o Total Control da
3Com e o Pathras da Cyclades), ou ainda por uma
máquina Linux rodando o Portslave. O Portslave
pode ”escutar a linha” e agir como um cliente
Radius, tanto para autenticação como para outros servic¸os como Telnet e Shell Seguro (SSH).
Para a configuração de um Provedor de
Internet com modem, o Portslave atende e atribui um IP para a conexão PPP, o Radius faz a autenticação. O PPP é um protocolo destinado ao
envio de datagramas através de conexões seriais.
Permite que as pontas da conexão negociem
opções como endereço IP e o tamanho máximo
do datagrama durante a sua inicialização e ainda provê uma forma de autorização de acesso
para os clientes.
Uma das dúvidas mais freqüentes dos ad75
FACULDADE MATER DEI
ministradores de sistemas, especialmente de provedores de acesso, diz respeito à instalação e
configuração do Radius e do Portslave. Este artigo objetiva, com sua parte teórica, evidenciar o
conceito e aplicabilidade dos termos Radius, PPP
e Portslave e; através das exemplificações de configuração, retiradas de servidores em uso, demonstrar e tornar compreensível a configuração
e funcionamento de tais serviços. Este artigo também relaciona algumas referências que poderão
ser consultadas para complemento do presente
conteúdo.
3 O QUE É RADIUS?
Radius (Remote Authentication Dial In User
Service) é um protocolo de autenticação de usuários que permite uma maior segurança aos acessos remotos ao sistema. Quando um usuário tenta
acessar o sistema, um servidor de acesso faz uma
requisição ao servidor de autenticação para que
este valide a tentativa de acesso, retornando o
resultado ao servidor de acesso. Isso permite a
centralização do processo de autenticação, já que
é possível ter diversos servidores de acesso usando um único servidor de autenticação central.
3.1 Como funciona o Radius?
O Radius autentica através de uma série de
comunicações entre o cliente e o servidor. Uma
vez que o usuário é autenticado, o cliente proporciona a ele, o acesso aos serviços apropriados. Os passos envolvidos no processo do Radius
são os seguintes:
• O RAS - Remote Access Server cria um pacote de dados com as informações e o chama de
”pedido de autenticação”. Este pacote inclui a
informação que identifica o RAS específico que
envia o pedido de autenticação, a porta que
está sendo usada para a conexão de modem,
identificação do usuário e a senha. Para proteger os dados de hackers/crackers que possam
estar escutando a conexão, o RAS age como
um cliente Radius e codifica a senha antes que
seja enviada em sua jornada ao servidor Radius.
• Quando um pedido de autenticação é recebido, o servidor de autenticação valida o pedido e então decifra o pacote de dados para ter
acesso a identificação do usuário e senha. Esta
informação é passada para o sistema de segu76
REVISTA DE INFORMÁTICA
rança apropriado.
• Se o usuário e senha estiverem corretos, o
servidor envia um reconhecimento de autenticação que inclui informação sobre o usuário e
as exigências dos serviços. Por exemplo, o servidor Radius contará para o RAS que um usuário precisa do Protocolo PPP (ponto-a-ponto)
para se conectar á rede. O reconhecimento
pode também conter filtros, com informações
sobre os limites de acesso do usuário para os
recursos específicos na rede. Se o usuário e a
senha não estiverem corretos, o servidor Radius
envia um sinal ao RAS e o usuário terá o acesso negado á rede.
• Uma vez que a informação é recebida pelo
RAS, o servidor Radius envia uma chave de
autenticação, ou assinatura, se identificando
para o cliente Radius e permitindo então, a
configuração necessária para que os serviços
de envios e recepções personalizados, funcione para o usuário autenticado.
São necessários os seguintes pré-requisitos
para a implementação de um servidor Radius:
1. No mínimo 1 (um) modem;
2. Opcionalmente uma placa multiserial para
permitir um maior número de conexões;
3. O servidor pppd corretamente configurado
para aceitar conexões.
4 INSTALAÇÃO DO RADIUS
Existem no mercado vários servidores
Radius, porém o Radius-Cistron é amplamente
conhecido e utilizado.
4.1 Obtendo o Radius-Cistron:
wget ftp://ftp.radius.cistron.nl/
pub/radius/radiusd-cistron1.6.7.tar.gz
4.2 Instalando o pacote:
Descompactar o pacote radiusd-cistron1.6.7.tar.gz no diretório /usr/local/src:
root@real1:~#tar -zxvf radiusdcistron-1.6.7.tar.gz -C
/usr/local/src cd /usr/local/src/
/radiusd-cistron-1.6.7/src make
make install
%\label{instalandoradius}
%\end{figure}
FACULDADE MATER DEI
5 CONFIGURAÇÃO DO RADIUS
Uma vez instalado o Radius, procede-se a
configuração:
# cd /etc/raddb
Editar o arquivo clients para e deixar o mesmo de forma que contenha uma configuração
como a seguinte:
# Client Name Key
#—————————————
localhost acesso1
terra.bssnet.com.br acesso1
Onde:
Client Name é o nome da máquina onde
está instalado o Portslave ou mesmo de um RAS
qualquer.
Neste exemplo está sendo usado o Portslave
e o nome utilizado foi o da própria máquina onde
o mesmo está instalado.
Key é a chave de acesso que o Portslave ou
o RAS deverá passar ao Radius para que o mesmo aceite fazer a autenticação do usuário.
Editar o arquivo users e alterar para a seguinte configuração:
DEFAULT Auth-Type = System
Framed-MTU = 1500,
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP
Onde:
DEFAULT define um padrão para todos os
usuários. Auth-Type informa a base de usuários
que será usada para autenticação. Algumas das
opções são:
• System - Utilizar usuários do sistema.
• Local - Utilizar usuários inseridos no próprio
arquivo users. Se for utilizada esta opção
começa-se outra sessão antes ou depois da
sessão default para cada usuário definido:
elcio Auth-Type = Local, Password = “12345”
Framed-MTU = 1500,
REVISTA DE INFORMÁTICA
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP
Framed-MTU - Tamanho do quadro.
Service-Type-Define o tipo de serviço a ser utilizado. Pode ser:
Framed-User para uso com PPP (point to point
protocol) ou Rlogin para uso com remote login.
Framed-Protocol - Define o tipo de protocolo a
ser utilizado. SÜao opções: PPP e Rlogin.
Framed-Compression -Define se vai ser utilizada
a compressão de cabeçalhos IP. Neste caso a
compressão Van-Jacobson-TCP-IP.
5.1 Outras Opções:
Framed-IP-Address - Define o número ip da conexão. Geralmente isso fica a cargo do RAS e, no
lugar do número IP coloca-se uma mascara de
rede padrão para as conexões: Mascara de rede
padrão para as conexões PPP 255.255.255.254
Framed-Routing - Define se fará roteamento ou
não. Opções: None e Broadcast-Listen. Para as
conexões Dial-up em um servidor de acesso remoto, a opção utilizada é None.
Framed-IP-Netmask -Define a máscara de rede
quando utilizada a opção Frame-IP-Address para
definir um número IP. Essas sÜao as configurações básicas para o Radius funcionar. Para
inicializar o serviço é necessário adicionar a seguinte linha no arquivo /etc/rc.d/rc.local:
/usr/local/sbin/radiusd -y
6 TESTANDO A AUTENTICAÇÃO VIA
RADIUS
Para testar a autenticação via Radius utilizar:
#/.radlogin
Ao executar radlogin, o mesmo irá solicitar
por um usuário e senha. Ao informar o usuário e
senha, se tudo estiver funcionando bem, o retorno será algo semelhante a:
RADIUS: Authentication OK This is the dummy
login. Radius script.
If you want that this script does something
77
FACULDADE MATER DEI
useful you’ll have to replace it.
The following RADIUS environment variables
are set:
RADIUS_FRAMED_COMPRESSION=VanJacobson-TCP-IP
RADIUS_FRAMED_MTU=1500
RADIUS_FRAMED_PROTOCOL=PPP
RADIUS_SERVICE_TYPE=Framed-User
RADIUS_USER_NAME=elcio
(ZAGO,
2005)
e
(THE
LINUX
DOCUMENTATION PROJECT, 2005) demonstram
outras opções de configurações para o Radius,
principalmente como bloquear acessos simultâneos e autenticação Radius usando LDAP, respectivamente.
Um documento completo, em inglês, sobre Autenticação Remota para conexões Dial-up
via Radius nos é apresentado pela pela (THE OHIO
STATE UNIVERSITY, 2005).
7 PPP - POINT-TO-POINT PROTOCOL
O PPP disponibiliza configurações para estabelecer a conectividade com um sistema remoto. PPP é um protocolo poderoso e resistente. Os
requisitos de hardware para PPP são uma porta
serial com um buffer3 FIFO4e um modem. O protocolo PPP é implementado no Linux em duas
partes: a primeira é implementada através de
módulos do kernel e a segunda através do serviço pppd.
Os módulos do kernel são carregados dinamicamente quando necessários, e sÜao eles
os responsáveis pelas interfaces virtuais pppX
(onde X é um número), utilizadas em conexões
discadas.
O serviço pppd auxilia o kernel executando as funções de inicialização e autenticação,
que precedem o envio ou recebimento de informações através da conexão.
O PPP é utilizado para suportar os protocolos de TCP/IP sobre uma conexÜao serial, se ela
estiver sobre uma linha telefônica de dial-up (ou
3
4
Área de memória usada para guardar dados de entrada/saída temporariamente
FIRST IN FIRST OUT - Primeiro a Entrar, Primeiro a Sair
78
REVISTA DE INFORMÁTICA
ISDN), um cabo de modem nulo, um link de
Telnet ou uma linha dedicada. Nos níveis mais
baixos, o PPP está dividido em duas partes: o
High-level Data Link Control (HDLC) e o Link
Control Protocol (LCP). O HDLC define as regras
fundamentais para a estrutura dos frames de PPP.
Isso permite que o frame contenha pacotes de
protocolos diferentes do IP. Um campo dentro do
frame identifica o tipo de protocolo. Além de tratar datagramas de IP, o PPP também pode utilizar compactação de cabeçalho Van-Jacobson (VJ).
Efetivamente, este compacta os pacotes de
TCP, permitindo aumento do desempenho.
O HDLC define os limites das unidades de
transmissão na camada de conexão de dados e
provê uma verificação da integridade de mensagens com chaves de 16 bits, possibilitando ainda o encapsulamento de outros protocolos como
IP, IPX da Novell ou Appletalk, graças à adição
de um campo destinado á definição do protocolo na unidade básica HDLC que identifica o tipo
de pacote que está sendo transmitido.
O LCP é usado sobre o HDLC para negociar
opções referentes á conexão de dados, como por
exemplo a Unidade Máxima de Transferência MTU, que define o tamanho máximo do
datagrama que uma das pontas da conexão aceita receber. O LCP é responsável também pelo
monitoramento da qualidade da conexão e pela
detecção de linhas em autoteste.
Em um nível mais alto, a funcionalidade de
PPP também é dividida em duas partes: o HDLC e
o daemon pppd. O daemon pppd fornece o LCP,
suporte para autenticação de usuário e o Network
Control Protocols (NCP) para estabelecer o IP
Control Protocol (IPCP). Quando da utilização do
Portslave para aceitar conexões dial-up, o PPP é
o responsável pelo estabelecimento da conexão
com a máquina remota.
Como o presente artigo não objetiva
aprofundamento no referido conceito, em (JOÃO
ALEXANDRE VOSS DE, 2006) têm-se a
exemplificação de configurações para montar um
servidor PPP com o Slackware Linux e que permite que uma máquina cliente, via modem, consiga acessar o servidor de nomes e um site localizado em um servidor Linux. Vale a referência para
compreensão do funcionamento do protocolo
PPP, não se aplicando necessariamente à confi-
FACULDADE MATER DEI
guração de uma máquina Provedora de Internet.
Recomenda-se a leitura da Introdução para identificação da aplicabilidade das configurações.
8 O QUE É PORTSLAVE?
(JOÃO EURICO DE AGUIAR, 2006) dá uma
definição bastante simplista do que é Portslave.
Para ele, nada mais é do que um servidor de acesso, onde vários modems estão instalados lado a
lado, com softwares necessários para a conexão.
Do ponto de vista da rede, cada modem é identificado como se fosse uma placa de rede.
Segundo (JOÃO ERIBERTO MOTA, 2006),
um equipamento muito famoso para receber ligações telefônicas por intermédio de modems a
ele conectados chama-se Portmaster. O mesmo
é fabricado pela empresa Livingston. O
Portmaster recebe a chamada e conecta-se a um
micro que faz a autenticação do usuário e senha. O software que faz a autenticação é o
Radius. Nesse âmbito, seria necessário um
Portmaster com vários modems atrelados e um
micro com o Radius para a autenticação, o que
nem sempre é conveniente. Surgiu então o desenvolvimento do Portslave, um simulador de
Portmaster. É possível, num mesmo micro, que
possua modem, instalar o Portslave, que fará com
que o modem seja habilitado a receber chamadas, e o Radius, que irá autenticar os usuários.
Portslave (http://portslave.mnic.net/) é um
opção de software para servidores de acesso. O
Portslave emula o Livingstone Portmaster II. Ele é
necessário para a utilização do servidor de acesso. Na verdade, o Portslave atua como um cliente Radius, sendo utilizado para criar conexões
dial-up aos servidores de acesso. Ele utiliza o protocolo Radius para autenticar um servidor remoto que contenha as informações sobre a conta
do usuário. Basicamente, ele serve para criar a
conexão PPP, mas também pode ser utilizado com
outros protocolos e serviços.
REVISTA DE INFORMÁTICA
wget http://prdownloads.sourceforge.net/portslave/
portslave_2002.10.
21.tar.gz?download
É preciso também fazer o download do portslavepppd e do radiusclient:
wget http://prdownloads.sourceforge.net/portslave/
ppp-2.4.1.tgz?
download
wget http://prdownloads.sourceforge.net/portslave/
radiusclient_0.
3.2-4.tgz?download
Descompactar os pacotes em /usr/local/src:
tar -zxvf portslave_2002.10.21.tar.gz -C /usr/local/src
tar -zxvf ppp-2.4.1.tgz -C /usr/local/src
tar -zxvf radiusclient_0.3.2-4.tgz -C /usr/local/src
cd /usr/local/src/ppp-2.4.1
./configure
make
make install
cd /usr/local/src/radiusclient_0.3.2-4
./configure
make
make install
cd /etc/usr/local/src/portslave_2002.10.21
./configure
make
make install
10 CONFIGURAÇÃO DO PORTSLAVE
9
INSTALAÇÃO DO PORTSLAVE
Para instalar o Portslave, faz-se necessário baixar
os fontes do programa no site:
Com o Portslave já instalado, pode-se partir para a configuração do mesmo, de modo a
aceitar conexões dial-up e autenticar através do
79
FACULDADE MATER DEI
Radius. Primeiramente, é preciso configurar o
radiusclient do Portslave para permitir a autenticação via Radius. A configuração é feita no arquivo radiusclient.
# cd /usr/local/etc/radiusclient
Editar o arquivo servers e alterar o conteúdo para:
# Make sure that this file is mode 600 (readable only
to owner)!
#Server Name or Client/Server pair Key
#———————— ————
localhost acesso1
terra.bssnet.com.br acesso1
A configuração será idêntica á configuração efetuada no arquivo clients do Radius.
Em seguida, editar o arquivo port-id-map
para fazer o mapeamento das portas a serem utilizadas. Se estiverem sendo utilizadas portas
seriais padrão, o dispositivo será ttySx; se for uma
multiserial Cyclades, por exemplo, o dispositivo
será ttyCx. O x varia de 0 a N conforme o número
de portas seriais utilizadas.
Exemplo, utilizando portas seriais padrão:
# port-id-map
#
# This file describes the ttyname to port id mapping.
The port id
# is reported as part of a RADIUS authentication or
accouting request.
#
#ttyname (as returned by ttyname(3)) port-id
/dev/tty0 0
/dev/tty1 1
/dev/tty2 2
/dev/tty3 4
Um exemplo utilizando uma multiserial Cyclades
8 portas modelo 8yo:
# port-id-map
#
# This file describes the ttyname to port id mapping.
The port id
# is reported as part of a RADIUS authentication or
accouting request.
#
80
REVISTA DE INFORMÁTICA
# ttyname (as returned by ttyname(3)) port-id
/dev/tty0 0
/dev/tty1 1
/dev/tty2 2
/dev/tty3 3
/dev/tty4 4
/dev/tty5 5
/dev/tty6 6
/dev/tty7 7
Faz-se necessário configurar o arquivo /usr/
local/etc/pslave.conf para correto funcionamento
do Portslave. Editar o arquivo pslave.conf e deixálo com uma configuração similar á seguinte:
## Arquivo de configuração utilizado com Portslave
rodando no Slackware versão 8.1
## As sintaxes aqui apresentadas podem alterar em
função da versão do Portslave.
# Arquivo de configuração do Portslave all.loc_host
200.140.208.210
# Números. Caso esteja setado para yes não irá permitir login local se o servidor Radius estiver parado
all.locallogins no
# Configurar para as facilidades de login - Sempre usar
padrão
all.syslog
all.facility 6
# Configuração para saída de log utilizando o syslog.
Pode ser setado para 0, 1, 2. O modo verbose é 2.
all.debug 2
# Tipo da autenticação - “radius” ou “none”.
#
all.authtype radius
# Por padrão aceita password nulo quando vai autenticar via Radius. Pode ser setado para 0 ou 1, porém
# isso nã tem efeito quando não for utilizado Radius.
all.radnullpass no
# Protocolo padrão e host.
#
all.protocol ppp
# Endereços IP a serem atribuídos nas conexões. Aqui
é uma configuração padrão
# Para todos os modems conectados ao serviço
#
all.rem_host 192.168.2.2+
all.netmask 255.255.255.255
all.mtu 1500
# Mensagem padrão usada quando da conexão. Só
FACULDADE MATER DEI
aparece se utilizar janela de terminal na conexão.
#
all.issue \n\
Netwise- Servidor de Autenticação\n\
\n\
Suporte: 0xx46-3225-3335 http://www.nwise.com.br/\n\
\n
# Quando desejar que o Portslave faça update no arquivo wtmp apenas quando for um login/getty
# regular, setar para yes.
#
all.syswtmp yes
## Opções para as portas seriais.
# Porttype (passada para o servidor Radius para efetuar o login).
# async, sync, isdn, isdn-v120, isdn-v110
#
all.porttype async
# Velocidade. Todas as portas estão setadas para 8N1.
#
all.speed 115200
# Opções para inicializar as conexões (para modems
USrobotics e Genius, ambos 56 Kbps. Pode funcionar
com outros modems.
all.initchat “” \d\l\dATZ \
OK\r\n-ATZ-OK\r\n “AT&F1” \
TIMEOUT 3600 \
RING “\c” \
STATUS Incoming %p:I.HANDSHAKE \
“” ATA \
TIMEOUT 75 \
CONNECT “\c” \
STATUS Connected %p:I.HANDSHAKE
# Controle de fluxo na porta serial:
# hard - hardware, rts/cts
# soft - software, CTRL-S / CTRL-Q
# none.
#
all.flow hard
# Usar a linha DCD ou nÜao. Isto significa que a sessão
será finalizada quando o modem desligar.
# Pode-se usar 0, 1 ou no, yes.
#
all.dcd yes
# Opçes PPP - usado se quiser autodetectar uma sessão
#
all.autoppp proxyarp %d asyncmap 0 %i: \
REVISTA DE INFORMÁTICA
noipx noccp login auth require-pap refuse-chap \
mtu %t mru %t \
ms-dns 200.140.208.210 \
plugin /usr/local/lib/libpsr.so
## Opções de PPP - Caso o usuário já esteja autenticado e o serviço for PPP
all.pppopt proxyarp %d asyncmap 0 %i:%j \
noipx noccp \
mtu %t mru %t \
netmask %m idle %I maxconnect %T \
ms-dns 200.140.208.210 \
plugin /usr/local/lib/libpsr.so
#Configuração de nomes para as portas seriais
# O nome das portas seriais depende do tipo utilizado. Neste caso está sendo utilizada uma multiserial
# Cyclades, então as seriais serão chamadas de ttyC0 a
ttyCx - Como está sendo usada uma multiserial
# de 8 portas, ser´a ttyC0 a ttyC7.
# Configuração para uma multiserial Cyclades 8 portas
modelo 8yO
s0.tty ttyC0
s1.tty ttyC1
s2.tty ttyC2
s3.tty ttyC3
s4.tty ttyC4
s5.tty ttyC5
s6.tty ttyC6
s7.tty ttyC7
# Configuração para utilizar as portas seriais da máquina
# s0.tty ttyS0
# s1.tty ttyS1
# s2.tty ttyS2
# OBS.: Nada impede que sejam utilizadas as portas
serias da máquina e as da multiserial simultaneamente.
Por último, basta colocar o Portslave em
operação adicionando-se as seguintes linhas no
arquivo /etc/inittab:
# Inicialização do Portslave
T0:234:respawn:/usr/local/sbin/portslave 0
T1:234:respawn:/usr/local/sbin/portslave 1
T2:234:respawn:/usr/local/sbin/portslave 2
T3:234:respawn:/usr/local/sbin/portslave 3
T4:234:respawn:/usr/local/sbin/portslave 4
T5:234:respawn:/usr/local/sbin/portslave 5
T6:234:respawn:/usr/local/sbin/portslave 6
T7:234:respawn:/usr/local/sbin/portslave 7
81
FACULDADE MATER DEI
Onde: TO a T7 - Designa o nome do processo a ser iniciado. Poderiam ser utilizados números como 1,2,3,... Outra nomenclatura poderia ser T0 a T7 (abreviatura de terminal 0 a 7) ou
P0 a P7 (abreviatura de PPP0 a 7).
234 - Informa em qual run level (nível de
execução do sistema) o Portslave será executado
(nesse caso níveis 2, 3 e 4).
respawn - Diz ao init para voltar a ouvir o
dispositivo serial em questão quando ocorrer um
desligamento do modem (cair a ligação ou ocorrer uma desconexão por um motivo qualquer).
O número em cada final de linha é o dispositivo serial mapeado no arquivo port-id-map.
Assim, finaliza-se a configuração do
Portslave. Á partir desse momento o serviço já
estará aceitando conexões dial-up. Para testá-lo,
basta conectar linhas telefônicas aos modems e
discar para os respectivos números dessas linhas.
Um cliente de conexão típico é o dial-up do
Windows.
A configuração é padrão para o acesso á
internet.
Os logs relativos ao Portslave e ao Radius
podem ser verificados em /var/log/pslave.log, /var/
log/radius.log e /var/log/messages.
11 CONCLUSÃO
Um importante passo no estágio de configuração de uma conexão PPP é a autorização de
acesso do cliente. Ainda que não seja obrigatória, é realmente uma necessidade para acessos
via linha discada. Normalmente, a máquina para
a qual é feita a conexão (servidor), solicita ao cliente uma comprovação de identidade através da
informação de senha de acesso. Caso o cliente
falhe em informar uma senha correta, a conexão
é finalizada. Com PPP a autorização funciona em
ambos os sentidos, isto é, o cliente pode solicitar
que o servidor também se identifique. Estes procedimentos de identificação são totalmente independentes.
O Radius é um servidor de autenticação e
pode ser usado com qualquer RAS, incluindo o
Portslave. O Portslave é bastante utilizado
em pequenos provedores de internet onde não é
82
REVISTA DE INFORMÁTICA
possível instalar um RAS digital ou mesmo em função de redução de custos. O Portslave emula um
RAS analógico eficientemente, evitando inclusive
a aquisição de um equipamento de alto custo.
Todos os usuários de um sistema com acesso compartilhado devem ter conhecimento sobre a necessidade de autenticação e, portanto,
devem conhecer a senha para saber atuar em
caso de uma autenticação.
REFERÊNCIAS
CLUBE DAS REDES. Como funciona o autenticac¸
Üao? [S.l.], Janeiro 2006. Disponível em:
< h t t p : / / w w w. c l u b e d a s r e d e s . e t i . b r /
rede0008.htm>.
JOÃO ALEXANDRE VOSS DE. Montando um servidor PPP com o Slackware Linux - SOLUC¸ AÜO
- PARTE 1 e 2. [S.l.], Janeiro 2006. Dispon´1vel
em: <http://linux-br.conectiva.com.br/arquivo/2001/04/msg00090.html>.
JOÃO ERIBERTO MOTA. Re: [provedores-brasil]
hosts.allow. [S.l.], Janeiro 2006. Dispon´1vel
em: <http://br.groups.yahoo.com/group/provedores-brasil/message/18>.
JOÃO EURICO DE AGUIAR. Re: [provedores-brasil]
hosts.allow. [S.l.], Janeiro 2006.
Disponível em: <http://br.groups.yahoo.com/
group/provedores-brasil/message/18>.
THE LINUX DOCUMENTATION PROJECT. Radius
authentication using LDAP. [S.l.],
novembro 2005. Disponível em: <http://
en.tldp.org/HOWTO/LDAP-ImplementationHOWTO- /radius.html>.
THE OHIO STATE UNIVERSITY. Remote
Authentication Dial In User Service (RADIUS).
Computer and Information Science, dezembro
2005. Disponível em: <http://www.zago.eti.br/radius.txt>.
ZAGO. RADIUS. [S.l.], novembro 2005. Disponível em: <http://www.zago.eti.br/radius.txt>.
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
ARTIGO 10
APLICAÇÕES DA ESTATÍSTICA
USANDO MICROSOFT EXCEL
JORGE ROBERTO GROBE
1
GUSTAVO JULIAN GROBE2
[email protected]
[email protected]
RESUMO
Este trabalho tem o objetivo de aplicar o
uso da estatística em resultados de análises de
solos. O estudo foi realizado na fazenda
Guamirim, localizada no município de Água
Doce, SC, na região denominada “Campos de
Palmas”. A metodologia de estudo propõe, no
resultado de análises de solo, a aplicação do
software Microsoft Excel, utilizando a análise da
variância de fator duplo.
1. INTRODUÇÃO
Conforme [Montgomery and Runger 2003],
o computador é uma ferramenta importante na
apresentação e análise de dados. A abordagem
de algumas técnicas estatísticas através de uma
calculadora portátil, pode requerer muito tempo e esforço, com isso o computador pode realizar tarefas de forma muito mais eficiente. O campo da estatística lida com coleta, apresentação,
análise e o uso dos dados para tomar decisões,
resolver problemas e planejar produtos e processos.
1
Professor do Curso de Sistemas de Informação da Universidade Tecnológica
Federal do Paraná Campus de Pato Branco.
2
Acadêmico do Curso de Bacharelado em Sistemas de Informação da Faculdade Mater Dei -Pato Branco PR.
Segundo [LEVINE 2005], no século XXI, os
gerentes de empresas têm acesso a uma grande
quantidade de informações. Para tomar decisões
um gerente necessita conhecer estatística através de quatro razões:
· Saber apresentar e descrever informações
de forma apropriada;
· Tirar conclusões a partir de grandes populações, com base na informação obtida a partir de amostras;
· Melhorar os processos;
· Obter previsões confiáveis.
Os métodos estatísticos são utilizados em
diversas áreas como: contabilidade, finanças,
administração, produção, entre outras. A evolução dos softwares permitiu que os usuários finais pudessem ter habilidades computacionais
que nem mesmo os estatísticos imaginassem. Em
meados dos anos 60 e 70, surgiram alguns
softwares, que automatizaram os processos estatísticos, auxiliando o usuário nos cálculos das
análises estatísticas. A partir dos anos 80, foram
desenvolvidas versões dos pacotes estatísticos,
como: Statistical Analysis System (SAS), Statistical
Package for the Social Sciences (SPSS) e Minitab.
Com o passar dos anos, o desenvolvimento de
planilhas eletrônicas foi surgindo e aprimorando os cálculos de estatística. Um exemplo é o
Microsoft Excel, uma planilha relativamente fácil de se trabalhar, que é utilizada como ferramenta de automação de cálculos estatísticos. Este
software permite que o usuário final possa inserir dados, manipular fórmulas combinadas com
modelos matemáticos de uma forma interativa.
Para [Anderson 2003] devido ao tempo, ao
custo e outros fatores, os dados são coletados a
partir de uma pequena porção do grupo. Esta
pequena porção do grupo é chamada de amostra e o grupo maior é chamado de população.
Na estatística é possível obter que os resultados
da amostra possam ser utilizados para fazer estimativas e para testar hipóteses sobre características de uma população. Este processo é chamado de inferência estatística. Neste estudo de resultados de análises de solos conforme tabela 1,
foi utilizada uma técnica estatística chamada de
análise de variância (ANOVA) de fator duplo.
Para o presente estudo da matriz de dados
83
FACULDADE MATER DEI
em resultados de análises de solos tem-se o seguinte objetivo:
Estudar a aplicação do software Microsoft
Excel utilizando a análise da variância de fator
duplo com repetição em resultados de análises
de solos para testar a hipótese, isto é, se existe a
diferença significativa entre as linhas e as colunas.
REVISTA DE INFORMÁTICA
tabela 1, estão relacionadas as variáveis que fazem parte da população 1 em estudo: potencial
de hidrogênio (pH), matéria orgânica (MO), alumínio (Al), hidrogênio mais alumínio (acidez total) (H+Al), cálcio (Ca), fósforo (K), potássio (P) e
saturação por bases, (V%), amônia (NH4) e nitrato (NO3).
Tabela 1 – Matriz de Dados da População 1
2. MATERIAL E MÉTODOS
2.1 CARACTERIZAÇÃO DA AMOSTRA E
DAS VARIÁVEIS
Conforme [Grobe 2005], em seu estudo de
pesquisa, o período de execução deste experimento agronômico foi compreendido entre julho de 2003 e abril de 2004. O local do experimento foi a fazenda Guamirim, localizada no
município de Água Doce, SC, região denominada “Campos de Palmas” conforme figura 1.
Figura 1 – Locação3 do Experimento Agronômico
Para fins deste estudo, as análises de solos
foram coletadas em três profundidades: 0-5 cm,
5-10cm e 10-20cm em três blocos diferentes. Na
3
As cidades de Palmas e Água Doce foram adaptadas no mapa da figura original
a fim de facilitar a observação.
84
Fonte: Laboratório de Análises de Solos da UTFPR - Pato BrancoPR
3. RESULTADOS E DISCUSSÃO
Para obter os resultados da tabela 2 , foi
utilizado o procedimento de Análise de Dados,
Anova: Fator Duplo com Repetição. Os cálculos
estatísticos realizados no software foram obtidos
da seguinte maneira:
1.Selecione Ferramentas | Análise de Dados.
2. Selecione Anova: Fator Duplo com Repetição e clique no botão OK.
FACULDADE MATER DEI
3. Na Caixa de Diálogo Anova Fator Duplo
com Repetição:
3.1 Inserir na caixa de edição, Intervalo de
Entrada, a matriz de dados.
3.2 Inserir na caixa de edição, Linhas por
Amostra, o número de repetições.
3.3 Inserir caixa de edição, Alfa, o nível de
significância.
Tabela 2 - ANOVA: Fator Duplo com Repetição
REVISTA DE INFORMÁTICA
houve 6 repetições.
Na interpretação dos resultados verifica-se
através da estatística do teste F, se existe um efeito de interação entre o fator A (linhas) e o fator B
(colunas). Para melhor compreender a interpretação do conceito de interação, posiciona-se em
um gráfico as médias aritméticas das três profundidades e observa-se que as linhas são paralelas,
conforme figura 2, indicando que a diferença
entre as médias das três profundidades, 0-5cm,
5-10cm e 10-20cm são virtualmente iguais. Também se interpreta através da estatística de teste
F, sendo F = 1,6588 > Fcrítico = 1,6345.Conclui-se
que existe um efeito de interação entre os dois
fatores A (linhas) e B (colunas). Este efeito de
interação significativo entre os fatores A (linhas)
e fator B(colunas) em que ilustra a média aritmética das três profundidades, 0-5cm, 5-10cm e 1020 cm para as 11 diferentes variáveis estudadas
não são todas paralelas, existe uma diferença na
variável amônia (NO3) e nas demais variáveis analisadas não houve diferenças significativas.
Utilizando o nível de significância de 0,05
e testando em relação a uma diferença entre os
três níveis de profundidades Fator A (linhas), a
estatística de teste F = 0,9923 < Fcrítico = 3,0508,
a regra é aceitar hipótese nula (Ho), para igualdade das médias. Conclui-se que não existe uma
diferença entre os três níveis de profundidades.
Testando em relação a uma diferença entre as 11 variáveis estudadas fator B (colunas),
ao nível de significância de 0,05, a regra de decisão é de rejeitar a hipótese nula porque a estatística de teste F= 152,8243 > Fcrítico= 1,8885.
Conclui-se que existe evidência de uma diferença entre as 11 variáveis em termos de médias aritméticas.
4. CONCLUSÃO
Figura 2 – Médias Aritméticas das Variáveis
Para o modelo fatorial de fator duplo, os
dois fatores são simultaneamente avaliados chamados de Fator A (linhas) e Fator B (colunas). Na
matriz de dados do resultado de análise de solos
da população 1 foi realizado o experimento em
três diferentes profundidades de solos como: 05 cm , 5 -10 cm e 10- 20 cm.Para cada um deles
Conclui-se que devido à complexidade dos
cálculos, à medida que o número de níveis de
cada fator torna-se maior e o número de réplicas
em cada célula aumenta, na prática utilizam-se
software de planilhas ou software de estatística
para analisar os dados obtidos. Nos resultados
obtidos através da estatística foi possível concluir
que não existe uma diferença significativa na
amostragem de solos nas três profundidades do
85
FACULDADE MATER DEI
experimento agronômico. Quanto ao fator B (colunas) as variáveis têm grandezas diferentes, portanto haverá uma diferença significativa entre as
médias aritméticas. Como o fator B(colunas) tem
grandezas diferentes, conclui-se que sem o uso
da estatística existirá uma diferença significativa
entre as medias aritméticas, então o fator A (linhas) tem caráter relevante ao problema.
REFERÊNCIAS
ANDERSON, David Ray. Estatística Aplicada Á
Administração E Economia. 1.ed. SP.Pioneira
Thomson Learning 2003.
GROBE, J. R. Aplicações Da Estatística
Multivariada Na Análise De Resultados Em Experimentos Com Solos E Animais. Curitiba.
2005.145 p. Dissertação (Mestrado em Métodos
Numéricos em Engenharia) –Setores de
Tecnologia e de Ciências Exatas, Universidade
Federal do Paraná (UFPR).
LEVINE, M. David, et. al. Estatística –Teoria e Aplicações Usando o Microsoft Excel em Português. 3.ed. RJ. LTC 2005.
MONTGOMERY, Douglas C.RUNGER, George C.
Estatística Aplicada E Probabilidade Para Engenheiros. 2.ed. RJ. LTC 2003.
86
REVISTA DE INFORMÁTICA
FACULDADE MATER DEI
REVISTA DE INFORMÁTICA
87
Download