API JAVA PARA A PERSISTÊNCIA E CRIPTOGRAFIA DE ARQUIVOS DE CONFIGURAÇÃO XML E PROPERTIES

Tamanho: px
Começar a partir da página:

Download "API JAVA PARA A PERSISTÊNCIA E CRIPTOGRAFIA DE ARQUIVOS DE CONFIGURAÇÃO XML E PROPERTIES"

Transcrição

1 UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE INFORMÁTICA CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA RICARDO VASSELAI PAULINO API JAVA PARA A PERSISTÊNCIA E CRIPTOGRAFIA DE ARQUIVOS DE CONFIGURAÇÃO XML E PROPERTIES MONOGRAFIA CURITIBA 2009

2 1 RICARDO VASSELAI PAULINO API JAVA PARA A PERSISTÊNCIA E CRIPTOGRAFIA DE ARQUIVOS DE CONFIGURAÇÃO XML E PROPERTIES Monografia apresentada ao Programa de Pós- Graduação em Especialização em Tecnologia Java da Universidade Tecnológica Federal do Paraná, como requisito parcial para a obtenção do título de Especialista em Tecnologia Java Orientador: Prof. Robson Ribeiro Linhares, Msc. CURITIBA 2009

3 Dedico a todos os professores, colegas de trabalho e amigos que trabalham com Java. Dedico Também a todos familiares. 2

4 3 AGRADECIMENTOS Agradeço a Deus, aos meus professores, familiares, colegas de trabalho e amigos.

5 4 RESUMO Esta monografia apresenta a API para persistência de configuração de sistemas em arquivos, que opcionalmente podem ser gravados no formato Properties ou XML. Serão abordadas as tecnologias de código aberto utilizadas, bem como o funcionamento de cada uma delas com respectivos exemplos, e mais à frente, como a API as utiliza. Este documento aplica ênfase na forma como a API implementa criptografia para resguardar os dados que serão gravados e sua importância. Por fim, através de um manual, o documento explana como a API funciona e logo após descreve os sistemas que atualmente já estão utilizando a API. Palavras-chave: Criptografia. API. Properties. XML.

6 5 ABSTRACT This monograph presents the API for persistence of system settings in files, that optionally can be recorded in the format Properties or XML. It will be approached the open source technologies used, as well as the operation of each one with the respective examples, and moreover, how the API utilizes them. This work highlights how the API implements cryptography to protect data that will be recorded and their significance. Finally, with a manual, the document explains how the API works and afterwards describes the systems that currently are using the API. Keywords: Cryptography. API. Properties. XML.

7 6 SUMÁRIO 1. INTRODUÇÃO Estudo de domínio do problema Objetivo Justificativa Escopo Organização dos capítulos ESTUDO DAS TECNOLOGIAS UTILIZADAS Anotações (Annotations) Criando uma Annotation Utilizando uma Annotation Reflexão (Reflection) Classe Method Classe Constructor Como Invocar Métodos Genéricos (Generics) Como funciona Wildcards com Generics Criptografia Chave Algoritmos de Chave Simétrica Algoritmo DES para chave Simétrica Algoritmo RC2, RC4 e RC5 para chave Simétrica Algoritmo IDEA para chave Simétrica Algoritmos de Chave Assimétrica O algoritmo PBEWithMD5AndDES Java Cryptography Architecture (JCA) Assinaturas Digitais Message Digests Java Cryptography Extension (JCE) Classes Java JCA e JCE e Suas Funcionalidades Implementações de Criptografia Suportadas pelo Java Arquivos de Propriedades Formato de um Arquivo de Propriedades A classe Properties Arquivos XML Como Utilizar DESENVOLVIMENTO DO TRABALHO Padrão de Projeto Utilizado Persistência e Criptografia por Java Annotations Importância de Criptografar Dados Método para Informar o Tipo de Atributos Persistidos Gerenciamento de Persistência dos Arquivos ConfigLoader Identifica os Dados ConfigLoader Salva os Dados... 40

8 ConfigLoader Gerenciada Pela Classe ConfigManager Análises do Sistema com UML Casos de Uso Casos de Uso Resumidos Casos de Uso Detalhados Diagrama de Casos de Uso Diagrama de Classes Diagramas de Seqüência Telas do Sistema (Screenshots) Manual do Usuário Adicionando a API à um Projeto Criando Uma Entidade de Propriedades Informando Tipo de Arquivo de Propriedades Informando Atributos de Propriedades Alterando Dados de uma Entidade de Propriedades ESTUDO DO CASO Utilização do ConfigAPI CONCLUSÃO Sobre o Desenvolvimento da API Dificuldades Encontradas Trabalhos Futuros REFERÊNCIAS BIBLIOGRÁFICAS

9 8 LISTA DE FIGURAS Figura 1 Exemplo de Annotation Figura 2 Exemplo de Utilização de Annotation Figura 3 Exemplo para capturar uma Annotation Figura 5 Exemplo para impressão de de dados de uma Annotation Figura 6 Exemplo de reflexão para visualizar todos os métodos de uma classe Figura 7 Exemplo para imprimir dados de um método utilizando a classe Method Figura 8 Exemplo de utilização da classe Constructor Figura 9 Exemplo de como invocar métodos Figura 10 Exemplo de Generics Figura 11 Exemplo de Generics com Parameter Type Figura 12 Exemplo de laço sem Widcards Figura 13 Exemplo de laço com Wildcards Figura 14 Exemplo de Código Java Utilizando Algoritmo PBEWithMD5AndDES Figura 15 Exemplo de comentário de arquivo Properties Figura 16 Exemplo de formato de propriedade de arquivo Properties Figura 17 Exemplo de leitura de propriedade de arquivo Properties Figura 18 Exemplo para alterar ou criar uma propriedade de arquivo Properties Figura 19 Exemplo de utilização de tag XML com atributo na tag Figura 20 Exemplo de utilização de tag XML com atributo entre tags Figura 21 Exemplo de utilização de XML com tipos de atributos diversos Figura 22 Exemplo de utilização de XML com tipos de atributos diversos Figura 23 Diagrama de Casos de Uso Figura 24 Diagrama de Classes Figura 25 Diagrama Carregar Entidade de Configuração de um Properties Figura 26 Diagrama Carregar Entidade de Configuração de um XML Figura 27 Diagrama Persistir Entidade de Configuração em Properties Figura 28 Diagrama Persistir Entidade de Configuração em XML Figura 29 Tela CryptoConverter Figura 30 Tela Generate Keys Figura 31 Exemplo para criar uma entidade de propriedades Figura 32 Exemplo para informar atributos de uma entidade de propriedades Figura 33 Exemplo para informar tipo de arquivo de propriedades Figura 34 Exemplo para informar atributos de propriedades Figura 35 Exemplo para criptografar um atributo Figura 36 Arquivo de configuração do OpenDoc Figura 37 Arquivo de configuração do OpenDoc... 66

10 9 1. INTRODUÇÃO 1.1. Estudo de domínio do problema Muitos projetos de software Java utilizam arquivos de configuração para armazenar informações que influenciam no comportamento do programa. Usualmente são utilizados para guardar informações como IP para conexão com banco de dados, usuário de banco de dados, senha de banco de dados, parâmetros de inicialização, pendências de conectividades com serviços e etc. Arquivos de configuração são ágeis, pois, não necessitam de compilação e sim apenas de sua leitura. Podem ser editados por usuários sem conhecimento de programação. Suas formas mais utilizadas são XML e Arquivos de Propriedades. Usualmente para cada projeto é escrito toda rotina de leitura e persistência dos arquivos de configuração e também sua criptografia quando necessário, quando não, fica a cargo dos implementadores a função de atualizar manualmente até mesmo os arquivos, tanto na sua criação, como nas alterações. O ideal é que esse processo seja automatizado e aprimorado. O que se pode perceber é que arquivos de propriedades de aplicações não são acessados de forma automatizada na maioria dos sistemas disponíveis, nem ao menos gerados de forma programática. Justamente pela facilidade de ficar separado dos arquivos fontes, não necessitando ser compilado até mesmo, o programador prefere alterar esse tipo de arquivo manualmente, quando necessário, além do que, é preferível evitar ter que automatizar todo o processo, até mesmo pra poupar tempo. Mas percebendo que arquivos de propriedades não são compilados, o mesmo pode ser então compreendido pelo homem, não sendo possível gravar dados secretos, por exemplo. Uma saída para isso seria gravar dados criptografados, mas isso só seria possível através de um cálculo, usando linguagem de programação, também seria necessário recuperar estes dados, decifrando os mesmos, o mesmo por linguagem de programação. Outro grande problema seria tratar dados tipados. Arquivos de propriedades

11 10 não conseguem por si só tratar e separar dados por tipos. Tudo isso leva a crer que uma automação de dados persistidos em arquivos de propriedades se torna necessário. Os arquivos de propriedades possuem vantagens que devem ser aproveitadas, mas que necessitam de automação para aumentar as possibilidades Objetivo Atender a necessidade de automatizar o processo de gerar arquivos de propriedades, entre outras funcionalidades necessárias, desenvolvendo uma API que tenha como principal função gerar arquivos no formato Properties e também no formato XML, deixando a escolha do formato pelo implementador, além de poder também ler estes arquivos e suas propriedades. Estes arquivos terão atributos gerados baseandose em classes mapeadas por anotações (Java Annotations), conforme desejado também pelo implementador. Estes atributos poderão ou não ser criptografados, além de atender suporte a tipos variados. A API deverá possuir uma interface para possibilitar cifrar e decifrar atributos criptografados, que foram persistidos em arquivos de propriedades, tudo isso para visualização e conferência dos dados que forem cifrados Justificativa Através da utilização de arquivos de configuração em diversos projetos, notouse que o código para fazer a leitura e persistência se repetia de forma semelhante entre eles. Outra característica com maior ênfase em Arquivos de Propriedade é da presença de códigos extensos de manutenção ruim e de baixo reaproveitamento para efetuar a leitura e persistência de configurações, isso também ocorre dependendo da implementação usada, para XML. Isso pode ser melhorado criando uma API específica para esse fim, evitando reescrita de código para ler Arquivos de Propriedades, podendo a implementação ser reutilizada.

12 11 Arquivos de Propriedades não incentivam de forma natural o uso de entidades (POJOS com os atributos correspondentes ao arquivo de propriedade) para armazenar as informações. É um arquivo contendo texto natural e legível, não tendo uma estrutura como XML, por exemplo. É possível gravar dados em Arquivos de Propriedades e carregar em classes com os atributos gravados. Apesar da grande semelhança dos códigos de diversos projetos, em sua forma comum não é possível reaproveitar o código de um projeto para outro de forma satisfatória, uma alternativa é reescrever o código ou copiar trechos de códigos e adaptá-los. Desta forma o tempo gasto para criar e manter estes códigos acaba sendo grande dependendo da quantidade de propriedades/atributos que se encontram dentro do arquivo. Outra característica negativa é que tanto Arquivo de Propriedades quanto XML em suas formas comuns não apresentam nenhum tipo de criptografia, podendo deixar dados sensíveis a mostra, como por exemplo, o caso de usuários e senhas de bancos de dados. Dificilmente encontramos sistemas que não tenham necessidade de gravar dados de propriedades, tanto configuração, quanto propriedades de XML. Sistemas grandes e robustos precisam guardar dados que correspondem ao próprio sistema, e não as suas regras de negócio. Para as regras de negócio utilizamos um banco de dados específico. Alguns sistemas precisam acessar outros servidores. Para isso precisam saber o endereço IP ou DNS do servidor que deverão acessar, talvez a porta do mesmo. Algumas opções, como essa que foi citada como exemplo, não são aconselháveis deixar fixa no código fonte da aplicação, justamente porque podem mudar num tempo não planejado. E não seria muito aconselhável gerar e instalar um novo deploy do sistema, apenas para mudar uma propriedade. Nesses casos se tornam úteis arquivos de propriedades para armazenar dados que não podem ou não devem estar em banco de dados ou em hardcode.

13 Escopo A API de arquivos de configuração utilizando anotações deve possibilitar leitura e persistência nos formatos Properties e XML, dando a possibilidade de criptografar atributos do tipo String. Irá contemplar os seguintes tipos de dados: Int; Integer; long; Long; float; Float; double; Double; char; Char; String; Date; int[]; Integer[]; long[]; Long[]; float[]; Float[]; double[]; Double[]; char[]; Character[]; String[];

14 13 Date[]. Possibilitará o uso de arquivos de configuração dentro e fora do empacotamento do projeto, além de uma interface com usuário, para geração de chaves aleatórias e para codificação e decodificação de atributos criptografados Organização dos capítulos O próximo capítulo será de detalhamento das tecnologias utilizadas pela API, explicando o funcionamento de cada uma delas, com exemplos diretos de utilização geral. Uma explanação específica e mais detalhada será empregada na criptografia de dados, explicando as várias formas de criptografia, a aplicabilidade de cada uma delas e como a API as utilizará. Outro destaque é dado nos tipos de arquivo Properties e XML, sendo estes as duas formas de persistência dos dados que a API utiliza. É destacado logo após todos os sistemas que atualmente já utilizam a API como forma de persistência de parâmetros de configurações, sendo estes desenvolvidos pelo Instituto Curitiba de Informática (ICI). A conclusão descreve como foi o desenvolvimento da API utilizando as tecnologias de código aberto, detalha as dificuldades encontradas e por fim, os trabalhos futuros propostos.

15 14 2. ESTUDO DAS TECNOLOGIAS UTILIZADAS 2.1. Anotações (Annotations) Para entender Annotations é necessário entender o conceito de metadados. Metadados são informações diversas inseridas em um código, mas que podem ser manipuladas pela linguagem de programação. Essas informações dizem respeito a uma parte específica do código, sendo ou uma classe, ou atributo, ou método, entre outras opções. São exatamente anotações sobre uma parte específica de código. Essas informações podem conter atributos tipados até mesmo, podendo usar os tipos inteiro, texto, booleanos, dentre outros. No Java 1.4, o que era usado para fazer essas anotações era o Xdoclet. Já na versão 5, Java adquiriu uma API específica pra isso, chamada de Annotations Criando uma Annotation Uma anotação pode ser criada da MinhaAnnotation { int exemplo(); String exemploteste() default teste ; } Figura 1 Exemplo de Annotation Na criação então de uma anotação É justamente como se fosse criar uma interface do Java, só que adicionando arroba na frente da palavra interface. A anotação acima da declaração da é utilizada para informar, através da classe RetentionPolicy, onde será possível executar essa anotação criada, que pode ser em tempo de execução (constante RUNTIME), ou que são descartadas pelo compilador (constante SOURCE), ou que não seja em tempo de execução (constante CLASS). Mais acima, através da é

16 15 especificado onde essa anotação será usada, com várias opções de uso, alguns deles são método (METHOD), classes (TYPE), pacote (PACKAGE), entre outros. É notável no exemplo citado, a assinatura de dois métodos, sendo que o primeiro retorna um tipo int. Isso significa que ao utilizar esta anotação, será possível informar uma propriedade como inteiro. Esta propriedade tem nome exemplo. O segundo método retorna um tipo String, sendo que existe uma propriedade default. Com isso, caso não seja informado para essa anotação, na propriedade exemploteste uma informação qualquer, a informação default será teste Utilizando uma Annotation É interessante poder restringir onde uma Annotation será usada, através com isso sabemos que ela será usada somente onde queremos, caso um outro implementador for utilizar. Um exemplo de uso em um método seria: public class MinhaClasse (exemplo=1, testeexemplo= outroteste ) public void fazalgumacoisa() {... } } Figura 2 Exemplo de Utilização de Annotation Dessa forma é possível verificar as anotações possíveis do método fazalgumacoisa através de reflexão (Reflection), e a partir daí verificar as encontradas uma por uma e suas propriedades. A classe Method possuí um método chamado getannotation, onde é possível recuperar todas para manipular conforme desejado. Exemplo: Method[] methods = clazz.getdeclaredmethods(); for (Method method : methods) { if (method.isannotationpresent(minhaannotation.class)) { Annotation annotation = method.getannotation(minhaannotation.class); }

17 16 } Figura 3 Exemplo para capturar uma Annotation Com a Annotation em mãos é possível recuperar seus dados, conforme a assinatura de seus métodos declarados na interface: MinhaAnnotation an = (MinhaAnnotation) method.getannotation(minhaannotation.class); System.out.println( Metodo1: + an.exemplo()); System.out.println( Metodo2: + an.testeexemplo()); Figura 5 Exemplo para impressão de de dados de uma Annotation Pode-se citar como exemplo de uso de anotações o JPA, que é a API de persistência Java, totalmente baseada em anotações justamente para possibilitar o mapeamento objeto relacional. Suas anotações ligam classes a tabelas, atributos de classes a colunas de tabelas e também definem como será o relacionamento entre tabelas dentro de uma classe Java. Um dos frameworks de persistência que implementam JPA é o Hibernate, citando em seu livro, chamado Java Persistence com Hibernate, a utilização do padrão, sendo até mesmo participante no desenvolvimento dessa implementação: O Hibernate, portanto, como sendo uma solução de persistência de dados de sucesso, teve um papel importante na parte de persistência desse novo padrão. 1 Outros exemplos podem ser citados, como EJB3 e WebServices Reflexão (Reflection) Quando se faz necessário conhecer ou manipular os atributos, métodos, ter várias informações de uma classe, tudo isso em tempo de execução, uma ótima solução é o Java Reflection API. Ela está presente no Java desde a versão 1.1 e permite que um programa possa varrer uma classe, consultando suas propriedades, métodos, até mesmo invocar métodos de uma determinada classe, ou seja não

18 17 somente conhecer uma classe, mas poder manipular a mesma sem ao menos conhecer os métodos previamente, tudo em tempo de execução. Conforme diz o artigo técnico da Sun Microsystems: Reflection is a feature in the Java programming language. It allows an executing Java program to examine or "introspect" upon itself, and manipulate internal properties of the program. For example, it's possible for a Java class to obtain the names of all its members and display them. 2 Todas essas funcionalidades encontram-se na classe Class do Java. Para recuperar a lista dos métodos de uma classe, podemos utilizar o método getdeclaredmethods(). Para visualizar todos os métodos de uma classe, um exemplo seria: Class c = Class.forName("java.lang.String"); Method m[] = c.getdeclaredmethods(); for (int i = 0; i < m.length; i++) { System.out.println(m[i].toString()); } Figura 6 Exemplo de reflexão para visualizar todos os métodos de uma classe Dessa forma o nome de todos os métodos declarados da classe serão impressos na saída padrão Classe Method A classe Method possui alguns métodos úteis como o getname(), que informa o nome do método, além de poder invocar o mesmo através do método invoke(object obj, Object[] args), podendo passar os parâmetros do método a invocar. Além disso, com a classe Method é possível saber até mesmo quais tipos de exceções o método pode lançar, através do getexceptiontypes(), que retorna uma lista dessas classes exceções. Outros métodos interessantes são getreturntype(), que retorna o tipo de objeto que o método pode retornar, getparametertypes(), que retorna os tipos de parâmetros que o método pode receber, dentro outros métodos.

19 18 Um exemplo de como conseguir vários dados de um método de uma classe, utilizando a classe Method: Class cls = Class.forName("Classe1"); Method methlist[] = cls.getdeclaredmethods(); for (int i = 0; i < methlist.length; i++) { Method m = methlist[i]; System.out.println("nome = " + m.getname()); System.out.println("membro da classe = " + m.getdeclaringclass()); System.out.println("modificador = " + Modifier.toString( m.getmodifiers() )); Class pvec[] = m.getparametertypes(); for (int j = 0; j < pvec.length; j++) System.out.println("parâmetro #" + j + " " + pvec[j]); Class evec[] = m.getexceptiontypes(); for (int j = 0; j < evec.length; j++) System.out.println("exceção #" + j + " " + evec[j]); System.out.println("tipo de retorno = " + m.getreturntype()); } } Figura 7 Exemplo para imprimir dados de um método utilizando a classe Method Classe Constructor Com essa classe ainda podemos possuir informações sobre os construtores de uma classe qualquer, incluindo os parâmetros de cada construtor e suas exceções. Um exemplo seria: Class cls = Class.forName("constructor1"); Constructor ctorlist[] = cls.getdeclaredconstructors(); for (int i = 0; i < ctorlist.length; i++) { Constructor ct = ctorlist[i]; System.out.println("nome = " + ct.getname()); System.out.println("membro da classe = " + ct.getdeclaringclass()); Class pvec[] = ct.getparametertypes(); for (int j = 0; j < pvec.length; j++) System.out.println("parâmetro #" + j + " " + pvec[j]); Class evec[] = ct.getexceptiontypes();

20 19 } for (int j = 0; j < evec.length; j++) System.out.println("exceção #" + j + " " + evec[j]); Figura 8 Exemplo de utilização da classe Constructor Como Invocar Métodos É possível através da API de Reflexão do Java invocar métodos em tempo de execução. A classe Method fornece um método que torna isso possível. Basta apenas que o programador tenha conhecimento do nome do método, mas se ainda não souber, é possível também encontrar o nome dos métodos e invocar qual quiser. Por exemplo: // Atribui-se dois objetos do tipo Integer no array partypes. // Esses objetos serão usados para declarar quais // serão os tipos de parâmetros Class partypes[] = new Class[2]; partypes[0] = Integer.TYPE; partypes[1] = Integer.TYPE; // Instancia-se a classe, utilizando o método forname Class cls = Class.forName("InvocaMetodo"); // A classe Method é instanciada através do getmethod. // passando os tipos de parâmetro do método a ser invocado. // este exemplo é útil para métodos sobrecarregados Method meth = cls.getmethod("ummetodo", partypes); // Declarando as variáveis que serão usadas como parâmetros. Object arglist[] = new Object[2]; arglist[0] = new Integer(37); arglist[1] = new Integer(47); // A classe InvocaMetodo é um exemplo de classe qualquer // com um método chamado ummetodo InvocaMetodo methobj = new InvocaMetodo(); // Após a classe ser instanciada o método invoke é invocado // passando os parâmetros desejados. // Um tipo Object é retornado. Este é o retornado pelo método // invocado. Object retobj = meth.invoke(methobj, arglist); // Feito cast e utilizado o retorno da forma que desejar. Integer retval = (Integer)retobj;

21 20 System.out.println(retval.intValue()); Figura 9 Exemplo de como invocar métodos 2.3. Genéricos (Generics) Uma das dificuldades que um programador Java encontrava na versão 4, era usar casting sempre que uma informação fosse retirada de uma lista de dados, por exemplo, e por algumas vezes a exceção ClassCastException era lançada. Quando um objeto derivado de List era instanciado, objetos de todos os tipos poderiam ser adicionados e um problema surgia, pois não era possível restringir os tipos de objetos a inserir. Programadores da linguagem C++ já possuíam uma funcionalidade que na versão 5 do Java entraria como nova: Generics. É uma das características mais importantes da versão 5, uma solução elegante ao casting de objetos. A função necessária era exatamente restringir os tipos de dados em várias partes do código e restringir de formas diferentes, tanto em classes, interfaces e métodos (JANDIL, 2007). Assim como se pode restringir o acesso a uma classe, através do controle de acesso, utilizando as palavras reservadas private, protected, um programador também poderia definir qual único tipo de classes ou classes poderiam ser parâmetro de um método, por exemplo, ou qual tipo de classe faria parte de um objeto do tipo Collection Como funciona O caracter utilizado no código para informar a utilização de Generics são os símbolos menor < e maior >, sendo que em seu conteúdo está a informação de restrição e tipagem. Exemplos disso são:

22 21 public interface List<E> { void add(e x); Iterator<E> iterator(); } Figura 10 Exemplo de Generics Nesse exemplo acima, quando é criado um objeto que implementa a interface List, deve-se informar um objeto (Parameter Type) para E, sendo que esse tipo de objeto poderá ser utilizado em toda a classe. Com isso podemos saber em tempo de execução com qual objeto estaremos trabalhando. No caso da interface List, ao utilizar o método iterator(), será retornado um tipo Iterator já parametrizado com o objeto informado na interface List. Isso restringe o tipo de dado utilizado na interface List e evita o uso de cast. public void informarnovoanimal(<t extends Animal> animal) {... } Figura 11 Exemplo de Generics com Parameter Type Acima é mostrado Generics sendo usado em um método como exemplo. Dessa forma se tem a certeza que somente receberemos um objeto que herda de uma classe Animal. Isso torna o código mais elegante, evitando erros de objetos diferentes do desejado no parâmetro de métodos Wildcards com Generics Outra facilidade que surgiu no Java 5, através do Generics, é o Wildcards. Os laços utilizados com freqüência, antes do Generics poderiam ser dessa forma: void printcollection(collection c) { Iterator i = c.iterator(); for (k = 0; k < c.size(); k++) { System.out.println(i.next()); }

23 22 } Figura 12 Exemplo de laço sem Widcards Os Wildcards vieram justamente para poupar quantidade de código e facilitar a visualização e entendimento. O laço anterior pode ser substituído no Java 5 por: void printcollection(collection<object> c) { for (Object e : c) { System.out.println(e); } } Figura 13 Exemplo de laço com Wildcards No código acima se percebe que a parte for (k = 0; k < c.size(); k++) { foi substituído por for (Object e : c) {. Isso pode ser aplicado em todos os tipos Collection do Java. É muito simples: se uma classe Collection está restringida por um tipo qualquer, sabemos que um laço conterá esse tipo. Com isso, a cada interação do laço um novo tipo restringido é instanciado, não sendo necessário casting a cada interação do laço Criptografia Quando existe a necessidade de transportar dados que não devem ser compartilhados e são confidenciais, usamos a técnica de Criptografia. Criptografia (Do Grego kryptós, "escondido", e gráphein, "escrita") consiste em transformar uma informação na sua forma natural em ilegível. Com isso é possível passar toda a informação por qualquer mecanismo de transporte de dados, sem se preocupar com a descoberta de seu conteúdo por alguém não autorizado. Existe a necessidade de criptografar dados quando estes devem ser visíveis somente à pessoas autorizadas, conforme diz Cláudio em seu livro Introdução a Criptografia Computacional:

24 23 Mensagens e dados precisam ser protegidos de sorte que somente pessoas ou processos autorizados consigam utilizá-los; deve-se evitar alteração fraudulenta da informação. 3. Baseado em uma chave, que pode ser uma seqüência de caracteres qualquer ou mais de uma seqüência, um texto pode ser transformado, através de um cálculo, em outro texto totalmente diferente e ilegível até mesmo. Somente quem possuir a chave e o algoritmo utilizado, pode retornar o conteúdo em seu formato original. Na tecnologia da informação essa técnica é necessária quando se tem a necessidade de armazenar dados confidenciais ou pessoais, como senhas de usuários por exemplo. Entende-se que o ato de cifrar é passar um conteúdo legível para ilegível e decifrar é o contrário, transformar um conteúdo ilegível em legível. Existem ainda algoritmos que apenas servem para cifrar certo dado, não podendo mais voltar ao valor conteúdo original. Um exemplo disso é o algoritmo MD5, amplamente utilizado no meio computacional. O MD5 é utilizado para geração de hash para conferir a integridade de arquivos transferidos. Por exemplo, se um banco de dados possuí um item gravado cifrado pelo MD5, é possível validar se uma pessoa conhece seu conteúdo cifrando o dado informado pelo MD5. Se o conteúdo cifrado for o mesmo do gravado no banco, este é verdadeiro. Mas pode ser possível retornar um dado cifrado pelo MD5 usando dicionários e força bruta. Algoritmos de criptografia se tornaram mais robustos quando passaram a utilizar chaves para cifrar e decifrar seu conteúdo Chave Uma chave define como um algoritmo de criptografia irá se comportar. O resultado de um algoritmo de criptografia deverá ser diferente sempre que uma chave diferente da utilizada for usada para decifrar, justamente para dificultar uma possível engenharia reversa de um algoritmo. Uma chave diferente da chave usada para cifrar um código provavelmente emitirá um outro conteúdo totalmente ilegível, um problema sério acontece se a chave utilizada pra cifrar um conteúdo for perdida, pois fica praticamente impossível retornar o dado cifrado sem a chave utilizada para cifrar.

25 24 A escolha da chave é muito importante quando for utilizado no algoritmo para cifrar. Justamente para evitar que uma chave seja descoberta, é preciso que ela mesma seja ilegível, sendo até necessário gerar com seqüência de caracteres aleatórios. Existe um RFC sobre a geração de aleatoriedade (RFC 1750, Randomness Recommendations for Security [Recomendações de Aleatoriedade para Segurança]) Algoritmos de Chave Simétrica É um algoritmo que utiliza uma única chave privada para cifrar e decifrar um conteúdo qualquer. Esse tipo de criptografia é utilizado quando é necessário fazer transferência de dados e esses dados somente devem ser cifrados e decifrados por quem possui a chave. Por exemplo, em uma troca de mensagens entre computadores, para que ambos os lados possam trocar mensagens, deverão conhecer a chave para assim poder cifrar os dados, enviar e o outro lado poder decifrar os dados e vice-versa. Uma das dificuldades desse tipo de algoritmo é que a chave precisa ser compartilhada entre ambos os lados, por isso recomenda-se a troca constante da chave, para que a mesma não seja descoberta por alguém não desejado Algoritmo DES para chave Simétrica O algoritmo DES é um dos mais simples entre os existentes para esse tipo de chave. Esse algoritmo utiliza uma chave de 56 bits operando em blocos de 64 bits 4. A utilização desse tipo de algoritmo torna-se muito criteriosa e deve ser usado de preferência em sistemas que exigem proteção simples para seus dados. Para sistemas mais exigentes, que devem ter seus dados com proteção rigorosa, recomenda-se um algoritmo mais elaborado, devido ao fato de uma empresa chamada Electronic Frontier Foundation ter criado uma máquina de US$ capaz de decifrar mensagens cifradas por meio deste processo.

26 Algoritmo RC2, RC4 e RC5 para chave Simétrica À pedidos da RSADSI (RSA Data Security Inc.), esses algoritmos de cifragem de dados foram desenvolvidos pelo americano Ronald Rivest. A grande vantagem desse tipo de algoritmo é que o tamanho da quantidade de caracteres de uma chave pode ser variada, podendo ser de 1 a 1028 bits, tornando a possibilidade de chaves grande o suficiente para dificultar a interpretação dos dados. Além dessa vantagem sobre o algoritmo DES, algoritmos RC são mais rápidos, sendo o RC2 duas vezes mais rápido e RC4 pode ser até dez vezes mais rápido. A vantagem do RC5 sobre os outros RC é que o usuário pode definir o tamanho do bloco e o número de passos pelo algoritmo de encriptação Algoritmo IDEA para chave Simétrica Este algoritmo de criptografia foi criado por James Massey e Xuejia Lai em É um algoritmo muito parecido com o DES, sendo que a diferença é o funcionamento mais rápido em microprocessadores específicos. É também um algoritmo utilizado no famoso programa de criptográfica de s, chamado PGP Algoritmos de Chave Assimétrica Consiste em trocar informações contendo duas chaves, uma delas é somente para cifrar e a outra para decifrar, sendo a chave para cifrar pública e a de decifrar privada. Com isso é possível disponibilizar livremente a chave pública, que somente tem a finalidade de cifrar os dados, sendo possível transmitir a mensagem cifrada para qualquer pessoa, e somente quem possui a chave privada pode decifrar os dados. Assim é possível enviar dados cifrados, por onde foi espalhada a chave pública, onde somente o destinatário, que possui a chave privada, consegue decifrar. Dessa forma também quem recebeu consegue fazer autenticação da mesma, pois somente quem

27 26 possui a chave privada pode decifrar. Algoritmos que utilizam essa técnica são ElGamal, DSS (Digital Signature Standard) e RSA O algoritmo PBEWithMD5AndDES Esta forma de algoritmo é uma espécie muito segura para criptografia de dados. Não usa somente uma chave específica para cifrar e decifrar os dados, mas três formas, sendo estas: uma senha, um array de bytes conhecido como salt e uma compilação de mensagem MD5. Sendo assim, para que um dado criptografado seja descoberto, além da senha, outros dados devem ser conhecidos. Na perspectiva do desenvolvedor, o livro Segurança de dados em Java declara: Este algoritmo vincula a utilização de uma senha, um array de bytes conhecido como salt e uma conta de iteração junto com uma compilação de mensagem MD5 para gerar uma chave secreta DES; esta chave é então usada para realizar a codificação e a decodificação DES. 5 Com isso é possível até mesmo compartilhar a senha verbalmente com que for utilizar o algoritmo, pois a iteração e o salt é que tornarão a senha algo realmente seguro. Um exemplo prático em Java de como o algoritmo PBEWithMD5AndDES é utilizado pode ser descrito da seguinte forma: String password = Teste de Senha ; Byte[] salt = {(byte)0xc9, (byte)0x36, (byte) 0x78, (byte)0x99, (byte)0x52, (byte)0x3e, (byte)0xea, (byte) 0xf2); PBEParameterSpec paramspec new PBEParameterSpec(salt, 20); PBEKeySpec keyspec = new PBEKeySpec(password); SecretKeyFactory kf = SecretKeyFactory.getInstance( PBEWithMD5AndDES ); SecretKey key = kf.generatesecret(keyspec); Cipher c = Cipher.getInstance( PBEWithMD5AndDES ); c.init(ciper.encrypt_mode, key, paramspec); Figura 14 Exemplo de Código Java Utilizando Algoritmo PBEWithMD5AndDES Java Cryptography Architecture (JCA)

28 27 Uma das vantagens de utilizar a linguagem de programação Java é a sua infinidade de API s desenvolvidas especialmente para fins específicos. Muito se vê, navegando pela internet, vários algoritmos de criptografia prontos, criados por programadores que adaptaram até mesmo de outras linguagens a forma de criar dados cifrados e de decifrar os mesmos. O problema é a necessidade de grande conhecimento pra lidar com esses tipos de algoritmos, lidar com deslocamento de bytes, se preocupar com a segurança do algoritmo, fazendo com que seja de difícil descoberta, não deixando que dados sejam decifrados. Justamente para evitar toda preocupação de desenvolvimento dos algoritmos de criptografia e suas complexidades, a Sun Microsystems disponibilizou uma API que tem a implementação de vários tipos de algoritmos de criptografia, desde os mais simples aos mais complexos. Essa API chama-se JCA. JCA (Java Cryptography Architecture) é um framework do Java que oferece vários serviços de criptografia de dados. Uma grande vantagem é que toda implementação, código, todo algoritmo fica encapsulado, ou seja, tudo foi implementado e padronizado pelo Java, fica tudo a cargo da API JCA. Dessa forma, criptografar dados fica muito fácil e mais seguro do que se imagina, pois não vai ser preciso muita coisa além de informar o dado a criptografar, o tipo de algoritmo desejado e uma chave, dessa forma o programador fica fora da implementação do algoritmo de criptografia. Sobre esse assunto, o mestre em ciências, Leandro Batista de Almeida destaca: Independência de implementação e de algoritmos são complementares, permitem aos usuários da API utilizarem conceitos de criptografia, como assinaturas digitais e digests de mensagens sem se preocupar com as implementações ou algoritmos utilizados para implementar tais conceitos. 6 Mas o framework não impede que o programador melhore a implementação, novas melhorias e funcionalidades podem ser desenvolvidas e tudo ser usado em conjunto com a API, ou seja, a implementação pode ser tanto de alto, como de baixo nível, tudo depende do que o programador preferir e é exatamente isso o que diz a Sun em seu site de especificação e referência: This API is designed to allow developers to incorporate both low-level and high-level security functionality into their programs..

29 28 Em sua primeira versão, introduzida ao Java 1.1, JCA foi feito especificadamente para assinaturas digitais e message digests, é importante destacar o significado destes: Assinaturas Digitais Uma mensagem importante pode ser enviada a um destinatário qualquer e esta até mesmo pode ser criptografada, evitando a descoberta por alguém não autorizado. Mas como ter certeza que o destinatário é realmente aquele que esperamos? Como saber se a mensagem que se identifica enviada por certo destinatário foi realmente enviada pelo mesmo? As assinaturas digitais foram criadas para garantir que um dado qualquer foi enviado pela pessoa que se identifica na mensagem. A idéia é a mesma da assinatura de cheques, por exemplo, um banco quando recebe um cheque, analisa a assinatura para assegurar-se de que realmente o mesmo foi assinado pelo dono da conta do banco que está descrita no cheque. Para o banco, é de suma importância esta conferência, pois se um talão de cheques é roubado, podese evitar utilizar o mesmo para retirar uma quantia da conta do dono do cheque. No caso das mensagens criptografadas, a assinatura serve para assegurar quem é o autor real da mensagem enviada ao receptor Message Digests Existem dados que são necessários cifrar e não podem de forma alguma ser decifráveis. Para isso surgiu as mensagens digests, que justamente são algoritmos elaborados para cifrar dados sem permitir volta a partir do dado cifrado, ou seja, após cifrado não tem como voltar ao seu estado decifrado. Essa técnica é muito utilizada para armazenar senhas, por exemplo. Quando uma senha cifrada é gerada, a mesma pode ser gravada num banco e dados, sem problemas de ser decifrada, pois em teoria não existe método de interpretação dos

30 29 dados. Para validar a senha, o usuário envia a senha, o sistema cifra o que foi enviado e confere com o que tem também cifrado em seu banco de dados. Se os dados cifrados forem idênticos, a senha do usuário é válida Java Cryptography Extension (JCE) JCE é uma extensão ao JCA, como o próprio nome sugere. Ou seja, além da JCA, outras funcionalidades mais complexas podem ser encontradas através da JCE. Essa extensão oferece classes específicas, mais avançadas como geração de chaves, conferência de assinaturas digitais, dentre outras funcionalidades mais específicas Classes Java JCA e JCE e Suas Funcionalidades Segue abaixo algumas das principais classes que fazem parte da API JCA e classes também do JCE: MessageDigest: Usada para calcular e gerar mensagens digests. Signature: Serve para gerar assinaturas, através de uma chave específica e esta deve ser privada, e a mesma assinatura pode ser conferida através de uma chave pública. KeyParGeneration: Classe específica para criar um par de chaves, sendo que uma delas é pública e outra privada. KeyFactory: Classe para criar chaves, dependendo do algoritmo especificado. CertificateFactory: Usada para criar certificados públicos. KeyStore: Classe específica para administrar e armazenar chaves. AlgorithmParameters: Usada para manipular e gerenciar parâmetros de um algoritmo de criptografia.

31 30 AlgorithmParameterGenerator: Usada para gerar e administrar uma quantia de parâmetros de um algorimo de criptografia. SecureRandom: Usada para criar um número randômico de números. CertPathBuilder: Usada para gerar certificados. CertPathValidator: Usada para validar certificados. CertStore: Usada para remover certificados e CRLs de um repositório Implementações de Criptografia Suportadas pelo Java A Sun disponibilizou através do Java, a implementação de alguns algoritmos de criptografia, sendo estes os mais comuns e conhecidos no meio computacional. Através da API da Sun de criptografia, essas implementações ficam encapsuladas, tirando a necessidade do programador de implementá-las. São elas: Uma implementação da Digital Signature Algorithm (DSA), descrito em NIST FIPS 186. Uma implementação da MD5 (RFC 1321) e SHA-1 (NIST FIPS 180-1) algoritmo de message digest. Uma implementação para gerar um par de chaves, sendo uma pública e outra privada, utilizando o algoritmo DSA. Implementação do gerador e gerenciador de parâmetro de algoritmo DSA. Uma implementação do gerador de números randômicos "SHA1PRNG", que segue as recomendações IEE P1363 (Appendix G.7). Certificados digitais e validadores para PKIX, definido na chave pública de internet X.509. Implementações para recuperar certificados e CRLs de coleções e diretórios LDAP, usando o esquema PKIX LDAP V2 (RFC 2587). Uma fábrica de certificados X.509 e CRLs (Certificate Revocation Lists). Implentações de chaves proprietárias nomeadas JKS.

32 Arquivos de Propriedades A principal vantagem dos arquivos de propriedades é que, diferente dos arquivos Java (arquivos.java), não é preciso compilar. É possível utilizar propriedades gerais de uma aplicação no código fonte Java, mas não seria uma solução elegante, muito menos prática. A facilidade de ter arquivos de propriedades em uma aplicação se destaca quando é gerado um deploy e o arquivo de propriedades fica separado do arquivo WAR. Com isso, podemos alterar, por exemplo, uma propriedade de configuração de banco, uma URL que com freqüência precisa ser alterada, entre outros dados. Um arquivo de propriedades tem justamente a finalidade de armazenar variáveis que precisam ser alteradas com freqüência, sem a necessidade de reiniciar uma aplicação ou ter o trabalho de recompilar a mesma. Não seria funcional ter que gerar um novo deploy pra apenas trocar o valor de uma ou algumas propriedades da aplicação Formato de um Arquivo de Propriedades Um arquivo de propriedades tem basicamente o caractere # usado para comentários. Para formar uma propriedade basta apenas informar um nome qualquer para o nome da propriedade e um valor para esta propriedade, sendo que o nome e o valor são separados pelo caractere =. Assim: #Este é um exemplo de comentário em um arquivo de propriedade nomedapropriedade=valor da Propriedade Figura 15 Exemplo de comentário de arquivo Properties Lembrando que cada propriedade deve estar em uma linha, dessa forma: #Este é um exemplo de comentário em um arquivo de propriedade nomedapropriedadeum=valor da Propriedade Um

33 32 nomedapropriedadedois=valor da Propriedade Dois Figura 16 Exemplo de formato de propriedade de arquivo Properties A nomenclatura para determinar um nome para um arquivo de propriedades determina que o formato deve ser <nome_do_arquivo>.properties A classe Properties Java possui uma classe muito importante para poder ler tipos de propriedades. Recebendo uma chave, que seria o nome da propriedade, a classe pode retornar o valor desta chave, além de persistir um novo valor preferido. Ou seja, dessa forma é possível através de código Java manipular arquivos de propriedades, para uso direto em código. Para carregar um arquivo de propriedades utilizando a classe Properties, devemos informar qual será o tipo de entrada de propriedade, que deverá ser uma classe que extenda de InputStream, que no caso da API será a classe FileInputStream, pois é manipulado um arquivo comum. Para ler então, utilizamos o método load da classe Properties, passando o FileInputStream como parâmetro. Dessa forma podemos ler as propriedades: Properties defaultprops = new Properties(); FileInputStream in = new FileInputStream("arquivo_teste.properties"); defaultprops.load(in); String um = defaultprops.getproperty("nomedapropriedadeum"); String dois = defaultprops.getproperty("nomedapropriedadedois"); in.close(); Figura 17 Exemplo de leitura de propriedade de arquivo Properties É bom lembrar que o método getproperty sempre retorna uma String, fazendo necessário convertê-la pelo programador para se adaptar em algum tipo diferente, caso ache necessário. Ainda é possível não somente ler as propriedades de um arquivo, mas também se pode gravar uma nova propriedade, além de alterar o conteúdo de alguma já existente.

34 33 Dessa forma podemos alterar ou criar propriedades: FileOutputStream out = new FileOutputStream("arquivo_teste.properties"); applicationprops.setproperty("nomedapropriedadeum ", "alterado1"); applicationprops.setproperty("nomedapropriedadedois ", "alterado2"); applicationprops.store(out, "---comentário qualquer ---"); out.close(); Figura 18 Exemplo para alterar ou criar uma propriedade de arquivo Properties 2.6. Arquivos XML Muitos sistemas precisam trocar informações entre si e uma grande barreira pra que isso aconteça é a diferença entre linguagens de programação. Java não consegue entender a linguagem.net, por exemplo, e essa dificuldade se reflete para várias outras linguagens, a não ser que essa comunicação aconteça por certos artifícios, utilizando métodos e formas de acesso nativo à outra linguagem. Java, por exemplo pode invocar C++ de forma nativa. O padrão de arquivos XML (extensible Markup Language) foi criado pensando na solução dessa dificuldade como principal atributo. O padrão de arquivos XML é muito utilizado por diversos meios eletrônicos, conforme diz Ray em seu livro Aprendendo XML: um veículo configurável para qualquer tipo de informação e um padrão aberto e em evolução, abraçado por todos, desde banqueiros até webmasters. 8. Um arquivo contendo diversas tags encadeadas ou não entre si, que suportam atributos e valores diversos, sendo dessa forma legível não só para linguagens de programação, mas também para humanos. Tudo separado em tags simples e com nomes da preferência do implementador Como Utilizar Existem formas diversas de se utilizar XML. Pode-se declarar somente a tag sem valor, contendo apenas atributos com valores dessa forma:

35 34 <exemplo atributo= valor1 /> <exemplo atributo= valor2 /> Figura 19 Exemplo de utilização de tag XML com atributo na tag Nesse exemplo a tag foi fechada logo no final da declaração. Pode-se também criar uma tag sem nenhum atributo, somente com nome e valor de tag: <exemplo>valor</exemplo> <!-- ou --> <loja> <aparelho>televisão</aparelho> <aparelho>dvd</aparelho> </loja> Figura 20 Exemplo de utilização de tag XML com atributo entre tags O XML foi criado como recomendação pela W3C, justamente para padronização dos dados, organizando os mesmos de forma hierárquica, através de tags sem limitação de forma em sua criação. Essas tags podem suportar ainda atributos diversos, com nome e valor, além do valor da própria tag. Um exemplo de tags com atributos seria: <loja nome="pinheiros"> <aparelho fabricante="sansung" modelo="s100">televisão</aparelho> <aparelho fabricante="panasonic" modelo="vintageii">dvd</aparelho> </loja> Figura 21 Exemplo de utilização de XML com tipos de atributos diversos A facilidade do XML é que a representação dos dados pode ser variada, deixando a formatação da forma que preferir. Nem sempre um dado como atributo é a forma mais apropriada, ou um dado como nome de tag fica representado de forma ideal. A refatoração do exemplo anterior pode ser feito da seguinte forma: <loja> <nome>pinheiros</nome> <produto>

36 35 <codigo>1</codigo> <nome>televisor</nome> <marca>sansung</marca> <modelo>s100</modelo> </produto> </loja> Figura 22 Exemplo de utilização de XML com tipos de atributos diversos Para utilizar comentários em XML, basta usar o símbolo <!-- para começo de comentário e --> para fim de comentário. Arquivos XML suportam ainda validadores, que fazem a verificação da integridade do arquivo, chamados DTD (Document Type Definition). Estes validadores verificam a estrutura dos arquivos XML, analisando se tags específicas foram usadas e quais valores válidos para atributos e valores de cada tag. Estes verificadores são inseridos geralmente no topo dos arquivos XML. Existem ferramentas, até mesmo gratuitas, que fazem a verificação de arquivos XML, seguindo DTD específico.

37 36 3. DESENVOLVIMENTO DO TRABALHO 3.1. Padrão de Projeto Utilizado O framework desenvolvido utilizada o padrão de projeto MVC (Modelo, Visão e Controlador), pela facilidade de reutilização de código e separação da camada de modelo e controlador, apesar de não possuir necessariamente uma camada de visão. Sobre a forma como o padrão MVC trabalha, o livro Padrões de Projeto (Soluções Reutilizáveis de Software Orientado a Objetos) destaca: A abordagem MCV é composta por três tipos de Objetos. O Modelo é o objeto de aplicação, a Visão é a apresentação na tela e o Controlador é a que define a maneira como a interface do usuário reage às entradas do mesmo. 8 Essa forma de padrão de projeto separa os bens (Modelo) da camada de controle, destacados no sistema como sendo os objetos ConfigManager e ConfigLoader. Assim é possível fazer alterações e melhoria no framework, sem alterações em todas as classes, pois sendo o projeto dividido em camadas específicas, seus métodos e funcionalidades ficam encapsulados, facilitando e agilizando a manutenção Persistência e Criptografia por Java Annotations Para que fosse possível desenvolver esta funcionalidade, a utilização da API Java Annotations foi muito importante, visto que a partir dela que parte a base de toda configuração para persistir, tanto o arquivo em formato Properties, quanto em XML.

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

Manual do Visualizador NF e KEY BEST

Manual do Visualizador NF e KEY BEST Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc. Herança Técnico em Informática, M.Sc. Herança 2 Herança Reutilização de código Exemplo Banco: Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paraná PR Brasil luisgustavo@live.co.uk,

Leia mais

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

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

UNIP UNIVERSIDADE PAULISTA

UNIP UNIVERSIDADE PAULISTA UNIP UNIVERSIDADE PAULISTA GERENCIAMENTO DE REDES Segurança Lógica e Física de Redes 2 Semestre de 2012 SEGURANÇA LÓGICA: Criptografia Firewall Protocolos Seguros IPSec SSL SEGURANÇA LÓGICA: Criptografia

Leia mais

TRABALHO BIBLIOTECA MD5

TRABALHO BIBLIOTECA MD5 FACULDADE DE TECNOLOGIA SENAC PELOTAS TRABALHO BIBLIOTECA MD5 Linguagens de Programação Eduardo Orestes Brum Análise e Desenvolvimento de Sistemas - 2013 Sumário 1 Introdução 31 2 Criptografia MD5 4 2.

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica

Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Aplicação Prática de Lua para Web

Aplicação Prática de Lua para Web Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio

Leia mais

MD5 no Android como mecanismo de autenticação na API do Google Maps. Claudio André claudio.andre@correios.net.br

MD5 no Android como mecanismo de autenticação na API do Google Maps. Claudio André claudio.andre@correios.net.br MD5 no Android como mecanismo de autenticação na API do Google Maps Claudio André claudio.andre@correios.net.br 2011 MD5 no Android como mecanismo de autenticação na API do Google Maps Primeira parte Sumário

Leia mais

Assinatura Digital: problema

Assinatura Digital: problema Assinatura Digital Assinatura Digital Assinatura Digital: problema A autenticidade de muitos documentos, é determinada pela presença de uma assinatura autorizada. Para que os sistemas de mensagens computacionais

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Aplicativo da Manifestação do Destinatário. Manual

Aplicativo da Manifestação do Destinatário. Manual Aplicativo da Manifestação do Destinatário Manual Novembro de 2012 1 Sumário 1 Aplicativo de Manifestação do Destinatário...4 2 Iniciando o aplicativo...4 3 Menus...5 3.1 Manifestação Destinatário...5

Leia mais

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Manual do Google agenda. criação e compartilhamento de agendas

Manual do Google agenda. criação e compartilhamento de agendas Manual do Google agenda criação e compartilhamento de agendas 1 O que é o Google Agenda? Google Agenda é um serviço de agenda on line gratuito do Google, onde você pode anotar compromissos e tarefas, organizando

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

CONVENÇÃO DE CÓDIGO JAVA

CONVENÇÃO DE CÓDIGO JAVA CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2

Leia mais

Documentação. Programa de Evolução Contínua Versão 1.72

Documentação. Programa de Evolução Contínua Versão 1.72 Documentação Programa de Evolução Contínua Versão 1.72 Sumário Resumo das Novidades... 3 Configuração das Novidades... 5 Exibição de variações nas listagens... 5 Novo Sistema de Lista de Desejos... 7 Resumo

Leia mais

Trecho retirando do Manual do esocial Versão 1.1

Trecho retirando do Manual do esocial Versão 1.1 Trecho retirando do Manual do esocial Versão 1.1 A rotina de acesso direto ao XML do S-1000, o usuário pode encontrar na opção de cadastro de Empresas do SIP. Sempre que o usuário localizar a figura ao

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

"Manual de Acesso ao Moodle - Discente" 2014

Manual de Acesso ao Moodle - Discente 2014 "Manual de Acesso ao Moodle - Discente" 2014 Para acessar a plataforma, acesse: http://www.fem.com.br/moodle. A página inicial da plataforma é a que segue abaixo: Para fazer o login, clique no link Acesso

Leia mais

Manual Captura S_Line

Manual Captura S_Line Sumário 1. Introdução... 2 2. Configuração Inicial... 2 2.1. Requisitos... 2 2.2. Downloads... 2 2.3. Instalação/Abrir... 3 3. Sistema... 4 3.1. Abrir Usuário... 4 3.2. Nova Senha... 4 3.3. Propriedades

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO www.origy.com.br UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO CARACTERÍSTICAS: E-MAIL IMAP * Acesso simultâneo e centralizado, via aplicativo, webmail e celular/smartphone * Alta capacidade de armazenamento

Leia mais

Polimorfismo. Prof. Leonardo Barreto Campos 1

Polimorfismo. Prof. Leonardo Barreto Campos 1 Polimorfismo Prof. Leonardo Barreto Campos 1 Sumário Introdução; Polimorfismo; Polimorfismo Java; Métodos Abstratos Java Classes Abstratas Java Exercício - Java Polimorfismo C++ Classe Abstrata C++; Funções

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG Página 1 de 26 Sumário Introdução...3 Layout do Webmail...4 Zimbra: Nível Intermediário...5 Fazer

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 Controle de Revisões Micropagamento F2b Web Services/Web 18/04/2006 Revisão Data Descrição 00 17/04/2006 Emissão inicial. www.f2b.com.br

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

FTP Protocolo de Transferência de Arquivos

FTP Protocolo de Transferência de Arquivos FTP Protocolo de Transferência de Arquivos IFSC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO SUBSEQUENTE DE TELECOMUNICAÇÕES! Prof. Tomás Grimm FTP - Protocolo O protocolo FTP é o serviço padrão da Internet para

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Criptografia e Chave Pública. Segurança da Informação

Criptografia e Chave Pública. Segurança da Informação Criptografia e Chave Pública Segurança da Informação Ementa Visão Global O que é? Criptografia está em todo lugar; Técnicas Primitivas de Cifragem; Outras técnicas de criptografia; Criptografia Moderna;

Leia mais

Segurança da Informação

Segurança da Informação INF-108 Segurança da Informação Autenticação Prof. João Henrique Kleinschmidt Santo André, junho de 2013 Resumos de mensagem (hash) Algoritmo Hash são usados quando a autenticação é necessária, mas o sigilo,

Leia mais

Guia rápido de uso de Web Services do NFS-e Easy

Guia rápido de uso de Web Services do NFS-e Easy Guia rápido de uso de Web Services do NFS-e Easy NFS-e Easy V.3.0.5 Produto: Guia rápido de uso de Web Services do NFS-e Easy V3.0.5 Release date: Mai, 2013 1 Sumário 1. Introdução... 3 2. Requisitos e

Leia mais

Operações de Caixa. Versão 2.0. Manual destinado à implantadores, técnicos do suporte e usuários finais

Operações de Caixa. Versão 2.0. Manual destinado à implantadores, técnicos do suporte e usuários finais Operações de Caixa Versão 2.0 Manual destinado à implantadores, técnicos do suporte e usuários finais Sumário Introdução... 3 Suprimento... 3 Sangria... 4 Abertura de Caixa... 6 Fechamento de Caixa...

Leia mais

e-nota C Consulta de Nota Fiscal eletrônica

e-nota C Consulta de Nota Fiscal eletrônica Página1 e-nota C Consulta de Nota Fiscal eletrônica Manual do Usuário Produzido por Informática Educativa Página2 Índice Nota Fiscal eletrônica... 03 Safeweb e-nota C... 04 Documentos eletrônicos... 08

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Projeto de Software Orientado a Objeto

Projeto de Software Orientado a Objeto Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software

Leia mais

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 1 Sumário 1 - Instalação Normal do Despachante Express... 3 2 - Instalação do Despachante Express em Rede... 5 3 - Registrando o Despachante Express...

Leia mais

I Seminário sobre Segurança da Informação e Comunicações CRIPTOGRAFIA

I Seminário sobre Segurança da Informação e Comunicações CRIPTOGRAFIA I Seminário sobre Segurança da Informação e Comunicações CRIPTOGRAFIA OBJETIVO Conhecer aspectos básicos do uso da criptografia como instrumento da SIC.. Abelardo Vieira Cavalcante Filho Assistente Técnico

Leia mais

Manual Sistema de Autorização Online GW

Manual Sistema de Autorização Online GW Sistema de Autorização Online GW Sumário Introdução...3 Acesso ao sistema...4 Logar no sistema...4 Autorizando uma nova consulta...5 Autorizando exames e/ou procedimentos...9 Cancelamento de guias autorizadas...15

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

LINGUAGEM DE BANCO DE DADOS

LINGUAGEM DE BANCO DE DADOS LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda Formação Pedagógica de Professores (FAQI) Conceito de BD Um banco de dados

Leia mais

Manual de Integração

Manual de Integração Manual de Integração Versão 3.10 Conteúdo 1 Obtendo e Instalando o Emissor... 4 1.1 Obtendo o instalador... 4 1.2 Instalando o JAVA e o Framework.NET 2.0... 4 1.3 Instalando o Emissor... 5 2 Padrões de

Leia mais

Curso de Informática Básica

Curso de Informática Básica Curso de Informática Básica O e-mail Primeiros Cliques 1 Curso de Informática Básica Índice Introdução...3 Receber, enviar e responder mensagens...3 Anexando arquivos...9 Cuidado com vírus...11 2 Outlook

Leia mais

Novo Guia de uso rápido do PROJUDI

Novo Guia de uso rápido do PROJUDI 1. O que é o PROJUDI? Novo Guia de uso rápido do PROJUDI O Processo Judicial Digital PROJUDI, também chamado de processo virtual ou de processo eletrônico, pode ser definido como um software que reproduz

Leia mais

Manual dos Serviços de Interoperabilidade

Manual dos Serviços de Interoperabilidade MINISTÉRIO DO PLANEJAMENTO, ORÇAMENTO E GESTÃO Secretaria de Logística e Tecnologia da Informação Manual dos Serviços de Interoperabilidade Sumário Lista de Figuras...3 Lista de Tabelas...4 Introdução...5

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Manual de Utilização do PLONE (Gerenciador de página pessoal) Manual de Utilização do PLONE (Gerenciador de página pessoal) Acessando o Sistema Para acessar a interface de colaboração de conteúdo, entre no endereço http://paginapessoal.utfpr.edu.br. No formulário

Leia mais

Manual do usuário. Softcall Java. versão 1.0.5

Manual do usuário. Softcall Java. versão 1.0.5 Manual do usuário Softcall Java versão 1.0.5 Sumário Iniciando SoftCall...3 Tela Principal...3 Configurando o SoftCall...4 Agenda...5 Incluindo um contato...5 Procurando um contato...6 Apagando um contato...6

Leia mais

www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software

www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software 2 Introdução Este manual foi elaborado para administradores, para entendimento do funcionamento do produto e administração

Leia mais

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna O que é uma planilha eletrônica? É um aplicativo que oferece recursos para manipular dados organizados em tabelas. A partir deles pode-se gerar gráficos facilitando a análise e interpretação dos dados

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 9 Mapeamento em JPA Introdução O mapeamento objeto-relacional

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Roteiro de Instalação da NF-e no Sistema CalcExpress S U M À R I O

Roteiro de Instalação da NF-e no Sistema CalcExpress S U M À R I O Roteiro de Instalação da NF-e no Sistema CalcExpress S U M À R I O Instalação da Aplicação Java...2 Instalação do Emissor...5 Instalação do Framework...7 Instalação das DLL s URL, SCHEMAS, CADEIA DE CERTIFICADO

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU Auditoria e Segurança da Informação GSI536 Prof. Rodrigo Sanches Miani FACOM/UFU Revisão Criptografia de chave simétrica; Criptografia de chave pública; Modelo híbrido de criptografia. Criptografia Definições

Leia mais

Processo de Controle das Reposições da loja

Processo de Controle das Reposições da loja Processo de Controle das Reposições da loja Getway 2015 Processo de Reposição de Mercadorias Manual Processo de Reposição de Mercadorias. O processo de reposição de mercadorias para o Profit foi definido

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 2 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Revisão sobre Banco de Dados e SGBDs Aprender as principais

Leia mais

MANUAL DE UTILIZAÇÃO. HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0)

MANUAL DE UTILIZAÇÃO. HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0) MANUAL DE UTILIZAÇÃO HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0) 1 Sumário 1 Introdução...3 2 O que é o HELP Suporte?...3 3 Cadastro no Help Suporte...3 4 Como Acessar e Utilizar o HELP SUPORTE...3

Leia mais

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade do Sistema Índice Página 1. Como acessar o sistema 1.1 Requisitos mínimos e compatibilidade 03 2. Como configurar o Sistema 2.1 Painel de Controle 2.2 Informando o nome da Comissária 2.3 Escolhendo a Cor

Leia mais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais