DCC / ICEx / UFMG
Definição de Padrões
Padrões Arquiteturais Um padrão é uma descrição do
problema e a essência da sua solução
Documenta boas soluções para
problemas recorrentes
Eduardo Figueiredo
Deve ser suficientemente abstrato para
http://www.dcc.ufmg.br/~figueiredo
ser reusado em aplicações diferentes
Arquiteturas de Referência Padrões Arquiteturais
Padrões arquiteturais expressam
Embora cada sistema seja único formas de organizar a estrutura
É comum que sistemas do mesmo fundamental do sistema
domínio tenham arquiteturas similares Permitem a construção de uma
arquitetura aderente a certas
Um projeto pode ser baseado em propriedades
um padrão arquitetural conhecido O conhecimento de padrões
arquiteturais ajuda na definição da
arquitetura do sistema
Elementos de um Padrão Da arquitetura a implementação
A escolha do padrão arquitetural pode Os padrões arquiteturais definem a
ser o primeiro passo para a solução estrutura fundamental
Atividades subsequentes devem seguir
Padrões arquiteturais definem esta estrutura
Um conjunto de sub-sistemas
As responsabilidades de cada Padrões arquiteturais representam os
sub-sistema padrões mais abstratos
Regras de relacionamentos entre Padrões de projeto (Modelagem)
os sub-sistemas Idiomas (Programação)
Padrões são abstratos Escolha do Padrão
Os padrões não definem completamente A escolha do padrão arquitetural deve
a arquitetura do sistema estar associada ao tipo de sistema e
Padrões são templates que devem ser seus requisitos não funcionais
refinados Algumas perguntas podem ajudar
Exemplos de refinamentos O sistema é interativo?
Incluir outros componentes e novos Possui muitas variações?
relacionamentos Que requisitos não funcionais são
Definir padrões de projeto e idiomas em importantes? Confiabilidade?
fases subsequentes Adaptabilidade?
Composição de Padrões
Padrões diferentes levam a Exemplos de
consequências diferentes
Padrões Arquiteturais
Mesmo quando os padrões abordam
problemas semelhantes
Assim como ocorre em padrões de
projeto, sistemas complexos possuem
mais de um padrão arquitetural
Padrões Arquiteturais: Livros Padrões Arquiteturais
Da desordem a estrutura
Pattern-Oriented Software Layered Architecture (Arquitetura em Camadas)
Blackboard (Arquitetura de Repositório)
Architecture: A System of Pipes and Filters (Dutos e Filtros)
Patterns (Volume 1) Sistemas distribuídos
Client-Server (Cliente-Servidor)
Broker
Sistemas interativos
Model-View-Controller (MVC)
Presentation-Abstraction-Control
Sistemas adaptáveis
Microkernel Discutidos no livro
Reflection do Sommerville
Arquitetura em Camadas Exemplo 1: Protocolos OSI
Modelo de camadas para sistemas de comunicação
Organiza o sistema em um conjunto
de camadas
Cada camada oferece um conjunto de
serviços
Uma camada somente
Solicita serviços da camada inferior
Fornece serviços para a camada superior
Exemplo 2: Três Camadas Vantagens
Favorece o modelo de desenvolvimento
Camada de Apresentação
incremental
As camadas podem ser facilmente
substituídas por equivalentes
Camada de Negócios Requer interfaces estáveis
Mudanças em uma camada teoricamente
só impacta a camada superior
Camada de Dados Camadas superiores podem ser
independentes de plataforma/hardware
Desvantagens Arquitetura de Repositório
Estruturar o sistema em camadas não é Também conhecido como Blackboard
trivial Os subsistemas manipulam a mesma
Pode ser difícil identificar quais os serviços base de dados
elementares das camadas inferiores Um (ou mais) subsistema gera os dados
Muitas camadas podem comprometer o Vários subsistemas lêem os dados
desempenho do sistema Adotado principalmente quando
A requisição tem que trafegar pelas várias grandes quantidades de dados são
camadas até ser atendida compartilhadas
Exemplo de Repositório Vantagens
Maneira eficiente de compartilhar
Subsistema de dados
Subsistema de Subsistema de
Controle de
Vendas Compras Backup é centralizado (mais fácil)
Estoque
Formas de proteção dos dados podem
ser implementadas
Banco de Os subsistemas que gravam dados
Dados de não necessitam saber quem os usa
Produtos Fácil integrar novos subsistemas
Desvantagens Dutos e Filtros
Os subsistemas devem entender o Padrão de organização da dinâmica
formato dos dados gravados de um sistema
Manter e evoluir grandes volumes de Dois papéis principais
dados pode ser difícil / caro
Dutos: componentes que conduzem ou
Subsistemas diferentes podem ter distribuem os dados
requisitos diferentes Filtros: componentes que transformam
Mais segurança ou maior disponibilidade os dados
Dificuldade para distribuir os dados Usado principalmente em aplicações
Dados redundantes ou inconsistentes
de processamento de dados
Dinâmica do Padrão Exemplo de Dutos e Filtros
Os dados de entrada se movem Entradas: Faturas e Pagamentos
pelos dutos Saídas: Recibos e Lembretes
Os dados são transformados pelos
filtros até serem convertidos em
dados de saída
As transformações podem ocorrem
em sequência ou em paralelo
Vantagens Desvantagens
O módulo de transformação (filtro) é
bem modular O formato dos dados trafegados devem
ser acordados entre os módulos
Facilmente reusável e substituível
O estilo de workflow é aderente a Pode haver um overhead causado pela
muitos processos de negócios padronização dos dados
É simples evoluir o sistema pela adição
de filtros Incompatibilidade no formato dos dados
Se aplica tanto a sistemas sequênciais pode dificultar o reuso de filtros
quanto a sistemas concorrentes
Arquitetura Cliente-Servidor Arquitetura Cliente-Servidor
Organizada como um conjunto de Requer uma estrutura de rede para
serviços clientes acessarem os serviços
Servidores dos serviços
Clientes dos serviços Clientes sabem quais os serviços e
servidores estão disponíveis
Exemplos de servidores
Servidor de impressão Servidores não sabem quem são os
Servidor de arquivos, etc. clientes
Arquitetura Cliente-Servidor Exemplo de Cliente-Servidor
Essencialmente, é usado o
protocolo request-reply
1. Um cliente faz um pedido ao
servidor e espera pela resposta
2. O servidor executa o serviço e
responde ao cliente
Vantagens Desvantagens
A distribuição de dados é fácil e direta Não prevê modelo de dados
compartilhado
Subsistemas usam diferentes
Faz uso efetivo dos recursos em rede organizações de dados
Possibilita hardware mais barato
Pode haver redundância de serviços
em diferentes servidores
É fácil adicionar novos servidores ou
Não prevê registro central de serviços
atualizar servidores existentes
Difícil descobrir quais serviços estão
disponíveis
Padrão MVC Descrição do MVC
Largamente utilizado em aplicações Separa a apresentação e a interação dos
interativas Web dados do sistema
Organiza o sistema em três Os três componentes tem responsabilidades
componentes distintas mas interagem entre si
Modelo: contém as funcionalidades e Quando é recomendado?
dados principais Quando existem várias maneiras de
Visão: responsável por apresentar os visualizar e interagir com os dados
dados ao usuário São desconhecidos (ou são voláteis) os
Controlador: trata os eventos de entrada requisitos de interação com os dados
Representação dos Papéis Vantagens
Permite que os dados sejam alterados
de forma independente de sua
representação (e vice versa)
Apóia a apresentação dos mesmos
dados de maneiras diferentes
Facilita a distribuição do componente
de visão
Os dados são mantidos centralizados e
protegidos
Desvantagens Bibliografia
Complexidade excessiva quando o Ian Sommerville. Engenharia de
modelo de dados e de interações é Software, 9a. Edição. 2011.
muito simples Cap. 6 (Seções 6.3 e 6.4)
A estrutura do padrão pode impor
código adicional desnecessário F. Buschmann et al. Pattern-Oriented
Software Architecture: A System of
Patterns. John Wiley & Sons, 1996.
Cap. 2 Architectural Patterns