60
OUTROS PARADIGMAS: PROGRAMAÇÃO CONCORRENTE, MODELO DE DADOS RELACIONAL (SQL), REDES DE PETRI, ORIENTAÇÃO A ASPECTOS Luenne Nailam e Uendson Teles

Outros paradigmas: programação concorrente, modelo de ...rogerio/material_auxiliar/CLP2012_1_outros... · outros paradigmas: programaÇÃo concorrente, modelo de dados relacional

  • Upload
    lehuong

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

OUTROS PARADIGMAS: PROGRAMAÇÃO

CONCORRENTE, MODELO DE DADOS

RELACIONAL (SQL), REDES DE PETRI,

ORIENTAÇÃO A ASPECTOS

Luenne Nailam e Uendson Teles

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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 equipamen-

to 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

5

09/07/2012 Conceitos de LPs – Outros Paradigmas

Arquivo Impressora

Física Processo

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

CONCORRÊNCIA X PARALELISMO

6

09/07/2012 Conceitos de LPs – Outros Paradigmas

Arquivo Impressora

Física Processo

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

CONCORRÊNCIA X PARALELISMO

7

09/07/2012 Conceitos de LPs – Outros Paradigmas

Arquivo Buffer Processo

Leitor

Figura 2 - Programa concorrente acessando arquivo e impressora

Processo

Impressor

Impressora

Física

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

CONCORRÊNCIA X PARALELISMO

8

09/07/2012 Conceitos de LPs – Outros Paradigmas

Arquivo Buffer Processo

Leitor

Figura 2 - Programa concorrente acessando arquivo e impressora

Processo

Impressor

Impressora

Física

É 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

TRATAMENTO DE THREADS

O recurso mais conhecido para implementar o

paradigma concorrente

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

MODELO DE DADOS RELACIONAL (SQL)

PROGRAMA

Conceitos do Modelo Relacional

SQL

Palavras-chave em SQL

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

15

CONCEITOS DO MODELO RELACIONAL

Conceitos de LPs – Outros Paradigmas 09/07/2012

16

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

CONCEITOS DO MODELO RELACIONAL

Conceitos de LPs – Outros Paradigmas 09/07/2012

17 Figura 3 – Exemplo de BD

CONCEITOS DO MODELO RELACIONAL

Conceitos de LPs – Outros Paradigmas 09/07/2012

18

Figura 4 – Diagrama ER

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

26

PALAVRAS-CHAVE EM SQL

Operadores relacionais

realiza comparações entre valores, em estruturas de

controle

Conceitos de LPs – Outros Paradigmas 09/07/2012

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)

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

29

REDES DE PETRI

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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 pode-

se destacar a modelagem de sistemas de tempo real,

paralelos, assíncronos e concorrentes.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

35

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,

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

39

REDES DE PETRI

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

41

PROGRAMAÇÃO ORIENTADA A ASPECTOS

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

42

PROGRAMAÇÃO ORIENTADA A ASPECTOS

RESPONSABILIDADES (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

Conceitos de LPs – Outros Paradigmas 09/07/2012

43

PROGRAMAÇÃO ORIENTADA A ASPECTOS

SEPARAÇÃO DE RESPONSABILIDADES (SEPARATION

OF 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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

46

PROGRAMAÇÃO ORIENTADA A ASPECTOS

RESPONSABILIDADES TRANSVERSAIS

(CROSSCUTTING CONCERNS)

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

47

PROGRAMAÇÃO ORIENTADA A ASPECTOS

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

48

PROGRAMAÇÃO ORIENTADA A ASPECTOS

DIVISÃO

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)

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

52

PROGRAMAÇÃO ORIENTADA A ASPECTOS

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.

Conceitos de LPs – Outros Paradigmas 09/07/2012

53

PROGRAMAÇÃO ORIENTADA A ASPECTOS

CONCLUSÃO

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

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

Conceitos de LPs – Outros Paradigmas 09/07/2012

REFERÊNCIA BIBLIOGRÁFICA

http://www.ccet.unimontes.br/arquivos/mono

grafias/224.pdf

http://www.dextra.com.br/empresa/artigos/a

spectprog.htm/

Conceitos de LPs – Outros Paradigmas 09/07/2012