Post on 07-Apr-2016
1
Modelos de implementação
Maria Alice Grigas Varella FerreiraEP-USP
Março 2003
2Maria Alice Grigas Varella Ferreira – EP-USP
Software de Interface
Há necessidade de facilitar a implementação de interfaces para:Melhorar o desempenho da equipe de
projeto (interface custa caro)Facilitar as alterações (sempre
necessárias)Facilitar a manutenção de aspectos de
consistência (as ferramentas já implementam a consistência, dentro de certos limites)
3Maria Alice Grigas Varella Ferreira – EP-USP
Software da Interface
Visão externa look and feel
versus
4Maria Alice Grigas Varella Ferreira – EP-USP
Software da interface
Visão interna como funciona internamente este
software?como pode ser implementado?qual o modelo de implementação a ser
utilizado?Modelos de implementaçãomodelo lingüísticomodelo voltado à implementação
5Maria Alice Grigas Varella Ferreira – EP-USP
Desenvolvimento de software
Um sistema de software é desenvolvido por um processo de software.Processo de software – conjunto de atividades e resultados associados que geram um produto de software.Os processos de software são descritos através de modelos de processo de software ou paradigmas de desenvolvimento de software
6Maria Alice Grigas Varella Ferreira – EP-USP
Paradigmas de desenvolvimento de software
Modelo em cascata (clássico)
Análise
Especificação
Desenho
Implementação
Testes
Operação
Jones, G. W. Software Engineering. John Wiley & Sons, New York, 1990.
7Maria Alice Grigas Varella Ferreira – EP-USP
Paradigmas de desenvolvimento de software – Ciclo espiral
Análise de riscos baseada nosRequisitos iniciais
Análise de riscos baseada na reação do cliente
Análise dos riscos baseada nos requisitos iniciaisAnálise dos riscos baseada na reação do cliente
Decisão de prosseguir/não prosseguirNa direção de um projetoconcluídoProtótipo do software inicial
Protótipo no nível seguinte
Sistema construído pela Engenharia
Análise de riscos
Planejamento
EngenhariaAvaliação do cliente
Coleta inicial dosrequisitos e planeja-
mento do projeto
Planejamento baseado nos comentários
do clienteAvaliação do
cliente
Extraída de Pressman, 3a. Ed.
8Maria Alice Grigas Varella Ferreira – EP-USP
Paradigmas de desenvolvimento de software – Ciclo espiral
Sistema construído pela Engenharia (última etapa da espiral)Projeto (desenho) detalhadoCodificaçãoTestes de unidadeTestes de integraçãoTestes de aceitaçãoOperação
9Maria Alice Grigas Varella Ferreira – EP-USP
Paradigmas de desenvolvimento de software
Modelo com prototipaçãoAnálise
Especificação
Desenho
Implementação
Testes
Operação
Ciclo de prototipação
Jones, G. W. Software Engineering. John Wiley & Sons, New York, 1990.
10Maria Alice Grigas Varella Ferreira – EP-USP
Prototipação
“Um protótipo é versão inicial de um sistema de software, que é utilizada para mostrar conceitos, experimentar opções de projeto e, em geral, para conhecer mais sobre os problemas e suas possíveis soluções”.
(Sommerville, 2003)
11Maria Alice Grigas Varella Ferreira – EP-USP
Prototipação
Um protótipo de software apóia várias atividades do processo de Engenharia de Requisitos: Levantamento de requisitos – para ver como o
sistema apóia o trabalho e ajuda também a identificar pontos positivos e negativos do sistema.
Validação de requisitos – pode revelar erros e omissões nos requisitos propostos.
Treinamento do usuário. Execução de testes do sistema.
12Maria Alice Grigas Varella Ferreira – EP-USP
Processo de projeto de interface de usuário
Analisar ecompreenderas atividadesdo usuário
Produzir umprotótipo deprojeto em papel
Avaliar o projetocom os usuários finais
Protótipo deProjeto
Produzir umprotótipo dinâmico deprojeto
Avaliar o projetocom os usuários finais
Protótipo Executável
Implementar ainterface finalde usuário
13Maria Alice Grigas Varella Ferreira – EP-USP
Modelo LinguísticoLinguagem do Homem: AçõesLinguagem da máquina: gráficos, textos, sons, realimentação (“feedback”), sensações tácteis
Significado
Forma
Nível conceitual
Nível Semântico
Nível Sintático
Nível Léxico
14Maria Alice Grigas Varella Ferreira – EP-USP
Nível ConceitualConceitos - chave da aplicação: quem é, o que se pretende, quais os requisitos etc. O nível conceitual retrata o modelo mental do sistema e: Define os Objetos e Classes de Objetos (Objetos
e Sub-Objetos) Define Relações entre Objetos Define as operações sobre os Objetos (ações) Deve permitir ao usuário, usar o sistema sem ter
que fazer estudos elaborados
15Maria Alice Grigas Varella Ferreira – EP-USP
Nível ConceitualProjeto por metáforasObjetos intrínsicos - os da aplicaçãocontrole - comuns a aplicações diferentes:
grade, cursores, escala, menus e outros widgets
as ações devem ser consistentes, isto é, aplicáveis a todas as categorias de objetos - nem sempre é possível
16Maria Alice Grigas Varella Ferreira – EP-USP
Nível Conceitual
Exemplo: Editor de TextosObjetos: Linhas e ArquivosRelações : Arquivo = Seqüência de LinhasOperações:
Sobre Linhas: insert / delete / move / change
Sobre Arquivos: create/ copy/ merge/ rename/ delete
17Maria Alice Grigas Varella Ferreira – EP-USP
Nível Semântico
Especificação funcional detalhada de cada operação sobre um objeto:informação necessáriaerros que podem ocorrer e
tratamento a ser dado a cada umresultado das operações
18Maria Alice Grigas Varella Ferreira – EP-USP
Nível SintáticoEspecificação das seqüências de entradas e saídasEntradas: a seqüência é dada pela Gramática;
a seqüência é dada pelos tokens (átomos)Exemplo: comando: ROTATE quantidade: 45o
objeto: cadeira ponto em torno do qual rotacionar: X,YExemplo: ROTATE 45 cadeira (0,0)
19Maria Alice Grigas Varella Ferreira – EP-USP
Nível SintáticoSaídas: seqüência inclui noção
temporal /espacial organização da tela
projeto visual
Porque estudar IHC. Heloisa V. Rocha. IHC’ 2002
20Maria Alice Grigas Varella Ferreira – EP-USP
Nível léxicoEspecifica como combinar os primitivos gráficos de hardware (lexemes) para compor os tokens lexemes de entrada depende dos
dispositivos de entrada: mouse, mesa digitalizadora, setas
lexemes de saída linhas, gráficos e respectivos atributos (cor, espessura, tipo do fonte)
tokens lexemesindependente de HW
dependente de HW
21Maria Alice Grigas Varella Ferreira – EP-USP
Modelo Orientado à Implementação Admite que os programas são implementados em “algum” ambiente de janelamento (padrão X-Windows) e podem ser: X-View, MS-Windows, X-Windows etc.Os ambientes de janelamento gerenciam a: tela dispositivos de entradaOs primeiros ambientes eram extensões do sistema operacional, sendo compostos por: “Window Manager” “Underlying Window System” - provê a infra-
estrutura para as demais funções
22Maria Alice Grigas Varella Ferreira – EP-USP
Modelo Orientado à Implementação
O aplicativo tem acesso a qualquer camada do sistema
HARDWARE
UIMS/UIDS APLICATIVOToolkitsSistema de Gerenciamento de Janelas/Pacotes gráficos
Sistema Operacional
23Maria Alice Grigas Varella Ferreira – EP-USP
Ferramentas de desenvolvimento da interfaceAmbientes de gerenciamento de janelas (algum tipo de ambiente)
Linguagens de programaçãoToolkits (bibliotecas de widgets)Ambientes de Desenvolvimento de interfaces (UIDS) ou de Gerenciamento de interfaces (UIMS)
24Maria Alice Grigas Varella Ferreira – EP-USP
Widgets
Widgets – Objetos de tela – são os elementos que permitem controlar o programa Formulários (Forms) Menus Barras deslizantes (Scroll Bars) Botões Caixas de texto Editores de texto etc
25Maria Alice Grigas Varella Ferreira – EP-USP
Linguagens orientadas a eventos
Widgets produzem eventos que são tratados pelo mecanismo de eventos da linguagemOs dispositivos de entrada também produzem eventosA linguagem pode fornecer um gerenciador de telas, que permite que a interface seja construída diretamente sobre a tela, através do posicionamento dos widgets. Ex: C Builder, Visual Basic, Delphi
26Maria Alice Grigas Varella Ferreira – EP-USP
Tipos de Eventos
KeyPress - tecla pressionadaKeyRelease - tecla liberada
27Maria Alice Grigas Varella Ferreira – EP-USP
Tipos de Eventos
ButtonPress - botão pressionado (mouse)ButtonRelease - botão liberado (mouse)Motion - mouse movimentado
28Maria Alice Grigas Varella Ferreira – EP-USP
Tipos de Eventos
LeaveNotify - cursor abandona a janelaEnterNotify - cursor entra na janelaWindowExpose - janela foi expostaResizeRequest - requisição de redimen-sionamento da janelaTimer - ocorre timeout
29Maria Alice Grigas Varella Ferreira – EP-USP
Gerenciadores de Janelasprovêem as características da maioria das interfaces como: aplicações sendo executadas em diferentes áreas
do display (janelas); capacidade de alterar o tamanho destas áreas,
empilhá-las (pop-up), deslocá-las uso de menus e caixas de diálogo police-free systems - sistemas sobre os quais
podem ser implementados diferentes tipos de look and feel. Nestes sistemas diferentes tipos de window managers podem ser implementados
30Maria Alice Grigas Varella Ferreira – EP-USP
Gerenciadores de janela
Modelo cliente-servidor - necessário para sistemas distribuídos e para multi-processamento. O modelo cliente-servidor faz parte dos pressupostos iniciais do padrão X-Windows.Requerem estratégias de projeto para minimizar as necessidades de comunicação entre o cliente e o servidor (detalhes no livro do Foley)
31Maria Alice Grigas Varella Ferreira – EP-USP
Gerenciamento da SaídaRecursos são atribuídos ao cliente: o principal, espaço na telaEstratégias de alocação deste espaço variam com o sistema. A maior diferença teria a ver em como tratar as partes recém-expostas e quando se diminui o tamanho de uma janela, expondo as demais window-exposed eventMuitas vezes o cliente é o responsável pelo tratamento deste evento, forçando-o ao reprocessamento de todas as primitivas de saída, regeneração através de pixmap, soluções de hardware, etcSistemas mais poderosos - tratam deste problema para o usuário
32Maria Alice Grigas Varella Ferreira – EP-USP
Modelo gráfico da entradaDerivado de pacotes gráficos padronizados: GKS/ PHIGSFoley: pacotes simplificados SRGP e SPHIGSClasses de dispositivos lógicos: locator, pick, choice, valuator, string, stroke
33Maria Alice Grigas Varella Ferreira – EP-USP
Modelo gráfico da entradaClasses de tarefas interativas Seleção Posicionamento Texto Quantificação Orientação TrajetoClasses de dispositivos físicos Mouse, caneta ótica, painel de toque Mesa digitalizadora Teclado alfanumérico Potenciômetro
34Maria Alice Grigas Varella Ferreira – EP-USP
Modelo gráfico da entrada
Elementos da entrada: Medida - a medida tomada Disparo - fornece o instante de leitura da medida Timestamp
Modos de entrada Amostragem Evento Requisição de dados
35Maria Alice Grigas Varella Ferreira – EP-USP
Tratamento dos eventos
A entrada é assíncrona e ocorre no instante do disparoQualquer evento (interrupção) é “sentido” pelo sistema operacional, e a rotina de tratamento de interrupção é acionada;O sistema de gerenciamento intercepta esta rotina, direcionando o evento para a rotina do gerenciador de janelas; esta rotina encaminha o evento para a Fila de Eventos;
36Maria Alice Grigas Varella Ferreira – EP-USP
Tratamento dos eventos
A Fila de Eventos mantém os eventos na fila, de acordo com a ordem de chegada (timestamp)Os dados do evento são coletados num registro, de acordo com o dispositivo que o produziu (mouse, teclado)Cada dispositivo tem o seu próprio tipo de registro
37Maria Alice Grigas Varella Ferreira – EP-USP
Mouse
O mouse é um dispositivo que opera também no modo amostrado, ou seja, a sua posição é feita por amostragem, enquanto os seus botões produzem os eventos. Como a amostragem da posição do mouse é necessária para fazer o seu rastreamento (mouse tracking), o relógio é utilizado para fazer esta leitura. Outros dispositivos podem ser também lidos desta forma. Por exemplo, os sliders.
38Maria Alice Grigas Varella Ferreira – EP-USP
Teclado
O teclado é, tipicamente, um dispositivo que provoca interrupções.O teclado pode operar de duas formas: Raw – apenas uma tecla pressionada já causa o
evento Edit – exige a leitura de uma cadeia de caracteres
para que o evento seja produzido; o caracter fim-de-linha (eol), caracterizado pelo Enter, marca o encerramento da cadeia
39Maria Alice Grigas Varella Ferreira – EP-USP
Gerenciamento da Entrada
Os dispositivos necessitam estar habilitados a produzirem os eventos que serão “sentidos” pelas janelas do programa.Quando uma janela não “aceita” um evento, ele o transfere para a janela hierarquicamente superior (a que está por baixo) e assim sucessivamenteSe nenhuma janela aceitar o evento, ele é descartado
40Maria Alice Grigas Varella Ferreira – EP-USP
Registro de evento do mouse#define LEFT_BUTTON 0#define MIDDLE_BUTTON 1#define RIGHT_BUTTON 2#define LEFT_BUTTON_MASK 1#define MIDDLE_BUTTON_MASK 2#define RIGHT_BUTTON_MASK 4#define SHIFT 0#define CONTROL 1#define META 2
typedef enum {NO_ECHO=0, CURSOR, RUBBER_LINE, RUBBER_RECT} echoType;
41Maria Alice Grigas Varella Ferreira – EP-USP
Registro de evento do mouse
typedef enum {UP=0, DOWN} buttonStatus;typedef struct { srgp__point position; buttonStatus button_chord[3]; int
button_of_last_transition; buttonStatus modifier_chord[3]; srgp_timestamp timestamp;} srgp__deluxe_locator_measure;
42Maria Alice Grigas Varella Ferreira – EP-USP
Registro de evento do teclado
typedef struct { char *buffer; int buffer_length; buttonStatus modifier_chord[3]; srgp__point position; srgp_timestamp timestamp;
} srgp__deluxe_keyboard_measure;
43Maria Alice Grigas Varella Ferreira – EP-USP
Gerenciamento da saídaredimensionamento da janela - como funciona o sistema de coordenadas? a janela tomada sobre o “mundo real” varia
proporcionalmente enxerga-se menos deste mundo
a janela tomada sobre o “mundo real” permanece fixa; tem-se efeito de “zoom” possibilidade de distorção, se o fator de escala não for uniforme
partilhamento de recursos: tabela de cores
44Maria Alice Grigas Varella Ferreira – EP-USP
Primitivas de janelamentoCreate Window (name) - cria uma nova janela, que se torna a janela correnteSet Position (xmin, ymin) - determina a posição da janela correnteSet Size (height,width) - determina o tamanho da janela correnteSelect Window (name) - torna uma janela, a janela corretnteShow Window - torna a janela corrente visível, no topo da pilha de janelasHide Window - torna a janela corrente invisível; apresenta as janelas que estavam obscurecidas por ela
45Maria Alice Grigas Varella Ferreira – EP-USP
Primitivas de janelamentoSet Title (char_string) - nomeia a janela corrente com a cadeia fornecidaGet Position (x, y) - lê a posição da janela correnteGet Size (height, width) - lê o tamanho da janela correnteBring to Top - coloca a janela corrente no topo da pilhaBring to Bottom - coloca a janela corrente na base da pilha das janelasDelete Window - exclui a janela corrente
46Maria Alice Grigas Varella Ferreira – EP-USP
Gerenciamento de Eventos Rotinas típicas
EnableEvents (event-list) - habilita os eventos constantes da listaWaitEvent(timeout,event_Type, window _name, event_Record)SetInputFocus (window, event_list) - dirige para a janela especificada os eventos componentes da lista de eventos)CursorShape (pixmap, x, y) - define o tipo e a posição de referência dentro do pixmap, que deve ser reportada como a posição do cursor
47Maria Alice Grigas Varella Ferreira – EP-USP
Referências
Foley, J. D. et al. Computer Graphics Principles and Practices. Addison-Wesley, Reading, 1990. Cap. 8-10.Somerville, I. Engenharia de Software. Pearson Education do Brasil. 2003.Jones, G. W. Software Engineering. John Wiley & Sons, New York, 1990.Pressman, R. Engenharia de Software. Makron Books, 1995.