Padrões Arquiteturais em Sistemas com Interfaces

Propaganda
Padrões Arquiteturais em Sistemas
com Interfaces de Usuário
Jair C Leite
Objetivos
• Apresentar exemplos de padrões
arquiteturais para sistemas com interfaces
de usuário
• O foco será nos sistemas com interfaces
de usuário gráficas (IU)
• Discutiremos possibilidades de aplicação
das soluções em IU múltiplas plataformas.
Arquitetura de Software, © Jair C Leite
1
Conceitos – 1/2
• Sistemas Interativos
– Sistema que realizam interação durante a execução
– Nosso foco: interação com usuário
• Interfaces de Usuário
– Parte do Sistema com a qual o usuário tem contato físico,
perceptivo e cognitivo
Arquitetura de Software, © Jair C Leite
Conceitos – 2/2
• Elementos da IU
– Hardware da IU
• Monitor, teclado, mouse, alto-falantes, joystick, ...
– Software da IU
• BIOS, sistemas de janelas, ferramentas, ...
• Visões da IU
– Externa – visão do usuário
• Janelas, menus, ícones, sons, comandos, formulários, ...
– Interna – visão do designer
• Arquitetura de software da IU, framework de IU, código fonte, ...
Software da IU
Designer
JFrame frame =
new JFrame(“MyWindow");
Hardware
da IU
Usuário
Arquitetura de Software, © Jair C Leite
2
Arquitetura em interfaces texto
• Aplicações interagem
através de operações de
entrada e saída (E/S)
• Interpretadores de
comandos são exemplos
de aplicações
• Linguagens de
programação oferecem
APIs que utilizam essas
funções
• O sistema operacional
utiliza a BIOS e oferece
funções de E/S
• A BIOS faz as operações
básicas de E/S
Aplicações
do usuário
Interpretador
de comandos
(shell)
API
Funções de E/S
Sistema
operacional
(SO)
BIOS
Arquitetura de Software, © Jair C Leite
Arquitetura de aplicações com IU texto
• Aplicações
convencionais
– Organizadas de forma
hierárquica
– Chamadas E/S
incluídas no núcleo
funcional
– Difícil
manutenibilidade e
portabilidade
Aplicação
do usuário
API
printf();
scanf();
Arquitetura de Software, © Jair C Leite
3
Arquitetura de interpretadores de comandos
• Três camadas
– Semântica
• Interpreta os comandos
e chama as aplicações
correspondentes
– Sintática
• Analisa se a forma dos
comandos está correta
• Monta as respostas
– Léxica
• Ler caracteres e strings
• Escreve respostas
Interpretador de comandos
Interpretador de comandos
Analisador
sintático
read
Gerador de
mens. erros
write
Sistema operacional (SO)
Funções de E/S
Arquitetura de Software, © Jair C Leite
Programação baseada em ciclo de leitura e
avaliação
repeat
read-event(myevent)
case myevent.type
type_1:
do type_1 processing
type_2:
do type_2 processing
...
type_n:
do type_n processing
end case
end repeat
Arquitetura de Software, © Jair C Leite
4
Requisitos para interfaces gráficas
• Hardware
– Monitor e placa gráfica com mapeamento de bits –
pixels
– Acionadores da placa (device drivers)
– Independência de dispositivos
• Interação
– Usuário utiliza várias aplicações ao mesmo tempo
– Processos independentes e correntes
– As diferentes aplicações devem responder à eventos
do usuários
Arquitetura de Software, © Jair C Leite
Arquitetura de sistemas de janelas
• Dois componentes
importantes permitem
– Independência de
dispositivos
• PostScript (MacOS X,
NextStep)
• Graphical Kernel
System (GKS)
• Programmers'
Hierarchical Interface to
Graphics (PHIGS)
– Controle de múltiplas
aplicações
• Notificador
Arquitetura de Software, © Jair C Leite
5
Arquitetura cliente-servidor no X Window
• As diferentes
aplicações (clientes)
podem ser exibidas
num mesmo dispositivo
• Cada máquina possui
um servidor X para
controlar os
dispositivos:
– Gerencia os recursos
para as diferentes
aplicações
– Interage com os
dispositivos
Arquitetura de Software, © Jair C Leite
Arquitetura do X Windows
• O protocolo X define a
comunicação entre a
aplicação cliente e o
servidor X
• O gerenciador de
janelas é uma
aplicação cliente que
controla o look-andfeel:
– o foco em uma janela
– como ocorre a
sobreposição entre
janelas
– a aparência das
janelas
Arquitetura de Software, © Jair C Leite
6
Programação baseada em notificação
void main(String[] args) {
Menu menu = new Menu();
menu.setOption(“Save”);
menu.setOption(“Quit”);
menu.setAction(“Save”,mySave)
menu.setAction(“Quit”,myQuit)
...
}
int mySave(Event e) {
// save the current file
}
int myQuit(Event e) {
// close down
}
Arquitetura de Software, © Jair C Leite
Arquitetura genérica para sistemas
interativos
Interface
Software
da
Componentes Sistema
de
da interface
Janelas
aplicação
Sistema
Opera-
Hardware
cional
Software
Usuário
Sistema Interativo
Arquitetura de Software, © Jair C Leite
7
Ferramentas de interface
• Toolkits
– APIs que permitem a implementação de componentes da interface
– GTK, QT, Java AWT, Java Swing, MFC, Motif, ...
• Ferramentas de alto-nível
– Ambientes de desenvolvimento visual da interface
– Microsoft Visual Studio, Netbeans, Interface builder, ...
Software da Interface
Software
da
Sistema
Componentes
da interface
Sistema
de
Toolkits Janelas
aplicação
Operacional
Hardware
Ferramentas de alto
nível
Arquitetura de Software, © Jair C Leite
Diferentes visões de arquitetura de SI
• Visão de desenvolvimento
– Normalmente são organizados em camadas de abstração –
estilo camadas
– Oferece diferentes níveis de abstração para o desenvolvedor
– Equivalente à:
• Visão de módulos no Siemens 4 Views
• Visão de implementação no RUP 4+1
• Visão de execução
– Normalmente possuem três componentes:
• Aplicação, Diálogo e Apresentação
– Descreve o fluxo de controle entre o software da interface e da
aplicação
– Equivalente à:
• Visão de execução no Siemens 4 Views
• Visão de implantação no RUP 4+1
Arquitetura de Software, © Jair C Leite
8
Camadas de abstração - MS Windows
Aplicação para Windows
Borland (OWL)
Object Windows
Library
Windows API
(Win32)
DOS
Aplicação para Windows
Microsoft
Foundation Class
Windows API
DOS
(Win32)
Arquitetura de Software, © Jair C Leite
Camadas de abstração no X/Unix/Linux
Aplicação XWindow/Unix
Aplicação Motif
(cliente)
Aplicação OPENLOOK
(cliente)
Motif Widgets
XView
XLib
XLib
Unix
Unix
Servidor X
Protocolo X
Dispositivos
Arquitetura de Software, © Jair C Leite
9
Camadas de abstração no Mac OS X
User experience
Aqua
Dashboard
Spotlight
Accessibility
Application Frameworks
Cocoa
Carbon
Java
Graphics and media
Quicktime
Core Video
Core Audio
OpenGL
Core Image
Darwin
Arquitetura de Software, © Jair C Leite
Padrão Layers (Camadas)
• Contexto: Um sistema
complexo que requer
decomposição.
• Problema: Decompor um
sistema e aumentado a
abstração diminuindo as
dependências entre as partes.
• Solução: Decompor em
camadas de abstração de
forma que uma camada não
depende da superior e utiliza
serviços apenas da camada
imediatamente inferior.
Cliente
<<usa>>
Camada n
Camada n-1
Camada 1
Arquitetura de Software, © Jair C Leite
10
Padrão Layers (Camadas) – visão de
implementação em UML
<<camada>>
<<camada>>
<<camada>> é
um estereótipo
de pacotes
Camada n
<<camada>>
Camada n-1
<<camada>>
<<camada>>
Componentes executáveis –
exe, jar, lib, dll, etc.
Arquitetura de Software, © Jair C Leite
Padrão Layers (Camadas) – visão lógica
em UML
Classes
organizadas
em camadas
<<camada>>
<<camada>>
Camada n
<<camada>>
Camada n-1
<<camada>>
<<camada>>
Diagrama de classes
Arquitetura de Software, © Jair C Leite
11
Evolução das Arquiteturas de GIU
Fonte: Kazman, M & Bass, L. “Software Architectures for HumanComputer Interaction: Analysis and Construction”
Arquitetura de Software, © Jair C Leite
Modelos de arquitetura de SI – visão
execução
• Modelo Linguístico:
– Léxico, sintático e semântico
• Modelo Seeheim:
presentation
dialogue
application
• Modelo Arch/Slinky
dialogue
func. core
adaptor
functional
core
lexical
physical
Fonte: Dix et. al.,
Arquitetura de Software, © Jair C Leite
12
Seeheim model
USER
USER
lexical
syntactic
semantic
Presentation
Dialogue
Control
Functionality
(application
interface)
APPLICATION
switch
Arquitetura de Software, © Jair C Leite
Arch/Slinky
• Acrescenta mais camadas
– Acrescenta a camada física
– Acrescenta um adaptador entre diálogo um núcleo
funcional
dialogue
func. core
adaptor
functional
core
lexical
physical
Arquitetura de Software, © Jair C Leite
13
MVC – model-view-controller
view
model
controller
Arquitetura de Software, © Jair C Leite
Padrão Model-View-Controler - MVC
•
•
•
Contexto: Aplicações interativas com interfaces de usuário gráficas
flexíveis e controladas pelo usuários.
Problema: Interfaces gráficas precisam representar uma mesma interface
em diferentes janelas. O usuário deve poder tomar a iniciativa de controle
de entrada e mudanças dos dados. Todas as janelas devem ser
atualizadas sempre que houver mudanças nos dados.
Solução: Utilizar o padrão Observer e estendê-lo para permitir o controle
das janelas baseado-em-eventos. O Padrão MVC estende o Observer
incorporando um elemento controlador (Controller). O MVC foi introduzido
originalmente no Smalltalk-80.
A BC
A = 50%
B = 30%
C = 20%
Arquitetura de Software, © Jair C Leite
14
Padrão MVC – estrutura
1..*
update
Observer
Upadate( )
Model
coreData
observers
Attach(Observer)
Detach(Observer)
Notify ( )
View
Controller
myModel
myController
create
getData
Service( )
Attach Initialize(Model)
getData makeController( )
Activate( )
Display()
Update()
myModel
myView
Initalize(Model,View)
handleEvent( )
Update( )
Attach
callService
Arquitetura de Software, © Jair C Leite
Padrão MVC – dinâmica
:main
m:Model
v:View
Initialize(m)
Attach(v)
makeController( )
v:Controller
Initialize(m,v)
Attach(c)
startEventProcessing
handleEvent( )
Service( )
Update( )
Display( )
getData( )
Update( )
getData( )
Arquitetura de Software, © Jair C Leite
15
PAC - presentation–abstraction-control
• PAC baseado no Seeheim
– abstraction – estado lógico do agente
– presentation – controle da interação
– control – relacionamento entre abstração e apresenta
• Permite gerenciamento de multiplas visualizações de
uma forma hierárquica
control
abstraction
presentation
Arquitetura de Software, © Jair C Leite
Padrão PAC – Presentation-AbstractionControl
• Contexto
– Desenvolvimento de
aplicações interativas
baseadas em agentes
• Problema
– O sistema é baseado em
agentes e é importante
separar as responsabilidades
e permitir decomposição
horizontal e vertical
• Solução
– Estruturar o sistema como
hierarquia de agentes
cooperativos (agentes PAC).
– Deverá haver:
• Um agente de nível topo,
• Vários agentes de nível
intermediário
• Vários agentes de nível base
Arquitetura de Software, © Jair C Leite
16
PAC – organização em camadas
• O PAC organiza agentes em camadas
• Cada agente segue o MVC
Arquitetura de Software, © Jair C Leite
Estrutura do PAC
• Agente nível-topo:
– Prover a
funcionalidade
principal
– Controlar a
hierarquia de
agentes
• Agentes nível
intermediário
– Coordenadar os
agentes nível base
– Compor agentes
bases em uma
única unidade mais
abstrata
• Agentes nível base
– Prover uma visão
específica
– Prover uma serviço
do sistema
Arquitetura de Software, © Jair C Leite
17
Estrutura de um agente PAC
• O agente base deve
possui componentes:
– Presentation
ViewCoordinator
• Visualização e
interação com o usuário
– Control
• Interação com o
componente de nível
intermediário
– Abstraction
• Mantém informações
sobre os dados a
serem exibidos
Arquitetura de Software, © Jair C Leite
18
Download