Padrões Arquiteturais Pattern-Oriented Software Architecture (POSA)



Documentos relacionados
Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

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

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

2 a Lista de Exercícios

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

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

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

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

MVC e Camadas - Fragmental Bliki

Padrões. Projeto (Design) de Software

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Projeto de Arquitetura

Projeto de Arquitetura

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

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

Eduardo Bezerra. Editora Campus/Elsevier

Figura 01 Kernel de um Sistema Operacional

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Padrões de Projeto WEB e o MVC

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

Curso - Padrões de Projeto Módulo 5: Model-View- Controller

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

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

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

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

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

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

ESTUDO DE CASO WINDOWS VISTA

Sistemas Operacionais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

ARQUITETURA DE SISTEMAS. Cleviton Monteiro

UFG - Instituto de Informática

Sistemas Distribuídos

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Fundamentos de Banco de Dados

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Padrões Arquiteturais. Sistemas Distribuídos: Broker

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Service Oriented Architecture (SOA)

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

Arquitetura de Banco de Dados

Lógica de Negócio e Acesso a dados. Parte 2.2

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

Arquitetura dos Sistemas de Informação Distribuídos

Comunicando através da rede

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

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

Feature-Driven Development

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Introdução ao Design

SISTEMAS DISTRIBUIDOS

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

Sistemas Operacionais. Conceitos de um Sistema Operacional

2 Diagrama de Caso de Uso

Curso de Aprendizado Industrial Desenvolvedor WEB

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

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Documento de Arquitetura

Documento de Projeto de Sistema

5 Estudo de caso: utilizando o sistema para requisição de material

Padrões de projeto 1

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Modelos. Comunicação com clientes

Modelos de Arquiteturas. Prof. Andrêza Leite

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

O Processo de Desenvolvimento de Software

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

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

UFG - Instituto de Informática

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

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

Organização e Arquitetura de Computadores I. de Computadores

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Desenho de Software. Desenho de Software 1

Processo de Desenvolvimento de Software. Engenharia de Software.

Pós Graduação Engenharia de Software

Redes de Computadores. Prof. Dr. Rogério Galante Negri

Paradigma Cliente/Servidor

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução ao Modelos de Duas Camadas Cliente Servidor

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

Prof.: Clayton Maciel Costa

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

UFG - Instituto de Informática

Serviços Web: Introdução

3 Serviços na Web (Web services)

2 Geração Dinâmica de Conteúdo e Templates de Composição

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE

MBA Inteligência Competitiva Com ênfase em BI/CPM. Metadados

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal

1

Relatório do GPES. Arquitetura Geral do Framework

Transcrição:

Padrões Arquiteturais Pattern-Oriented Software Architecture (POSA) Prof. Alberto Costa Neto DComp/UFS

Padrões Arquiteturais Expressam esquemas fundamentais de organização estrutural do software. Provêem um conjunto de subsistemas predefinidos, especificam suas responsabilidades e relatam regras e guias para organizar as relações entre eles Padrões de alto nível (top level) Ajudam a alcançar propriedades globais, como: Adaptabilidade da GUI Portabilidade...

Categorização dos padrões arquiteturais (POSA) Estruturação (From Mud to Structure). Camadas, Pipes & Filtros e Quadro Negro. Sistemas Distribuídos Broker Referencia Microkernel e Pipes & Filtros Sistemas Interativos Model-View-Controller e Presentation-Abstraction-Control Sistemas Adaptativos Reflection e Microkernel

Sistemas são estruturados usando vários padrões arquiteturais Requerimentos diversos capturados por arquiteturas diferentes Exemplo: distribuição e flexibilidade da GUI No entanto, um padrão particular ou uma combinação de vários não é a arquitetura de software completa É um framework estrutural que deve ser refinado e especificado com mais detalhe: Integração da funcionalidade com o framework Detalhe de componentes e relacionamentos (talvez, usando padrões)

Exemplo de padrão Arquitetural Pipes e Filtros (POSA) Provê uma estrutura do sistema que processa um fluxo de dados. Cada passo de processamento é encapsulado num componente filtro. Dados são passados através de pipes entre filtros adjacentes. A recombinação de filtros permite construir famílias de sistemas relacionados.

Exemplo O compilador de uma linguagem de programação Perseguimos portabilidade de plataforma de hardware Usamos uma linguagem intermediária

Lexical analysis/scanner Syntax analysis/parser Semantic analysis Intermediate Code Generation Optimization ASCII program text token stream abstract syntax tree augmented abstract syntax tree intermediate code program intermediate code optimized program MIPS backend Intel backend RISC backend Interpreter

Contexto: Processamento de fluxo de dados (data stream) Problema: construir um sistema que processa ou transforma um fluxo de dados. Não pode ser feito num único componente. Vários desenvolvedores A tarefa é decomposta naturalmente em várias etapas de processamento Existe probabilidade de mudanças (sistema flexível)

As seguintes forças devem ser consideradas: Melhoras futuras devem ser possíveis trocando um componente ou combinando vários, ainda por usuários Componentes pequenos são mais adequados para reuso e outros contextos Diferentes fontes de dados Apresentação de resultados de diversas maneiras Armazenamento explícito de resultados intermediários Multi-processamento

Solução: Dividir a tarefa do sistemas em várias etapas de processamento seqüencial (Filtros) Etapas conectadas (por pipes) pelo fluxo de dados Filtros produzem e consumem dados de maneira incremental, habilitando a exploração de paralelismo real A seqüência de filtros combinados com pipes é chamada pipeline de processamento

Estrutura Filtros são as unidades de processamento do pipeline Filtro enriquece, refina ou transforma a entrada de dados Atividades são disparadas por: O filtro subseqüente puxa dados O filtro anterior põe dados Filtros passivos O filtro é um loop ativo, pondo e puxando dados Pipes são conexões entre filtros Pipes entre filtros ativos são buffers LIFO Chamada a função ou procedimento, se a atividade é controlada por um filtro adjacente

ativo Front End Back End

Dinâmica Cenário 1 Filter 1 e Filter 2 são passivos (procedimentos)

Cenário 2 Filter 1 e Filter 2 são passivos (funções)

Cenário 3 Filter 2 é ativo

Cenário 4 O pipe é um buffer Se dados não estão disponíveis, os filtros são suspensos

Implementação Direta usando chamadas a função ou procedimento, ou pipes de Unix Numa linguagem funcional (Haskell, por exemplo) chamadas as funções são feitas por demanda

Decisões 1. Divida as tarefas do sistema em etapas de processamento seqüencial 2. Defina os formatos dos dados a serem passados entre as etapas 3. Decida como implementar cada conexão (pipe) 4. Projete e implemente os filtros 5. Projete tratamento de erros Difícil e freqüentemente negligenciado 6. Estabelecer o pipeline de processamento

Exemplo Otimização e geração de Código Na prática, um compilador não segue o padrão estritamente (performance e compartilhamento de um estado global)

Usos conhecidos Pipes de Unix, CMS Pipelines (IBM), LASSPTools (análise numérica e gráficos)

Conseqüências Arquivos intermediários não são necessários, mas é possível Flexibilidade por troca de filtro Flexibilidade por recombinação Reuso de filtros Prototipagem rápida de filtros Eficiência por processamento paralelo Dificuldades Compartilhar informação Transformação de dados produz sobrecarga Tratamento de erros é difícil Ver também: padrão camadas

Padrões para Sistemas de Informação (Aplicações Corporativas)

Conteúdo Aplicações Corporativas (AC) Arquitetura em Camadas Camadas típicas de AC Visão geral de alguns padrões para AC

Aplicações Corporativas Exemplos: Folha de pagamentos, registro de pacientes, seguimento de vendas, análise de custos,.. Envolvem dados persistentes Grande massa de dados Acesso concorrente aos dados Muitas telas de interfaces com o usuário Integra com outras aplicações Dissonância conceitual com os dados lógica do negócio complexa

Divisão em Camadas Técnica comum para decompor um sistema complexo Linguagem de Programação Sistema Operacional Drivers e CPU Portas lógicas FTP TCP IP Ethernet Conexão Física Camada superior só usa serviços de camada imediatamente inferior Camada inferior desconhece camada superior Na prática alguns sistemas relaxam estas regras POSA descreve camadas como um padrão arquitetural

Benefícios Entendimento de uma camada sem conhecer muito das outras Pode substituir camadas com implementações alternativas dos serviços básicos Minimiza dependências entre camadas Permitem definição de standards Uma camada pode ser usada para implementar vários serviços de mais alto nível Aspectos negativos Nem tudo está bem encapsulado. Mudanças em cascata podem acontecer Muitas camadas podem interferir com a performance

Camadas típicas das Aplicações Corporativas Decidir que camadas ter e quais são as responsabilidades de cada camada é o mais difícil no projeto arquitetural As três principais camadas: Camada Apresentação Lógica do Domínio Fonte de Dados Responsabilidades Prover serviços e apresentar informação Lógica do negócio. A lógica fundamental do sistema Comunicação com BD, sistemas de mensagens e outros

Camada de Apresentação Faz a interface entre o sistema e o usuário Web, Swing, troca de arquivos,... Recebe requisições do usuário, destina para objetos de negócio, recebe e formata a resposta

Camada do Domínio É o coração do sistema Modelados os objetos do negócio que executam os processos solicitados Desejável que mapeiem objetos do mundo real Aqui é o único lugar onde as regras de negócio são executadas

Camada da Fonte de Dados Responsável por interagir com outros sistemas e por Persistir os dados Em geral, se comunica com um BD Age como um mapeador do mundo OO para o BD Serviço importante: interface para pesquisas

Considerações Camadas totalmente encapsuladas ou Apresentação acessa Dados diretamente Domínio e Dados nunca devem depender da apresentação Relação Domínio-Dados é mais complicada: depende dos padrões e ferramentas usadas Múltiplos pacotes em cada camada É difícil reconhecer o que é lógica do domínio

Outros esquemas de camadas Brown Apresentação Controlador / Mediador Domínio Mapeamento de Dados Fonte de Dados Fowler Apresentação Apresentação (Aplication Controller) Lógica do Domínio Fonte de Dados (Data Mapper) Fonte de Dados

Outros esquemas de camadas Core J2EE Cliente Apresentação Negócio Integração Fonte de Dados Fowler Apresentação que roda no cliente (clientes ricos (swing...)) Apresentação que roda no servidor (Server Pages, HTTP handlers,...) Lógica do Domínio Recursos Recursos externos (BD, outros sistemas,...)

Outros esquemas de camadas Marinescu Apresentação Aplicação Serviços Domínio Persistência Fowler Apresentação Apresentação (Application Controller) Domínio (Service Layer) Domínio (Domain Model) Fonte de Dados

Padrões para a Lógica do Domínio Transaction Script Padrão arquitetural útil em aplicações pequenas Um procedimento para cada ação que o usuário pode desejar Segue as regras da programação procedural Vantagens Modelo simples que todo mundo entende Trabalha bem com Row Data Gateway ou Table Data Gateway Desvantagens Programação procedural, baixa reusabilidade, repetição de código, não extensível

Domain Model Padrão arquitetural que usa o paradigma OO Vantagens Usa e se beneficia de todos os princípios da OO Eficaz para lógica complexa Desenvolvimento por metáfora Melhor evolução e manutenção Desvantagens Complexo Baixa produtividade Difícil mapear a um BD

Table Module Organiza a lógica do negócio baseado em tabelas mais do que procedimentos Uma instância representa todo um conjunto de registros do BD Projetado para trabalhar com Record Set Vantagens Cabe muito bem no resto da arquitetura Desvantagens Não pode usar técnicas O.O.

Escolha do padrão para a lógica de domínio

Camada de Serviço Abordagem comum: dividir a camada de Domínio em dois: Serviço e Domain Model (ou Table Model) Lógica do Domínio Apresentação Serviços Domain Model Persistência

Camada de Serviço Em geral: Façade aos objetos do domínio, orientado pelos casos de uso Controle de transação e segurança por método Provê à Apresentação uma API fácil de usar Outra possibilidade Maioria da lógica em Transaction Scripts usando simples objetos de domínio (Active Record, por exemplo)

Padrões da Camada de Serviço Façade Cria um ponto de entrada para cada processo Exemplo de processo: adicionar um usuário Criar objeto, preenchê-lo, localizar grupo, adicionar neste grupo, etc. Vantagens Expõe conceitos, não detalhes de implementação Controla bem casos de uso Permite consistência e segurança (se a única entrada é a façade) Desvantagens Limita a extensibilidade Compromete reusabilidade

Command Encapsula um processo num objeto Modelo seguido pelos frameworks MVC Vantagens Fácil de entender Operações Atômicas Desvantagens Tende à programação procedural Baixa reusabilidade Lógica de negócio vaza para dentro do Command

Padrões da Camada de Apresentação Smart UI Inclui lógica do domínio e persistência Comumente em Visual Basic, ASP e PHP Vantagens Produtividade alta Não requer desenvolvedores experientes Ferramentas RAD Desvantagens Código repetido e desorganizado, alto acoplamento, baixa coesão, nenhuma separação de responsabilidades, não escala, difícil de manter Torna-se um anti-padrão

Model-View-Controller (MVC) Três tipos de componentes View: formulários ou páginas (JSP) Controller: responde a solicitações e despacha para o Model Model: (Interface para) Objetos do Negócio

Vantagens Os modelos são completamente separados da Apresentação Conhecido e documentado Frameworks e Ferramentas disponíveis Desvantagens Ideal para Desktop. Na Web, funciona com algumas limitações Existem algumas interpretações erradas do padrão

Application Controler Em alguns casos é útil dividir a Apresentação Apresentação Apresentação Aplicação (Application Controller) Domain Model Persistência

Application Controller Manipula o fluxo da aplicação, decidindo que telas aparecem e em que ordem Útil quando há uma lógica complexa de telas. Exemplo: sistemas tipo wizard Independente da apresentação Vantagens Evita duplicação de código nos controladores de entrada Desvantagem Maior complexidade

Padrões para a camada de Dados Data Mapper / Data Access Object (DAO) Camada de mappers que move dados entre objetos e BDs, mantendo-os independentes um do outro Diferentes maneiras Algumas suportadas por ferramentas como o Hibernate ou JDO