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