OUTROS PARADIGMAS: PROGRAMAÇÃO CONCORRENTE, MODELO DE DADOS RELACIONAL (SQL), REDES DE PETRI, ORIENTAÇÃO A ASPECTOS Luenne Nailam e Uendson Teles PROGRAMAÇÃO CONCORRENTE 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMA O que é um Programa? O que é Concorrência? Programação Concorrente Concorrência x paralelismo Tratamento de Threads Motivação Dificuldades do Paradigma 09/07/2012 Conceitos de LPs – Outros Paradigmas O QUE É UM PROGRAMA? Conjunto de instruções indicando uma ação a ser executada 1 09/07/2012 Conceitos de LPs – Outros Paradigmas O QUE É CONCORRÊNCIA? Concorrer: juntarse para uma ação ou fim comum; contribuir, cooperar Disputa por recursos Independência temporal 2 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO CONCORRENTE Paradigma de programação para a construção de programas de computador que fazem uso da execução concorrente (simultânea) de várias tarefas computacionais interativas podem ser implementadas como programas separados ou como um conjunto de threads criadas por um único programa podem ser executadas por um único processador, vários processadores em um único equipamento ou processadores distribuídos por uma rede 3 09/07/2012 Conceitos de LPs – Outros Paradigmas CONCORRÊNCIA X PARALELISMO Atividades paralelas são atividades concorrentes, contudo são tratadas sobre conjuntos de recursos independentes 4 09/07/2012 Conceitos de LPs – Outros Paradigmas CONCORRÊNCIA X PARALELISMO Arquivo Processo Impressora Física Figura 1 - Programa seqüencial acessando arquivo e impressora O processo envia um comando para a leitura do arquivo e fica bloqueado O disco é acionado para realizar a operação de leitura Concluída a leitura, o processo realiza a formatação e inicia a transferência dos dados para a impressora 09/07/2012 Conceitos de LPs – Outros Paradigmas 5 CONCORRÊNCIA X PARALELISMO Arquivo Processo Impressora Física Figura 1 - Programa seqüencial acessando arquivo e impressora Como é uma impressora física, o processo executa um laço no qual os dados são enviados para a porta serial ou paralela apropriada Como o buffer da impressora é relativamente pequeno, o processo fica preso até o final da impressão 09/07/2012 Conceitos de LPs – Outros Paradigmas 6 CONCORRÊNCIA X PARALELISMO Arquivo Processo Leitor Buffer Impressora Física Processo Impressor Figura 2 - Programa concorrente acessando arquivo e impressora Dois processos dividem o trabalho: O processo leitor é responsável por ler registros do arquivo, formatar e colocar em um buffer na memória O processo impressor retira os dados do buffer e envia para a impressora 7 09/07/2012 Conceitos de LPs – Outros Paradigmas CONCORRÊNCIA X PARALELISMO Arquivo Processo Leitor Buffer Impressora Física Processo Impressor Figura 2 - Programa concorrente acessando arquivo e impressora É suposto que os dois processos possuem acesso à memória onde está o buffer Eficiência maior, pois consegue manter o disco e a impressora trabalhando simultaneamente O tempo total para realizar a impressão do arquivo será menor 09/07/2012 Conceitos de LPs – Outros Paradigmas 8 TRATAMENTO DE THREADS O recurso mais conhecido para paradigma concorrente implementar o dividem o trabalho que necessita ser realizado em duas ou mais partes O processador não necessita aguardar o término de uma instrução para iniciar outra pode-se iniciar no mínimo duas tarefas simultaneamente quando se está utilizando um processador de núcleo duplo Problema: um thread requisitar acesso a uma região da memória que já está utilizada por outra 9 09/07/2012 Conceitos de LPs – Outros Paradigmas TRATAMENTO DE THREADS Problema: um thread requisitar acesso a uma região da memória que já está utilizada por outra Resultado: uma interrupção repentina na execução do programa, podendo levar à perda de informações importantes contidas na memória de execução que ainda não haviam sido gravadas em um lugar definitivo 10 09/07/2012 Conceitos de LPs – Outros Paradigmas MOTIVAÇÃO Com o advento dos processadores com dois ou mais núcleos (cores) há um incentivo cada vez maior dos fabricantes de hardware para o desenvolvimento de softwares que utilizam à programação concorrente ela promove uma aceleração em aplicações de tratamento e edição de fotografias digitais, compactação e edição de filmes, até mesmo a compactação de arquivos está se beneficiando desse paradigma 11 09/07/2012 Conceitos de LPs – Outros Paradigmas DIFICULDADES DO PARADIGMA Custo elevado para pequenas empresas de desenvolvimento de software Maior complexidade e tempo para realização Manutenção e depuração de código 12 09/07/2012 Conceitos de LPs – Outros Paradigmas MODELO DE DADOS RELACIONAL (SQL) 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMA Conceitos do Modelo Relacional SQL Palavras-chave 09/07/2012 em SQL Conceitos de LPs – Outros Paradigmas CONCEITOS DO MODELO RELACIONAL Baseia-se em dois conceitos: Entidade: elemento caracterizado pelos dados que são recolhidos na sua identificação vulgarmente designado por tabela. Na construção da tabela identificam-se os dados da entidade. A atribuição de valores a uma entidade constrói um registro da tabela Relação: determina o modo como cada registro de cada tabela se associa a registros de outras tabelas 15 09/07/2012 Conceitos de LPs – Outros Paradigmas CONCEITOS DO MODELO RELACIONAL Linha é chamada tupla Cabeçalho de coluna é chamado atributo Tabela é chamada relação Tipo de dados que descreve os tipos de valores que podem aparecer em cada coluna é chamado de domínio 16 09/07/2012 Conceitos de LPs – Outros Paradigmas CONCEITOS DO MODELO RELACIONAL Figura 3 – Exemplo de BD 09/07/2012 Conceitos de LPs – Outros Paradigmas 17 CONCEITOS DO MODELO RELACIONAL Figura 4 – Diagrama ER 18 09/07/2012 Conceitos de LPs – Outros Paradigmas SQL Linguagem padrão para os bancos de dados relacionais Structured Query Language linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional) muitas das características originais foram inspiradas na álgebra relacional 19 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL DML Linguagem de Manipulação de Dados utilizado para realizar inclusões, consultas, alterações e exclusões de dados presentes em registros estas tarefas podem ser executadas em vários registros de diversas tabelas ao mesmo tempo INSERT - usada para inserir um registro (formalmente uma tupla) a uma tabela existente. SELECT - principal comando usado em SQL para realizar consultas a dados pertencentes a uma tabela. UPDATE - muda os valores de dados em uma ou mais linhas da tabela existente DELETE - permite remover linhas existentes de uma tabela 09/07/2012 Conceitos de LPs – Outros Paradigmas 20 PALAVRAS-CHAVE EM SQL DDL Linguagem de Definição de Dados permite definir tabelas novas e elementos associados CREATE - cria um objeto (uma Tabela, por exemplo) dentro da base de dados DROP - apaga um objeto do banco de dados alguns sistemas de banco de dados usam o comando ALTER permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente 21 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL DCL Linguagem de Controle de Dados controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados GRANT - autoriza ao usuário executar ou setar operações. REVOKE - remove ou restringe a capacidade de um usuário de executar operações. 22 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL DTL Linguagem de Transação de Dados BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) - pode ser usado para marcar o começo de uma transação de banco de dados que pode ser completada ou não. COMMIT - envia todos os dados das mudanças permanentemente. ROLLBACK - faz com que as mudanças nos dados existentes desde o último COMMIT ou ROLLBACK sejam descartadas 23 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL DQL - Linguagem de Consulta de Dados parte da SQL mais utilizada O comando SELECT permite ao usuário especificar uma consulta ("query") como uma descrição do resultado desejado Esse comando é composto de várias cláusulas e opções, possibilitando elaborar consultas das mais simples às mais elaboradas 24 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL Cláusulas condições de modificação utilizadas para definir os dados que deseja selecionar ou modificar em uma consulta FROM - utilizada para especificar a tabela que se vai selecionar os registros. WHERE – utilizada para especificar as condições que devem reunir os registros que serão selecionados. GROUP BY – utilizada para separar os registros selecionados em grupos específicos. HAVING – utilizada para expressar a condição que deve satisfazer cada grupo. ORDER BY – utilizada para ordenar os registros selecionados com uma ordem especifica. DISTINCT – utilizada para selecionar dados sem repetição 09/07/2012 Conceitos de LPs – Outros Paradigmas 25 PALAVRAS-CHAVE EM SQL Ordenadores Lógicos AND – E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos. OR – OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for correto NOT – Negação lógica. Devolve o valor contrário da expressão 26 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL Operadores relacionais realiza comparações entre valores, em estruturas de controle 27 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL Operadores relacionais realiza comparações entre valores, em estruturas de controle BETWEEN – utilizado para especificar um intervalo de valores LIKE – utilizado na comparação de um modelo e para especificar registros de um banco de dados "Like" + extensão % significa buscar todos resultados com o mesmo início da extensão IN - utilizado para verificar se o valor procurado está dentro de uma lista. Ex.: valor IN (1,2,3,4) 28 09/07/2012 Conceitos de LPs – Outros Paradigmas PALAVRAS-CHAVE EM SQL Funções de Agregação AVG – utilizada para calcular a média dos valores de um campo determinado. COUNT – utilizada para devolver o número de registros da seleção. SUM – utilizada para devolver a soma de todos os valores de um campo determinado. MAX – utilizada para devolver o valor mais alto de um campo especificado. MIN – utilizada para devolver o valor mais baixo de um campo especificado. 09/07/2012 Conceitos de LPs – Outros Paradigmas 29 REDES DE PETRI 29 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI Com o objetivo de desenvolver um modelo para que máquinas de estado pudessem se comunicar, Carl Adam Petri, então aluno de doutorado, defendeu sua tese, em 1962, com o título de Kommunikation mit Automaten (Comunicação com Autômatos). O modelo recebeu o nome de Redes de Petri (RdP) em homenagem ao autor . obteve como característica mais relevante a representação da concorrência. 30 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI Encontram-se atualmente variações do modelo primitivo aplicadas em diversas áreas da ciência como biologia, engenharia, computação e economia (PENHA et al,2004). Dentre suas diversas aplicações na computação podese destacar a modelagem de sistemas de tempo real, paralelos, assíncronos e concorrentes. 31 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI Redes de Petri é um modelo matemático que possibilita uma representação gráfica ampla proporcionando uniformidade na modelagem, análise e simulação de sistemas a eventos discretos. Além disso, permite uma visualização simultânea da sua estrutura e comportamento . as RdP modelam dois aspectos desses sistemas, eventos e condições, bem como, as relações entre eles 32 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI Mesmo sendo a representação gráfica uma vantagem das RdP, a característica mais relevante do modelo é o formalismo. Desde a apresentação do modelo original, chamado de RdP Ordinárias, foram desenvolvidos vários trabalhos práticos e teóricos sobre RdP que levaram ao desenvolvimento de muitas variantes do modelo tendo em vista aplicações específicas. 33 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI Uma dessas variações são as RdP Temporizadas, utilizadas na modelagem de sistemas que apresentam como característica a temporização. Basicamente, consistem em atribuir um determinado retardo de tempo a uma transição Podemos citar outros modelos desenvolvidos a partir do modelo original como as RdP Coloridas, RdP Hierárquicas, Rdp Generalizadas, RdP com Capacidade Finita, RdP Contínuas e as RdP Estocásticas. 34 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI A aplicação de RdP na modelagem de sistemas computacionais é cada vez maior. São capazes de modelar sistemas com características como: concorrência, conflito, compartilhamento, controle e sincronismo. 35 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI ELEMENTOS DE UMA REDES DE PETRI os lugares, que representam uma condição, uma atividade, um estado parcial, uma posição geográfica ou um recurso; as fichas, que indicam quando a condição associada ao lugar é verdadeira; as transições, que representam um evento que ocorre no sistema e; os arcos, que indicam os lugares de entrada ou saída para as transições, 09/07/2012 Conceitos de LPs – Outros Paradigmas 36 REDES DE PETRI EVOLUÇÃO DA REDE as transições são responsáveis por colocar ou retirar as fichas dos lugares Um arco com origem em um lugar e término em uma transição (arco de entrada) indica que a transição retira uma ficha desse lugar. 37 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI EVOLUÇÃO DA REDE um arco com origem numa transição e fim num lugar (arco de saída), indica que a transição coloca uma ficha nesse lugar. os arcos demonstram o sentido em que as fichas se deslocam de um lugar a outro, sempre passando por uma transição. 38 09/07/2012 Conceitos de LPs – Outros Paradigmas REDES DE PETRI EVOLUÇÃO DA REDE Sendo assim, a ocorrência do disparo de uma transição só é possível se existirem fichas nos lugares de entrada dessa transição A ficha é o elemento responsável por indicar o estado de uma RdP num determinado instante. 39 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS A Programação Orientada a Aspectos - AspectOriented Programming ou simplesmente AOP - foi introduzida em 1996 por Gregor Kickzales A AOP introduz um novo paradigma e um conjunto de diretrizes para facilitar o desenvolvimento de software. 40 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS A AOP lida com um problema específico: capturar unidades consistentes de um sistema de software que as limitações dos modelos de programação tradicionais forçam a ficar espalhados por diversos pontos do sistema. 41 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS RESPONSABILIDADES (CONCERNS) Sistemas de software consistem de um conjunto de responsabilidades distintas como responsabilidades funcionais e não-funcionais Existem também as preocupações relacionadas com o processo de desenvolvimento de software 42 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS SEPARAÇÃO DE RESPONSABILIDADES (SEPARATION OF CONCERNS) A melhor maneira de se projetar um sistema é através da separação de suas responsabilidades distintas Porém algumas responsabilidades não são tão facilmente decompostas em apenas uma dimensão 43 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS RESPONSABILIDADES TRANSVERSAIS (CROSSCUTTING CONCERNS) Em sistemas complexos, sempre existem responsabilidades de interesse comum que são utilizadas por vários módulos. Estas responsabilidades são difíceis de isolar porque são necessárias em vários pontos do código. 44 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS RESPONSABILIDADES TRANSVERSAIS (CROSSCUTTING CONCERNS) Em sistemas complexos, sempre existem responsabilidades de interesse comum que são utilizadas por vários módulos. Com a OOP, os crosscutting concerns ficam espalhados por vários módulos em pequenos trechos de código 45 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS RESPONSABILIDADES TRANSVERSAIS (CROSSCUTTING CONCERNS) A AOP complementa a OOP por introduzir uma nova dimensão para a decomposição das responsabilidades transversais: os aspectos. O paradigma da AOP consiste na separação das responsabilidades transversais de um sistema em aspectos. 46 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS Os aspectos podem ser inseridos, alterados ou removidos em tempo de compilação. Por estarem em um único bloco de código, sua manutenção é mais simples. Além disso, o código das classes fica livre do código relacionado às responsabilidades transversais. 47 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS DIVISÃO Decomposição: os vários concerns do sistema são identificados e classificados como comuns ou crosscutting. Implementação: os concerns são implementados separadamente em classes (para os concerns comuns) e aspectos (para os crosscutting concerns). Recomposição: o sistema é recomposto à partir dos concerns implementados segundo regras de recomposição. Esta fase é chamada de weaving. 09/07/2012 Conceitos de LPs – Outros Paradigmas 48 PROGRAMAÇÃO ORIENTADA A ASPECTOS Uma implementação básica de AOP consiste em: uma linguagem para programar os componentes (por exemplo, Java). uma linguagem para programar os aspectos (por exemplo, o AspectJ) um weaver para combinar as duas linguagens (ferramenta que também faz parte do AspectJ) 49 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS O AspectJ é uma ferramenta open source que acrescenta os conceitos de AOP à linguagem Java, através de uma extensão à linguagem: os "aspects". É especificada em termos de join points, pointcuts e advices, e tudo isto é encapsulado em um aspect. 50 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS Join points: representam pontos bem definidos na execução de um programa onde um determinado aspecto pode ser aplicado. Pointcuts: pointcut é um agrupamento de join points baseando-se em um critério pré-definido. Advices: trechos de código que são executados nos pointcuts. Um advice contém as alterações que devem ser aplicadas ortogonalmente ao sistema 51 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS Aspects: são similares a classes: têm um tipo, podem ser estendidos, podem ser abstratos ou concretos e podem conter campos, métodos e tipos como membros. Mas são diferentes de classes: não têm construtor nem destrutor, não podem ser criados com o operador "new", podem conter pointcuts e advices como membros e podem acessar membros de outros tipos. 52 09/07/2012 Conceitos de LPs – Outros Paradigmas PROGRAMAÇÃO ORIENTADA A ASPECTOS CONCLUSÃO A aplicação de técnicas de OOP para a implementação dos crosscutting concerns resulta em sistemas que são trabalhosos para implementar. Utilizando a AOP, pode-se criar implementações que são fáceis de desenhar, entender e manter. Acredita-se que os conceitos relacionados com aspectos estão na sua infância. 53 09/07/2012 Conceitos de LPs – Outros Paradigmas REFERÊNCIA BIBLIOGRÁFICA http://gersonc.anahy.org/ppdrep/04ProgramacaoConc orrente-PPD.pdf http://pt.wikipedia.org/wiki/Programa%C3%A7%C3% A3o_concorrente http://www.noll.pro.br/paradigmas_programacao_conc orrente.pdf 09/07/2012 Conceitos de LPs – Outros Paradigmas REFERÊNCIA BIBLIOGRÁFICA www.inf.pucrs.br/~ramos/sop_progconctext.doc http://pt.wikipedia.org/wiki/SQL http://pt.wikipedia.org/wiki/Modelo_relacional http://www2.unemat.br/~ivanpires/files/dwl/bd/slides/b d_5.pdf 09/07/2012 Conceitos de LPs – Outros Paradigmas REFERÊNCIA BIBLIOGRÁFICA http://www.ccet.unimontes.br/arquivos/mono grafias/224.pdf http://www.dextra.com.br/empresa/artigos/a spectprog.htm/ 09/07/2012 Conceitos de LPs – Outros Paradigmas