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
PROGRAMA O que é um Programa? O que é Concorrência? Programação Concorrente Concorrência x paralelismo Tratamento de Threads Motivação Dificuldades do Paradigma
O QUE É UM PROGRAMA? Conjunto de instruções indicando uma ação a ser executada 1
O QUE É CONCORRÊNCIA? Concorrer: juntarse para uma ação ou fim comum; contribuir, cooperar Disputa por recursos Independência temporal 2
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
CONCORRÊNCIA X PARALELISMO Atividades paralelas são atividades concorrentes, contudo são tratadas sobre conjuntos de recursos independentes 4
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 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 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
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 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
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
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
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
MODELO DE DADOS RELACIONAL (SQL)
PROGRAMA Conceitos do Modelo Relacional SQL Palavras-chave em SQL
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
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
CONCEITOS DO MODELO RELACIONAL Figura 3 Exemplo de BD 17
CONCEITOS DO MODELO RELACIONAL Figura 4 Diagrama ER 18
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
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 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
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
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
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
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 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
PALAVRAS-CHAVE EM SQL Operadores relacionais realiza comparações entre valores, em estruturas de controle 27
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
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. 29
REDES DE PETRI 29
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
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
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
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
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
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
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, 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
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
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
PROGRAMAÇÃO ORIENTADA A ASPECTOS A Programação Orientada a Aspectos - Aspect- Oriented 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
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
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
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
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
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
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
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
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. 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
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
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
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
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
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
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
REFERÊNCIA BIBLIOGRÁFICA http://www.ccet.unimontes.br/arquivos/mono grafias/224.pdf http://www.dextra.com.br/empresa/artigos/a spectprog.htm/