OUTROS PARADIGMAS: PROGRAMAÇÃO
CONCORRENTE, MODELO DE DADOS
RELACIONAL (SQL), REDES DE PETRI,
ORIENTAÇÃO A ASPECTOS
Luenne Nailam e Uendson Teles
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
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
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