Orientador: Antônio Cláudio Gómez de Sousa Projeto (graduação) UFRJ/POLI/Departamento de Eletrônica e de Computação COPPE, 2013.

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

Download "Orientador: Antônio Cláudio Gómez de Sousa Projeto (graduação) UFRJ/POLI/Departamento de Eletrônica e de Computação COPPE, 2013."

Transcrição

1

2 UNIVERSIDADE FEDERAL DO RIO DE JANEIRO Escola Politécnica Departamento de Eletrônica e de Computação Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária. Rio de Janeiro RJ CEP Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar qualquer forma de arquivamento. É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem finalidade comercial e que seja feita a referência bibliográfica completa. Os conceitos expressos neste trabalho são de responsabilidade do autor e do orientador. 1

3 Magalhães, Pedro da Silveira Framework de ETL (Extração-Transformação-Carga) utilizando processamento em paralelo por técnica de pipeline / Pedro da Silveira Magalhães Rio de Janeiro: UFRJ/POLI- COPPE, XI, 42 p.: il.; 29,7 cm. Orientador: Antônio Cláudio Gómez de Sousa Projeto (graduação) UFRJ/POLI/Departamento de Eletrônica e de Computação COPPE, Referências Bibliográficas: p [Extração]. 2. [Transformação]. 3. [Carga]. 4. [ETL]. I. de Souza, Antônio Cláudio Gómez. II. Universidade Federal do Rio de Janeiro, Poli/COPPE. III. Título. 2

4 DEDICATÓRIA graduação. Dedico este trabalho a minha família que esteve presente em toda minha 3

5 AGRADECIMENTO Agradeço ao professor Antônio Cláudio Gomez por ter me orientado durante o Projeto de Graduação. Agradeço também a empresa Stone Age por ter me dado a liberdade de muitas vezes abdicar do trabalho colocando sempre a formação do profissional a frente. 4

6 RESUMO Projeto de Graduação apresentado à Escola Politécnica/COPPE/UFRJ como parte dos requisitos necessários para a obtenção do grau de Engenheiro de Computação e Informação. FRAMEWORK DE ETL (EXTRAÇÃO-TRANSFORMAÇÃO-CARGA) UTILIZANDO PROCESSAMENTO PARALELO POR TÉCNICA DE PIPELINE. Pedro da Silveira Magalhães Março/2013 Orientador: Antônio Cláudio Gómez de Sousa Curso: Engenharia de Computação e Informação Um ciclo de ETL (extract, transform e load), refere-se a um processo no domínio de banco de dados muito utilizado em sistemas de Data Warehouse. Esse ciclo envolve três etapas distintas: a extração de dados de fontes, transformação dos dados e a carga no sistema alvo. Um ciclo ETL pode ser consideravelmente complexo e problemas podem ocorrer quando esses processos são modelados de maneira incorreta. Na maioria das vezes os dados advindos do sistema transacional são de baixa qualidade, apresentando problemas como: domínio de dados mal definidos, erros de digitação, heterogeneidade das fontes de dados envolvidas, etc. Para lidar com esses desafios e complexidade, as empresas estão cada vez mais investindo em ferramentas de ETL, ao invés de criar seus processos a partir do zero. Ao utilizar um ferramental de apoio, as chances de sucesso aumentam, pois permitem auto documentação, visualização do fluxo de dados, reutilização de componentes, design estruturado e padronizado, desempenho e consequentemente maior produtividade e qualidade. O objetivo do projeto é criar um framework capaz de apoiar o processo de construção/execução de um ciclo ETL entregando os benefícios anteriormente citados. 5

7 Palavras-Chave: Extração, Transformação, Carga, Data Warehouse, ETL 6

8 ABSTRACT Undergraduate Project presented to POLI/COPPE/UFRJ as a partial fulfillment of requirements for the degree of Computer and Information Engineer. ETL Framework using parallel processing by pipeline technique. Pedro da Silveira Magalhães March/2013 Advisor: Antônio Cláudio Gómez de Sousa Course: Computer and Information Engineering ETL cycle (extraction, transform and load), refers to a process in the context of database systems widely used in the Data Warehouse. This cycle involves three distinct steps: data sources extraction, data transformation and load on the target system. ETL cycle can be considerably complex and problems may occur when these processes are modeled incorrectly. Most often the data from the transactional system are of low quality, presenting problems as: the data poorly defined, typing errors, heterogeneity of data sources involved, etc.. To deal with these challenges and complexity, companies are increasingly investing in ETL tools instead of creating their processes from scratch. When using supporting tools, the chances of success increase because they allow self documentation, visualization of data flow, component reuse, structured and standardized design, better performance, higher productivity and quality. The project goal is to create a framework able to support the process of building / running ETL cycle delivering the benefits mentioned above. Keywords: extract, transform, Data Warehouse, ETL. 7

9 SIGLAS ETL: Extract, Transform, Load XML: extensible Markup Language IDE: Integrated Development Enviroment CSV: Comma Separate Value HTML: HyperText Markup Language ODS: Operational Data Store MDM: Master Data Management XSD: XML Schema Definition 8

10 Sumário Sumário... 9 Capítulo 1: Introdução Contextualização Motivação Objetivo Metodologia Estrutura do documento Capítulo 2: Ciclo ETL Introdução Extract (Extração) Transform (Transformação) Load (Carga) Exemplo prático Duas Abordagens Capítulo 3: Extreme DataStream Introdução Fluxo de Dados Metadados Layout Nós de Processamento Arestas Capítulo 4: Implementação Visão geral Padrões de Projeto Diagrama de Classes O problema Produtor-Consumidor Criando Novos Nós de Processamento Capítulo 5: Exemplo de Uso Paralelismo Introdução O Problema Hardware Utilizado Grafos Utilizados Resultados Conclusões Capítulo 6: Conclusões e Lições Aprendidas...47 Referências

11 Capítulo 1: Introdução 1.1. Contextualização Falar que a análise de dados é de suma importância para as empresas é um eufemismo. De fato, nenhum negócio pode sobreviver sem analisar os dados disponíveis. Podemos mostrar situações como: analisar a aceitação de um suco de frutas baseando-se em dados de vendas históricos, verificar sazonalidade de vendas de determinado produto, prever fraudes em cartões de crédito baseando-se no comportamento passado do cliente, encontrar correlações entre eventos (Ex.: temporada de furacões e venda de produtos não perecíveis). Todas essas situações são indicativos suficientes para concluir que a análise de dados está à frente de qualquer negócio. Assim, esta pode ser definida como o processo de inspecionar, higienizar, transformar e modelar os dados com o objetivo de retirar informação, conclusões e ajudar no processo decisório de uma empresa Motivação Atualmente os dados estão presentes em vários meios digitais como bases de dados de transações, posts do Facebook, Twitter, redes de sensores, logs de transações, mensagens de texto, e etc. Tendo em vista que os dados já estão presentes e na maioria das vezes digitalizados, o grande desafio se dá na disponibilização/processamento/armazenamento desse dado para o usuário final, seja ele outro sistema ou um indivíduo. Essa informação apresenta três tipos de caraterísticas: possuem grandes volumes, da ordem de bilhões de registros, possuem velocidades diferentes (eventos ocorrendo em diferentes janelas de tempo, como taxa de amostragem de um sensor, compras em sites da internet e posts de redes sociais.) e possuem com grande variedade de fontes de dados. Esses 3Vs (volume, variedade e velocidade) descrevem, segundo Gartner, que é a consultoria líder em pesquisa de tecnologia da informação no mundo, o conceito de Big Data. 10

12 1.3. Objetivo Dado o cenário anteriormente explicitado, temos a convicção que a análise de dados pode ser uma área bem complexa. Ela possui diversas facetas, técnicas, apoiados por diversos nomes, em diferentes negócios. A mineração de dados pode ser entendida como a técnica que foca na modelagem e descoberta de conhecimento para realizar predições. A parte de Inteligência de Negócios cobre a análise de dados utilizando informações do negócio, utilizando consultas agregadas e respondendo a perguntas descritivas do tipo On-line Analytical Processing (OLAP). Por exemplo, quantas escovas de dente foram vendidas entre abril e maio no estado do RJ. A análise preditiva foca na aplicação de modelos para realizar previsões. Por exemplo, baseado em um histórico de transações bancárias, qual a probabilidade de uma determinada transação ser fraudulenta ou não. Todas as análises acima citadas partem do pressuposto de que já foi realizado um prévio tratamento nos dados. Que estes já foram higienizados, estruturados, padronizados e transformados. A esse ciclo damos o nome de Extract, Transform and Load (ETL). O ciclo de ETL envolve a extração dos dados de diversas fontes, a transformação do dado (padronização, higienização, junção de diversas fontes, etc) e a carga no sistema alvo, normalmente um banco de dados. O ciclo de ETL pode envolver uma considerável complexidade, e grandes problemas operacionais podem ocorrer caso seja mal modelado. Por ser um processo de natureza complexa, o ciclo ETL é normalmente apoiado por ferramentas de mercado. Essas ferramentas trazem algumas vantagens em relação ao processo normal, onde o desenvolvedor cria aplicações para realizar a extração/transformação/carga dos dados. São elas: auto documentação (permitem a visualização do fluxo de dados graficamente), reutilização de componentes, design estruturado e padronizado, melhor desempenho (paralelismo) e consequente aumento de produtividade e qualidade do processo. Assim, o objetivo deste projeto é criar um framework capaz de apoiar o processo de construção/execução de um ciclo ETL oferecendo os benefícios anteriormente citados. Esse framework possibilitará a paralelização de processos e utilizará a técnica de pipeline para prover ganhos de desempenho sobre a metodologia tradicional. 11

13 1.4. Metodologia Para o desenvolvimento do nosso projeto adotamos o modelo de desenvolvimento de software sequencial, conhecido como modelo em cascata. Escolhemos esse modelo, pois partimos de requisitos e fases bem definidas, pois já existem ferramentas parecidas como a que vamos construir. Assim nosso projeto ficou constituído em cinco fases: Levantamento de requisitos, Projeto do Sistema, Construção, Integração. Durante a construção realizamos testes unitários e de integração em componentes críticos do sistema. Ao final, foram realizamos testes de validação para verificar aderência com os requisitos. Como se trata de um framework que deve ser extensível, tentamos criar nossas classes bem desacopladas e com alto grau de coesão. Para isso, fizemos usos de alguns padrões de projeto como: Fábrica Abstrata (Abstract Factory) e Singleton. Por ser extensível, considerá-lo-emos como um framework caixa-cinza, ou seja, já possui componentes e funcionalidades prontas, porém é permitido a partir da extensão e inserção de novas classes, a criação de novos componentes e funcionalidades. Mostraremos como estendê-lo na seção Criando Novos Nós de Processamento Utilizamos a linguagem Object Pascal, que é uma extensão da linguagem Pascal com suporte a Orientação a Objeto, para o desenvolvimento do nosso framework. A IDE utilizada foi a Borland Delphi Enterprise Estrutura do documento Esse projeto de final de graduação está dividido em seis capítulos: - Introdução: começamos o capítulo contextualizando e mostrando ao leitor em que área da Engenharia de Computação estamos abordando. Em seguida, descreveremos qual a motivação do projeto e os objetivos que queremos alcançar. Descreveremos as ferramentas e o modelo de ciclo de vida que iremos utilizar. - Ciclo ETL: nesse capítulo situaremos o leito no que se refere a um ciclo ETL. 12

14 Descreveremos cada uma das etapas do ciclo (Extração/Transformação/Carga) e daremos alguns exemplos. Ao final mostraremos duas abordagens de criação de um ciclo ETL e listaremos suas vantagens e desvantagens. - Extreme DataStream: descreveremos para o leitor o principal componente do framework. Definiremos alguns conceitos pertinentes as projeto como fluxo de dados, metadados, nós de processamento e arestas. Mostraremos como definir esses conceitos em nossa abstração de grafo utilizando uma estrutura XML. - Implementação: mostraremos nesse capítulo artefatos como diagramas de classe, diagrama de sequência. No nível de código fonte mostraremos quais padrões de projeto utilizamos. Definiremos o problema de produtor-consumidor e como ele se adequa em nossa necessidade. Por fim, mostraremos como é possível estender o framework para a criação de novos nós de processamento. - Exemplo de Uso Paralelismo: partiremos para um caso de uso onde mostraremos a capacidade de paralelizar um determinado ciclo ETL, descreveremos o problema e o hardware utilizado. Mostraremos quatro versões de grafos e analisaremos a execução dos mesmo, mostrando os resultado e as conclusões. - Conclusões e Lições Aprendidas: nesse capítulo faremos um apanhado geral sobre o projeto. O que aprendemos, quais pontos altos e baixos, erros e acertos durante o projeto e das ferramentas escolhidas. 13

15 Capítulo 2: Ciclo ETL 2.1. Introdução Um ciclo de ETL (Extract, Transform e Load), refere-se a um processo no domínio de banco de dados muito utilizado para realizar carga em sistemas de Data Warehouse, Operational Data Store (ODS) e Datamarts. Também é vastamente utilizado na área de integração de dados, migração de dados e Master Data Management (MDM). Este ciclo envolve três etapas distintas: extração, transformação e carga Extract (Extração) A primeira parte de um ciclo ETL envolve extrair dados de sistemas fontes. Esses sistemas podem ser bem heterogêneas, com dados em diversos formatos, e devem ser consolidados para realizar a carga no Data Warehouse. Alguns formatos comuns de dados incluem: banco de dados relacionais e arquivos planos, como arquivo CSV, XML, HTML e etc. Outra maneira de realizar o processo de ETL é a utilizando dados online, ou seja, conforme os dados vão chegando através de um fluxo de dados, são tratados, transformados e carregados no sistema alvo. Uma etapa intrínseca à extração se refere a tratar somente dados em formatos esperados e descartar dados de fontes desconhecidos. Ou seja, os dados advindos dos sistemas fonte devem estar em um padrão ou estrutura previamente conhecidos Transform (Transformação) Nessa fase é aplicadas uma série de regras e funções sobre os dados vindos da etapa de extração para transformá-los em entradas para o processo de carga. Alguns processos desta fase são: 1. Ordenação de um arquivo por uma determinada chave. 2. Selecionar somente algumas informações. Por exemplo, se o arquivo fonte tiver três tipos de informações (nome, idade e nacionalidade) e queremos utilizar somente nome e 14

16 idade. 3. Padronização: como os arquivos podem vir de diversas fontes, podemos ter atributos que representam a mesma informação, mas com dados diferentes. Exemplo: Em um arquivo podemos ter masculino igual à 1 e feminino igual 2 e em outro Masculino igual a M e Feminino igual a F. 4. Derivação de um novo cálculo. Por exemplo, valor_venda = quantidade*preco_unitario. 5. Junção de múltiplas fontes de dados por chaves de junção. Podemos também efetuar duplicação de registros. Podemos agregar registros para formar um dado estatístico. Por exemplo, sumarizar múltiplas linhas de um arquivo de transações para ter o total de vendas por loja, total de vendas por região, etc. 6. Transpor o arquivo original, isto é, linhas viram colunas e colunas viram linhas. 7. Dividir um arquivo CSV em arquivos separados, um para cada coluna 8. Validar e buscar dados em tabelas ou arquivos de referência. 9. Aplicar qualquer tipo de validação simples ou complexa no dado. Por exemplo, validar se um determinado campo apresenta uma data válida. Caso haja alguma exceção poderá haver rejeição parcial ou completa Load (Carga) A fase de carga é o momento em que os dados advindos da etapa anterior são carregados no sistema alvo, que normalmente é um Data Warehouse. Essas cargas, em sua maioria, são realizadas periodicamente (diariamente, semanalmente ou mensalmente). Isso ocorre, porque o DW é usualmente utilizado para guardar informações históricas. Conforme os dados são carregados no sistema, o banco de dados é responsável por tratar as condições de integridade dos dados que estão sendo inseridos, como por exemplo, realizar uma validação de data, disparar uma trigger para atualizar outra tabela, tratar a unicidade de um dado Exemplo prático Duas Abordagens O ciclo de ETL pode envolver uma grande complexidade e problemas podem ocorrer caso este seja mal modelado. Descreveremos sucintamente um exemplo de ciclo ETL e mostraremos duas abordagens para sua construção. Em seguida, mostraremos 15

17 suas vantagens e desvantagens. Figura 1 - Representação de um ciclo ETL, utilizando um grafo. Acima apresentamos um ciclo ETL, descrito como um grafo. Clientes.txt e Itens.txt: arquivos de entrada do ciclo ETL. Leitor de arquivos: realizar leitura dos arquivos de entrada. Consulta Receita: processo responsável por realizar uma consulta à Receita Federal, utilizando CPF como chave e trazendo o nome da pessoa. Cálculo da Nota Fiscal: A partir dos itens, o processo calcula a nota fiscal. Ordenação: realiza a ordenação dos arquivos, um pela chave fkcliente e outra pela chave pkcliente. Junção: realiza a junção dos arquivos vindos das arestas nove e onze, utilizando as chaves fkcliente e pkcliente. Escritor de Arquivos: realizar a escrita do arquivo final em disco. Arquivo de Saída: arquivo final do processo. Abordagem Monolítica: Nessa abordagem todo o ciclo ETL é criado a partir do zero, e todas as transformações dos dados são realizadas através um único programa, seja ele um executável ou um script. Imagine o ciclo completo ETL descrito acima sendo executado apenas por uma aplicação. Teríamos um total acoplamento, uma baixa coesão e sem possibilidade de reutilização dos componentes (dependendo da modelagem essa reutilização pode ser dá em nível de código fonte apenas). Toda manutenção/evolução seria feita em apenas um componente, o que acarretaria possíveis novos erros de difícil rastreabilidade. 16

18 Abordagem um módulo por nó de processamento: Nessa abordagem temos um executável/script por nó de processamento, onde um nó X possui como entrada o arquivo A1 e uma saída A2. A saída do nó X será a entrada para o nó Y. Assim o ciclo segue, onde a saída de um nó de processamento é entrada para outro. Nessa abordagem, todos os nós de processamento devem possuir uma maneira de ler/escrever no disco já que esta é à maneira de comunicação entre eles. Para a descrição das vantagens e desvantagens entre as duas abordagens chamaremos a monolítica, de abordagem A, e a outra de abordagem B. Na abordagem A temos a vantagem em relação a B de realizarmos menos E/S no disco. Isso acarreta um ganho de desempenho por não utilizar um dos recursos mais lentos do computador, que é o acesso ao disco físico. Em contrapartida, na abordagem B podemos paralelizar o ciclo ETL, ou seja, utilizar melhor os recursos de CPU em detrimento do E/S. Em um ciclo ETL do tipo CPU bound, onde o maior tempo é gasto utilizando a CPU, o ciclo B tende a possuir um melhor desempenho em relação ao A, pois realiza um melhor uso dos recursos conseguindo paralelizar as tarefas. No exemplo acima, utilizando a abordagem B, poderíamos executar os nós de processamento Leitor de Arquivos, Cálculo da Nota Fiscal e Ordenação por fkcliente concorrentemente com Leitor de Arquivos, Consulta a Receita, Valida Node e Ordenação por pkcliente. Na abordagem A temos baixíssima reutilização apenas em nível de código fonte. Na abordagem B, os nós de processamento são módulos separados e podemos intercambiá-los para criar novos ciclos ETL. Apresentaremos nas próximas seções nossa abordagem para a criação do ciclo ETL, e tentaremos unir o melhor das duas abordagens anteriormente citadas, ou seja, um ganho de produtividade por reutilização de nós de processamento sem perda de desempenho. 17

19 Capítulo 3: Extreme DataStream Introdução Ferramentas de ETL são construídas para poupar esforço (tempo e dinheiro) eliminando, quase em sua totalidade, a escrita de código. Dentre algumas vantagens podemos citar: auto documentação (permitem a visualização do fluxo de dados graficamente), reutilização de componentes, design estruturado e padronizado, melhor desempenho (paralelismo). Nessas ferramentas podemos modelar o ciclo ETL utilizando a abstração de um grafo, onde as arestas representam os dados fluindo de um processo para o outro, e os vértices representam os nós de processamento. Podemos utilizar como exemplo a figura já citada na seção anterior. O objetivo do framework Extreme DataStream é permitir a execução de um fluxo ETL, além de prover uma biblioteca onde novos nós podem ser incorporados ao sistema de maneira simples. Não será desenvolvido nenhum tipo de interface gráfica para a criação do fluxo ETL. Utilizaremos um arquivo XML para a descrição do fluxo em si. Quando falarmos de nós, vértices ou blocos, estaremos nos referindo a nós de processamento, ou seja, estruturas que realizam efetivamente o processo dos dados. Quanto falarmos em arestas, estaremos no referindo ao o fluxo de dados flui através dos nós de processamento, como os nós de processamento são interligados. Conforme visto, nas duas abordagens anteriores, temos vantagens e desvantagens. Abaixo citamos as resumidamente: Abordagem Monolítica (Abordagem A) - Vantagens: Menor quantidade de E/S no disco rígido em relação à abordagem B, acarretando melhor desempenho. - Desvantagens: Baixa reutilização, apenas em nível de código fonte. Abordagem um módulo por nó de processamento (Abordagem B) - Vantagens: Alta reutilização em nível de componentes. Possibilidade de paralelizar o processo. - Desvantagens: Baixo desempenho, pois os nós se comunicam através de 18

20 arquivos, ou seja, o arquivo gerado por um nó é entrada para o próximo nó. Em nosso framework, tentaremos unir o melhor das duas abordagens, ou seja, um alto desempenho com possibilidade de paralelismo, sem a necessidade de criação de arquivos intermediários entre os processos e reutilização em nível de componentes. Para não haver necessidade da criação de arquivos intermediários, utilizaremos a memória RAM da máquina, ou seja, cada nó de processamento será uma unidade autônoma provendo/consumindo dados de um buffer. Em alguns nós poderá haver a necessidade de criação de arquivos temporários, como por exemplo, uma ordenação de um arquivo que não cabe fisicamente na memória. Fica claramente evidenciado que temos um problema clássico de produtor-consumidor, que será abordado nas próximas seções. Resolvendo esse problema, estaremos retirando a única desvantagem da abordagem B, e permanecendo com todas as suas vantagens. Claro que, neste momento, não estamos levando em consideração o tempo gasto na sincronização entre os processos/threads. O desenvolvedor do ciclo ETL deverá descrever seu grafo utilizando um arquivo XML, em um formato específico, que será descrito na próxima seção. Não é intuito desse Projeto de Graduação, criar uma ferramenta de apoio para a criação desse grafo Fluxo de Dados Para descrever nosso grafo do ciclo ETL utilizaremos um documento em formato XML. Para garantirmos que esse documento esteja corretamente formatado, a ferramenta utilizará um XML Schema. Um arquivo que contenha as definições da linguagem XML Schema é chamado de XML Schema Definition (XSD), o qual descreve a estrutura de um documento XML. Essa linguagem foi amplamente utilizada no desenvolvimento da nota fiscal eletrônica brasileira. Abaixo demonstramos o conteúdo do XSD. Explicaremos em detalhes cada uma das seções desse documento nas próximas seções. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs=" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:element name="etlmanager" type="etl_manager_type"></xs:element> 19

21 <xs:complextype name="etl_manager_type"> <xs:sequence> <xs:element name="metadatas" type="metadata_list"/> <xs:element name="phases" type="phase_list"/> </xs:sequence> </xs:complextype> <xs:complextype name="metadata_list"> <xs:sequence> <xs:element name="metadata" type="metadata_type" minoccurs="1" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> <xs:complextype name="metadata_type"> <xs:sequence> <xs:element name="field" type="field_type" minoccurs="1" maxoccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="memory" type="xs:integer" use="required"/> </xs:complextype> <xs:complextype name="field_type"> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="type" type="field_enum" use="required"/> <xs:attribute name="size" type="xs:integer" use="required"/> <xs:attribute name="initialpos" type="xs:integer" use="required"/> </xs:extension> </xs:simplecontent> </xs:complextype> <xs:simpletype name="field_enum"> <xs:restriction base="xs:string"> <xs:enumeration value="string"/> <xs:enumeration value="integer"/> <xs:enumeration value="byte"/> <xs:enumeration value="longint"/> 20

22 </xs:restriction> </xs:simpletype> <xs:complextype name="phase_list"> <xs:sequence> <xs:element name="phase" type="phase_type" minoccurs="1" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> <xs:complextype name="phase_type"> <xs:sequence> <xs:element name="edges" type="edge_list"/> <xs:element name="processes" type="process_list"/> </xs:sequence> <xs:attribute name="id" type="xs:integer" use="required"/> </xs:complextype> <xs:complextype name="edge_list"> <xs:sequence> <xs:element name="edge" type="edge_type" minoccurs="1" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> <xs:complextype name="process_list"> <xs:sequence> <xs:element name="process" type="process_type" minoccurs="1" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> <xs:complextype name="process_type"> <xs:sequence> <xs:any maxoccurs="unbounded" processcontents="skip"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="type" type="xs:string" use="required"/> </xs:complextype> <xs:complextype name="edge_type"> 21

23 <xs:attribute name="fromprocess" type="xs:string" use="required"/> <xs:attribute name="fromport" type="xs:integer" use="required"/> <xs:attribute name="toprocess" type="xs:string" use="required"/> <xs:attribute name="toport" type="xs:integer" use="required"/> <xs:attribute name="metadata" type="xs:string" use="required"/> </xs:complextype> </xs:schema> Metadados Layout Metadados são dados sobre outros dados. No nosso contexto, os metadados farão a descrição dos dados que trafegam entre as arestas do nosso ciclo ETL. Esses metadados serão sempre formatados como registros de tamanho fixo. Em um registro de tamanho fixo, um campo sempre começa e termina no mesmo lugar em todos os registros. Por exemplo: Pedro da Silveira Magalhaes RJ Jose Carlos da Silva SP Renata Souza MG Luis Felipe BA O conjunto de dados acima representa um arquivo onde seus registros possuem tamanho fixo. Nome Posição Inicial = 1 Posição Final = 30 Renda Posição Inicial = 30 Posição Final= 36 CEP Posição Inicial = 36 Posição Final = 44 UF Posição Inicial = 44 Posição Final = 46 Para o caso citado acima, o registro possui um tamanho de 46 bytes. Não são necessários delimitadores, pois todos os campos possuem tamanho fixo. Abaixo, descrevemos o XSD para a sessão de declaração de metadados: <xs:complextype name="metadata_type"> <xs:sequence> 22

24 <xs:element name="field" type="field_type" minoccurs="1" maxoccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="memory" type="xs:integer" use="required"/> </xs:complextype> <xs:complextype name="field_type"> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="type" type="field_enum" use="required"/> <xs:attribute name="size" type="xs:integer" use="required"/> <xs:attribute name="initialpos" type="xs:integer" use="required"/> </xs:extension> </xs:simplecontent> </xs:complextype> <xs:simpletype name="field_enum"> <xs:restriction base="xs:string"> <xs:enumeration value="string"/> <xs:enumeration value="integer"/> <xs:enumeration value="byte"/> <xs:enumeration value="longint"/> </xs:restriction> </xs:simpletype> Na seção metadata devemos definir um ID único para nosso metadado. Quando um dado flui de um nó para outro, esta informação deverá ser armazenada na aresta que interliga esses dois nós. O dado permanece na aresta, alocado na memória RAM do computador, e o tamanho do buffer de alocação é configurado através da tag memory. Em outros termos, a tag memory define o tamanho máximo da fila no problema produtor-consumidor. Destacamos uma seção apenas para descrever o processo de produtor-consumidor. Na seção field descrevemos informações sobre o campo do registro de 23

25 tamanho fixo. Para isso temos os seguintes atributos: - type: representa um tipo enumerado que define o tipo de dado no campo. Pode ser string, integer, byte ou um longint. Apesar de termos listados todos esses tipos de campos, somente está implementado na solução o campo do tipo string. - initialpos: define onde o campo começa dentro do registro de tamanho fixo. - size: define o tamanho do campo. Destacamos abaixo um exemplo de um metadado definido: <metadata id="metadata0" memory="40000"> <field type="string" size="2" initialpos="0">valor</field> <field type="string" size="2" initialpos="2">crlf</field> </metadata> Nós de Processamento São as estruturas que efetivamente realizam o trabalho sobre os dados. O intuito do projeto não é prover os mais variados tipos de transformações sobre os dados, e sim uma maneira simples para o desenvolvedor criar os seus próprios nós de processamento. A criação de nós bem coesos e flexíveis garante ao desenvolvedor do fluxo de ETL uma maior reutilização dos blocos já criados. Alguns exemplos de nós de processamento são: - nó capaz de realizar a ordenação de um arquivo a partir de uma chave. - nó capaz de retirar a duplicidade de registros, utilizando a escolha de uma chave única. - nó capaz de realizar a junção de dois fluxos de dados utilizando uma chave de junção. - nó capaz de filtrar os registros de um fluxo de dados utilizando uma expressão lógica / matemática. Os nós de processamento possuem como entrada fluxos de dados. Esses fluxos de dados pode se originar de qualquer recurso do sistema, seja um disco físico, a própria memória RAM ou uma interface de rede, bastando para isso criar nós específicos. Abaixo descrevemos o XSD somente da seção de criação de nós de processamento. <xs:complextype name="process_list"> <xs:sequence> <xs:element name="process" type="process_type" minoccurs="1" 24

26 maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> <xs:complextype name="process_type"> <xs:sequence> <xs:any maxoccurs="unbounded" processcontents="skip"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="type" type="xs:string" use="required"/> </xs:complextype> Na seção process definimos um nó de processamento que fará parte do nosso ciclo ETL. Esses nós devem conter sempre o atributo id e o atributo type. O id define unicamente um processo dentro do ciclo, enquanto o type define o tipo do processo. Para executar nossos exemplos criamos apenas três tipos de processos, que são eles FileReader, FileWriter e Factorial. - FileReader Nó responsável pela leitura de um arquivo texto de tamanho fixo. Exemplo: <process id="filereader0" type="filereader"> <recordsize>4</recordsize> <filepath>d:\projetos\factorial.txt</filepath> </process> O tamanho do registro do arquivo é indicado pela tag recordsize. O caminho do arquivo é indicado pela tag filepath. Esse leitor possui a capacidade de ler partes segmentadas do arquivo de entrada, dependendo da quantidade de arestas de saída ligadas a ele. Considere o trecho de ciclo ETL abaixo, onde o FileReader aparece lendo como entrada o arquivo Numeros.txt e ligado a três processos que são responsáveis por realizar um cálculo de score. 25

27 Figura 2 - Exemplo de Utilização do FileReader para realizar paralelismo Assim o nó FileReader se comportará da seguinte maneira: ele entregará blocos de registros aos nós conectados a ele, utilizando uma política de round-robin. Dessa maneira, conseguiremos paralelizar o cálculo do score, onde cada um dos nós CalculaScore executará sua tarefa em um processador. Mais a frente mostraremos um exemplo prático e os resultados obtidos com esse paralelismo. - FileWritter Nó responsável pela escrita dos dados em disco. Análogo ao FileReader, esse escritor de arquivos possui a capacidade de receber N fluxos de dados, ou seja, podemos conectar quantas arestas quisermos em um nó do tipo FileWriter. Cada uma dessas arestas será conectada a uma porta diferente. Assim o FileWriter lerá cada fluxo de dados utilizando um política de round-roubin e escrevendo o resultado em arquivo físico, diretamente no disco rígido. Exemplo: <process id="filewriter0" type="filewriter"> <filepath>d:\factorial_out.txt</filepath> </process> O caminho do arquivo de saída, o qual será efetivamente gravado em disco, é indicado pela tag filepath. - Factorial Nó responsável pelo cálculo do fatorial de um número. Esse nó, por ser muito específico, provavelmente não apresenta nenhuma utilização prática. Ele foi apenas criado para demostrar a capacidade da ferramenta de realizar tarefas em paralelo. Exemplo: 26

28 <process id="factorial1" type="factorial"> <factorialfield>valor</factorialfield> </process> A tag factorialfield indica qual campo deverá ser calculado o fatorial Arestas Quando ligamos um nó de processamento a outro, criamos uma aresta. Os dados que trafegam de um nó pra outro ficam temporariamente armazenados na aresta, em um buffer na memória RAM da máquina. Abaixo descrevemos o XSD somente da seção de criação de nós de processamento. <xs:complextype name="edge_type"> <xs:atribute name="fromprocess" type="xs:string" use="required"/> <xs:attribute name="fromport" type="xs:integer" use="required"/> <xs:attribute name="toprocess" type="xs:string" use="required"/> <xs:attribute name="toport" type="xs:integer" use="required"/> <xs:attribute name="metadata" type="xs:string" use="required"/> </xs:complextype> A tag fromprocess e fromport indica de qual nó/porta parte a aresta. A tag toprocess e toport indica em qual nó/porta a aresta chega. Assim para definir uma aresta, ou seja, de onde ela parte até onde ela chega, devemos defini-la com duas tuplas: (fromprocess, fromport) e (toprocess e toport). A tag metadata indica o formato dos dados que trafegam na aresta. Abaixo segue um exemplo de definição de duas arestas. <edges> <edge fromprocess="filereader0" fromport="0" toprocess="factorial1" toport="0" metadata="metadata0"/> <edge fromprocess="factorial1" fromport="0" toprocess="filewriter0" toport="0" metadata="metadata1"/> </edges> 27

29 Capítulo 4: Implementação Visão geral Para modelar nosso framework partimos dos conceitos chaves como: porta, processo, aresta e fases. Modelamos seus relacionamos através de um modelo conceitual que em seguida deu entrada no nosso diagrama de classes. Utilizamos o diagrama de sequência apenas para descrever o problema de Produtor-Consumidor. Utilizando o diagrama de classes, fica claro como deve ser feita a extensão do código para a criação de novos componentes. Na seção Criando Novos Nós de Processamento será mostrado como estender o framework para a criação de novos componentes Padrões de Projeto Descreve uma solução geral que pode ser utilizada para um problema recorrente no desenvolvimento de software orientado a objetos. Assim os padrões de projeto definem relações e interações entre as classes/objetos em um nível de abstração mais alto. Os padrões de projeto têm como objetivo facilitar as reutilizações de soluções e estabelecer um vocabulário comum facilitando documentação e o entendimento do código gerado. Em nossa implementação utilizamos dois padrões de projeto: * Factory (Fábrica) Objetivo - Criar um objeto sem expor a lógica de instanciação ao cliente - Criação de um novo objeto através de uma interface comum Utilização - Cliente necessita de um produto, mas ao invés de criá-lo diretamente, ele pede à fábrica por um novo produto, provendo a informação sobre o tipo de objeto que ele precisa. 28

30 - A fábrica instancia um novo produto concreto e retorna ao cliente o objeto recentemente criado. - O cliente utiliza o objeto como um produto abstrato sem se preocupar com sua implementação concreta. Vantagem - Conseguir adicionar um novo produto sem alterar a interface de criação, alterando apenas a fábrica. Existem certas implementações de fábrica que permite a inclusão de novos tipos concretos sem alterar a fábrica. * Singleton Às vezes é importante termos apenas uma instância da classe. Usualmente singletons são utilizadas para centralizar o gerenciamento de recursos internos ou externos provendo um ponto global de acesso. Objetivo - Garantir que apenas uma instância da classe será criada - Prover um ponto de acesso global ao objeto Figura 3 - Modelo de classes do padrão Singleton Utilização O padrão Singleton define a operação getinstance, a qual expõe uma única instância a ser acessada pelos clientes. O método getinstance é responsável por criar uma única instância da classe caso ela ainda não tenha sido criado e retorná-la Diagrama de Classes 29

31 Figura 4 - Diagrama de Classes (Visão de Processos) A classe TProcessFactory, juntamente com a classe abstrata TProcess, representa a implementação do padrão de projeto Fábrica. Esta Fábrica (TProcessFactory) é responsável pela criação dos nós de processamento do sistema. Cada nó de processamento é executado em threads separadas, por isso a classe TProcess é filha da classe Thread. Para criação de um novo nó devemos passar a sua descrição representada pela classe TProcessDescription. Cada processo possui uma lista de portas de saídas e entradas, representadas respectivamente, pelas classes TInputCollection e TOutputCollection. Estas duas classes utilizam outra Fábrica (TPortFactory) que é responsável pela criação da porta de comunicação. 30

32 Figura 5 - Diagrama de Classes (Visão Comunicação entre Processos) A classe TPortFactory juntamente com a classe TPortDescription implementa novamente o padrão Fábrica. Essa fábrica é responsável pela criação tanto de portas de saída (classe abstrata TOutput) como portas de entrada (classe abstrata TInput). 31

33 As classes TFixedRecordOutput e TFixedRecordInput representam as portas de saída e entrada respectivamente, que tratam os registros de tamanho fixo. Essas duas classes utilizam a classe TDataPacket (sua dependência se dá pela classe TPort que é pai das classes TInput e TOutput e possuí um atributo do tipo TDataPacket) que abstrai um ResultSet (um conjunto de registros). Esta classe é onde os dados são armazenados para posterior escrita deles no buffer de transferência. Figura 6 - Diagrama de Classes (Visão Comunicação entre Processos - Classes Abstratas) A classe TEdge abstrai a aresta que liga duas portas de nós de processamento. Nessa classe se encontra o buffer responsável pelo armazenamento do TDataPacket. O método Write da classe TOutput escreve dados para a classe TDataPacket. Assim que o buffer do TDatapacket está cheio, ele é escrito no TBuffer, utilizando o método Write. A parte de leitura é análoga. Na seção Diagrama de Sequência descreveremos essa interação. 32

34 Figura 7 - Diagrama de Classes (Visão Metadados) A estrutura de classes acima é responsável pela leitura do XML que define o grafo. Temos como classe raiz, a classe TETLGraphXML que é implementada utilizando o padrão de projeto Singleton. Tomamos essa decisão por precisar de um ponto único de acesso à abstração do grafo. 33

35 Figura 8 - Diagrama de Classes (Visão Controlador do Grafo) A classe TGraphManager é interface para gerenciamento da execução do grafo. Ao criarmos a TPhase, criaremos todos os processes dessa fase. Para isso, utilizei novamente o padrão de projeto fábrica, representado pelas classes TProcessFactory e TProcess. A classe TPhase possui o método Launch(), que quando chamado executa a fase do grafo. Cada processo e fase é executado em threads separada. Além destas threads, temos a classe TWacthDogThread que verifica de tempos em tempos o estado de execução dos processos O problema Produtor-Consumidor O problema de produtor-consumidor é um exemplo clássico de sincronização. Ele estabelece os processos concorrentes que compartilham uma área de escrita/leitura. 34

36 O produtor é responsável por gerar os dados que serão disponibilizados na área de leitura/escrita. Concorrentemente, o consumidor estará lendo e removendo os dados dessa área. O problema é ter certeza que o produtor não tentará adicionar dados na área de leitura/escrita quando estiver cheia,e que o consumidor não tentará remover dados quando a área estiver vazia. Assim, quando temos a área de escrita/leitura cheia o produtor deve esperar até que haja espaço. O mesmo ocorre para o consumidor que deve esperar até que exista alguma informação na área para ser consumida. Assim que o produtor coloca dados na área de leitura/escrita ele avisa o consumidor, para ele iniciar o processamento. Quando o consumidor retira dados da área ele avisa ao produtor. Essa solução é atingida através de uma comunicação entre processos, que pode ser implementada utilizando recursos do sistema operacional como semáforos e mutexes. Abaixo mostramos uma solução retirada do Wikipédia, que é a mesma que utilizaremos ao abordar o problema em nosso projeto. Ela utiliza o recurso de semáforos para realizar a sincronização entre processos. semaphore fillcount = 0; // itens produzidos semaphore emptycount = BUFFER_SIZE; // espaço remanescente procedure producer() { while (true) { item = produceitem(); down(emptycount); putitemintobuffer(item); up(fillcount); } } procedure consumer() { while (true) { down(fillcount); item = removeitemfrombuffer(); up(emptycount); consumeitem(item); } } No contexto de nossa aplicação nos deparamos com o problema de produtor 35

37 consumidor no momento de trafegar os dados entres os nós de processamento. Para ilustramos o problema do produtor-consumidor no contexto de nossa aplicação utilizamos o diagrama de sequências abaixo: Figura 9 - Diagrama de sequência mostrando o problema do Produtor-Consumidor A classe TOutput é responsável pela escrita dos dados, utilizando a chamada ao método Write da classe TEdge. A classe TEdge escreve no buffer, realizando a tratativa do problema produtor-consumidor. Ela verifica se possui espaço no buffer pelo o semáforo EmptyCount. Caso haja espaço, ela realiza a escrita e notifica o outro semáforo FillCount que os dados podem ser consumidos. Caso não haja ela dorme e espera o outro processo acordá-la. 36

38 A classe TInput é responsável pela leitura dos dados, utilizando a chamada ao método Read da classe TEdge. Ela verifica se possui algum dados no buffer, verificando o semáforo FillCount. Caso haja dados para serem consumidos, ela realiza a leitura do dado. Caso não haja, ela dorme e espera o outro processo acordá-la. Abaixo colocamos dois trechos de código, um do método Write e outro do método Read da classe TEdge, em linguagem pascal. procedure TEdge.Write(Content: PAnsiChar; Size: integer); begin //espera ter uma unidade disponivel no semaforo WaitForSingleObject(EmptyCount, INFINITE); //move informações para o buffer ponteiro por pt Move(Size, pt^, SizeOf(Integer)); pt := pt + SizeOf(Integer); Move(Content^, pt^, Size); pt := FBuffer; //incrementa o semaforo com uma unidade ReleaseSemaphore(FillCount, 1, nil); end; function TEdge.Read(var Content: PAnsiChar; var Size: integer): boolean; begin EOF := true; WaitForSingleObject(FillCount, INFINITE); //lê o tamanho dos dados do buffer Move(pt^, Size, SizeOf(Integer)); pt := pt + SizeOf(Integer); if (Size <> -1) then begin Move(pt^, FContent^, Size); Content := FContent; EOF := false; end; //reseta ponteiro pt := FBuffer; ReleaseSemaphore(EmptyCount, 1, nil); end; 37

39 1.19. Criando Novos Nós de Processamento Um dos objetivos do framework é a possibilidade de estendê-lo e criar novos componentes (novos nós de processamento). Para isso montamos nossa estrutura de classes de modo que esta tarefa fosse bem simples, bastando para isso realizar a extensão de classes do framework. Para a criação de novos nós de processamento devemos estender a classe TProcess e inserir um novo tipo de nó na fábrica TProcessFactory. As informações sobre o nó, ou seja, os metadados do nó estão disponíveis através da propriedade FXMLNode herdada da classe TProcess. Para acessar as portas de entrada e saída utilizamos as propriedades FInputCollection do tipo TInputCollection e FOutputCollection do tipo TOutputCollection, que são herdadas da classe TProcess. Abaixo colocamos trechos de código mostrando a inclusão do nó Fatorial type TFactorial = class(tprocess)... public procedure Run(); override; procedure TFactorial.Run;... begin while (InputPort.Read(Value)) do //le dados da porta de entrada begin move(value^, FNumberStr[1], 2); //valor a ser calculado FactorialStr := IntToStr(GetFatorial(StrToInt(FNumberStr)));... OutStr := FOutNumber + #13#10; OutPutPort.Write(Pansichar(OutStr)); //valor fatorial end InputPort.Close(); //fecha porta de entrada OutPutPort.Close(); //fecha a porta de saída end; type TProcessFactory = class... 38

40 class function TProcessFactory.GetProcess(ProcessDesc: TProcessDescription): TProcess; begin... if (ProcessDesc.ProcessType = 'Factorial') then begin Result := TFactorial.Create(ProcessDesc.PhaseID, ProcessDesc.ProcessID); Exit; end; end; 39

41 Capítulo 5: Exemplo de Uso Paralelismo Introdução O objeto desta seção é demonstrar a utilização do framework para a execução de um processo ETL. Para demonstrar a capacidade de realizar paralelismo utilizaremos quatro tipos de grafo. Todos os grafos possuem a mesma saída, porém utilizam níveis de paralelismo diferentes. Mostraremos o ganho em paralelizar o ciclo ETL através desses exemplos O Problema O problema que trataremos é bastante simples e capaz de ser paralelizado. Ele consiste em calcular o fatorial de uma lista de números. Para aumentar a utilização de CPU, ao invés de calcular apenas uma vez o fatorial do número, realizaremos esse procedimento 10 vezes. - Entrada do problema (lista de números): Um arquivo texto, com números inteiros, variando de 1 a 10, separador por CR+LF. Esse arquivo possui um total de bytes, ou seja, * 4 bytes (2 bytes representando os números e mais 2 bytes de CR+LF). - Saída Um arquivo texto, com números inteiros, variando de 1 a , separados por CF+LF. Esse arquivo possui um total de bytes, ou seja * 9 bytes (7 bytes representando o resultado do fatorial e mais 2 bytes de CR+LF) Hardware Utilizado O objetivo do exemplo de uso é demonstrar o paralelismo e o ganho de desempenho no ciclo ETL. Nosso ciclo possui a característica de ser CPU Bound. Dado isso necessitamos descrever o processador e sua quantidade de núcleos. O processador utilizado será o Core i3 da família de processadores Intel, destinado a Desktops x Ele possui o recurso de Hyper-Threading que lhe 40

42 possibilita simular a existência de um maior número de núcleos, fazendo com que o seu desempenho aumente. Mais especificamente este processador possuí dois núcleos de processamento físico e dois virtuais, ou seja, ele possuí dois núcleos de processamento físico e simula mais dois. A tecnologia Hyper-Threading é uma tecnologia usada em processadores que realizam a simulação de mais dois núcleos. Essa técnica é utilizada para oferecer uma maior eficiência na utilização de recursos do processador. Segundo a Intel, o uso dessa tecnologia oferece um aumento de desempenho de até 30%. Abaixo mostramos uma imagem da janela do Gerenciador de Tarefas do Windows, demonstrando a presença de quatro núcleos de processamento: Figura 10 - Gerenciador de Tarefas do Windows. Como podemos ver o computador utilizado possui quatro processadores Grafos Utilizados Executaremos quatro grafos em nosso exemplo. O primeiro deles possuirá 41

43 apenas um nó de cálculo de fatorial, o segundo dois, e assim sucessivamente. Para exemplificar o grafo segue abaixo uma figura do grafo com um nó de processamento e outro com quatro nós de processamento. Figura 11 - Representação do grafo com apenas um nó de cálculo de fatorial <edges> <edge fromprocess="filereader0" fromport="0" toprocess="factorial1" toport="0" metadata="metadata0"/> <edge fromprocess="factorial1" fromport="0" toprocess="filewriter0" toport="0" metadata="metadata1"/> </edges> Acima apresentamos a listagem de arestas do grafo com um nó de processamento de fatorial. Figura 12 - Representação do grafo com quatro nós de cálculo de fatorial 42

44 <edges> <edge fromprocess="filereader0" fromport="0" toprocess="factorial1" toport="0" metadata="metadata0"/> <edge fromprocess="filereader0" fromport="1" toprocess="factorial2" toport="0" metadata="metadata0"/> <edge fromprocess="filereader0" fromport="2" toprocess="factorial3" toport="0" metadata="metadata0"/> <edge fromprocess="filereader0" fromport="3" toprocess="factorial4" toport="0" metadata="metadata0"/> <edge fromprocess="factorial1" fromport="0" toprocess="filewriter0" toport="0" metadata="metadata1"/> <edge fromprocess="factorial2" fromport="0" toprocess="filewriter0" toport="1" metadata="metadata1"/> <edge fromprocess="factorial3" fromport="0" toprocess="filewriter0" toport="2" metadata="metadata1"/> <edge fromprocess="factorial4" fromport="0" toprocess="filewriter0" toport="3" metadata="metadata1"/> </edges> Acima apresentamos um XML de exemplo com um grafo com quatro nós de processamento do cálculo do fatorial Resultados Realizamos a medição da execução dos grafos utilizando o aplicativo do Windows Monitor de Desempenho (perfmon.exe). - Execução do Grafo com um nó de Fatorial Consumo de CPU médio: 25,13% Tempo total: milissegundos Figura 13 - Uso de CPU x Tempo um processador 43

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

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

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

DATA WAREHOUSE. Introdução

DATA WAREHOUSE. Introdução DATA WAREHOUSE Introdução O grande crescimento do ambiente de negócios, médias e grandes empresas armazenam também um alto volume de informações, onde que juntamente com a tecnologia da informação, a correta

Leia mais

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

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

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

Wilson Moraes Góes. Novatec

Wilson Moraes Góes. Novatec Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,

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

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

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

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como: Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código

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

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Módulo 4. Construindo uma solução OLAP

Módulo 4. Construindo uma solução OLAP Módulo 4. Construindo uma solução OLAP Objetivos Diferenciar as diversas formas de armazenamento Compreender o que é e como definir a porcentagem de agregação Conhecer a possibilidade da utilização de

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Introdução Projeto de Arquitetura (Cap 11 - Sommerville) UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira Até agora, estudamos: Os

Leia mais

O modelo do computador

O modelo do computador O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 3º PERÍODO - 5º MÓDULO AVALIAÇÃO A4 DATA 23/04/2009 ENGENHARIA DE SOFTWARE Dados de identificação do Acadêmico: Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA

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

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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Estrutura, Processos e Threads

Estrutura, Processos e Threads Estrutura, Processos e Threads Prof. Edwar Saliba Júnior Março de 2007 1 Sistema computacional A p l i c a t i v o s U t i l i t á r i o s N ú c l e o d o S i s t e m a O p e r a c i o n a l H a r d w

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Processos Técnicos - Aulas 4 e 5

Processos Técnicos - Aulas 4 e 5 Processos Técnicos - Aulas 4 e 5 Trabalho / PEM Tema: Frameworks Públicos Grupo: equipe do TCC Entrega: versão digital, 1ª semana de Abril (de 31/03 a 04/04), no e-mail do professor (rodrigues.yuri@yahoo.com.br)

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Persistência e Banco de Dados em Jogos Digitais

Persistência e Banco de Dados em Jogos Digitais Persistência e Banco de Dados em Jogos Digitais Prof. Marcos Francisco Pereira da Silva Especialista em Engenharia de Software Jogos Digitais - Computação Gráfica 1 Agenda Vantagens de usar a abordagem

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

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

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 11 Sincronização de Processos Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO O Driver IGS possui um módulo de configuração que possibilita a comunicação com protocolos proprietários. Trata-se do Driver

Leia mais

Data Warehouse. Debora Marrach Renata Miwa Tsuruda

Data Warehouse. Debora Marrach Renata Miwa Tsuruda Debora Marrach Renata Miwa Tsuruda Agenda Introdução Contexto corporativo Agenda Introdução Contexto corporativo Introdução O conceito de Data Warehouse surgiu da necessidade de integrar dados corporativos

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2 .:: Universidade Estadual de Maringá Bacharelado em Informática Eng. de Software III :. Sistema de Gerenciamento de Eventos - Equipe 09 EPSI Event Programming System Interface Metodologia e Gerenciamento

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Profª Dra. Ana Paula Gonçalves Serra Engenharia de O Processo Uma Visão Genérica Capítulo 2 (até item 2.2. inclusive) Engenharia de - Roger Pressman 6ª edição McGrawHill Capítulo

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

UML - Unified Modeling Language

UML - Unified Modeling Language UML - Unified Modeling Language Casos de Uso Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 24 de abril

Leia mais

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul QUESTÃO: 29 Além da alternativa a estar correta a alternativa e também pode ser compreendida como correta. Segundo a definição de diversos autores, a gerência de falhas, detecta, isola, notifica e corrige

Leia mais

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Display de 7 Segmentos Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1 Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;

Leia mais

Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br

Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br Ementa Introdução a Banco de Dados (Conceito, propriedades), Arquivos de dados x Bancos de dados, Profissionais de Banco de dados,

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

Importância da normalização para as Micro e Pequenas Empresas 1. Normas só são importantes para as grandes empresas...

Importância da normalização para as Micro e Pequenas Empresas 1. Normas só são importantes para as grandes empresas... APRESENTAÇÃO O incremento da competitividade é um fator decisivo para a maior inserção das Micro e Pequenas Empresas (MPE), em mercados externos cada vez mais globalizados. Internamente, as MPE estão inseridas

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 6 Slide 1 Objetivos Apresentar os conceitos de requisitos de usuário e de sistema Descrever requisitos funcionais

Leia mais

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA 8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

Leia mais

Construindo portais com Plone

Construindo portais com Plone Construindo portais com Plone Módulo 9 Dexterity Dexterity TTW Módulo 9 Dexterity Dexterity >> O que é? Framework para incorporação de tipos de dados ao Plone. Sucessor do Archetypes. Mais rápido, modular

Leia mais

Como instalar uma impressora?

Como instalar uma impressora? Como instalar uma impressora? Antes de utilizar uma impressora para imprimir seus documentos, arquivos, fotos, etc. é necessário instalá-la e configurá-la no computador. Na instalação o computador se prepara

Leia mais

Manual da Turma Virtual: MATERIAIS. Para acessar a turma virtual com o perfil Docente, siga o caminho indicado abaixo:

Manual da Turma Virtual: MATERIAIS. Para acessar a turma virtual com o perfil Docente, siga o caminho indicado abaixo: Manual da Turma Virtual: MATERIAIS Para acessar a turma virtual com o perfil Docente, siga o caminho indicado abaixo: MENU TURMA VIRTUAL MENU MATERIAIS CONTEÚDO/PÁGINA WEB Esta operação possibilita que

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

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

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

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

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

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

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

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos

Leia mais

Disciplina: Unidade III: Prof.: E-mail: Período:

Disciplina: Unidade III: Prof.: E-mail: Período: Encontro 08 Disciplina: Sistemas de Banco de Dados Unidade III: Modelagem Lógico de Dados Prof.: Mario Filho E-mail: pro@mariofilho.com.br Período: 5º. SIG - ADM Relembrando... Necessidade de Dados Projeto

Leia mais

Introdução ao GED Simone de Abreu

Introdução ao GED Simone de Abreu Introdução ao GED Simone de Abreu GED O que é isso? O conhecimento teve, ao longo da história, diferentes significados e funções. No tempo das cavernas nossos antepassados transmitiam aos seus descendentes

Leia mais

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert: BRAlarmExpert Software para Gerenciamento de Alarmes A TriSolutions conta com um produto diferenciado para gerenciamento de alarmes que é totalmente flexível e amigável. O software BRAlarmExpert é uma

Leia mais

Impressão de Código de Barras Uma abordagem prática ZEBRA ZPL2

Impressão de Código de Barras Uma abordagem prática ZEBRA ZPL2 1 Impressão de Código de Barras Uma abordagem prática ZEBRA ZPL2 por Victory Fernandes e Augusto Frederico Na Internet estão disponíveis diversos componentes para geração e impressão de Código de Barras

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

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR 6LPXODomR GH6LVWHPDV )HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR #5,6. Simulador voltado para análise de risco financeiro 3RQWRV IRUWHV Fácil de usar. Funciona integrado a ferramentas já bastante conhecidas,

Leia mais

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre

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

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Introdução a listas - Windows SharePoint Services - Microsoft Office Online Page 1 of 5 Windows SharePoint Services Introdução a listas Ocultar tudo Uma lista é um conjunto de informações que você compartilha com membros da equipe. Por exemplo, você pode criar uma folha de inscrição

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!!

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!! Apresentação Este manual é uma orientação para os participantes de cursos no ambiente Moodle do INSTITUTO PRISMA. Tem como objetivo orientar sobre as ações básicas de acesso e utilização do ambiente virtual

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

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

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração.

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração. O software de tarifação é uma solução destinada a rateio de custos de insumos em sistemas prediais, tais como shopping centers. O manual do sistema é dividido em dois volumes: 1) MANUAL DO INTEGRADOR Este

Leia mais

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr Engenharia de Software Apostila I >>> Introdução à ES - HEngholmJr Histórico de Revisões Data Versão Descrição Autor 12/08/2014 1.0 Criação da primeira versão HEngholmJr Agenda Introdução à Engenharia

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

Leia mais