Projeto de Arquitetura
Projeto de Arquitetura
Projeto de Arquitetura
Agenda
Introdução Estruturação do sistema Modelos de controle Decomposição em módulos Arquiteturas de domínio específico Bibliografia
Projeto de Arquitetura
Introdução
Objetivos
Explicar por que o projeto de arquitetura de software é importante Explicar por que diferentes modelos podem ser requeridos para
documentar uma arquitetura de sistema
Apresentar diferentes tipos de arquitetura de software, que abrangem
estrutura de sistema, controle e decomposição modular
Explicar como os modelos de arquitetura de domínio específico podem
ser utilizados como base para arquiteturas tipo produto de linha e para comparar implementações de arquitetura
Projeto de Arquitetura
Introdução
Projeto de Arquitetura é estabelecer uma arquitetura geral do sistema
É o processo para identificar os subsistemas que compõem um sistema e o framework de controle e de comunicação dos subsistemas
A saída do processo de projeto de arquitetura é uma descrição da arquitetura de software, Documento de Arquitetura de Software (DAS) O projeto arquitetural é um etapa inicial do projeto do sistema
Representa o link entre os processos de especificação e de projeto Freqüentemente, realizado em paralelo com as atividades de
especificação
Consiste de identificar os principais componentes do sistema e suas formas de comunicação
Projeto de Arquitetura
Introdução
Vantagens de uma Arquitetura Explícita
Comunicação com os stakeholders
Arquitetura podem ser usada como um ponto de discussão pelos
stakeholders Análise de sistema
Significa a análise de como o sistema pode atender os requisitos não funcionais
Reutilização em larga escala
Projeto de Arquitetura
Introdução
Atividades comuns nos processos de Projeto Arquitetural
Estruturação do sistema
O sistema é decomposto em vários subsistemas principais e as comunicações entre estes subsistemas são identificados
Modelagem do controle
Um modelo de relacionamento de controle entre as diferentes partes do sistema é estabelecido
Decomposição modular
Projeto de Arquitetura
Introdução
Subsistemas e Módulos
Um subsistema é um sistema cuja operação não depende dos serviços
fornecidos por outros subsistemas
Os subsistemas são compostos de módulos e têm interfaces definidas,
as quais são utilizadas para a comunicação entre subsistemas
Um módulo é geralmente um componente de sistema que fornece um ou
mais serviços para outros módulos. Ele utiliza serviços fornecidos por outros módulos e normalmente não é considerado um sistema
independente
Os módulos são compostos de uma série de outros componentes de
Projeto de Arquitetura
Introdução
Modelos de Arquitetura
Diferentes modelos arquiteturais podem ser produzidos durante o
processo de projeto
Cada modelo apresenta diferentes perspectivas da arquitetura:
Um modelo de estrutura estática que mostra os principais componentes do sistema
Um modelo de processo dinâmico que mostra como o sistema é organizado em processos em tempo de execução
Um modelo de interface que define os serviços oferecidos por cada subsistema
Modelos de relacionamento que mostram relacionamentos como fluxo de
Projeto de Arquitetura
Introdução
Estilo de Arquitetura
O modelo de arquitetura de um sistema pode ter como base um modelo
ou estilo de arquitetura genérico
O conhecimento destes estilos podem simplificar o problema de
definição do sistema
Embora, muitos sistemas grandes são heterogêneos e não seguem um
Projeto de Arquitetura
Introdução
Estilo de Arquitetura
A escolha dos estilos de arquitetura podem depender dos requisitos não funcionais do sistema
Desempenho
As operações com esta restrição devem ter operações dentro de um pequeno número de subsistemas com a menor comunicação possível entre esses subsistemas
Proteção
Os itens mais importantes devem ficas nas camadas mais internas, sendo os mas protegidos
Segurança
As operações que requerem segurança devem ficar dentro do mesmo subsistema.
Disponibilidade
A arquitetura deve ser projetada para incluir componentes redundantes, para que seja possível substituir e atualizar componentes, sem a interrupção do sistema
Manutenibilidade
A arquitetura deve ser projetada utilizando-se componentes encapsulados de menor granularidade, que possam ser rapidamente modificados
Projeto de Arquitetura
Estruturação do Sistema
Compreende a decomposição do sistema em subsistemas
O projeto da arquitetura é normalmente expresso como um diagrama de blocos, apresentando uma visão geral da estrutura do sistema
Modelos mais específicos mostrando como os subsistemas compartilham dados, como são distribuídos e como se comunicam também são
construídos
Modelo de Repositório Modelo Cliente-Servidor
Projeto de Arquitetura
Estruturação do Sistema Diagrama de Blocos – Sistema de Controle
Robotizado de Embalagem
Vision system Object identification system Arm controller Gripper controller Packaging selection system Packingsystem Conveyorcontroller
Sistema de visão
Controlador de braço Controlador de garra
Controlador de transportadora Sistema de embalagem Sistema de seleção de embalagem Sistema de identificação de objetos
Projeto de Arquitetura
Estruturação do Sistema – Modelo de Repositório
Os subsistemas devem trocar dados e podem fazê-lo de dois modos:
O dado compartilhado é mantido em um banco de dados central e pode
ser acessado por todos os subsistemas
Cada subsistema mantém seu próprio banco de dados e passa o dado
explicitamente para outros subsistemas
Quando uma grande quantidade de dados deve ser compartilhada, o modelo de repositório onde os dados são compartilhados é mais
Projeto de Arquitetura
Estruturação do Sistema – Modelo de Repositório – Arquitetura de um
Conjunto de Ferramentas CASE Integrado
Project repository Design translator Program editor Design editor Code generator Design analyser Report generator Tradutor de projeto Editor de projeto Gerador de código Editor de programa Gerador de relatório Analisador de projeto Repositório de projeto
Projeto de Arquitetura
Estruturação do Sistema – Modelo de Repositório
Vantagens:
Eficiente modo de compartilhar grande quantidade de dado
Subsistemas não necessitam ser conhecedores de como o dado é
produzido
Gerenciamento centralizado: backup, segurança, etc.
Modelo de compartilhamento é visível por meio do esquema de repositório
Desvantagens:
Subsistemas devem concordar sobre um mesmo modelo de dados A evolução dos dados é cara e difícil
Diferentes subsistemas podem ter diferentes requisitos para políticas de gerenciamento: backup, segurança, etc.
Difícil de distribuir eficientemente, podem haver problemas de
Projeto de Arquitetura
Estruturação do Sistema – Modelo Cliente-Servidor
É um modelo de sistemas distribuído, que mostra como os dados e o processamento são distribuídos em uma série de processadores
Os componentes principais são:
Um conjunto de servidores individuais, que oferece serviços a outros subsistemas, tais com impressão, gerenciamento de dados, etc.
Um conjunto de clientes que solicita os serviços oferecidos pelos
servidores
Projeto de Arquitetura
Estruturação do Sistema – Modelo Cliente-Servidor – Arquitetura de um
Sistema de Biblioteca de Filmes e Fotografias
Catalogue server Catalogue Video server Film clip files Picture server Digitized photographs Hypertext server Hypertext web Client 1 Client 2 Client 3 Client 4
Wide-bandwidth network
Cliente 1 Cliente 2 Cliente 3 Cliente 4
Servidor de hipertexto Web de hipertexto Servidor de Fotografias Fotografias digitalizadas Servidor de vídeo Arquivos de clipes de filmes Servidor de catálogo Catálogo
Projeto de Arquitetura
Estruturação do Sistema – Modelo Cliente-Servidor
Vantagens:
A distribuição dos dados é direta
Faz uso efetivo dos sistemas da rede. Podem requerer hardware mais
barato
Fácil de acrescentar novos servidores ou melhorar os servidores
existentes
Desvantagens:
Não há nenhum modelo de dados compartilhado, os subsistemas usam
diferentes organizações de dados. A troca de dados pode ser ineficiente
Pode haver gerenciamento redundante em cada servidor
Nenhum registro central de nomes e serviços, pode ser difícil achar um
Projeto de Arquitetura
Estruturação do Sistema – Modelo de Máquina Abstrata
Mais conhecido como Modelo em Camadas
Usado para modelar as interfaces dos subsistemas
Organiza um sistema em uma série de camada, cada uma fornece um conjunto de serviços
Suporta o desenvolvimento incremental de subsistemas em diferentes camadas. Quando a interface de uma camada muda, somente as
camadas adjacentes são afetadas
Projeto de Arquitetura
Gerenciamento de Versões
Gerenciamento de Objetos
Sistema de Banco de Dados
Estruturação do Sistema – Modelo de Máquina Abstrata – Um Sistema
de Gerenciamento de Versões
Projeto de Arquitetura
Modelos de Controle
Está relacionado com o o fluxo de controle entre os subsistemas. Complementa os modelos estruturais
Duas abordagens:
Controle Centralizado
Um subsistema tem toda a responsabilidade de controlar, iniciar e parar os
outros subsistemas
Controle Baseado em Eventos
Cada subsistema pode responder a eventos gerados externamente a partir de outros subsistemas ou ambiente de outros sistemas
Projeto de Arquitetura
Modelos de Controle – Controle Centralizado
Um subsistema de controle assume a responsabilidade de gerenciar a execução dos outros subsistemas
Dividi-se em duas classes:
Modelo de Retorno de Chamadas
Conhecido como modelo de sub-rotinas Top-down, onde o controle inicia no
topo de uma hierarquia de sub-rotinas e passa para as rotinas mais baixas. Aplicável a sistemas seqüenciais
Modelo Gerenciador
Aplicável a sistemas concorrentes. Um componente de sistema controla a
parada, o início e a coordenação de outros processos dos sistemas. Uma variação deste modelo pode também ser implementado em sistemas seqüenciais
Projeto de Arquitetura
Modelos de Controle – Controle Centralizado – Modelo de Retorno de
Chamadas
Routine 1.2
Routine 1.1 Routine 3.1 Routine 3.2 Routine 2 Routine 3 Routine 1 Main program Programa principal
Rotina 1 Rotina 2 Rotina 3
Projeto de Arquitetura
Modelos de Controle – Controle Centralizado – Sistema de Tempo Real
System
controller
User
interface
Fault
handler
Computation
processes
Actuator
processes
Sensor
processes
Processos de sensor Processos de atuador Processos computacionais Interfaces com usuário Manipulador de defeitos Controlador de sistemaProjeto de Arquitetura
Modelos de Controle – Controle Baseado em Eventos
O controle dos subsistemas é baseado em eventos gerados externamente 2 principais modelos baseados em eventos:
Modelos de transmissão
Um evento é transmitido a todos os subsistemas e aqueles que podem
manipular esse evento responderá a ele
Modelos orientados a interrupções:
Usado em sistemas de tempo real, onde interrupções são detectadas por um manipulador de interrupções e repassadas a algum outro componente para processamento
Outros exemplos de modelos são as planilhas de cálculo e sistemas de produção com inteligência artificial
Projeto de Arquitetura
Modelos de Controle – Controle Baseado em Eventos – Modelo de
Transmissão
Efetivo na integração de subsistemas em diferentes computadores em uma rede
Subsistemas registram interesses em eventos específicos. Quando os eventos ocorrem, o controle é transferido para um subsistema que trata o evento
A política de controle não está no evento ou no manipulador de
mensagens. São os subsistemas que decidem quais eventos são de seu interesse
Projeto de Arquitetura
Modelos de Controle – Controle Baseado em Eventos – Modelo de
Transmissão – Modelo de Controle com base em Transmissão
Seletiva
Sub-system 1 Eventandmessagehandler Sub-system 2 Sub-s3ystem Sub-s4ystemSubsistema 1 Subsistema 2 Subsistema 3 Subsistema 4
Projeto de Arquitetura
Modelos de Controle – Controle Baseado em Eventos – Modelo
Orientado a Interrupções
Usado em sistemas de tempo real, onde respostas rápidas aos eventos e essencial
Existem tipos de interrupções conhecidas com um manipulador definido para cada tipo
Cada tipo de interrupção está associado com uma localização de
memória que contém o endereço do manipulador e, quando ocorre um evento, um comutador de hardware provoca a transferência de controle imediatamente para seu manipulador
Permitem respostas rápidas, mas são necessários programas complexos e difíceis de validar
Projeto de Arquitetura
Modelos de Controle – Controle Baseado em Eventos – Modelo
Orientado a Interrupções
Handler 1 Handler 2 Handler 3 Handler 4 Process 1 Process 2 Process 3 Process 4 Interrupts Interrupt vector Interrupções Vetor de interrupção Manipulador 1 Manipulador 2 Manipulador 3 Manipulador 4 Processo 1 Processo 2 Processo 3 Processo 4Projeto de Arquitetura
Decomposição em Módulos
Depois que uma arquitetura estrutural foi projetada, a decomposição dos subsistemas em módulos é realizada
2 modelos de decomposição modular:
Um modelo de objetos, onde o sistema é decomposto em objetos que
interagem uns com os outros
Um modelo de fluxo de dados, onde o sistema é decomposto em modelos
funcionais, que transformam dados de entrada em saídas. Também conhecidos como modelo pipeline
Projeto de Arquitetura
Decomposição em Módulos – Modelos de Objetos
Estrutura o sistema em um conjunto de objetos fracamente acoplados com interfaces bem definidas
Decomposição orientada a objetos está relacionada com a identificação de classes de objetos, seus atributos e operações
Quando implementados, objetos são criados a partir destas classes e um modelo de controle é usado para coordenar a troca de mensagens entre os objetos
Projeto de Arquitetura
Decomposição em Módulos – Modelos de Objetos – Sistema de
Processamento de Faturas
issue () sendReminder () acceptPayment () sendReceipt () invoice# date amount customer Invoice invoice# date amount customer# Receipt invoice# date amount customer# Payment customer# name address credit period CustomerProjeto de Arquitetura
Decomposição em Módulos – Modelos de Fluxo de Dados
Transformações funcionais processam suas entradas e produzem saídas Conhecido também como modelo “Pipe and Filter”
Os dados fluem de uma transformação para outra, sendo transformados à medida que se movimentam ao longo da seqüência
Projeto de Arquitetura
Decomposição em Módulos – Modelos de Fluxo de Dados – Sistema de
Processamento de Faturas
Read issued invoices Identify payments Issue receipts Find payments due Receipts Issue payment reminder Reminders Invoices Payments Faturas Pagamentos Recibos Avisos Ler faturas emitidas Identificar pagamentos Emitir recibos Encontrar Pagamentos devidos Emitir avisos de pagamentoProjeto de Arquitetura
Arquiteturas de Domínio Específico
Modelos de arquitetura que são específicos de algum domínio de aplicação
Dois tipos de modelos específicos de domínio
Modelos genéricos, que são abstrações de um conjunto de sistemas
reais e que encapsulam as características principais destes sistemas
Modelos de referência, que são abstrações de modelos idealizados e
abstratos.
Modelos genéricos são geralmente modelos botton-up e os modelos de referência são modelos top-down
Projeto de Arquitetura
Arquiteturas de Domínio Específico – Modelos Genéricos
São abstrações de um conjunto de sistemas reais e que encapsulam as características principais destes sistemas
O modelo de compilador é um ótimo exemplo:
Analisador Léxico Tabela de Símbolos Analisador Sintático Árvore Sintática Analisador Semântico Gerador de Código
O modelo do compilador genérico podem ser organizado em diferentes modelos arquiteturais
Projeto de Arquitetura
Arquiteturas de Domínio Específico – Modelos Genéricos – Fluxo de Dados
de um Compilador
Lexical
analysis
Syntactic
analysis
Semantic
analysis
Code
generation
Symbol
table
Tabela de símbolos Análise léxica Análise sintática Análise semântica Geração de códigoProjeto de Arquitetura
Arquiteturas de Domínio Específico – Modelos Genéricos – Modelo de
Repositório de um Sistema de Processamento de Linguagens
Syntax analyser Lexical analyser Semantic analyser Abstract syntax tree Grammar definition Symbol table Output definition Pretty-printer Editor Optimizer Code generator RepositoryRepositório Árvore de sintaxe abstrata Definição gramatical Tabela de símbolos Definição de saída Editor Impressora Analisador léxico Analisador sintático Analisador semântico Otimizador Gerador de código
Projeto de Arquitetura
Arquiteturas de Domínio Específico – Arquiteturas de Referência
Modelos de referência são derivados do estudo de um domínio de aplicação ao invés de sistemas existentes
Pode ser usado como uma base para implementação de sistemas ou para comparar sistemas diferentes. Agem como padrões contra os quais os sistemas podem ser avaliados
Projeto de Arquitetura
Arquiteturas de Domínio Específico – Arquiteturas de Referência –
Modelo de Referência OSI
A
pplication
Presentation
Session
Transport
N
etw
ork
D
ata link
Physical
7
6
5
4
3
2
1
Comm
unications medium
N
etw
ork
D
ata link
Physical
A
pplication
Presentation
Session
Transport
N
etw
ork
D
ata link
Physical
Meios de comunicaçãoFísica Física Física
Ligação Ligação Ligação
Rede Rede Rede
Transporte Transporte
Sessão Sessão
Apresentação Apresentação
Projeto de Arquitetura
Bibliografia
Sommerville, Ian. Engenharia de Software, 6a. edição. Addison Wesley, 2004