• Nenhum resultado encontrado

Padrões Arquiteturais em Sistemas com Interfaces de Usuário

N/A
N/A
Protected

Academic year: 2021

Share "Padrões Arquiteturais em Sistemas com Interfaces de Usuário"

Copied!
18
0
0

Texto

(1)

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.

(2)

Arquitetura de Software, © Jair C Leite

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

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, ...

JFrame frame = new JFrame(“MyWindow"); Software da IU Hardware da IU Designer Usuário

(3)

Arquitetura de Software, © Jair C Leite

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

Interpretador de comandos (shell) BIOS Sistema operacional (SO) Funções de E/S Aplicações do usuário API

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

printf(); scanf(); API Aplicação do usuário

(4)

Arquitetura de Software, © Jair C Leite

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

Sistema operacional (SO) Funções de E/S Interpretador de comandos read write Analisador sintático Gerador de mens. erros Interpretador de comandos

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

(5)

Arquitetura de Software, © Jair C Leite

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 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

(6)

Arquitetura de Software, © Jair C Leite

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 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-and-feel:

– o foco em uma janela – como ocorre a

sobreposição entre janelas

– a aparência das janelas

(7)

Arquitetura de Software, © Jair C Leite

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 genérica para sistemas

interativos

Software da aplicação Interface Componentes da interface Sistema de Janelas Sistema Opera-cional Hardware

Sistema Interativo

Software Usuário

(8)

Arquitetura de Software, © Jair C Leite

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 Componentes da interface Software da aplicação Sistema de Janelas Toolkits Ferramen-tas de alto nível Opera-cional Hardware Sistema

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

(9)

Arquitetura de Software, © Jair C Leite

Aplicação para Windows

DOS

Windows API

Aplicação para Windows

DOS Borland (OWL) Object Windows Library Microsoft Foundation Class

Camadas de abstração - MS Windows

Windows API (Win32) (Win32)

Aplicação XWindow/Unix

Aplicação Motif Unix Aplicação OPENLOOK Unix

Motif Widgets XView

XLib XLib (cliente) (cliente) Servidor X Dispositivos Protocolo X

(10)

Arquitetura de Software, © Jair C Leite

Camadas de abstração no Mac OS X

Darwin Graphics and media

Quicktime Core Audio Core Video Core Image OpenGL Application Frameworks

Cocoa Carbon Java

User experience

Aqua Dashboard Spotlight Accessibility

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 Camada n

Camada n-1

Camada 1

(11)

Arquitetura de Software, © Jair C Leite

Padrão Layers (Camadas) – visão de

implementação em UML

<<camada>> <<camada>> <<camada>> <<camada>> <<camada>> Camada n Camada n-1 <<camada>> é um estereótipo de pacotes Componentes executáveis – exe, jar, lib, dll, etc.

Padrão Layers (Camadas) – visão lógica

em UML

<<camada>> <<camada>> <<camada>> <<camada>> <<camada>> Camada n Camada n-1 Classes organizadas em camadas Diagrama de classes

(12)

Arquitetura de Software, © Jair C Leite

Evolução das Arquiteturas de GIU

Fonte: Kazman, M & Bass, L. “Software Architectures for Human-Computer Interaction: Analysis and Construction”

Modelos de arquitetura de SI – visão

execução

• Modelo Linguístico:

– Léxico, sintático e semântico

• Modelo Seeheim:

• Modelo Arch/Slinky

presentation dialogue application

dialogue lexical physical functional core func. core adaptor

(13)

Arquitetura de Software, © Jair C Leite

Seeheim model

Presentation DialogueControl

Functionality (application

interface)

USERUSER APPLICATION

switch

lexical syntactic semantic

Arch/Slinky

• Acrescenta mais camadas

– Acrescenta a camada física

– Acrescenta um adaptador entre diálogo um núcleo

funcional

dialogue lexical physical functional core func. core adaptor

(14)

Arquitetura de Software, © Jair C Leite

MVC – model-view-controller

model

view

controller

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 = 50% B = 30% C = 20%

(15)

Arquitetura de Software, © Jair C Leite

Padrão MVC – estrutura

Model coreData observers Attach(Observer) Detach(Observer) Notify ( ) getData Service( ) View myModel myController Initialize(Model) makeController( ) Activate( ) Display() Update() Controller myModel myView Initalize(Model,View) handleEvent( ) Update( ) Observer Upadate( ) 1..* update Attach getData create Attach callService

Padrão MVC – dinâmica

m:Model :main v:View v:Controller Initialize(m) Attach(v) Initialize(m,v) Attach(c) startEventProcessing handleEvent( ) Service( ) Update( ) Display( ) getData( ) makeController( ) Update( )

(16)

Arquitetura de Software, © Jair C Leite

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

abstraction

presentation

control

Padrão PAC –

Presentation-Abstraction-Control

• 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

(17)

Arquitetura de Software, © Jair C Leite

PAC – organização em camadas

• O PAC organiza agentes em camadas

• Cada agente segue o MVC

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

(18)

Arquitetura de Software, © Jair C Leite

Estrutura de um agente PAC

• O agente base deve

possui componentes:

– Presentation

• 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 ViewCoordinator

Referências

Documentos relacionados

Diante disso, o projeto Colmeias surge como meio facilitador para a incorporação de um programa social como ferramenta para o desenvolvimento dos grupos de apicultores

Os resultados indicaram uma grande variação dos perfis ao longo do período monitorado, especialmente nos valores de largura e estoque sedimentar da praia

01 (um) dia de trabalho de cada empregado, pelo valor vigente no mês anterior ao do recolhimento, ficando estipulado que nenhuma das parcelas poderá ser de valor inferior a R$

[r]

VIVIANE APARECIDA LOPES OLIVEIRA 0002087. WECERLY PIRES

Os municípios vêm ocupando cada vez mais espaço no campo da segurança pública no Brasil e, como parte desse movimento, as guardas municipais podem ser consideradas uma

Quando não for possível resolver o problema com o envio do chaveiro ou na indisponibilidade deste profissional, fica garantido o reboque do veículo para um local, à

A Figura na Arte Contemporânea, Espaço Getúlio Vargas, São Paulo, Brazil São ou não São Gravuras?, Museu de Arte Moderna Villa Lobos, São