460 likes | 565 Views
Filipe Marques Ribeiro Drisostes. Apresentação sobre Paradigmas de Programação. 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
E N D
Filipe Marques Ribeiro Drisostes Apresentação sobre Paradigmas de Programação
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.
Modelo de Dados Relacional • Definição • Entidades e Relacionamentos • Chaves • Classificações • Modelo Conceitual • Modelo Lógico • Modelo Físico • SQL • Data DefinitionLanguage • Data ManipulationLanguage
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 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 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)
SQL • StructuredQueryLanguage(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 DefinitionLanguage(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 • createtablenome_da_tabela • droptablenome_da_tabela
Data ManipulationLanguage(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 • insertintonome_tabela(col1,col2, ...) values(1, 2, ...) • select (col1, col2, ...) fromnome_da_tabela
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 bagspara 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: TP é um conjunto de bagsque representamo mapeamento de transições para as posições de entrada. O : T → P é um conjunto de bagsque 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-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 • 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 crosscutingconcernsintroduzindo uma nova unidade de modularização, o aspecto. • Crosscutingconcernssã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. • JoinPoint: É 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 joinpoint.
Conceitos Importantes • Pointcut: É uma construção que seleciona joinpoints. Depois de capturar um joinpoint é possível especificar as regras de weaving nesses joinpoints, como executar determinada ação antes ou depois da execução desse joinpoint. • Advice: É o código a ser executado em um joinpoint 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-programao-orientada-a-aspectos/ • http://www.dca.ufrn.br/~affonso/FTP/DCA409/redes_de_petri.pdf • http://gersonc.anahy.org/ppdrep/04-ProgramacaoConcorrente-PPD.pdf • http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/threads1.html