Buscar

Aula 09 Estilos Arquiteturais

Prévia do material em texto

Estilos Arquiteturais
Marcos Dósea
dosea@ufs.br
Atualizado por:
Breno Santos
breno.itatechjr@gmail.com
Agenda
• Motivação.
• O que é arquitetura de software?
• Qual a importância?
• Visões da arquitetura.
• Como definir a arquitetura?
Motivação
• Arquitetar uma casinha de cachorro…
– Pode ser construída por 1 pessoa.
– Modelagem simplificada.
– Processo simples.
– Ferramentas simples.
Motivação
• Arquitetar um prédio…
– Necessidade de um time.
– Requer maior modelagem.
– Processo mais bem definido.
– Ferramentas poderosas.
• Estabelece o contexto para o design e
implementação.
• Decisões arquiteturais são as mais
significantes.
O que é arquitetura de 
software?
CÓDIGO
implementação
design
arquitetura
Visões da Arquitetura
Visão de 
Implementação
Visão
Lógica
Visão de 
Distribuição
Visão de 
Processos
Visão de Casos 
de Uso
Analista de 
Sistemas
Funcionalidade
Programadores
Arquiteto
Escalabilidade,
Performance,
Eficiência
Topologia, 
Implantação, 
comunicação
Arquiteto
Estrutura, 
componentes
Arquiteto
Como definir a arquitetura?
• Definindo quais padrões utilizar…
Estilo Arquitetural
Padrões de Design
Idiomas
Estilos Arquiteturais
Define uma família de sistemas em termos
de um padrão de organização estrutural
(Shaw, 1996). Define um vocabulário de
componentes, tipos de conectores e um
conjunto de restrições que indica como os
elementos são combinados.
Estilos Arquiteturais
• Fluxo de Dados.
• Chamada Retorno.
• Componentes Independentes.
• Máquina Virtual.
• Centrado nos Dados.
Fluxo de Dados
O sistema realiza uma série de 
transformações sucessivas
sobre uma cadeia de dados. A 
meta é reuso e modificabilidade.
Fluxo de Dados
• Batch:
– Programas independentes executados em
sequência.
– Dado transmitido por completo entre um
programa e outro.
Jar JavaJavac
class{
}
Arquivos fonte
A$n3*
3N4*#
Bytecode
000
1001
1001
Arquivo Jar
executandoEmpacotandoCompilando
Estilos Arquiteturais
• Pipes and Filters:
Código-fonte Analisador
Léxico
Analisador
Sintático
Analisador
Semântico
Gerador de
código
intermediário
Otimizador
Intel backend
MIPS backend
SPARC backend
tokens Árvore sintática Árvore sintática c/ semântica
ExecutávelExecutável otimizado
Estilos Arquiteturais
• Fluxo de Dados > Pipes and Filters:
– Transformação sequencial dos dados
efetuada por vários componentes (filtros)
em sucessão.
– Os filtros realizam o processamento dos
dados de entrada.
– Pipes conectam os filtros, transmitido os
dados de saída de um filtro para as
entradas de outro.
Estilos Arquiteturais
• Fluxo de Dados > Pipes and Filters:
– Dificuldade para interatividade e
cooperação entre os filtros.
– Baixa performance.
• Melhorada através de buffers ou paralelização
do sistema.
Estilos Arquiteturais
• Fluxo de Dados.
• Chamada Retorno.
• Componentes Independentes.
• Máquina Virtual.
• Centrado nos Dados.
Chamada Retorno
Criam sistemas modificáveis e 
escaláveis. Maior parte dos 
sistemas utilizam essa abordagem.
Chamada Retorno
• Programa Principal / Subrotina:
Programa principal
Subrotina 3Subrotina 1 Subrotina 2
Chamada Retorno
• Programa Principal/Subrotina:
– Reutilização de subrotinas.
– Desenvolvimento independente de
subrotinas.
Chamada Retorno
• Invocação Remota de Procedimento:
Programa principal
Subrotina 1 Subrotina 2
192.168.10.11
Subrotina 3
192.168.10.8
Chamada Retorno
• Invocação Remota de Procedimento:
– Subrotinas executam em outras máquinas
conectadas a rede.
Chamada Retorno
• Camadas (Layered):
Aplicação
Apresentação
Sessão
Transporte
Rede
Dados
Física
Apresentação
Negócio
Armazenamento
ISO-OSI
Clássica
3 camadas
Chamada Retorno
• Camadas (Layered):
– Camadas se comunicam apenas com as
camadas adjacentes.
– Alterações locais não são propagadas.
– Fácil manutenção.
– Problemas de desempenho e comunicação.
– Torna a implementação e testes de
sistemas mais complexo.
Chamada Retorno
• Camadas (Layered) > MVC:
– Basicamente, é composto por 3 camadas.
– Padrão comportamental.
– Cada camada possui sua responsabilidade.
– Fácil manutenção e implementação.
– Amplamente aceito.
Chamada Retorno
• Camadas (Layered) > MVC:
Estilos Arquiteturais
• Fluxo de Dados.
• Chamada Retorno.
• Componentes Independentes.
• Máquina Virtual.
• Centrado nos Dados.
Componentes Independentes
• Comunicação de Processos:
– Baseado na comunicação via troca de
mensagens entre processos.
– Em geral, ocorre via rede.
• Cliente–Servidor.
• Ponto-a-Ponto.
Componentes Independentes
• Comunicação de Processos > Cliente-
Servidor:
– Alta dependência do servidor.
Clientes
Servidor
Aplicação: Internet
Componentes Independentes
• Comunicação de Processos > Ponto-a-
Ponto:
– Não há distinção entre nós.
– Cada nó é cliente e servidor ao mesmo
tempo.
– Cada nó mantém seus próprios dados e
endereços conhecidos.
Componentes Independentes
• Baseados em Eventos (Invocação
Implícita):
– Produtores e consumidores independentes.
– Procedimentos disparados via mudança de
estado.
– Escalabilidade no número de interessados.
menuDown
onMouseOver
onMouseClick
onMousePressed
onMouseReleased
onKeyUp
Estilos Arquiteturais
• Fluxo de Dados.
• Chamada Retorno.
• Componentes Independentes.
• Máquina Virtual.
• Centrado nos Dados.
Máquina Virtual
• Interpretador:
– Simular funcinalidade não nativa para obter
portabilidade.
public class Oi{
...
}
Arquivo “Oi.java”
Compilador Java
“javac.exe”
Êþº¾ 1 <init> ()V 
Code LineNumberTable
main ([Ljava/lang/String;)...
Arquivo “Oi.class”
bytecode
Máquina
Virtual
Máquina
Virtual
Máquina
Virtual
Máquina
Virtual
INTERPRETA
Máquina
Virtual
Máquina Virtual
• Baseado em Regras:
– Conjunto de regras sobre um estado.
– Definição do estado atual com base em
dados de entrada.
– Regras alteram o estado.
Máquina Virtual
• Baseado em Regras:
– Exemplo: Prolog, Sistemas Especialistas.
SE “HORA=21:00” 
ENTÃO “AÇÃO=LANCHE”
SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR”
SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR”
SE “HORA=19:00”
ENTÃO “AÇÃO=COMEÇAR”
HORA = ?
AÇÃO = ?
Máquina de
inferência
HORA=18:00
Base de Regras
Memória de trabalho
Estilos Arquiteturais
• Fluxo de Dados.
• Chamada Retorno.
• Componentes Independentes.
• Máquina Virtual.
• Centrado nos Dados.
Centrado nos Dados
• Repositório (Banco de Dados):
– Clientes operam sobre os dados.
– Integridade dos dados.
– Maior escalabilidade para incluir novos
clientes.
Dados 
compartilhados
Cliente 1
Cliente 2
Cliente 3
Cliente n
Estado atual
consistente
Centrado nos Dados
• Quadro Negro:
2 x (3+2)2 + 3 - 6 = ?
Sei somar!
Sei multiplicar!
Sei subtrair!
Sei 
exponencial!
+
-x
Controlador
Centrado nos Dados
• Quadro Negro:
Quadro Negro
Ap 4
Ap 5
Ap n
Ap 3
Ap 2
Ap 1
Controlador
Centrado nos Dados
• Quadro Negro:
– Sistemas complexos.
• Resolução distribuída de problemas.
– Aplicações independentes.
• Escalabilidade.
– Grande problema, se ocorrer falhas no 
quadro negro.
– Bastante utilizada no paradigma de agentes.
Vamos pensar um pouco…
• Estilos arquiteturais devem ser
utilizados de forma independente?
• Quais estilos arquiteturais poderiam ser
utilizadas na aplicação que estásendo
desenvolvida pela equipe?
Referências
• Garlan, D. Shaw, M. An Introduction to
Software Architecture. 1994. Diposnível
no link.
• Software Engineering Institute
Publications. Disponível no link.

Continue navegando