Filipe Marques Ribeiro Drisostes
Tópicos
Programação Concorrente
 Modelo de Dados Relacional
 Redes de Petri
 Programação Orientada a Aspectos

Programação Concorrente
Definição
 Execução Concorrente
 Threads
 Sincronização
 Exemplo Prático – Números Primos

Definição
Para um melhor entendimento do conceito
de programação concorrente devemos
saber o que é concorrência.
Concorrência é disputa por recursos ou
juntarse para uma ação ou fim comum.
A programação concorrente é uma técnica
De programação que explora a independência
Temporal de atividades definidas por uma aplicação.
Execução Concorrente
Pseudo-Paralela: execução em um
único processador.
 Paralela: Execução em vários
processadores que compartilham uma
memória.
 Distribuída: Execução em vários
processadores independentes, sem
compartilhamento de memória.

Threads
Um thread é um fluxo único de controle
sequencial dentro de um programa.
 É importante destacar a diferença entre
thread e processo. O que diferencia
ambas é o espaço de endereçamento.
Enquanto várias threads compartilham o
mesmo espaço (processo), vários
processos possuem diferentes espaços
de endereçamento.

Sincronização
É a troca de informações entre duas
tarefas. A sincronização permite controlar
o compartilhamento de dados entre
tarefas. Existem dois tipos de
sincronização, sincronização de
competição e sincronização de
cooperação.
Sincronização
Sincronização de Competição: impede
que duas tarefas acessem uma estrutura
de dados compartilhados ao mesmo
tempo, sob pena da informação perder
sua integridade.
Sincronização de Cooperação: Quando
dois objetos trabalham juntos em uma
determinada tarefa e o objeto A precisa
esperar que o objeto B termine sua
execução para então continuar a sua.
Exemplo Prático – Números
Primos
Modelo de Dados Relacional
Modelo de Dados Relacional
Definição
 Entidades e Relacionamentos
 Chaves
 Classificações

 Modelo Conceitual
 Modelo Lógico
 Modelo Físico

SQL
 Data Definition Language
 Data Manipulation Language
Definição

Estudo das informações existentes em
um contexto sob observação para
construção de um modelo de
representação de domínio real.
Entidades e Relacionamentos
Entidades são “objetos” do mundo real
que podem ser identificadas de forma
única em relação aos outros objetos.
Entidades
podem
ser
concretas(pessoas,
casa)
ou
abstratas(departamento, polígono).
 Relacionamento são associações entre
entidades ou ainda ações que podem
ser realizadas de uma entidade sobre
outra.

Chaves

Conjunto de atributos que podem
identificar unicamente uma entidade.
Chaves podem ser primárias ou
estrangeiras. Chaves primárias
identificam uma entidade. Chaves
estrangeiras são atributos de uma
entidade que são chaves primárias em
outras entidades.
Classificações
Modelo Conceitual
 Modelo Lógico
 Modelo Fisico

Modelo Conceitual

Descreve a realidade do ambiente do
problema, formado das principais
entidades e relacionamentos.
Modelo Conceitual
Modelo Lógico

Estabelece a lógica de relacionamento
entre dados. Inicia-se o modelo lógico
após a construção do modelo
conceitual.
Modelo Lógico
Modelo Físico

Descreve a estrutura física de
armazenamento dos dados. É no
modelo físico que são definidos tipos de
dados, índices, exigência de conteúdo e
etc. O modelo físico é representado por
uma linguagem de script de criação de
banco de dados(em geral SQL)
Modelo Físico
SQL

Structured Query Language (SQL) é
uma linguagem usada a construção de
banco de dado relacional. A SQL tem
como principais funcionalidades a
definição e manipulação dos dados,
definição de visões e autorização de
acesso, e definição de restrição de
integridade.
Data Definition Language (DDL)
É através das instruções DDL que são
criados os bancos de dados e tabelas,
alteração em tabelas e exclusão do
banco de dados ou das tabelas
 Comandos DDL
 create database nome_do_BD
 create table nome_da_tabela
 drop table nome_da_tabela

Data Manipulation Language
(DML)
É através das instruções DML que são
realizadas inserções de dados,
alterações ou consulta. Vale ressaltar
que as instruções DML não modificam a
estrutura do banco de dados.
 Comandos DML
 insert into nome_tabela(col1, col2, ...)
values(1, 2, ...)
 select (col1, col2, ...) from
nome_da_tabela

Redes de Petri
Redes de Petri
Definição
 Representação
 Classificação das Redes de Petri

 Redes Ordinárias
 Redes de Alto Nível

Aplicações
Definição
Rede de Petri é uma técnica de
modelagem
que
permite
a
representação de sistemas, utilizando
como
alicerce
uma
forte
base
matemática . Essa técnica possui a
particularidade de permitir modelar
sistemas
paralelos,
concorrentes,
assíncronos e não-determiníticos.
Definição
Podemos definir redes de Petri das
seguintes formas: Matrizes, bags,
relações. Nesta apresentação, será
utilizado bags para definir redes de Petri.
 Bag é uma generalização do conceito de
conjunto que admite a repetição de
elementos. Na notação de bags, utiliza-se [
], enquanto que para denotar conjuntos,
utiliza-se { }.

Definição

Uma rede de Petri é composta de uma
quíntupla (P, T, I, O, K )tal que P é um
conjunto
finito
e
não
vazio
de
posições(lugares), T é o conjunto finito e não
vazio de transições, I: TP é um conjunto de
bags que representam o mapeamento de
transições para as posições de entrada.
O : T → P é um conjunto de bags que
representa o mapeamento de transições para
lugares de saída K : P → N é o conjunto da
capacidades associadas a cada lugar,
podendo assumir um valor infinito.
Representação

Redes de Petri podem ser
representados como grafos orientados,
onde os vértices são chamados de
posições(lugares), os arcos possuem
pesos e ainda possuem um barra que
corta o arco que é chamada de
transição. As posições equivalem às
variáveis de estado e as transições
correspondem às ações realizadas pelo
sistema.
Representação
Representação-Exemplo Ciclo
repetitivo dos turnos de um dia
Representação-Exemplo Ciclo
repetitivo dos turnos de um dia
P = {Manhã, Tarde, Noite}
 T = {Amanhecer, Entardecer, Anoitecer}
 I = {I (Amanhecer) = [Noite]

I (Entardecer) = [Manhã],
I(Anoitecer) = [Tarde] }
 O = {O(Amanhecer) = [Manhã],
O(Entardecer) = [Tarde],
O(Anoitecer) = [Noite] }
 K = {k manhã=1, k tarde =1, k noite =1 }

Classificação das Redes de Petri

Redes Ordinárias: São caracterizadas
pelas suas marcações(tokens. que são
informações atribuídas aos lugares,
para representar o estado da rede em
um determinado momento), que são do
tipo inteiro e não negativo. As redes
ordinárias se subdividem em duas,
Rede Binária e Rede Place-Transition
Classificação das Redes de Petri
Rede Binária: Permite apenas um token
em cada lugar, e todos os arcos
possuem valor unitário.
 Rede Place-Transition: Permite o
acumulo de marcas no mesmo lugar,
assim como valores não unitários para
os arcos.

Classificação das Redes de Petri

Redes de Alto Nível: São caracterizadas
por suas marcas, que não se restringem
apenas ao números, podendo ser agora
cores ou objetos. Com isso permite-se a
individualização de uma marca, que
possibilita maior clareza e um maior (ou
menor) nível de abstração ao modelo.
Aplicações das Redes de Petri
Automação de manufatura
 Circuitos integrados
 Sistemas de produção

Programação Orientada à
Aspectos
Programação Orientada à
Aspectos
Definição
 Conceitos Importantes

 Hello
World Utilizando Programação
Orientada à Aspectos
 Vantagens
Definição
É um paradigma de programação que
provê a separação dos crosscuting
concerns introduzindo uma nova
unidade de modularização, o aspecto.
 Crosscuting concerns são as
funcionalidades secundarias de um
sistema, como por exemplo, Loggin.

Conceitos Importantes



Aspectos:
Onde
são
declarados
e
implementados os códigos que expressam as
regras de mesclagem das funcionalidades.
Weaving: Processo onde é feita a mesclagem
dos modulos do sistema de acordo com os
aspectos encontrados.
Join Point: É um ponto identificável do fluxo de
um programa. Pode ser uma chamada de
método ou a configuração do valor de uma
variável.
Variadas
implementações
da
orientação a aspectos suportam variados tipos
de join point.
Conceitos Importantes
Pointcut: É uma construção que
seleciona join points. Depois de capturar
um join point é possível especificar as
regras de weaving nesses join points,
como executar determinada ação antes
ou depois da execução desse join point.
 Advice: É o código a ser executado em
um join point que foi selecionado por um
pointcut.

Hello World Utilizando Programação
Orientada à Aspectos

Primeiro, cria-se a classe Hello

Em seguida, cria-se o aspecto Hello
Vantagens
Maior Modularização
 Menor Acoplamento
 Maior Reusabilidade de Código
 Facilidade na adição de novas
funcionalidades

Referências Bibliográficas
http://www.javaframework.org/portal/2010/04/14/o-que-programaoorientada-a-aspectos/
 http://www.dca.ufrn.br/~affonso/FTP/DCA409/redes_de_petri.pdf
 http://gersonc.anahy.org/ppdrep/04-ProgramacaoConcorrentePPD.pdf
 http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/threa
ds1.html

FIM
Duvidas?!
Download

Outros Paradigmas