Categorias de Padrões



Documentos relacionados
Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Padrões de projeto 1

Características Carlos Ferraz

Padrões. Projeto (Design) de Software

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Projeto de Arquitetura

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Arquitetura de Software (AS) Arquitetura de Software. Motivação para AS. Motivação para AS. Terminologias em AS. Terminologias em AS

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Persistência e Banco de Dados em Jogos Digitais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Padrões Arquiteturais e de Integração - Parte 1

UFG - Instituto de Informática

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Capítulo 9. Gerenciamento de rede

Redes de Computadores

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Banco de Dados. Uma coleção de dados relacionados [ELMASRI/NAVATHE]

1

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Orientação à Objetos. Aécio Costa

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Padrões. Identificando padrões

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

UNIVERSIDADE. Sistemas Distribuídos

Adriano Reine Bueno Rafael Barros Silva

UML Diagramas. UML Diagramas. UML Diagrama Diagrama de Classes. UML Diagrama Diagrama de Classes

Padrões Arquiteturais. Sistemas Distribuídos: Broker

Firewalls. Firewalls

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Sistemas Distribuídos

Tópicos em Engenharia de Computação

Sistemas Distribuídos

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único


O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 23. Sistemas Operacionais Distribuídos

Arquitetura de Software. Silvia Regina Vergilio

Distributed Object-oriented Virtual Environment using Web Services on Grid

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Governança de TI. ITIL v.2&3. parte 1

Padrão Básico de Projeto: Interfaces e Polimorfismo

Análise e Projeto Orientados por Objetos

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

SISTEMAS DISTRIBUÍDOS

Padrões de Interação com o Usuário

Modelagem de Processos. Prof.: Fernando Ascani

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Metas de um Sistema Distribuído

UFF-Fundamentos de Sistemas Multimídia. Redes de Distribuição de Conteúdo (CDN)

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Conceitos de Banco de Dados

Nomes e Endereçamento. Nomes e Endereçamento. Paradigmas em Sistemas Distribuídos. Paradigmas em Sistemas Distribuídos

Processo de Desenvolvimento de Software. Engenharia de Software.

Capítulo 22. Associações entre Classes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

ENGENHARIA DE SOFTWARE I

O Processo de Desenvolvimento de Software

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon

20/05/2013. Sistemas de Arquivos Sistemas de arquivos. Sistemas de Gerenciamento de Banco de Dados (SGBD) Banco de Dados. Estrutura de um BD SGBD

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

SISTEMA GERENCIADOR DE BANCO DE DADOS

Prototype, um Design Patterns de Criação

Wilson Moraes Góes. Novatec

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Considerações no Projeto de Sistemas Cliente/Servidor

Sistemas Operacionais. Conceitos de um Sistema Operacional

Sistemas Distribuídos

Segurança da Informação

Arquitetura dos Sistemas de Informação Distribuídos

SISTEMAS DISTRIBUIDOS

Introdução à Computação

Engenharia de Software I: Análise e Projeto de Software Usando UML

Uma organização pode ser descrita como um arranjo sistemático, onde esforços individuais são agregados em prol de um resultado coletivo

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Endereçamento IP. Figura 1 Estrutura hierárquica do endereço IP

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta

O que são DNS, SMTP e SNM

1 Introdução. Componentes Usuários. Provedor de Serviços. Figura 1.1 Ambiente de oferecimento de serviços

Linguagem de Programação I

Padrão Arquitetura em Camadas

CARACTERÍSTICAS DOS SISTEMAS

Características de Firewalls

Transcrição:

Categorias de Padrões Padrão Arquitetural ou Estilo Arquitetural Padrão de Design (Design Patterns) Idiomas

Categorias de Padrões ESTILOS ARQUITETURAIS PADRÕES DE DESIGN IDIOMAS

Padrões de Design Os subsistemas da arquitetura de software bem como os relacionamentos entre eles, consistem de várias unidades arquiteturais menores. Tais unidades são descritas usando design patterns. Oferece um esquema para refinar os subsistemas

Padrões de Design São menores em escala que padrões arquiteturais mas estão em um nível mais alto que idiomas específicos de linguagens de programação Não tem efeito na estrutura fundamental do software (arquitetura) mas tem forte influência na arquitetura de um subsistema São independentes de um domínio particular da aplicação pois tratam com a estruturação da funcionalidade da aplicação e não com a implementação da funcionalidade

Padrões de Design Categorias: Decomposição Estrutural: padrões que permitem uma decomposição adequada de subsistemas e componentes complexos em partes cooperantes Organização do Trabalho: padrões que definem como componentes colaboram para resolver um problema complexo Controle de Acesso: padrões que guardam e controlam o acesso a serviços ou componentes Gerenciamento: padrões que gerenciam uma coleção homogênea de objetos, serviços e componentes Comunicação: padrões que ajudam a organizar comunicação entre os componentes

Padrões de Design Decomposição Estrutural Decompor sistemas em partes menores facilita a realização de mudanças e extensões e tornam os sistemas mais fáceis de compreender Whole-Part (Todo-Parte) ajuda a agregar componentes para juntos formar uma unidade Composite organiza objetos em estruturas de árvore que representa uma hierarquia

Whole-Part Padrões de Design Decomposição Estrutural Um componente agregado (o whole) encapsula os componentes constituintes (o part) organiza uma interface comum Clientes enxergam o objeto agregado (whole) como um objeto atômico que não permite acesso direto às partes

Whole-Part Padrões de Design Decomposição Estrutural Exemplo: Objetos gráficos como círculos, linhas, retângulos, triângulos, etc podem ser agrupados em uma classe base chamada GraphicsObject que define métodos comuns como draw e rotate.

Padrões de Design Organização do Trabalho Decompor sistemas complexos através da cooperação de componentes Master-Slave (Mestre-Escravo) oferece suporte para computação paralela e tolerância a falhas. Aplica a idéia do princípio de Dividir e Conquistar onde o trabalho é dividido em subtarefas que são processadas independentemente

Padrões de Design Organização do Trabalho Master-Slave Um componente master (mestre) distribui trabalho a componentes slaves (escravos) que realizam a computação o componente master divide o trabalho em subtarefas iguais e delega as sub-tarefas aos componentes escravos que são semanticamente idênticos

Padrões de Design Organização do Trabalho Master-Slave Exemplo: Problema do Caixeiro-Viajante (problema de teoria dos grafos) que deve encontrar o menor caminho entre duas cidades que visite cada cidade apenas 1 vez. (problema NP-completo) O tamanho das diferentes rotas é calculado em paralelo pelos escravos.

Padrões de Design Controle de Acesso Em algumas situações um servidor ou mesmo um sistema inteiro não deve estar acessível diretamente pelos clientes. Exemplo: nem todos os clientes estão autorizados a usar os serviços de um componente ou recuperar uma informação particular que o componente oferece Proxy é um padrão de design que faz com que clientes de um componente comunique-se com um representante ao invés de comunicar-se com o próprio componente

Proxy Padrões de Design Controle de Acesso Introduz um representante (proxy) que serve para muitos propósitos incluindo facilidade de acesso e proteção contra usuários não autorizados O proxy oferece uma interface para acesso ao componente e realiza processamento adicional (p.ex.: verificação de controle de acesso) O proxy é associado com o componente original através de um handle, que pode ser um ponteiro, um endereço, um identificador, um socket.

Padrões de Design Controle de Acesso Proxy Cliente Proxy Componente serviço resposta Pré-processamento serviço Pós-processamento

Proxy Exemplo: Padrões de Design Controle de Acesso Um proxy Firewall realiza a proteção contra potenciais acessos hostis ao ambiente. O proxy Firewall é, em geral, implementado como um processo daemon na máquina firewall que pode ser também chamado de proxy server. Todos os clientes acessam os serviços de uma rede via o proxy. O proxy rejeita solicitações que não obedecem a política de acesso da rede.

Padrões de Design Comunicação Existem muitos mecanismos de comunicação entre processos: sockets, RPC, TLI, etc. O uso de um mecanismo de comunicação específico pode tornar difícil mudança na aplicação posteriormente (p.ex. em casos de migração de uma rede para outra)

Padrões de Design Comunicação Um padrão de design para comunicação pode permitir o desacoplamento entre componentes de um sistema distribuído e mecanismos usados para comunicação Dois aspectos importantes: encapsulamento do mecanismo de comunicação e transparência de localização

Publisher-Subscriber Padrões de Design Comunicação Mantém a sincronização entre os componentes cooperantes. Um publisher notifica os subscribers sobre mudanças no seu estado.

Idiomas É um padrão de baixo-nível específico para uma linguagem de programação Descreve como implementar aspectos particulares dos componentes ou relacionamentos entre eles usando as características de uma dada linguagem Podem endereçar a implementação de um padrão de design específico

Idiomas Há muitas maneiras de se resolver um problema usando uma dada linguagem. Exemplo: Implementação de cópia de string em C/C++ Os programas copiam o string s para o string d até encontrar um caracter com valor 0. void strcopykr(char *d, const char *s) { while (*d++=*s++); } void strcopypascal(char d[], const char s[]) { int i; for (i=0; s[i]!= \0 ; i=i+1) { d[i] = s[i]; } d[i] = \0 ; } Ambas seguem seu próprio estilo

Idiomas Idiomas podem ensinar a usar as características de uma linguagem de programação Guias de estilos corporativos podem determinar um estilo consistente a ser seguido por times de desenvolvimento de software da corporação Eles devem estabelecer como o programador deve resolver problemas recorrentes de codificação (como criação de objetos, nomeação de métodos, formato do código fonte para melhorar legibilidade, uso de biblioteca de componentes)

Idiomas Onde encontrar idiomas? Alguns Padrões de Design que endereçam problemas de programação também oferecem idiomas. Usando livros de linguagens de programação que falam sobre regras da linguagem crie seus próprios idiomas

Idiomas Exemplo: IMPLEMENTAÇÃO DE UM PADRÃO DE DESIGN SINGLEINSTANCE (que garante que uma classe tem apenas 1 instância) IDIOMA PARA SMALLTALK: Para os métodos new (construtores da classe), estabeleça uma exceção a ser emitida em casos de erro de criação do objeto. Implemente um método getinstance que retorna a instância da classe. A primeira vez que getinstance for chamado ele irá criar a única instância da classe