UNIVERSIDADE FEDERAL DE SÃO CARLOS
CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA
PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
REENGENHARIA DE INTERFACES COM REALIDADE
VIRTUAL CONSIDERANDO O PARADIGMA DE
ORIENTAÇÃO A OBJETOS
ORIENTADORA: Profa. Dra. Júnia Coutinho Anacleto Silva
ALUNO: Cristiano Lemos Soares
SÃO CARLOS – SP
2002
Ficha catalográfica elaborada pelo DePT da
Biblioteca Comunitária da UFSCar
S676ri
Soares, Cristiano Lemos.
Reengenharia de interfaces com realidade virtual
considerando o paradigma de orientação a objetos /
Cristiano Lemos Soares. -- São Carlos : UFSCar, 2004.
180 p.
Dissertação (Mestrado) -- Universidade Federal de São
Carlos, 2002.
1. Realidade virtual. 2. Reengenharia de sistemas. 3.
Interface orientada a objetos. I. Título.
CDD: 006 (21a)
1
AGRADECIMENTOS
À Prof ª. Dr ª. Júnia Coutinho Anacleto Silva e à Prof ª. Dr ª. Rosângela Ap. Dellosso Penteado,
pela orientação, paciência, apoio e amizade que foram fundamentais para a realização deste
trabalho.
Aos meus companheiros de laboratório, em especial Camilla, Rafael, Thiago e Alice por suportar
meus dias de mal-humor, por me dar apoio nos momentos difíceis e tornar este trabalho divertido.
Aos meus amigos da república Lineu: Alexandre, Luis, Márcio, Paulo (Xineiz) e Ronaldo, com
os quais passei a maior parte dos meus melhores momentos durante este período e que me
mostraram o verdadeiro significado da amizade.
A minha namorada Juliana, simplesmente por ser a pessoa maravilhosa que é, estando sempre ao
meu lado quando precisei.
A minha família que me deu muito carinho e apoio para que esta jornada se tornasse possível.
A Fundação de Amparo à Pesquisa do Estado de São Paulo, FAPESP, pelo suporte financeiro
fornecido durante a realização deste trabalho.
2
RESUMO
Com a evolução constante das tecnologias aplicadas a interfaces do usuário, uma nova
geração dessas interfaces vem se estabelecendo. Interfaces baseadas em reconhecimento de voz,
reconhecimento de gestos e gráficos 3D, entre outras tecnologias, visam tornar a interação
homem-computador mais fácil, oferecendo meios de interação mais intuitivos aos conhecimentos
humanos, a fim de disponibilizar os recursos computacionais a um número cada vez maior de
usuários. Dentre as novas tecnologias de interface surge, com destaque, a Realidade Virtual (RV)
facilitando a visualização, manipulação e interação de usuários com ambientes computacionais
tridimensionais (3D). Além da RV, a aplicação do paradigma de orientação a objetos apresenta-se
como uma opção para desenvolvimento de interfaces não só intuitivas e naturais, mas também
com possibilidade de reuso de seus componentes facilitando futuros desenvolvimentos. Em
contrapartida às facilidades oferecidas em sua manipulação, a interface com RV adiciona
complexidade durante seu desenvolvimento devido à falta de ferramentas e métodos de apoio,
seja na engenharia avante quanto na reengenharia de interfaces. Assim, os objetivos deste projeto
são: apresentar diretivas para a reengenharia de interfaces orientadas a objetos com recursos de
RV utilizando o ambiente GaCIV (Gabaritos Configuráveis para elaboração de Interfaces com
RV); confirmar o uso do ambiente GaCIV como uma ferramenta de apoio efetivo ao
desenvolvedor de interfaces dando suporte à aplicação da RV no desenvolvimento de interfaces
avançadas, seja em um processo convencional de engenharia de sistemas ou em um processo de
reengenharia; analisar se o processo de reengenharia de interfaces com apoio do ambiente GaCIV
se torna mais eficiente quando o sistema em questão for desenvolvido sob o paradigma OO.
Foram verificadas as vantagens e desvantagens em integrar uma nova interface com recursos de
RV através do ambiente computacional GaCIV com sistemas: 1) legados que possuem
documentação obtida por um processo de engenharia reversa OO; 2) segmentados que têm o
código implementado na linguagem procedural com características de OO inseridas a partir dos
modelos obtidos com a engenharia reversa OO; 3) submetidos ao processo de reengenharia com a
mudança de paradigma de desenvolvimento como de linguagem de programação OO.
3
LISTA DE ILUSTRAÇÕES
FIGURA 1.1 – INTEGRAÇÃO PROPOSTA....................................................................................... 6
FIGURA 3.1 – MODELO DE OBJETOS COM VISÕES REPRESENTADAS DO OVID, ADAPTADA DE
(IBM, 2001B) ............................................................................................................................. 27
FIGURA 3.2 – VISÃO GERAL DA METODOLOGIA FUSION-RE/I (FELTRIM ET AL, 1999) .......... 29
FIGURA 4.1 – CRIAÇÃO DE INTERFACES COM RV COM O GACIV............................................ 34
FIGURA 4.2– CRIAÇÃO DE NOVOS GABARITOS NO GACIV ....................................................... 35
FIGURA 4.3 – LIGAÇÃO ENTRE OBJETO E APLICAÇÃO NO GACIV............................................. 36
FIGURA 4.4 – O GACIV E A REENGENHARIA DE INTERFACE..................................................... 39
FIGURA 5.1 – PROCESSO DE REENGENHARIA PARA INTERFACES COM RV PROPOSTO NESTE
TRABALHO .................................................................................................................................. 42
FIGURA 5.2 – GABARITO PRELIMINAR PARA GERAÇÃO DAS INTERFACES COM RV PARA O
SISTEMA EXEMPLO...................................................................................................................... 46
FIGURA 5.3 – ESTILO DE INTERFACE TEXTUAL UTILIZADO PELO SISTEMA LEGADO .................. 48
FIGURA 5.4 – ESTRUTURA DA ÁRVORE DE MENUS DO SISTEMA LEGADO .................................. 49
FIGURA 5.5 – OBJETO COMPUTADOR NO MENU PRINCIPAL DO SISTEMA LEGADO COM INTERFACE
COM RV...................................................................................................................................... 50
FIGURA 5.6 – ESTRUTURA DA ÁRVORE DE MENUS DA INTERFACE DO SISTEMA SEGMENTADO .. 51
FIGURA 5.7 – EXECUÇÃO DO MÓDULO DE APLICAÇÃO “CONSCLI.EXE” GERADO A PARTIR DA
VERSÃO SEGMENTADA DO SISTEMA EXEMPLO ............................................................................ 53
FIGURA 5.8 – EXECUÇÃO DO MÓDULO DE APLICAÇÃO “CONSULTA.EXE” GERADO A PARTIR DA
VERSÃO SEGMENTADA DO SISTEMA EXEMPLO ............................................................................ 54
FIGURA 5.9 – MÓDULOS DO SISTEMA SEGMENTADO NA ESTRUTURA DA ÁRVORE DE MENUS ... 54
TABELA 5.1 – ASSOCIAÇÃO ENTRE MENUS ORIGINAIS, NOME DOS MÓDULOS CRIADOS E
ARQUIVOS DE IMPLEMENTAÇÃO DOS MÓDULOS CRIADOS PARA O SISTEMA SEGMENTADO .......... 55
FIGURA 5.10 – OBJETO 3D “IMPRESSORA” LIGADO AO MÓDULO “IMPRESSOS” DO SISTEMA
SEGMENTADO ............................................................................................................................. 56
FIGURA 5.11 – OBJETO 3D “ARQUIVO” LIGADO AO MÓDULO “MANUTENÇÃO DE ARQUIVOS” DO
SISTEMA SEGMENTADO ............................................................................................................... 56
FIGURA 5.12 – INTERFACE DA VERSÃO OO DO SISTEMA EXEMPLO .......................................... 57
FIGURA 5.13 – ÁRVORE DE MENUS DA INTERFACE DO SISTEMA OO......................................... 58
FIGURA 5.15 – HINT DO OBJETO “CLIENTE” NA OOUI DO SISTEMA OO................................... 60
FIGURA 5.16 – ÍCONES REORGANIZADOS PELO USUÁRIO NA OOUI DO SISTEMA OO ............... 60
FIGURA 5.17 – MENU POPUP COM MÉTODOS PARA INTERAÇÃO COM O OBJETO “CLIENTE” DA
INTERFACE DO SISTEMA OO. ...................................................................................................... 61
FIGURA 5.18 – OBJETO DA INTERFACE AVANÇADA PARA REPRESENTAR O OBJETO
“FORNECEDOR” DA INTERFACE DO SISTEMA OO ........................................................................ 62
FIGURA 5.19 – OBJETO DA INTERFACE AVANÇADA DO SISTEMA OO PARA REPRESENTAR O
OBJETO “CLIENTE” ..................................................................................................................... 62
FIGURA 5.20 – OPÇÕES DE MÉTODOS PARA INTERAGIR COM OBJETO “CLIENTE” DO SISTEMA OO
COM RECURSOS DE RV ............................................................................................................... 63
FIGURA 6.1 – ÁRVORE DE MENUS DO SISTEMA LEGADO ........................................................... 66
FIGURA 6.2 – TELA DE LANÇAMENTO DA 1A PARTE DA ORDEM DE SERVIÇO DO SISTEMA
LEGADO ...................................................................................................................................... 67
FIGURA 6.3 – TELA DE VERIFICAÇÃO DE “VEÍCULOS DO CLIENTE”.......................................... 68
FIGURA 6.4 – MENSAGEM DE ERRO DO SISTEMA LEGADO ........................................................ 68
4
FIGURA 6.5 – PREENCHIMENTO DE DADOS DO CLIENTE COM SELEÇÃO..................................... 69
FIGURA 6.6 – PREENCHIMENTO DE DADOS DO CLIENTE SEM SELEÇÃO ..................................... 69
FIGURA 6.7- ESTRUTURA DE ÁRVORE DE MENUS DO SISTEMA SEGMENTADO ........................... 70
FIGURA 6.8 – MENU DE CONSULTAS DO SISTEMA SEGMENTADO .............................................. 71
FIGURA 6.9 – MENU DE CONSULTAS A PEÇAS DO SISTEMA SEGMENTADO ................................ 71
FIGURA 6.10 – ÁRVORE DE MENUS DO SISTEMA OO ................................................................ 72
FIGURA 6.11 – CAIXA DE ITENS SELECIONÁVEIS PARA A FUNCIONALIDADE “CONSULTAR
CLIENTE” DO SISTEMA OO ......................................................................................................... 73
FIGURA 6.12 – JANELA DE ALERTA AO USUÁRIO NO SISTEMA OO............................................ 74
FIGURA 6.13 – HINT APRESENTADO PARA CAMPO “CATEGORIA” DO FORMULÁRIO DE CADASTRO
DE CLIENTES NO SISTEMA OO ..................................................................................................... 74
FIGURA 6.14 – ESCOLHA DE OPÇÃO DE CONSULTA DE PEÇAS NO SISTEMA OO......................... 75
TABELA 6.1 – DIRETIVAS PARA “USUÁRIOS EM AMBIENTES VIRTUAIS” ................................. 76
TABELA 6.2 – DIRETIVAS PARA “NAVEGAÇÃO E LOCOMOÇÃO” .............................................. 76
TABELA 6.3 – DIRETIVAS PARA “SELEÇÃO DE OBJETO” .......................................................... 76
TABELA 6.4 – DIRETIVA PARA “APRESENTAÇÃO DO USUÁRIO E REPRESENTAÇÃO”................ 76
TABELA 6.5 – DIRETIVA PARA “ENVOLVIMENTO VIRTUAL E CONFIGURAÇÃO”....................... 77
TABELA 6.6 – DIRETIVAS PARA “MECANISMOS DE ENTRADA EM GERAL” .............................. 77
TABELA 6.7 – DIRETIVAS PARA “SISTEMA COM AMBIENTE VIRTUAL E INFORMAÇÃO DA
APLICAÇÃO”............................................................................................................................... 77
FIGURA 6.15 – INTERFACES DO SISTEMA LEGADO ................................................................... 79
FIGURA 6.16 – ESTRUTURAS DE INTERFACE PARA O SISTEMA LEGADO COM INTERFACE COM RV
................................................................................................................................................... 80
FIGURA 6.17– INTERFACES DO SISTEMA SEGMENTADO ........................................................... 81
FIGURA 6.18 – CONTEXTO DE “COMPRAS E VENDAS” NA INTERFACE COM RV DO SISTEMA
SEGMENTADO ............................................................................................................................. 82
FIGURA 6.19 – CONTEXTO DE “PÁTIO DE OFICINA” NA INTERFACE COM RV DO SISTEMA
SEGMENTADO ............................................................................................................................. 82
FIGURA 6.20 – MENU DE LANÇAMENTOS DO SISTEMA SEGMENTADO ....................................... 84
FIGURA 6.21 – INTERFACES PARA O SISTEMA OO.................................................................... 85
FIGURA 6.22 – AÇÕES PERMITIDAS PARA O OBJETO “CLIENTE” ............................................... 85
FIGURA 7.2 – OBJETO “LUPA” REPRESENTANDO A TAREFA “CONSULTAR ARQUIVO” NA
INTERFACE COM RV PARA O SISTEMA SEGMENTADO ................................................................ 100
FIGURA 7.3 – OBJETOS COMPLEMENTARES PARA A INTERFACE COM RV PARA O SISTEMA
SEGMENTADO ........................................................................................................................... 101
5
SUMÁRIO
CAPÍTULO 1 – INTRODUÇÃO 1
1.1 CONSIDERAÇÕES INICIAIS ....................................................................................................... 1
1.2 A ABORDAGEM DE ENGENHARIA REVERSA E A REALIDADE VIRTUAL ................................... 2
1.3 RELEVÂNCIA DO TRABALHO ................................................................................................... 3
1.4 OBJETIVOS .............................................................................................................................. 4
1.5 ESTRUTURA DA DISSERTAÇÃO ................................................................................................ 6
CAPÍTULO 2 – INTERFACES COM REALIDADE VIRTUAL
7
2.1 CONSIDERAÇÕES INICIAIS ....................................................................................................... 7
2.2 CONCEITUAÇÃO ...................................................................................................................... 8
2.2.1 Comparação entre interfaces com RV e outros estilos de interfaces ........................... 10
2.2.2 Aplicações..................................................................................................................... 11
2.3 CARACTERÍSTICAS DE USABILIDADE EM SISTEMAS COM INTERFACES COM RV.................... 11
2.4 DESAFIOS NO DESENVOLVIMENTO DE SISTEMAS COM INTERFACES COM RV ....................... 13
2.5 CONSIDERAÇÕES FINAIS ....................................................................................................... 14
CAPÍTULO 3 - REENGENHARIA DE INTERFACES 15
3.1 CONSIDERAÇÕES INICIAIS ..................................................................................................... 15
3.2 O PROCESSO DE REENGENHARIA DE SISTEMAS NO CONTEXTO DE USABILIDADE .................... 15
3.3 MÉTODOS PARA APOIO À REENGENHARIA DE INTERFACES .................................................... 16
3.3.1 Abordagens para o processo de reengenharia de interfaces ....................................... 17
3.3.2 Reengenharia de interfaces para interfaces com RV ................................................... 19
3.3.3 Revisão de Métodos e Modelos para apoio à reengenharia de interfaces................... 20
3.3.3.1 Statecharts ............................................................................................................. 22
3.3.3.2 GOMS - Goals, Operators, Methods and Selection rules ..................................... 24
3.3.3.3 OVID - Object, View and Interaction Design ....................................................... 26
3.3.3.4 FUSION RE/I ........................................................................................................ 28
3.4 CONSIDERAÇÕES FINAIS ....................................................................................................... 30
CAPÍTULO 4 - O AMBIENTE GACIV 31
4.1 CONSIDERAÇÕES INICIAIS ..................................................................................................... 31
4.2 CARACTERÍSTICAS ................................................................................................................ 31
4.3 POTENCIALIDADES ................................................................................................................ 37
4.3.1 GaCIV e OOUI ............................................................................................................. 38
4.3.2 GaCIV e Reengenharia................................................................................................. 38
4.3.3 GaCIV e Reuso ............................................................................................................. 40
4.4 CONSIDERAÇÕES FINAIS ....................................................................................................... 40
CAPÍTULO 5 - ESTUDO DE CASO - O SISTEMA DA OFICINA MECÂNICA
41
5.1 CONSIDERAÇÕES INICIAIS ..................................................................................................... 41
5.2 PROPOSTA DE PROCESSO DE REENGENHARIA DESTE TRABALHO............................................ 41
6
5.3 MODELOS PARA A REENGENHARIA DE INTERFACES.............................................................. 44
5.3.1 GOMS ........................................................................................................................... 44
5.3.2 Statecharts .................................................................................................................... 45
5.3.3 OVID............................................................................................................................. 45
5.4 CRIAÇÃO DO GABARITO PRELIMINAR DE OBJETOS 3D PARA O DOMÍNIO DO SISTEMA
EXEMPLO .................................................................................................................................... 46
5.5 SISTEMA LEGADO.................................................................................................................. 48
5.5.1 Características de implementação ............................................................................... 48
5.5.2 O processo de reengenharia de interfaces com RV para o sistema legado ................. 49
5.6 SISTEMA SEGMENTADO ......................................................................................................... 50
5.6.1 Características de implementação ............................................................................... 50
5.6.2 O processo de reengenharia do sistema segmentado................................................... 51
5.6.3 O processo de reengenharia de interfaces com RV para o sistema segmentado ......... 52
5.7 SISTEMA ORIENTADO A OBJETOS ......................................................................................... 56
5.7.1 Características de implementação ............................................................................... 57
5.7.2 O processo de reengenharia do sistema orientado a objetos....................................... 58
5.7.3 O processo de reengenharia de interfaces com rv para o sistema orientado a objetos61
5.8 CONSIDERAÇÕES FINAIS ....................................................................................................... 63
CAPÍTULO 6 – ANÁLISE DOS RESULTADOS OBTIDOS 64
6.1 CONSIDERAÇÕES INICIAIS ..................................................................................................... 64
6.2 CRITÉRIOS DE USABILIDADE PARA SISTEMAS TEXTUAIS E WIMP ......................................... 65
6.3 ANÁLISE DA INTERFACE DO SISTEMA LEGADO ..................................................................... 66
6.4 ANÁLISE DA INTERFACE DO SISTEMA SEGMENTADO ............................................................ 69
6.5 ANÁLISE DE USABILIDADE DA INTERFACE DO SISTEMA OO................................................. 72
6.6 CRITÉRIOS DE USABILIDADE PARA SISTEMAS COM INTERFACES COM RV.............................. 75
6.7 ANÁLISE COMPARATIVA DOS PROCESSOS DE REENGENHARIA .............................................. 77
6.7.1 Sistema Legado............................................................................................................. 79
6.7.2 Sistema Segmentado ..................................................................................................... 80
6.7.3 Sistema OO ................................................................................................................... 84
6.7.4 Comparação entre os processos de reengenharia de interface: Sistema Legado vs.
Segmentado vs. OO ............................................................................................................... 86
6.7 CONSIDERAÇÕES FINAIS........................................................................................................ 88
CAPÍTULO 7 - CONCLUSÕES 90
7.1 CONSIDERAÇÕES INICIAIS ..................................................................................................... 90
7.2 CONSIDERAÇÕES SOBRE O ESCOPO DO TRABALHO ............................................................... 90
7.3 PRINCIPAIS CONTRIBUIÇÕES ................................................................................................. 92
7.3.1 Conclusões esperadas segundo a proposta de trabalho .............................................. 92
7.3.2 Diretivas para reengenharia de interfaces com RV ..................................................... 95
7.3.2.1 Diretivas para o processo de reengenharia de interfaces com RV ........................ 95
7.3.2.2 Diretivas de usabilidade para a reengenharia de interfaces com RV .................... 98
7.4 TRABALHOS FUTUROS ........................................................................................................ 101
REFERÊNCIAS BIBLIOGRÁFICAS
104
APÊNDICE A - MODELO DE CLASSES PARA A REENGENHARIA.
114
7
APÊNDICE B - USE CASES
116
APÊNDICE C – DIAGRAMAS DE SEQUÊNCIA
131
APÊNDICE D - CENÁRIOS TEXTUAIS
155
APÊNDICE E - DIAGRAMAS DE CAIXAS
169
ANEXO I – MODELO DE CLASSES ORIGINAL
172
ANEXO II – MODELO DE CICLO DE VIDA
174
ANEXO III – MAPA DE MENUS
175
8
1
Capítulo 1 – Introdução
1.1 Considerações Iniciais
Os sistemas legados, alguns gerados com técnicas não estruturadas de desenvolvimento,
outros deteriorados devido às mudanças não documentadas em seus códigos, na maioria das
vezes são a base na qual se apóiam os negócios de seus usuários. Devido à desestruturação e falta
de documentação, inúmeros problemas surgem quando a manutenção é necessária. Sem
documentação, o engenheiro de software não pode conduzir as alterações desejadas sem que haja
um efeito gatilho nos erros encontrados e consertados. Ou seja, conserta-se um e outros ocorrem,
sucessivamente, como um “efeito dominó”. Esses sistemas apresentam, além dos problemas de
manutenção em seu código fonte, interfaces que deixa a desejar em relação à interface de
sistemas desenvolvidos mais recentemente, que utilizam recursos gráficos e visuais. Em alguns
casos, o usuário tem o desejo de mudar o sistema para uma linguagem que siga um paradigma
diferente daquela que está implementado, e que essa transformação seja gradativa e sem perda da
sua funcionalidade.
Existem várias maneiras para atingir os problemas citados acima. Geralmente esse
processo de troca de linguagem, de paradigma de desenvolvimento, de interfaces se dá de forma
gradativa. Para que essas modificações ocorram, caso não exista a documentação do sistema
legado, deve-se utilizar um processo de engenharia reversa e em seguida, quando a mudança de
paradigma de desenvolvimento e/ou de linguagem de programação ocorrer, um processo de
reengenharia é realizado para re-implementação do sistema na forma desejada.
Outra forma para resolver esse problema é a utilização de interfaces com recursos mais
avançados, para agregar qualidade ao sistema legado. Assim, é estudado aqui o processo de
engenharia reversa/reengenharia, integrado com a elaboração de novas interfaces através do uso
do ambiente GaCIV (Gabaritos Configuráveis para Interfaces com Realidade Virtual), para a
geração de interfaces com realidade virtual (RV) e integração com sistemas legados.
Este capítulo está organizado da seguinte forma: a abordagem de engenharia reversa e a
aplicação de RV em interfaces são mostradas em 1.2; a relevância do trabalho é comentada em
1.3; os objetivos buscados com esse trabalho são apresentados na seção 1.4. Na seção 1.5 é
apresentada a estrutura desta dissertação.
2
1.2 A Abordagem de Engenharia Reversa e a Realidade Virtual
O objetivo da engenharia reversa é obter um modelo em um nível mais alto de abstração
do sistema existente. Geralmente a partir do código fonte, que é o único material disponível,
recupera-se um modelo de projeto para completo entendimento desse sistema. Para o objetivo de
mudança de paradigma de desenvolvimento com ou sem troca da linguagem de programação, a
necessidade é recuperar um modelo de análise, e não de projeto, como citado anteriormente. Por
exemplo, a partir de um sistema implementado em linguagem procedural, deseja-se submetê-lo a
um processo de reengenharia com mudança de linguagem para uma linguagem orientada a
objetos (OO). Nesse caso, há necessidade de primeiramente criar-se um modelo de análise com
esse paradigma para em seguida fazer o desenvolvimento do projeto, e só daí passar à fase de
implementação.
O usuário pode desejar alterar, em um primeiro momento, somente a interface e continuar
com o código fonte existente. A engenharia reversa pode auxiliar esse usuário, permitindo que
uma nova interface seja acoplada a esse sistema. Ou seja, é possível recuperar um modelo com
alto grau de abstração desse sistema para então prepara-lo para ganhar nova interface com o
usuário. Assim, o sistema passa por uma manutenção adaptativa (Pressman, 1997) apoiada na
documentação recuperada com o processo de engenharia reversa.
Este trabalho aplica um processo de engenharia reversa OO chamado Fusion
RE/I(Penteado, 1996) (Penteado et al, 1998), que a partir de códigos procedurais obtém modelos
de análise orientados a objetos, baseado na notação Fusion e UML.
As classes são recuperadas a partir das estruturas de dados existentes no código fonte.
Abstraindo-se essas estruturas, extrai-se as classes que realmente representam o sistema. Em
seguida, os use cases são elaborados permitindo o completo entendimento da funcionalidade do
sistema. É importante ressaltar que os métodos considerados são aqueles correspondentes aos
procedimentos implementados, com pequenas alterações para garantir as características OO.
Após a recuperação dos modelos de análise orientados a objetos, é realizado o processo
de reengenharia, no qual a funcionalidade e a linguagem de implementação do sistema original
são preservadas. Tal processo é chamado de segmentação (Penteado, 1998).
Para ilustrar a abordagem proposta, primeiramente foi analisada a possibilidade de alterar
a interface do sistema existente utilizando os recursos de RV, como proposto em (Silva, 1999),
sem alterar a linguagem de programação original, utilizando somente o modelo de análise OO
3
recuperado pela engenharia reversa (Penteado, 1996) (Penteado et al, 1996). Em seguida o
mesmo procedimento foi realizado utilizando a segmentação (Penteado, 1998). Por fim, o sistema
estudado foi implementado em uma linguagem de programação OO, Java®, e esse sistema
também recebeu uma interface com RV. Todo o processo de desenvolvimento de interfaces nos
três casos citados foi feito utilizando o GaCIV como apoio automatizado. O GaCIV utiliza
gabaritos configuráveis para o desenvolvimento de interfaces avançadas com RV.
Os projetos com interfaces avançadas, envolvendo recursos tridimensionais (3D) e RV,
são geralmente mais difíceis de se construir do que interfaces convencionais (textuais e WIMP).
O procedimento mais comum para desenvolver interfaces consiste na geração de um protótipo,
que é avaliado e reconstruído iterativamente, até a interface final ser projetada. É interessante
ressaltar a utilização do paradigma OO no desenvolvimento de sistemas interativos, cujo
componente de interface apresenta-se em destaque (Lucena & Liesenberg, 1997). Isso porque a
característica da modularização de projeto, apresentada nesse paradigma, leva à menor carga de
programação, devido à possibilidade de reutilização de código e modularização de projeto. Essa
característica garante maior flexibilidade ao processo de desenvolvimento desses sistemas.
Estudos da IBM, encontrados em (IBM, 2000a) (IBM, 2000b), comprovam a aplicação da
orientação a objetos no desenvolvimento de interfaces.
Entretanto, ainda existe uma carência de diretivas, métodos, técnicas e ferramentas
computacionais de alto nível, de suporte à aplicação de RV, que auxiliem o projetista de
interfaces no desenvolvimento de suas tarefas junto ao usuário, bem como na sua interação com o
engenheiro de software, garantindo a qualidade de seu projeto (Silva, 1998), e utilizando as
técnicas mais avançadas para desenvolvimento de interfaces, como a RV, dentro do paradigma da
orientação a objetos para desenvolvimento de sistemas.
1.3 Relevância do Trabalho
Nos estudos feitos até então, tem-se observado que o paradigma OO (Pressman, 1997)
ampara não apenas o desenvolvimento do componente de aplicação dos sistemas interativos, mas
também o da interface, visto que a prototipação na Implementação está se tornando cada vez mais
viável graças à menor carga de programação, devido à existência de classes e objetos,
reutilização de código e modularização de projeto, dentre outros.
4
A proposta deste projeto é verificar se uma reengenharia de sistemas com a mudança de
paradigma procedural para o paradigma da orientação a objetos facilita o desenvolvimento de
interfaces avançadas para tais sistemas, através do uso do ambiente GaCIV. Além disso, é
também estudada a influência do paradigma de desenvolvimento e implementação do sistema na
reengenharia de interfaces para interfaces com RV, considerando características de usabilidade
das interfaces resultantes. É esperada a confirmação da adequação do paradigma da orientação a
objetos no processo de engenharia reversa e reengenharia de sistemas, visando a implementação
de interfaces avançadas com recursos de RV.
O resultado esperado deste trabalho é fornecer diretrizes para que o engenheiro de
software e o projetista de interface, ao utilizarem o GaCIV no apoio à reengenharia de interfaces
com recursos de RV, reconheçam as vantagens existentes quando o código da aplicação for OO.
Com isso, espera-se, também, comprovar que o processo de reengenharia de interfaces apoiado
pelo GaCIV se torna mais eficiente se o sistema em questão foi desenvolvido sob o paradigma
OO.
Durante este projeto foi realizada a engenharia reversa e reengenharia das interfaces de
um sistema exemplo, implementado em Clipper, para que fossem feitas análises comparativas das
diversas versões do sistema - legado, segmentado e implementado em uma linguagem OO,
conforme planejado inicialmente. Tais análises foram realizadas considerando o desenvolvimento
de novas interfaces através do GaCIV para cada versão do sistema exemplo, verificando a
viabilidade do uso do ambiente GaCIV para o apoio ao processo de engenharia reversa e
reengenharia.
1.4 Objetivos
Buscou-se investigar sistemas que foram desenvolvidos pela abordagem procedural,
submetê-los ao processo de engenharia reversa e elaborar diretivas seguras para facilitar o
processo de construção de novas interfaces com os recursos de RV.
Este estudo visa perceber as vantagens e desvantagens em integrar uma nova interface
com recursos de RV através do ambiente computacional GaCIV com os sistemas: 1) legados, que
possuem documentação obtida por um processo de engenharia reversa OO; 2) segmentados, que
têm o código implementado na linguagem procedural com características OO inseridas a partir
5
dos modelos obtidos com a engenharia reversa OO; 3) submetidos ao processo de reengenharia
com a mudança de paradigma de desenvolvimento, como de linguagem de programação para OO.
Além disso, também foram avaliados a usabilidade e funcionalidade das interfaces resultantes.
Outro objetivo desse trabalho é oferecer ao usuário, através do ambiente computacional
GaCIV, um apoio na elaboração de suas interfaces 3D. A proposta do ambiente é oferecer os
recursos de RV de forma mais acessível e prática, em módulos semi-prontos, agilizando o
processo de aplicação da RV no desenvolvimento de interfaces. Espera-se, assim, colaborar
efetivamente com os projetistas de interfaces e engenheiros de software no desenvolvimento de
sistemas utilizando RV.
O mesmo sistema-exemplo foi utilizado em três versões: legado, segmentado e OO. Com
esse procedimento buscou-se verificar o apoio efetivo da orientação a objetos no
desenvolvimento de interfaces com recursos de RV. Essa verificação se deu em dois níveis: de
produto nas diferentes versões e de processo apoiado pelo GaCIV.
O objetivo de ter produtos em diferentes versões é para poder analisar a qualidade da
interface em cada uma delas. Assim, é possível analisar se há ganho em qualidade das interfaces
geradas para sistemas OO.
De acordo com a proposta do GaCIV o processo de reengenharia da interface sob o
paradigma OO tem suas vantagens em relação a outros paradigmas. Essa afirmação pode ser
verificada a partir dos resultados obtidos.
A figura 1.1 exibe a idéia geral desenvolvida nesse processo de integração. Os retângulos
representam o sistema utilizado em cada uma das versões a serem analisadas. As elipses exibem
os produtos obtidos após um processamento. O retângulo com borda dupla representa o ambiente
computacional utilizado para a integração proposta. As setas tracejadas representam o
processamento realizado para a geração de um produto e as setas contínuas representam a
integração entre ambiente e os demais componentes.
6
sistema
legado
Modelos
da EROO
Modelos
de
Projeto OO
Código Legado
+ Nova Interface 1
GaCIV
sistema
segmentado
Código Legado
+ Nova Interface 2
Sistema OO
Código Legado
+ Nova Interface 3
FIGURA 1.1 – Integração Proposta
A documentação obtida após a engenharia reversa auxilia o engenheiro de software a dar
manutenção no sistema legado e, se ele decidir pela mudança de linguagem de programação, essa
documentação apóia a fase de projeto.
1.5 Estrutura da Dissertação
O trabalho descrito neste capítulo é apresentado detalhadamente nesta dissertação da
seguinte forma: o capítulo 2 dá uma visão geral da aplicação da tecnologia de RV em interfaces;
o capítulo 3 apresenta o processo de reengenharia de interfaces e seu papel na manutenção de
sistemas legados, além de métodos e metodologias para a prática desse processo; no capítulo 4 é
apresentado o ambiente GaCIV de desenvolvimento de interfaces com RV, sua estrutura e
funcionamento; o estudo de caso realizado é detalhado no capítulo 5 e analisado no capítulo 6; no
capítulo 7 são apresentadas as conclusões obtidas, diretivas para o processo de reengenharia de
interfaces para interfaces com RV e trabalhos futuros.
7
Capítulo 2 – Interfaces com Realidade Virtual
2.1 Considerações iniciais
Durante o período entre a década de 1950 e 1960, a primeira geração de “interfaces” era
formada por cartões perfurados e computadores que só funcionavam em modo batch, sem haver
interação real entre homem e máquina. A segunda geração de interfaces, durante o início da
década de 1960, foi marcada pelo uso de mainframes e minicomputadores, através da técnica de
divisão de tempo (“timesharing”) com monitores alfanuméricos. Usuários podiam então interagir
com o computador digitando comandos com parâmetros. A geração seguinte surgiu das pesquisas
da Xerox PARC durante a década de 1970 (Van Dam, 1997) (Myers, 1996). Estações de trabalho
ligadas em rede com monitores gráficos e WIMP GUI’s (Windows, Icons, Menus, Pointin Device
– Graphical User Interface), que segundo Van Dam (1997) são interfaces gráficas do usuário
baseadas em janelas, ícones, menus, e um dispositivo de seleção, tipicamente um mouse.
As interfaces do tipo WIMP se popularizaram rapidamente e se tornaram dominantes no
mercado por mais de duas décadas. Em relação às gerações anteriores, trata-se de uma revolução
que permitiu o acesso a computadores por usuários não especializados (crianças, leigos em
computação, etc), além de trazer à tona questões sobre a importância da interface no
desenvolvimento de sistemas. Apesar do sucesso comercial, muitos problemas são associados às
interfaces estilo WIMP, alguns deles são citados por Van Dam (1997):
-
Quanto mais complexa a aplicação, mais difícil aprender e usar a interface devido ao
grande número de widgets e funcionalidades diferentes. O uso de cada widget
separadamente é fácil. Porém, quando considerados em conjunto, a interação ganha
complexidade;
-
Usuários focam a maior parte de sua atenção na interface e não na tarefa que pretendem
realizar;
-
Quando a informação é 3D, o mapeamento entre tarefas 3D e controles 2D não é natural;
-
Interfaces WIMP não permitem a exploração de todas as formas de interação humana,
deixando de lado, por exemplo, a fala, a audição e o toque.
Segundo Van Dam (1997), a quarta geração de interfaces é formada por interfaces que
implementam pelo menos uma interação independente de widgets WIMP. Essas interfaces são
chamadas de Pós-WIMP e têm por objetivo:
8
-
Envolver diversos sentidos humanos em paralelo;
-
Tornar a interação mais natural e intuitiva;
-
Permitir a interação de múltiplos usuários simultaneamente;
-
Aumentar a liberdade em relação à proximidade física do usuário e sistema.
A tecnologia de interação de quarta geração mais difundida é a RV. Trata-se de uma
tecnologia que tem como principal característica exploração de diversos sentidos do usuário para
causar uma sensação de imersão do usuário em um ambiente virtual onde o usuário manipula
objetos e realiza tarefas de maneira semelhante à realizada no mundo real (Weiss & Jessel, 1998).
Dessa forma a RV torna a interação do usuário mais intuitiva e natural atingindo muitos aspectos
de usabilidade desejados para interfaces de sistemas interativos.
As mudanças propostas pela RV e outras tecnologias de interface Pós-WIMP causam um
impacto direto à forma de desenvolvimento de interfaces. A implementação de tais interfaces
ainda apresenta alto grau de complexidade e custo em relação às interfaces WIMP.
Os conceitos relacionados a RV são apresentados na seção 2.2; na seção 2.3 são
detalhados aspectos de usabilidade relacionados à RV; e na seção 2.4 são encontradas
considerações sobre o desenvolvimento de interfaces com RV.
2.2 Conceituação
As características principais de interfaces com RV incluem gráficos 3D e um modelo de
ambiente, representando vida real ou estruturas e lugares artificiais. Um usuário interage com o
ambiente virtual navegando dentro dele. As percepções e interações com o ambiente podem ser
mapeadas a partir da realidade utilizando estímulos multi-sensoriais (Bowman et al, 2001).
O ambiente virtual é um dos principais componentes da interface com RV e envolve: o
usuário, que controla o ponto de vista da navegação; agentes, que são personagens ou objetos do
mundo virtual que podem executar ações independentemente do usuário; e objetos que povoam o
ambiente.
Outro importante componente é a interação básica oferecida pelas interfaces com RV:
navegação e interação com objetos. As interações com objetos de interfaces com RV não são
padronizadas, possibilitando diversas opções de interação: segurar objetos, rotaciona-los, movelos e manipulação para modifica-los. Em (Bowman et al, 2001) é apresentado uma pesquisa do
estado-da-arte das tecnologias e técnicas de interação utilizadas em interfaces com RV.
9
Freqüentemente as interfaces com RV envolvem novos dispositivos de hardware e
avançadas tecnologias, específicas para prover diferentes possibilidades de interação, tais como:
-
joysticks, mouse 3D e magics wands podem ser utilizados como dispositivos de
entrada para realização da navegação através do ambiente virtual em diferentes grausde-liberdade;
-
head-mounted displays podem ser usados como dispositivos de saída para
visualização do ambiente virtual de forma estereoscópica reforçando a imersão do
usuário no sistema;
-
dispositivos de force feedback, usados para simular sensação tátil ao usuário;
-
dispositivos de som estéreos permitem percepção de sons dinâmicos no ambiente.
Ambientes virtuais podem ser diferenciados de acordo com seu relacionamento com o
mundo real e o hardware utilizado (Bolzoni, 1994)1 apud (Kaur, 1998):
-
Ambientes imersivos utilizam head-mounted displays ou outro tipo de dispositivo de
visualização para aumentar a sensação de imersão do usuário;
-
Ambientes desktops ou não-imersivos utilizam monitores comuns e permitem que o
usuário mantenha contato com o mundo real;
-
Ambientes projetados, tais como as “Cavernas Virtuais” onde o ambiente virtual é
projetado;
-
Ambientes aumentados utilizam objetos reais com características virtuais especiais,
geralmente apresentadas através de um visualizador translúcido.
Ambientes imersivos têm o potencial de prover ao usuário maior envolvimento com o
ambiente virtual. Entretanto isola-o do mundo real, dificultando utilização de artefatos do mundo
real. Ambientes desktop, ou RV não-imersiva, permitem que o usuário navegue e interaja em um
ambiente 3D, mas sem causar a mesma sensação de imersão causada pela técnica citada
anteriormente. O usuário pode visualizar o ambiente virtual em computadores comuns,
interagindo através do teclado, mouse comum ou mouses 3D, por exemplo. Ambientes projetados
permitem que o usuário compartilhe sua experiência com outros usuários. Ambientes
1
(Bolzoni, 1994) Bolzoni M. L. G., Eliciting a context for rules of interaction: a taxonomy of metaphors for humanobjects communication in virtual and synthetic environments. In: 2nd UK Virtual Reality Interest Group
Conference, Theale, Reading, 1994, Proceedings. UK Virtual Reality-Special Interest Group and Contributors, pp
18-87.
10
aumentados, ou Realidade Aumentada, melhoram a visão do mundo real com informações extras,
porém requer exata correlação entre imagem real e informação superposta.
2.2.1 Comparação entre interfaces com RV e outros estilos de interfaces
A geração anterior de interfaces, interfaces WIMP, é caracterizada principalmente pela
característica de Manipulação Direta. Manipulação Direta (MD) é o termo utilizado para se
referir a uma classe de interfaces gráficas que permitem operar o sistema “diretamente” usando
ações manuais em vez de comandos textuais. Essa classe de sistemas mudou o paradigma da
interação humano-computador, do “diálogo” de comandos para a manipulação de elementos
visuais.
Comparando a nova geração, representada aqui pela interface com RV, e interfaces de
MD, algumas diferenças são evidentes:
-
Interfaces com RV são estruturadas em forma de gráficos 3D, acrescentando uma
dimensão ao estilo de interfaces de MD;
-
A interface com RV apresenta metáforas para a vida real ou ambiente artificial com
uma organização razoavelmente estática em contraposição às interfaces de MD que
apresentam continuamente objetos 2D relevantes às tarefas do usuário em um espaço
gráfico também 2D;
-
Interfaces de MD tem um paradigma de interação padrão estabelecido, enquanto
interfaces com RV precisam amadurecer esse conceito;
Entretanto, as interfaces com RV podem ser consideradas como uma continuação do estilo
conhecido como MD, pois as interações realizadas com objetos da interface com RV
compartilham algumas similaridades com o estilo anterior, como, por exemplo, selecionar e
mover objetos.
Interfaces com RV são semelhantes a hipertextos em relação à navegação do usuário. Nos
dois estilos de interfaces, o usuário precisa navegar buscando os objetos de seu interesse. As
interfaces com RV são exploratórias, com poucas tarefas estruturadas para realização de tarefas.
11
2.2.2 Aplicações
Ambientes com RV provêem mundos virtuais gerados por computador permitindo que o
usuário o explore e o manipule. Eles têm sido usados para diversas áreas específicas de aplicação:
-
Artes e entretenimento, na confecção de jogos e cinemas 3D;
-
Propaganda, em stands virtuais para atrair a atenção de clientes;
-
Teleoperação, criando interfaces realistas para controle de realização de tarefas
remotas através de robôs;
-
Telepresença ou Ambientes Virtuais Colaborativos, permitindo que pessoas distantes
geograficamente possam se comunicar e interagir;
-
Projeto e avaliação, como por exemplo, modelos virtuais para provar roupas ou provar
saídas de emergência de um prédio, através de seu modelo virtual;
-
Educação. Ambientes virtuais permitem que o usuário aprenda sobre um assunto
experimentando-a
diretamente,
como
por
exemplo
aprender
sobre
DNA’s
visualizando e manipulando representações virtuais de modelos virtuais de um DNA;
-
Treinamento, ambientes virtuais podem servir para simular operações de guerra,
situações de vôo, com o intuito de prover ambientes realistas nos quais podem ser
praticadas algumas habilidades;
-
Tratamentos para fobias diversas e psicoterapia para pacientes, ajudando-os a superar
problemas através da exposição gradual a situações mais difíceis;
-
Visualização de informação, provendo modelos 3D interativos de conjunto de
informações, adicionando possibilidade de interação e exploração.
Apesar das diversas aplicações possíveis, não há estudos conclusivos de quais domínios
de aplicações obtêm maiores benefícios quando utiliza interface com RV.
2.3 Características de Usabilidade em Sistemas com Interfaces com RV
Segundo Bryson (1995)2 apud (Kaur, 1998), ambientes virtuais reduzem a distância
psicológica ao representar domínios de tarefas de forma mais realística, facilitando interações
mais naturais. Em contrapartida, alguns problemas comumente encontrados em interfaces com
RV levam o usuário a sentir dificuldades em interagir com o sistema, causando frustração e
2
(Bryson S. 1995) Approches to the sucessful design and implementation of VR. In: Virtual Reality Applications,
ed. por R.A. Earnshaw, J. A. Vince e H. Jones (London: Academic Press).
12
queda na usabilidade da interface: desorientação, dificuldades para reconhecimento e confusão
causada por interações não naturais. Isso ocorre em grande parte porque se espera que as
interfaces com RV reflitam fielmente a realidade o que é ainda impossível devido a limitações
tecnológicas. Para atacar problemas desse tipo, Kaur (1998) propõe uma série de limitações para
que a interface não reflita idealmente a realidade e sim apresente soluções coerentes com as
limitações tecnológicas, tais como:
-
optar por limitações nas interações, como ausência de feedback tátil;
-
substituições, como o uso de gestos para a navegação ao invés de movimentação de
todo o corpo;
-
dar “poderes” ao usuário, por exemplo, permitir que o usuário voe no ambiente
virtual;
As soluções dadas trazem à tona questões de usabilidade tais como:
-
qual o nível de dificuldade que o usuário vai encontrar para utilizar seus “poderes”;
-
as substituições de interação podem variar muito de uma interface com RV para outra
devido à falta de padrões de interação;
-
quais são as técnicas de interação desejadas e quais são dispensáveis para cada
domínio de aplicação, de forma que o usuário possua um vocabulário suficiente de
técnicas de interação para se sentir envolvido no sistema.
A compreensão dos sentidos envolvidos para a realização das tarefas do usuário pode ser
a solução durante o desenvolvimento de interfaces com RV.
Além disso, é importante compreender e representar de forma adequada o modelo mental
que o usuário tem de suas tarefas através de metáforas. Um conjunto de interações pode ser bemsucedido se for bem comunicado ao usuário através da metáfora escolhida.
O teste de usabilidade de interfaces com RV imersiva junto ao usuário pode apresentar
diversas dificuldades, tais como a dificuldade de compartilhar uma mesma experiência de
interação
entre o usuário e o avaliador e obter informações úteis a partir dela. Possíveis
problemas dessa natureza, entretanto, devem servir como estímulo ao teste de interfaces com RV
junto ao usuário, pois indicam a necessidade de treinamento especial para avaliadores e, até
mesmo, criação de novas ferramentas e processos para o teste de usabilidade nesse ambiente
(Nielsen, 1993).
13
Nielsen (1993) indica a possibilidade de uso de avaliação com base em heurísticas de
usabilidade para RV. Atualmente pode-se encontrar diversas heurísticas para aspectos específicos
de usabilidade (Hinckley et al, 1994) (Bricken, 1990) (Hannaford & Venema, 1995), porém
poucas abrangem todos os aspectos em conjunto como em (Gabbard, 1997).
2.4 Desafios no Desenvolvimento de Sistemas com Interfaces com RV
Da mesma maneira como ocorre com heurísticas de usabilidades, atualmente podem ser
encontradas na literatura diretivas para o desenvolvimento de diversos aspectos específicos de
interfaces com RV, porém poucas abrangem todos os aspectos em uma só abordagem como
(Kaur, 1998). Isso acontece devido à complexidade da tecnologia RV.
O desenvolvimento de interfaces com RV envolve os seguintes aspectos:
-
desenvolvimento do ambiente virtual; o ambiente virtual deve ser baseado em um
domínio do mundo real utilizando metáforas para representação desse domínio. É
necessário determinar com qual nível de detalhamento de gráficos o ambiente deve ser
representado;
-
a representação do usuário deve ser coerente com a percepção própria do usuário;
-
agentes são componentes da interface que podem servir simplesmente como
instrutores para os usuários durante a navegação no ambiente 3D mas também podem
executar tarefas mais complexas como seguir e auxiliar o usuário em suas tarefas;
-
criação de objetos para povoar o ambiente virtual de forma a diferenciar objetos
interativos de não interativos;
-
realismo; objetos podem ser representados em vários níveis de realismo dependendo,
por exemplo, da importância do objeto para a tarefa realizada pelo usuário;
-
modelagem de outras modalidades de interação, como sonora e tátil, como formas
alternativas de feedback;
-
navegação do usuário, aspectos em relação aos graus de liberdade permitidos para
movimentação e velocidade;
-
interação com objeto; diversos métodos de interação podem ser vistos em (Bowman et
al, 2001) para seleção e manipulação de objetos. Como dito anteriormente, as
interações com objetos em interfaces com RV não possuem padrão e por isso podem
14
variar muito de um projeto para outro, sendo portanto um dos aspectos mais
complexos no desenvolvimento de interfaces com RV;
-
em ambientes colaborativos, deve-se criar métodos de comunicação entre os usuários;
-
integração entre dispositivos de entrada e saída e mapeamento de interação do usuário
para esses dispositivos; em (Bowman et al, 2001) são apresentados opções de
dispositivos utilizados para entrada e saída.
Apesar da complexidade do desenvolvimento da interface com RV, não existe na
literatura modelos ou métodos específicos para esse processo, tornando mais difícil a criação de
interfaces dessa natureza. O engenheiro de software precisa escolher entre os inúmeros modelos e
métodos de HCI, adaptando-os de acordo com as necessidades do projeto, para representação do
modelo de interação, modelo do ambiente virtual e dispositivos de entrada e saída utilizados.
2.5 Considerações Finais
Neste capítulo foram apresentados conceitos relacionados à tecnologia RV. Devido aos
diferentes e complexos aspectos dessa tecnologia, é necessário dar maior atenção à usabilidade e
implementação dessas interfaces.
O uso de interfaces com RV pode resolver muitos problemas de usabilidade encontrados
em sistemas utilizando outros estilos de interface. Para que sistemas com interfaces antigas
possam utilizar essa nova tecnologia é interessante realizar um processo de reengenharia de
interfaces, como é mostrado no capítulo 3.
15
Capítulo 3 - Reengenharia de Interfaces
3.1 Considerações iniciais
Neste capítulo são apresentados os estudos realizados buscando soluções para o uso de
métodos e modelos na reengenharia de interfaces para interfaces com RV. Na seção 3.2 é
apresentada uma visão da reengenharia de sistemas no contexto de usabilidade e tópicos sobre a
reengenharia de interfaces para interfaces com RV são abordados na seção 3.3. A seção 3.4
apresenta algumas considerações finais.
3.2 O processo de reengenharia de sistemas no contexto de usabilidade
Sistemas legados são representados muitas vezes por sistemas gerados para uma
arquitetura baseada em mainframes, utilizando técnicas de desenvolvimento não estruturadas e
linguagens de programação obsoletas. A estrutura do sistema muitas vezes se apresenta
deteriorada por mudanças e adaptações mal documentadas. Entretanto, esses sistemas não
raramente são vitais para apoio aos negócios, pois reúnem todo o conhecimento e dados sobre o
domínio de uma aplicação.
Existem diversas opções para recuperar e gerenciar sistemas legados. Algumas soluções
típicas são:
-
descartar o sistema legado e construir um novo sistema equivalente;
-
utilizar o sistema como componente de um sistema maior;
-
continuar realizando manutenções;
-
modificar o sistema, aumentando seu período de vida.
Modificações podem variar de simplificação do sistema legado à manutenção preventiva
(re-documentação e re-estruturação), ou mesmo manutenções adaptativas, tais como: redesenvolvimento da interface, encapsulamento e migração.
A reengenharia para melhorar a compreensão e manutenibilidade de sistemas é uma
prática aceita pela comunidade de manutenção de software. A reengenharia de sistemas, segundo
a taxonomia de Chikofsky e Cross II (1990), é “o exame e alteração de um sistema para
reconstituição em uma nova forma, e subseqüente implementação da nova forma”. Fica evidente,
16
portanto, que a reengenharia de sistemas implica em uma fase de engenharia reversa para a
recuperação de uma visão abstrata do sistema e uma fase de transformação ou re-interpretação
dessa visão seguida da implementação da nova visão do sistema.
Os principais objetivos da reengenharia, segundo Sneed (1995) são:
-
Aumentar a manutenibilidade;
-
Migrar o software existente para uma plataforma melhor ou de custo mais baixo.
-
Atingir maior confiabilidade.
-
Modificar a estrutura do sistema existente para facilitar futuras adições de
funcionalidades.
Segundo Pressman (1997), além desses objetivos, pode-se ainda usar a reengenharia para
mudança de paradigma da implementação do sistema e para mudança de interfaces.
A reengenharia de interfaces pode tornar interfaces de sistemas legados mais amigáveis e
dessa forma aumentar o tempo de vida do sistema (Merlo, 1995). Em (Vanniamparampil et al,
1995) a reengenharia de interfaces é definida como a realização de um novo projeto de interface a
partir de uma interface existente para melhorar a performance e satisfação do usuário, além de
diminuir o tempo de aprendizagem e a taxa de erros do usuário. Atualmente, o termo usabilidade
substitui o termo “amigável” (“user friendly”) e é usado como sinônimo para características
desejáveis em um sistema para que eles correspondam às expectativas de performance do
usuário. Usabilidade define um conjunto de características desejáveis para que a interface possa
prover acesso às funções de uma aplicação de modo que reflita a maneira de pensar do usuário
(Wood, 1998). Isso requer que a aplicação não só forneça suporte para aspectos necessários ao
trabalho do usuário, mas também forneça meios para eles interagirem com o sistema de forma
intuitiva e natural (Wood, 1998).
Para muitas organizações, o re-desenvolvimento completo dos sistemas legados não é
uma opção, forçando-os a optar por alternativas para lidar com o sistema legado. Uma das opções
é a realização da reengenharia da interface para melhorar sua usabilidade, prolongando seu tempo
de vida.
3.3 Métodos para apoio à reengenharia de interfaces
Nessa seção são apresentados diversos métodos e abordagens para a aplicação de
reengenharia de interfaces, incluindo a reengenharia de interfaces com RV.
17
3.3.1 Abordagens para o processo de reengenharia de interfaces
Apesar das diferentes técnicas desenvolvidas para a realização da reengenharia de
interfaces, existem duas abordagens principais: o encapsulamento (wrapping) da interface com
uma nova interface mais acessível; e o re-desenvolvimento, que significa a re-escrita do código
do sistema legado para aperfeiçoamento da interface. Como constatado em (Bisbal et al, 1999), a
classificação das abordagens de processos de reengenharia de sistemas nem sempre é precisa
pois, por exemplo, a migração de um software para uma nova plataforma de hardware pode
envolver encapsulamento de parte do sistema, manutenção de outra parte e re-desenvolvimento
de outra.
O encapsulamento implica na criação de uma nova camada de interface que se sobrepõe à
interface original do sistema tornando-se um intermediário entre a antiga interface e o usuário ou
outras aplicações. Essa nova interface transforma os dados recebidos pela antiga interface para
ser apresentada em um novo estilo de interface, mudando o estilo de apresentação dos dados,
estilo de interação com o usuário ou para se adaptar a novas arquiteturas computacionais (Sneed,
2001).
O re-desenvolvimento das interfaces de um sistema legado é um processo que envolve a
identificação, compreensão e separação do código da interface original do código da aplicação,
substituindo-a pela nova interface.
Comparando os processos de reengenharia para encapsulamento, manutenção e redesenvolvimento, o encapsulamento é o processo que causa menos impacto no código do sistema
legado, enquanto o re-desenvolvimento é o processo que resulta em maiores alterações no código,
além de envolver maiores esforços e custos. O processo de manutenção fica entre os extremos,
encapsulamento e re-desenvolvimento, em relação a esforços e impacto no código da aplicação.
Isto acontece porque, dependendo da manutenção necessária, a interface pode ser parte
encapsulada ou re-desenvolvida (Bisbal et al, 1999).
Um exemplo de reengenharia de interfaces para a migração de sistemas legados para uma
nova arquitetura de hardware pode ser vista em (Sneed, 2001). Nesse caso, técnicas de
encapsulamento foram aplicadas na interface de um sistema legado desenvolvido originalmente
em COBOL de forma a torna-lo acessível através da tecnologia XML em uma Intranet ou mesmo
pela Internet. Com as técnicas utilizadas, o sistema legado, desenvolvido originalmente apenas
para acesso local, pôde ser reutilizado diminuindo custos e tempo de desenvolvimento
18
necessários para uma reengenharia de todo o sistema. Para essa abordagem pouco código do
sistema original foi modificado, apenas foram criadas novas interfaces XML para gerar
documentos XML como saída e aceitar documentos XML como entrada de dados.
Modelos e métodos para a abordagem de re-desenvolvimento das interfaces do sistema
legado são apresentados em (Merlo et al, 1993), que utiliza a representação AUIDL para esse
processo; e em (Moore, 1996) e (Moore, 2002), onde é apresentado o ambiente MORPH para
automatização do processo de reengenharia de interfaces.
A tentativa de compreensão de códigos-fonte de sistemas legados pode significar grandes
gastos econômicos e de tempo devido à complexidade e extensão de códigos desse tipo, a não ser
que seja utilizada alguma ferramenta de apoio automatizado. Além disso, dificuldades como a
ausência dos desenvolvedores e usuários do sistema original, códigos acrescentados sem
documentação ou a existência apenas da versão executável do sistema legado podem tornar essa
abordagem impraticável (Stroulia et al, 1999).
Em (Stroulia et al, 1999) é encontrada uma técnica de reengenharia de interfaces onde é
utilizada a execução do sistema pelo usuário como fonte de informações sobre o sistema. A partir
dessa execução, baseando-se nas interações realizadas pelo usuário durante o diálogo com o
sistema legado, é construído um “mapa” da interface do sistema em termos de telas e transições
entre elas. Esse diagrama de transição de telas é usado para representar as telas navegadas pelo
usuário para realizar sua tarefa. Juntamente com o fluxo de informações trocados entre usuário e
sistema, o diagrama de transição de telas é analisado e utilizado posteriormente para o
desenvolvimento da nova interface gráfica. Todo o processo é apoiado por ferramentas
automatizadas e gera como resultado uma interface gráfica dinâmica em HTML.
Em (Tucker & Stirewalt, 1999) é detalhado um processo de reengenharia de interfaces
para sistemas “batch” com pouca interação de forma a torna-los mais interativos. Nesse tipo de
sistema o usuário entra com um comando “batch” e geralmente obtém arquivos de dados
complexos resultantes de funções também complexas dificultando o seu entendimento. Segundo
Tucker e Stirewalt (1999), a usabilidade desses sistemas pode ser melhorada se o usuário tiver
mais controle e puder filtrar esses dados. A solução dada é a modularização do sistema e da
interface para expor dados intermediários ao usuário. Com isso o usuário obtém maior controle
dos dados durante a execução do programa. Esse processo exige total re-desenvolvimento do
sistema legado.
19
3.3.2 Reengenharia de interfaces para interfaces com RV
A reengenharia de interfaces para interfaces com RV, assim como a engenharia avante de
interfaces com RV, apresenta maior complexidade do que outros tipos de interfaces, por envolver
mapeamento de interfaces com características de apresentação e interação limitadas e
padronizadas para uma tecnologia relativamente nova e não padronizada, com diversos estilos de
interação e possibilidades de configuração de dispositivos de entrada e saída. Interfaces com RV
extrapolam o paradigma de Manipulação Direta, permitindo inúmeras técnicas de interação,
incluindo sons, feedback tátil e olfativo, dificultando a representação em modelos tradicionais de
interação, como pode ser visto em (Willans & Harrison, 2001).
Sistemas interativos legados, tais como aplicações comerciais para controle de estoque,
gerenciamento de estabelecimentos comerciais, além de sistemas de empréstimos/consultas a
bibliotecas entre outros, trabalham, na sua maioria, com informações textuais e acesso a bancos
de dados. Para que esse tipo de informação seja apresentada em interfaces com RV, é necessário
que se faça o re-desenvolvimento da interface da aplicação original, possibilitando o tratamento
dessas informações para apresentação em forma de gráficos 3D. Essa abordagem pode esbarrar
no simples fato de que algumas informações são mais facilmente observadas na forma de textos
ou gráficos 2D, como mostrado em (Nielsen, 1998).
Outra solução é a criação de interfaces mistas que utilizam recursos de interfaces com RV
juntamente com recursos 2D tais como botões, menus popup, caixas de textos etc. Essa solução
possui a vantagem de manter alguns padrões de interação e visualização de dados 2D utilizados
em sistemas legados, dentro de um ambiente mais envolvente para o usuário.
Este trabalho propõe o encapsulamento do sistema legado com interfaces com RV de
forma que as novas interfaces sejam utilizadas para substituir as camadas mais altas de abstração
da árvore de menus de sistemas legados, isto é, telas de interface usadas apenas para classificar as
funcionalidades do sistema legado. Essas telas são úteis para a organização das diversas
funcionalidades, porém acabam ficando entre o usuário e suas tarefas. Além disso, acredita-se
que o maior poder de representação de gráficos 3D podem melhorar a usabilidade do sistema ao
facilitar o reconhecimento das tarefas do usuário.
A reengenharia para interfaces com RV apresenta possibilidades de incrementar metáforas
de representação das funcionalidades não só devido ao poder de representação, mas também
pelos diversos dispositivos de entrada e saída possíveis para interação com usuário. É
20
interessante, portanto, que o engenheiro de software tenha uma visão do domínio do sistema
independente de modelos de projeto usados na implementação do sistema legado. Isso deve-se à
possibilidade de que a re-implementação das interfaces do sistema fuja radicalmente dos padrões
de interação utilizados para sistemas textuais ou WIMP. Entretanto, é importante ressaltar que o
modelo mental do usuário em relação às suas tarefas não pode ser descartado e sim seguido como
diretiva para todo o projeto com RV.
Além disso, devido à falta de padrões no uso de tecnologias e estilos de interação em
interfaces com RV, cabe ao engenheiro de software decidir quando realizar mudanças drásticas
de estilo de interação e quando adaptar padrões existentes para tecnologias 2D de forma a
facilitar a adaptação dos usuários do sistema legado à nova interface. Outro fator importante para
a decisão do engenheiro de software quanto ao uso dos estilos de interação e tecnologias de RV é
o impacto causado no sistema legado. Quanto mais radical for a mudança da interface, maior será
o impacto causado no sistema original, podendo causar a necessidade de reengenharia do próprio
sistema, no pior caso, para adaptar os formatos dos dados de entrada e saída para a nova
interface, o que tornaria o processo custoso e possivelmente inviável.
Não foram encontrados na literatura processos específicos para a realização de
reengenharia de interfaces para interfaces com RV. Entretanto, diversos métodos e modelos
foram encontrados para a engenharia reversa e a engenharia avante de interfaces em geral. A
aplicabilidade desses métodos e modelos em processos, visando o uso de RV, foi analisada e os
resultados obtidos são apresentados na seção 3.3.3 a seguir.
3.3.3 Revisão de Métodos e Modelos para apoio à reengenharia de interfaces
Desde a constatação do importante papel representado pela interface em sistemas
interativos durante a Segunda Guerra Mundial (ACM, 1999), diversas teorias, modelos e métodos
foram criados para o estudo e desenvolvimento de interfaces. Como mostrado em (Assis, 1999),
de acordo com Shneiderman (1998), “uma teoria é uma abstração da realidade que, embora nem
sempre seja completa, proporciona entendimento a quem a estuda e produz conclusões similares
a todos que a utilizam e é útil na solução de determinados problemas práticos”. Porém, para
tornar o conteúdo de uma teoria praticável, é preciso que se criem modelos que a representem,
para ser adotados e utilizados por desenvolvedores.
21
Dentre os modelos originados para o desenvolvimento de interfaces, deve-se dar destaque
ao modelo cognitivo que apresenta uma base teórica (fundamentada na psicologia cognitiva) para
o entendimento de como o usuário se comporta diante de uma interface de computador. A partir
desse modelo, vários métodos de desenvolvimento, teste e avaliação de interfaces foram criados
tais como o CLG (Moran, 1981), o TAL (Reisner, 1981) e o GOMS (Card & Newell, 1983). O
GOMS faz uso de um modelo do comportamento humano, o MPH (Modelo do Processador
Humano), formulado a partir de metáforas computacionais para representar teorias psicológicas.
Além da abordagem cognitiva foram desenvolvidas e/ou adaptadas abordagens
computacionais para o desenvolvimento de interfaces e sistemas interativos. Com isso surgiram
abordagens como a de Projeto Centrado no Usuário (PCU). Projetos em que o desenvolvimento
dá prioridade às necessidades, às limitações, enfim, às características dos usuários do sistema
(Gulliksen et al,1998), como é o caso das metodologias USE (Wasserman et al, 1986), LUCID
(Cognetics, 1999) e a Engenharia de Usabilidade (Nielsen, 1993). Outra abordagem de
desenvolvimento de sistemas interativos é o Projeto Participatório (Kuhn & Muller, 1993)
(Gulliksen et al,1998), no qual as preocupações em relação à satisfação do usuário, demonstradas
na abordagem PCU, persistem porém, com a característica adicional da participação ativa do
usuário no desenvolvimento do sistema em uma ou mais fases do processo (Gulliksen et al,1998).
Muitas metodologias foram desenvolvidas seguindo essa abordagem, sendo que a metodologia
The Bridge (Dayton et al, 1998) apresentada neste capítulo foi escolhida apenas devido à
facilidade de serem identificadas, em seus métodos, as características básicas de uma
metodologia de Projeto Participatório (Kuhn & Muller, 1993).
Muitos conceitos surgiram a partir da década de 40 e amadureceram dando origem ao
termo “usabilidade” da interface. A maior parte desses conceitos está inclusa nos Projetos
Centrados no Usuário e no Projeto Participatório.
Grandes melhorias foram feitas em relação às interfaces do usuário nos últimos 20 anos,
através do uso de componentes e recursos GUI’s (Xerox Star, desktop Apple Macintosh e
Windows) e a transição de métodos centrados no sistema para centrados no usuário (Wood,
1998).
Mais recentemente, no final da década de oitenta, o grupo de IHC da IBM percebeu que
os usuários não se beneficiavam com os sistemas operacionais caracterizados pela capacidade de
abrir diversas janelas e permitir que vários aplicativos executassem “ao mesmo tempo”, pelo
22
contrário, os usuários ficavam sobrecarregados e não obtinham nenhuma ajuda do computador
para gerenciar os aplicativos (IBM, 2001a). Essa percepção levou ao desenvolvimento da
interface do usuário orientada a objetos (OOUI). Mais tarde, pesquisadores da IBM criaram o
OVID (Object, View and Interaction Design), uma abordagem de PCU para o desenvolvimento
de OOUI’s. Essa mesma metodologia pode ser utilizada por equipes de desenvolvedores que
tenham usuários em sua formação, podendo ser vista como uma abordagem Participatória
também.
Outra metodologia que aborda a modelagem de OOUI’s é a metodologia OOHDM
(Feltrim, 1998) criada visando o desenvolvimento de sistemas hipermídia.
O modelo que utiliza Statecharts para modelar interfaces, criado por Horrocks (1999)
apresenta uma visão diferente da interação homem computador. Nesta visão, o diálogo direto
entre homem e computador deve ser desenvolvido antes da aplicação por equipes
multidisciplinares, com profissionais de áreas diversas (comunicação visual, psicólogos,
profissionais da área de ergonomia, etc), não necessariamente pertencentes à área de computação.
Depois disso, deve-se criar então um modelo para integração da interface com a aplicação
(desenvolvida paralelamente) e para isso o uso do Statecharts é proposto.
Alguns modelos para representação da interface e suas possíveis aplicações em um
processo de reengenharia de interface são analisados em (Moore, 1996). Dentre os modelos e
métodos analisados por Moore, destacam-se o Statecharts e GOMS. As metodologias OVID e
FUSION RE/I também foram analisados por este pesquisador, complementando a análise de
Moore com modelos e métodos utilizados em desenvolvimento de software interativo orientado a
objetos com foco na interface. As conclusões obtidas a partir dessa pesquisa são apresentadas nas
seções da 3.3.3.1 a 3.3.3.4. Uma análise mais detalhada dos métodos e modelos é encontrada em
(Soares et al, 2001a).
3.3.3.1 Statecharts
Statecharts possuem a capacidade de expressar hierarquias de estados, agrupando-os em
unidades maiores, o que possibilita representar árvores de menus de interfaces extensas. Além
disso, statecharts podem representar concorrência e broadcast.
Em (Horrocks, 1999) não há uma seqüência rígida de passos para o desenvolvimento de
um projeto de software da interface do usuário usando statecharts. Ao invés disso, Horrocks
23
(1999) oferece uma série de heurísticas de projeto que podem ser aplicadas durante o
desenvolvimento de projeto. A idéia principal do desenvolvimento de projetos desse tipo é
gradualmente identificar estados de um statechart dos níveis de abstração mais alto para os mais
baixos (top – down). Porém, devido à necessidade de se conhecer o comportamento de cada
componente da interface isoladamente antes de se ter uma visão geral do comportamento da
interface como um todo, a abordagem top-down aplicada sozinha pode ser ineficiente (Horrocks,
1999). Em alguns momentos é necessária uma visão bottom-up para se compreender o
comportamento da interface.
Em um projeto de reengenharia de interfaces para RV visando o encapsulamento do
sistema legado, a análise top-down para recuperar as hierarquias de classificação utilizadas
originalmente é o suficiente para construir uma representação da interface com statecharts, sem
considerar o nível de interfaces ligadas às funcionalidades. Para isso algumas diretivas sugeridas
por Horrocks (1999) podem ser seguidas:
-
Identificar o statechart de alto nível. Geralmente os estados de mais alto nível correspondem
às telas pelas quais se navega ao utilizar a interface. Cada tela deve ser modelada
separadamente, mas deve-se prestar atenção em como elas interagem. Outros candidatos a
estados de alto nível são as janelas e sub–janelas da interface.
-
Tentar manter o diagrama limpo para facilitar a visualização. Evitar sobreposição de arcos e
proximidade excessiva de estados.
-
Transições concorrentes devem ser totalmente independentes uma das outras. Se as partes
concorrentes possuem alguma dependência insolúvel, deve-se tentar uni-las.
-
Evitar arcos que ultrapassam vários níveis em uma hierarquia de estados.
-
Nomear estados. Cada estado deve ter um nome significativo.
Para um processo de re-desenvolvimento da interface para interface com RV, incluindo as
interfaces associadas às funcionalidades do sistema legado, o engenheiro de software pode achar
importante modelar o comportamento de objetos das telas de interface, visando mapear o estilo
de interação original na nova interface utilizando as seguintes diretivas:
-
Analisar regras da tela. Verificar o comportamento dos itens associados a uma tela. Podem
ser considerados itens: botões, itens de menus, itens de texto, radio buttons e assim por
diante. Dentro dessa heurística, os seguintes itens devem ser observados:
1- Que eventos o usuário precisa gerar para entrar na tela? E para sair?
24
2- Existe algum tipo de “modo” nessa tela? Isto é, o software, nesse ponto, pode entrar
em um estado onde os eventos do usuário terão significados diferentes?
3- Algum item tem seu comportamento alterado durante a interação do usuário com essa
tela?
4- Quais itens não têm seu comportamento alterado?
-
Converter regras de telas para um statechart.
-
Agrupar itens de comportamento relacionado, que possam ser agrupados em um mesmo
estado. Buscar grupos de itens que trabalham juntos como uma única entidade.
-
Separar itens de comportamento não relacionado. Comportamentos independentes devem
pertencer a estados diferentes.
-
Sincronizar partes concorrentes com eventos simultâneos. É possível que um evento
provocado pelo usuário resulte em transições simultâneas em partes concorrentes e essas
transições devem estar sincronizadas.
3.3.3.2 GOMS - Goals, Operators, Methods and Selection rules
O GOMS faz uso do MPH para descrever o comportamento humano (Card & Newell,
1983). O MPH é uma aproximação das capacidades de processamento de informações de uma
pessoa, descrevendo o comportamento humano em termos de memórias, processadores, seus
parâmetros e interconexões. O MPH é usado para prever aproximações do comportamento sendo
uma visão simplificada de teorias de psicologia e dados empíricos que podem ser usados por
não-psicólogos para prever o comportamento do usuário durante a interação humano-computador
(Card & Newell, 1983).
O MPH é dividido em três subsistemas: o sistema perceptivo, o sistema motor e o sistema
cognitivo, cada um com seus processadores e memórias. O sistema perceptivo recebe os
estímulos visuais e auditivos para serem processados e codificados. A memória de trabalho do
sistema cognitivo recebe a informação codificada do sistema perceptivo. O sistema cognitivo usa
informações previamente armazenadas na memória de longo-termo para tomar decisões sobre
como responder. O sistema motor executa as respostas.
Os parâmetros do sistema de memória são: capacidade de armazenamento em itens (µ), o
tempo de degradação de um item (λ) e o tipo principal de código (κ). Card et al., como mostrado
25
em (Card & Newell, 1983), atribui valores aproximados para os parâmetros identificados por
eles.
Presume-se que a estrutura cognitiva do usuário é composta de quatro componentes: um
conjunto de metas, um conjunto de operadores, um conjunto de métodos para atingir os objetivos,
e um conjunto de regras de seleção de métodos para atingir as metas. Tais componentes são
definidos como:
-
Metas (Goals): estruturas simbólicas que definem um estado a ser atingido e determina
um conjunto de possíveis métodos pelos quais pode-se atingir o estado desejado. As
metas fornecem um ponto de retorno para o processador humano (MPH), caso haja erros e
informações sobre o que já foi realizado.
-
Operadores (Operators): ações perceptivas, motoras ou cognitivas básicas cuja execução
é necessária para mudar qualquer aspecto do estado mental do usuário ou para afetar o
ambiente da tarefa realizada (Card & Newell, 1983). O modelo GOMS não permite
comportamento concorrente, assumindo que o comportamento seja uma execução
seqüencial de operadores (Card & Newell, 1983). A definição do nível de abstração dos
operadores define a granularidade da análise de tarefas. Quanto maior a granularidade
mais detalhes dos mecanismos psicológicos envolvidos na realização da tarefa estarão
envolvidos. Quanto menor a granularidade, mais detalhes dos mecanismos de realização
(nível de abstração maior) da tarefa estarão envolvidos.
-
Métodos (Methods): descrições de procedimentos para atingir metas (Gray & BoehmDavis, 2000). Em GOMS, métodos são procedimentos presumidamente aprendidos pelos
usuários e não planos que eles possam criar durante a realização da tarefa. Assume-se que
esses métodos estão na memória de longo-termo do usuário.
Regras de Seleção (Selection Rules). Regras de seleção são regras usadas para escolher
um entre vários métodos existentes para atingir um mesmo objetivo (Gray & BoehmDavis, 2000).
O modelo resultante do GOMS deve ser usado para avaliação da tarefa do usuário em
relação ao seu desempenho após a análise da mesma ou para a implementação direta. Ele assume
que os usuários realizam suas ações de forma racional para atingir suas metas e, portanto, o
comportamento do usuário pode ser previsto ao determinar as metas do usuário (goals), seus
métodos (methods), operadores (operators) e restrições da tarefa.
26
No contexto da reengenharia de interfaces para interfaces com RV, o modelo gerado com
a utilização do GOMS pode ser utilizado na fase de engenharia reversa para identificar as tarefas
realizadas pelo usuário em alto nível de abstração e em detalhes, se necessário. Com a visão
abstrata do sistema, o engenheiro de software pode identificar possíveis metáforas e hierarquias
de classificação de funcionalidades a serem representadas por objetos 3D na interface com RV. O
GOMS tem como objetivo recuperar o modelo mental que o usuário faz do sistema ou analizar o
desempenho do usuário para realizar certas tarefas. Portanto o GOMS busca a visão do usuário
em relação ao sistema, o que pode ser muito útil para melhor compreensão do domínio e
formulação de uma metáfora para a interface com RV.
3.3.3.3 OVID - Object, View and Interaction Design
O OVID, segundo Roberts (1998), é uma metodologia formal criada pela IBM para
desenvolvimento de interfaces orientadas a objetos. A notação utilizada como base é UML. No
OVID, o foco de atenção está em três itens:
-
Objetos;
-
Visões;
-
Interações.
Objetos, no OVID, são percepções dos objetos reais utilizados pelos usuários quando
realizam suas tarefas no mundo real.
Visões são criadas a partir dos objetos, e representam aspectos dos objetos que devem ser
mostrados aos usuários para que eles tenham toda a informação necessária para realizar suas
tarefas.
Interações entre usuários e objetos devem corresponder, de alguma forma, às interações
entre o usuário e os objetos do mundo real, para que não haja inconsistências na interface.
Inicialmente, é realizada uma análise de tarefas. Durante essa fase são coletadas
informações sobre os usuários e o trabalho que eles realizam. Essa coleta pode ser realizada de
diversas formas: entrevistas, observação, testes das versões anteriores do sistema e análise do
sistema.
Para a análise de tarefas propriamente dita, qualquer técnica de análise existente pode ser
usada. Porém, duas técnicas são apresentadas em (Roberts, 1998), devido a sua popularidade:
análise hierárquica de tarefas e use cases.
27
A partir da análise de tarefas, objetos devem ser identificados. Para tanto, recomenda-se
examinar o texto gerado durante a análise de tarefas buscando substantivos que serão candidatos
a objetos.
Com o modelo de objetos pronto, deve-se então identificar as visões. As visões devem ser
criadas a partir dos aspectos dos objetos aos quais o usuário deve ter acesso para realizar suas
tarefas. Deve-se priorizar as tarefas mais freqüentemente realizadas. As visões são representadas
no modelo de objetos por objetos ligados pela relação de agregação aos objetos aos quais elas
pertencem. As visões são completadas por notas. Estas notas são ligadas às visões e aos
relacionamentos de onde recebem alguma informação como mostra a figura 3.1.
FIGURA 3.1 – Modelo de objetos com visões representadas do OVID, adaptada de (IBM, 2001b)
Após ter as visões definidas, deve-se determinar as tarefas suportadas pelas visões. Com
esse objetivo, é criado um diagrama de interação para cada tarefa. O diagrama de interação
corresponde ao diagrama de seqüência da UML.
Os modelos utilizados em OVID podem ser aplicados na fase de engenharia reversa em
um processo de reengenharia de interfaces de sistemas OO visando o re-desenvolvimento da
interface para interfaces com RV. A notação de visões é interessante para representar de forma
abstrata as interfaces e a origem dos dados utilizados nela pois está livre de qualquer detalhe de
implementação, facilitando uma visão geral do sistema e dos dados a serem apresentados na nova
interface com RV. Para tanto, é necessária a recuperação do modelo de classes do sistema, em
uma análise bottom-up do sistema, ou simplesmente através da recuperação da documentação do
sistema. Com o modelo de classes recuperado, uma análise top-down, a partir da execução do
28
sistema legado, deve ser feita para recuperar as tarefas do usuário e as visões, associando-as ao
modelo de classes.
Para a fase de engenharia avante da nova interface com RV, o diagrama de classes deve
ser refinado, acrescentando objetos do modelo de implementação que explicitam como os objetos
serão apresentados no ambiente virtual, e em seguida gerar o diagrama de interação.
3.3.3.4 FUSION RE/I
Existem alguns métodos para apoiar a engenharia reversa orientada a objetos de sistemas.
O FUSION-RE (Penteado, 1996) é um conjunto de regras bem definidas para a engenharia
reversa de sistemas que não seguem o paradigma de orientação a objetos. Os resultados desta
abordagem são modelos de análise seguindo o paradigma de orientação a objetos. Esse método
foi utilizado em alguns sistemas implementados em diferentes linguagens não orientadas a
objetos. Os passos que compõem esse método são:
1- Revitalização da Arquitetura do Sistema. Recuperação de listas cruzadas dos procedimentos
utilizados. Essas listas recebem o nome de listas “Chama/Chamado”;
2- Elaboração do Modelo de Análise do Sistema Atual (MASA). A partir do código legado, são
construídos os modelos de análise orientados a objetos;
3- Elaboração do Modelo de Análise do Sistema (MAS). Abstrações são feitas no MASA para
que somente as classes da aplicação sejam consideradas;
4- Mapeamento MAS x MASA. Esse mapeamento é realizado para facilitar a conversão dos
procedimentos em métodos, dos elementos de dados em atributos com nomes mais
significativos.
Uma das extensões do método FUSION-RE é o FUSION-RE/I (Costa, 1997) que mantém
praticamente a mesma abordagem, recuperando os modelos de análise FUSION (Coleman et al,
1994) com a característica adicional de partir da interface do sistema para facilitar a recuperação
de visões do sistema.
29
FIGURA 3.2 – Visão Geral da metodologia FUSION-RE/I (Feltrim et al, 1999)
Como pode ser visto na figura 3.2, esse método é composto por duas etapas:
1- Abstração da funcionalidade do sistema;
2- Identificação dos procedimentos que implementam as operações da interface do sistema,
associando-os à sua funcionalidade, à interface ou a um dos “temas” do sistema.
A utilização da interface como fonte de informações para a recuperação de visões do
sistema ocorre durante as atividades desenvolvidas na primeira etapa do FUSION-RE/I. O
processo de recuperação de informações a partir da interface do sistema prevê o uso exaustivo do
software e cruzamento de informações com os dados obtido de todas as outras fontes de
informações existentes (manuais, documentação, conceitos, informações com usuários, etc) para
recuperar os modelos de interface, isto é, o modelo de ciclo de vida e operações. Nessa mesma
fase é recuperado o modelo de objetos.
O modelo de ciclo de vida recupera as seqüências permitidas de operações e eventos do
sistema a partir da observação da interface do sistema e representa-as por expressões regulares na
notação do FUSION.
O modelo de operações caracteriza o efeito de cada operação do sistema em termos de
mudanças de estado e eventos gerados. A representação do modelo de operações é feita através
de gabaritos textuais com informações: nome da operação, descrição, itens lidos, itens
modificados, eventos gerados, pré-condição e resultados.
30
O método FUSION-RE/I foi utilizado no processo de reengenharia de um sistema
hipermídia durante a fase de engenharia reversa para recuperação da documentação do software
em (Feltrim et al, 1999).
Os modelos de interface recuperados com FUSION RE/I, juntamente aos modelos do
sistema, representam importantes modelos para a compreensão do sistema legado em um
processo de re-desenvolvimento da interface do sistema para interfaces com RV, mesmo porque a
reengenharia pode ser vista como um processo de reengenharia do sistema para agregar melhorias
em sua interface. Entretanto, faltam modelos que mapeiam a interface mostrando sua organização
de forma a facilitar a compreensão dos critérios utilizados para classificar as funcionalidades do
sistema. A recuperação desses critérios facilita a criação de metáforas em um possível processo
de encapsulamento e reorganização da interface com interface com RV, como realizada neste
trabalho.
3.4 Considerações Finais
Neste capítulo foi visto como o processo de reengenharia de interfaces pode ser usado na
manutenção de sistemas legados, foram apresentadas diversas abordagens de reengenharia de
interfaces e como métodos e modelos de engenharia de software de interfaces podem ser
utilizados em processos de reengenharia de software, especialmente em processos de
reengenharia de interfaces para interfaces com RV.
31
Capítulo 4 - O Ambiente GaCIV
4.1 Considerações Iniciais
As mudanças propostas pela RV e outras tecnologias de interface Pós-WIMP causam um
impacto direto à forma de desenvolvimento de interfaces. A implementação de tais interfaces
ainda apresenta alto grau de complexidade e custo em relação às interfaces WIMP. O ambiente
GaCIV, apresentado neste capítulo, tem como objetivo dar apoio à criação de interfaces PósWIMP de forma rápida e viável.
Na seção 4.2 são apresentadas as características do GaCIV; na seção 4.3 são mostradas as
principais aplicações do GaCIV em processos de engenharia de software; e na seção 4.4 são
comentadas algumas considerações finais.
4.2 Características
O GaCIV, ambiente com Gabaritos Configuráveis para elaboração de Interfaces com RV,
auxilia a construção de interfaces com RV que está sendo desenvolvida no Departamento de
Computação da Universidade Federal de São Carlos, projeto financiado pela Fapesp. Nesse
trabalho as interfaces com RV serão referenciadas como interfaces com RV.
Os principais objetivos desse ambiente são:
-
facilitar o uso da tecnologia de RV não-imersiva para a criação de interfaces dessa
natureza;
-
facilitar a aproximação entre projetistas de interfaces, engenheiros de software e usuário
durante o desenvolvimento de uma aplicação com interfaces com
RV como será
mostrado mais adiante.
As interfaces com RV construídas com a utilização do GaCIV são geradas por gabaritos
configuráveis. Segundo (Assis & Silva, 2000a) (Silva, 1999), um gabarito é um ambiente virtual
que contém um conjunto de objetos que o caracterizam. Os objetos que fazem parte do ambiente
virtual podem ser escolhidos e configurados de acordo com as especificações do usuário. É
possível também criar uma biblioteca de gabaritos para ser usada pelo projetista de interfaces que
terá a oportunidade de escolher a interface mais adequada para uma determinada aplicação e
também escolher a melhor configuração dessa interface de acordo com as necessidades do
32
usuário. Portanto, as principais características das interfaces com RV geradas utilizando o
ambiente GaCIV são:
-
natureza não-imersiva, isto é, apresentam objetos e ambientes 3D que podem ser
visualizados em dispositivos 2D tais como monitores comuns, sem a necessidade de
equipamentos avançados e custosos como por exemplo head-mounted displays;
-
preservam o estilo de interação 2D utilizado em interfaces WIMP, sendo o mouse comum
o único dispositivo de entrada necessário para a seleção e manipulação de objetos.
Objetos podem ser selecionados desde que estejam no campo de visão do usuário,
independente da distância que os separam, evitando a necessidade de excessiva
locomoção do usuário dentro do ambiente RV. Objetos apresentados no ambiente estão
ligados a aplicações que são executadas quando os objetos são selecionados, funcionando
como “ícones 3D” que representam as funcionalidades do sistema. Os objetos não
interagem entre si;
-
Navegação não exige posicionamento preciso do usuário para que tarefas sejam
executadas e é realizado utilizando o mouse como dispositivo de entrada. O cursor indica
a direção a ser seguida pelo usuário e o movimento no plano XZ é feito através do
pressionamento contínuo do botão esquerdo enquanto o movimento no plano XY é feito
através do pressionamento contínuo do botão direito;
-
Substituem ou adicionam camadas na árvore de interface de aplicações desenvolvidas
previamente, resultando, em muitos casos, em interfaces mistas combinando gráficos 3D
e interfaces 2D WIMP ou mesmo textuais;
-
Objetos e ambiente 3D gerados e posicionados de acordo com o contexto da aplicação e
as necessidades do usuário;
-
O ponto de vista do usuário no ambiente virtual gerado é egocêntrico.
Para atingir os objetivos de suporte à criação de interfaces com RV de forma prática e
acessível, o GaCIV permite três operações:
-
criação de interfaces com RV a partir de gabaritos;
-
gerar novos gabaritos;
-
inserir novos ambientes e objetos a serem usados em gabaritos.
Para a criação de interfaces com o GaCIV, a equipe de desenvolvimento deve escolher um
gabarito da biblioteca de gabaritos. Os objetos que caracterizam o gabarito serão então
33
apresentados para que o projetista possa selecionar quais serão utilizados para criação da
interface. Ao ser escolhido, o objeto é inserido automaticamente em uma posição sugerida pela
configuração padrão do gabarito. Os objetos inseridos podem ser modificados em relação à sua
posição e tamanho, além de poderem ser duplicados ou excluídos, permitindo assim a
personalização da interface de acordo com os requisitos do sistema. Com os objetos devidamente
inseridos no gabarito, o projetista obtém a interface com RV para o sistema em desenvolvimento
(Assis & Silva, 2000b). Essa interface deverá ser devidamente conectada à aplicação como será
visto adiante. Na figura 4.1 pode ser visto um esquema conceitual. Nesse esquema, a equipe de
desenvolvimento de interfaces deve operar o GaCIV para criar a interface de um sistema. Nesse
processo de criação, a equipe deve utilizar um ambiente e objetos do banco de dados do GaCIV
que deverão ser associados à aplicação através do Interbuilder.
34
Ambiente1.nff
Objeto1.nff
Ambiente
Objeto2.nff
Objeton.nff
GaCIV
Aplicação
Programa1.exe
INTERBUILDER
BD GaCIV
Programa2.exe
Nova Aplicação.EXE
Programan.exe
Sistema
Programa1.exe
Interface
OO
com RV
Programa2.exe
Legenda:
consulta
geração
associação
Programan.exe
FIGURA 4.1 – Criação de Interfaces com RV com o GaCIV
A operação de gerar novos gabaritos compreende a associação de um ambiente, existente
na biblioteca do GaCIV, ao novo gabarito e posteriormente a adição de objetos, também
previamente existentes na biblioteca de objetos, no gabarito criado. Depois de finalizada a
configuração do gabarito, este ficará armazenado na base de dados do GaCIV.
Na figura 4.2 mostra a tela do GaCIV durante a operação de criação de novos gabaritos. Nessa
tela podem ser vistas, à esquerda, três listas. A lista superior oferece as opções de ambientes, A
35
lista inferior - esquerda mostra objetos do banco de dados do GaCIV e a lista inferior - direita
mostra os objetos inclusos no gabarito em desenvolvimento que dará origem a uma interface. Os
botões mostrados entre as listas de objetos indicam as opções de incluir e excluir um objeto.
Os botões acima da lista de ambientes permitem mudar a escala de um objeto e centralizar
a posição do usuário no ambiente virtual.
Ao lado direito da tela estão o nome do gabarito em desenvolvimento, o nome do
ambiente utilizado e a visão 3D do gabarito.
Na barra superior são encontrados menus popup. Os menus apresentam opções para
manipulação de arquivos, ambientes, objetos, gabaritos e interfaces.
FIGURA 4.2– Criação de novos gabaritos no GaCIV
Novos objetos e ambientes também podem ser inseridos na base de dados do GaCIV para
permitir uma maior gama de alternativas ao projetista de interfaces. Os objetos e ambientes a
serem inseridos devem ter sido criados em editores 3D e, mais tarde, convertidos em arquivos do
formato “nff”, o qual é o formato aceito pelo ambiente. Os nomes dos objetos e ambientes, após
serem escolhidos e atribuídos pelos usuários, serão acrescentados na base de dados do GaCIV.
36
Como é mostrado em (Assis & Silva, 2000b) e em (Silva, 1999), o GaCIV permite que o
desenvolvimento da interface ocorra de forma independente e paralela ao desenvolvimento da
aplicação, permitindo assim a independência de diálogo. Para integração dos componentes de
interface gerados pelo GaCIV com a aplicação utiliza se o recurso de link. O link é atribuído pelo
GaCIV a cada objeto da interface. Como visto em (Assis & Silva, 2000a), um link é uma
interligação entre o objeto da interface e um arquivo executável. Dessa forma, quando um objeto
da interface é ativado, uma aplicação associada a esse objeto é executada. Essa característica de
associação de objetos a módulos da aplicação torna interessante a aplicação do paradigma de
orientação a objetos durante o desenvolvimento dos sistemas interativos, pois a orientação a
objetos facilita a modularização da aplicação (Assis & Silva, 2000a) (Silva & Penteado, 2000).
A ação de ligação mostrada na figura 4.3 consiste em selecionar o objeto (no caso, o
fogão), clicar no botão “Link” e escolher a aplicação que deve ser associada a ele. A janela
central, vista na figura 4.3, mostra as diversas opções de aplicações existentes para o usuário
ligar ao objeto fogão.
FIGURA 4.3 – Ligação entre objeto e aplicação no GaCIV.
Segundo Assis e Silva (2000b), com a capacidade de criar novos gabaritos e inserção de
novos objetos e ambientes, o GaCIV permite a aplicação de um modelo de desenvolvimento de
37
sistemas interativos baseada no PCU (Gulliksen et al,1998). Com o GaCIV, uma equipe formada
por um engenheiro de software, um projetista de interfaces e um designer gráfico podem
trabalhar cooperativamente e desenvolver um gabarito que se adeque ao levantamento de
requisitos feito junto ao usuário, para desenvolvimento de um sistema interativo.
Os seguintes passos podem ser seguidos por essa equipe para a criação da interface:
-
Com a análise de requisitos do sistema previamente realizada, o usuário participa de
reuniões com a equipe de desenvolvimento para definição dos objetos virtuais que devem
fazer parte da interface de acordo com sua visão da funcionalidade do sistema, sendo tal
tarefa parte da etapa de levantamento de requisitos. Nesse passo, pode-se utilizar o
recurso de prototipação rápida;
-
Se algum objeto não existente na biblioteca do GaCIV for requisitado pelo usuário, o
designer gráfico deve criá-los. Ao mesmo tempo, o desenvolvedor de interfaces pode
elaborar o gabarito da interface a partir de objetos existentes;
-
Trabalhando paralelamente aos outros dois participantes da equipe, o engenheiro de
software pode desenvolver o código da aplicação, visto que os requisitos foram definidos
e um protótipo rápido da interface validado pelo usuário;
-
Criados os objetos criados, o desenvolvedor estará apto a inseri-los no gabarito, cuidando
de todos os aspectos relativos à usabilidade da interface;
-
Assim que a interface e a codificação da aplicação estiverem completas, a interface
poderá ser ligada aos módulos de aplicação correspondentes, estabelecendo-se os links
entre objetos e programas executáveis;
-
Ao fim de todos esses passos, o sistema interativo estará completo, formado por um
arquivo executável contendo os módulos da aplicação e a interface gerada no GaCIV,
conforme indica a figura 4.1.
4.3 Potencialidades
O GaCIV, como suporte de desenvolvimento de interfaces avançadas, pode dar apoio a
diversas atividades de engenharia de software. Algumas dessas atividades são discutidas a seguir.
38
4.3.1 GaCIV e OOUI
Os objetos representados com gráficos 3D podem representar de forma bem mais realista
os objetos utilizados pelo usuário no mundo real para realizar suas tarefas (IBM, 2001a) . Ao
reconhecer mais facilmente os objetos, os usuários podem focar sua atenção nas tarefas que
realizam ao invés de gastarem esforços para aprender a utilizar a interface. A representação
realista para facilitar a interação do usuário com o sistema é parte importante da criação de
OOUI’s. A criação de interfaces com RV com o GaCIV favorecem esse aspecto. Além disso, os
objetos pertencentes às interfaces criadas no GaCIV estão diretamente ligados a suas aplicações,
facilitando a sintaxe de interação “objeto-ação”. Segundo essa sintaxe, o usuário deve reconhecer
o objeto desejado e em seguida interagir com ele através de ações permitidas pelo sistema.
É importante ressaltar que muitos aspectos da criação de OOUI’s dependem do projeto de
desenvolvimento da aplicação. Um exemplo disso é as visões dos objetos a serem percebidas pelo
usuário. Nem todas as características de um objeto são importantes para a tarefa realizada pelo
usuário. As características relevantes devem ser identificadas em fases anteriores de
desenvolvimento (análise e projeto) e os resultados dessas fases devem ser refletidos na criação
da interface e da aplicação. Dessa forma deve-se atentar que apenas a utilização do GaCIV não
significa a implementação de uma OOUI.
4.3.2 GaCIV e Reengenharia
O ambiente GaCIV pode ser utilizado em processos de reengenharia de interfaces de
sistemas legados. O GaCIV dará apoio à fase de engenharia avante da nova interface a ser
implementada, substituindo a antiga interface por uma interface com RV, como visto na figura
4.4. O esquema apresentado na figura 4.4 é semelhante ao esquema de criação de interface,
mostrado na figura 4.1, porém, para que seja possível essa aplicação do GaCIV, é necessário que
se faça, anteriormente, uma análise do sistema legado buscando o entendimento das interfaces
existentes e a separação de todo o código referente à interface desse sistema. Essa fase
preparatória é necessária devido ao tratamento dado pelo GaCIV à independência de diálogo,
como visto anteriormente. Deve-se, portanto, preparar a aplicação para receber a nova interface
criada no GaCIV. Ao mesmo tempo, deve-se realizar outras atividades de engenharia reversa
buscando entendimento da aplicação para que a nova interface a ser desenvolvida seja
equivalente à anterior em relação aos aspectos de funcionalidade.
39
Devido à natureza modular da interface gerada pelo GaCIV (Assis & Silva, 2000b), é
desejável que a aplicação também possua essa característica para simplificar a associação da
interface criada no GaCIV à aplicação, permitindo identificar e isolar módulos da aplicação que
serão disponibilizadas por objetos distintos da interface.
Ambientem.nff
Ambiente1.nff
Objeto1.nff
Objeto2.nff
GaCIV
Aplicação Legada
Programa1.exe
Programa2.exe
Interface
legada
INTERBUILDER
BD GaCIV
Nova Aplicação.EXE
Programan.exe
Sistema
Programa1.exe
Interface
OO
com RV
Programa2.exe
Legenda:
consulta
geração
associação
Programan.exe
FIGURA 4.4 – O GaCIV e a reengenharia de interface
Objeton.nff
40
4.3.3 GaCIV e Reuso
Devido aos altos custos no desenvolvimento de novas interfaces, a prática de reuso desses
componentes resulta em relevante economia (Pressman, 1997). Os custos aumentam ainda mais
quando as interfaces desenvolvidas requerem o uso de RV, devido à complexidade envolvida na
criação de tais interfaces. O GaCIV possui características que possibilitam o reuso de interfaces
criadas com o uso deste. Objetos e ambientes criados para interfaces específicas são armazenadas
na base de dados do GaCIV e podem ser combinadas de novas maneiras para formar novos
gabaritos e possivelmente novas interfaces. A modularidade e independência das interfaces
criadas com o GaCIV facilitam o reuso das mesmas, permitindo que aplicações sejam
desenvolvidas independentes dos componentes de sua interface.
4.4 Considerações Finais
Os projetos com interfaces avançadas, envolvendo recursos 3D e RV, são geralmente
mais difíceis de se construir do que projetos envolvendo a geração anterior de interfaces (WIMP
GUI) (Constantine, 1995), porém representam grande avanço na interação humano computador
ao explorar fomas mais naturais e intuitivas de interação. Além disso, sistemas interativos
legados, podem ter o tempo de vida útil prolongado e melhoria de performance na interação com
o usuário se forem adaptados a essa nova tecnologia através da reengenharia de interface.
O ambiente GaCIV está sendo desenvolvido para apoiar tanto o processo de engenharia
avante de interfaces Pós-WIMP quanto à reengenharia de interfaces de sistemas legados,
diminuindo a complexidade desses processos ao facilitar a comunicação entre membros de uma
equipe de desenvolvimento de interfaces e possibilitando o reuso de interfaces de quarta geração.
41
Capítulo 5 - Estudo de Caso - O sistema da Oficina Mecânica
5.1 Considerações Iniciais
O objetivo principal deste estudo é verificar as facilidades e dificuldades encontradas no
processo de reengenharia de interfaces para RV assim como as vantagens obtidas com esse
processo, a partir de três versões de um mesmo sistema exemplo: procedural, segmentada
segundo o paradigma OO e efetivamente OO. Trata-se de um sistema real de uma oficina
mecânica que controla os serviços executados em veículos, bem como o controle de estoque das
peças utilizadas e de sua reposição. O usuário típico do sistema exemplo é o funcionário da
oficina.
Com o intuito de agregar melhorias na apresentação do sistema legado para o usuário,
facilitando o reconhecimento das funcionalidades disponíveis e aumentando o envolvimento do
usuário com as tarefas realizadas no sistema computacional, realizou-se neste trabalho a
reengenharia de interfaces para interfaces com RV, como será detalhado neste capítulo.
Este capítulo está estruturado da seguinte forma: a proposta para a reengenharia de
interfaces das três versões do sistema exemplo é detalhada na seção 5.2; na seção 5.3 são
analisadas algumas opções de métodos e modelos que podem ser aplicados na proposta de
reengenharia deste trabalho; na seção 5.4 é descrito o processo de criação do gabarito preliminar
de objetos 3D usado durante a reengenharia das interfaces das três versões do sistema; as
características de cada versão do sistema, detalhes de implementação e processos de reengenharia
realizados são apresentados nesse capítulo nas seções 5.5, 5.6 e 5.7; por fim, são apresentadas as
considerações finais na seção 5.8.
5.2 Proposta de processo de reengenharia deste trabalho
O processo de reengenharia aplicado neste trabalho tem seu foco nas camadas mais altas
de abstração das árvores de menus apresentadas pelas versões do sistema-exemplo, isto é, visa a
substituição ou reorganização dos menus de interface, nos quais o usuário navega para encontrar
e acessar as funcionalidades do sistema. Dessa forma, o objetivo é agregar usabilidade ao sistema
legado utilizando a tecnologia de RV para permitir maior envolvimento dos usuários com o
42
sistema e utilizar o poder de representação de gráficos 3D para a facilitar o reconhecimento das
funcionalidades do sistema na nova interface.
Na figura 5.1 tem-se uma visão geral do processo de reengenharia proposto para este
trabalho. Esse processo envolve, inicialmente, uma fase preparatória de recuperação e
representação da organização dos menus da interface legada, para compreensão da interface
existente. Utilizou-se, para a fase preparatória, a documentação existente dos sistemas, incluindo
manuais técnicos e manuais do usuário, e, principalmente, a execução do sistema legado. A
abordagem para a fase preparatória, ou de engenharia reversa, utilizada é semelhante à
apresentada em (Stroulia et al, 1999), comentada anteriormente no capítulo 3.
FIGURA 5.1 – Processo de Reengenharia para Interfaces com RV proposto neste trabalho
Essa abordagem de engenharia reversa é vantajosa na análise de sistemas legados que não
fazem grandes transformações e cálculos de dados internamente, baseando-se grande parte no
diálogo humano-computador e acesso à banco de dados.
Neste trabalho, para representar o mapa da interface do sistema foram utilizados
diagramas de caixas, apresentados no Apêndice E, onde cada caixa representa uma tela da
interface e as ligações entre elas indicam a possibilidade de navegação. As principais fontes de
informação para a criação dos diagramas foram a execução do sistema, os modelos de ciclo de
43
vida recuperados durante o processo engenharia reversa para a segmentação e mostrados no
Anexo II, e uma representação da interface encontrada na documentação do sistema legado
mostrada em parte no Anexo III. O diálogo humano-computador realizado durante a execução
das tarefas do usuário foi representado por cenários textuais, mostrados no Apêndice D,
recuperados através da execução do sistema. Esses modelos formam os “Modelos de Organização
dos Menus”, indicados na figura 5.1.1 como entradas para a fase de desenvolvimento das
interfaces 3D.
Na fase de desenvolvimento, esses modelos são analisados e reorganizados visando
melhorar a organização e representação das funcionalidades na interface com RV e
conseqüentemente o acesso a elas. A partir desses modelos, o sistema legado tem seus módulos
preparados para receber a nova interface e então as interfaces com RV são criadas e ligadas aos
módulos da aplicação.
O processo de reengenharia de interfaces aplicado nas três versões seguiu basicamente os
passos:
1- recuperação de informações sobre as interfaces originais através da execução do sistema
em questão e documentação existente;
2- criação preliminar de gabarito com objetos 3D;
3- análise e reformulação dos modelos de organização obtidos;
4- refinamento do gabarito com a busca ou criação de objetos específicos para o sistema em
questão;
5- preparação do aplicativo para receber nova interface;
6- criação e ligação da nova interface com RV utilizando o GaCIV.
Durante a fase preparatória, observou-se a necessidade de métodos para recuperação e
representação das interfaces legadas de forma que informações sobre a estrutura das árvores de
menus fossem registradas, permitindo que fossem visualizadas e analisadas em relação às tarefas
executadas pelo usuário. Com isso, o engenheiro de software tem a possibilidade de encontrar
problemas de organização que dificultam a navegação do usuário nas camadas de abstração mais
altas da árvore de menus, impedindo-o de reconhecer e encontrar as funcionalidades desejadas.
Para este trabalho, optou-se por diagramas de caixas para fazer a representação das árvores de
menus devido à facilidade de uso e suficiente poder de representação, entretanto outros modelos
44
de desenvolvimento de interfaces podem ser utilizados para esses propósitos. Alguns desses
modelos são apresentados na seção 5.3 deste capítulo.
O segundo passo do processo de reengenharia utilizado, a criação preliminar de gabarito com
objetos 3D, foi realizado apenas uma vez, gerando um único gabarito que foi refinado para cada
uma das versões do sistema. A criação desse gabarito é apresentada detalhadamente na seção 5.4
deste capítulo.
5.3 Modelos para a Reengenharia de Interfaces
O processo proposto por este trabalho requer modelos de representação para a fase
Preparatória, fase esta que corresponde a um processo de engenharia reversa da interface dos
sistemas. Esse processo visa a compreensão da organização dos menus na interface de cada
versão do sistema, e deve mapeá-los em modelos que servirão de base para reformulação e
desenvolvimento da nova interface com RV. A partir do estudo realizado sobre métodos e
metodologias de desenvolvimento de interfaces apresentado no capítulo 3, três modelos foram
analisados para possível utilização nesse processo: GOMS (Card & Newell, 1983), Statecharts
(Harel, 1987) e OVID (Roberts, 1998). A seguir serão apresentados os resultados obtidos.
5.3.1 GOMS
No contexto da reengenharia de interfaces para interfaces com RV como realizada neste
trabalho, o modelo gerado com a utilização do GOMS pode ser utilizado para identificar as
tarefas realizadas pelo usuário e com isso obter informações sobre o contexto ao qual estão
incluídas para representa-las na interface com RV. Analisando as tarefas realizadas pelo usuário
no sistema legado e representando-as com o modelo GOMS, pode-se identificar hierarquias de
tarefas e subtarefas que formarão hierarquias de classificação de funcionalidades na interface
final. Dessa forma os desenvolvedores da interface com RV podem identificar, por exemplo, que
para atingir o objetivo “Acessar o Menu de Consultas de Peças” , o usuário necessita realizar o
objetivo “Acessar o Menu de Consultas”. Com isso o desenvolvedor poderá criar uma hierarquia
de objetos 3D refletindo essa situação.
Apesar da capacidade de representação do GOMS possibilitar sua aplicação no
mapeamento da interface, a visualização de modelos gráficos permite maior facilidade de
visualização da estrutura geral da interface. Outra desvantagem do GOMS é apresentar apenas a
45
visão do usuário em relação ao diálogo humano-computador. Neste trabalho optou-se por
cenários textuais em linguagem natural, que, apesar de poder se tornar ambígua em alguns casos,
possui a flexibilidade necessária para representar o lado humano e o lado computacional do
diálogo humano-computador.
Outra aplicação do GOMS é avaliar o desempenho do usuário ao navegar pela interface
original e, a partir dos resultados obtidos, avaliar comparativamente o desempenho do usuário ao
interagir com a nova interface com RV.
A análise deve ser feita de acordo com o GOMS a um nível de abstração das interações do
usuário previamente estabelecida pelo projetista. Feito isso, deve-se associar o tempo previsto
(dados empíricos) para o modelo para que este possa avaliar quantitativamente (em unidades de
tempo) a performance da realização da tarefa por um usuário experiente.
Para o projetista, um dos maiores problemas está na obtenção de uma base de dados
empíricos para obter os parâmetros de tempo apropriados. Apesar de existir diversas bases de
dados para interfaces textuais e WIMP, não foi encontrado por este pesquisador base de dados
relativos às interfaces com RV.
5.3.2 Statecharts
Devido a sua capacidade de representação gráfica de hierarquias e transições de estados, o
Statechart é um modelo que permite o mapeamento de árvores de menus de interfaces,
facilitando a visualização e análise de sua organização. Os menus podem ser facilmente
representados como estados e a ligação entre eles, como transições. Além da organização dos
menus, Statecharts podem representar modelos de navegação na interface dos sistemas legados,
permitindo uma visão do comportamento da interface.
É possível a aplicação de Statecharts para representar o diálogo humano-computador,
entretanto existe a dificuldade de determinar quem é a fonte da ação que resulta na mudança de
estados do sistema. Sem essa representação o entendimento do diálogo fica prejudicado.
5.3.3 OVID
A metodologia OVID permite que a hierarquia de objetos de interface, ou “visões”, sejam
representadas na notação para diagrama de classes UML estendido. Entretanto a modelagem pode
46
se tornar confusa dependendo do tamanho do sistema e a quantidade de visões apresentadas por
ele. Quanto maior o sistema, mais difícil será a observação da organização da interface pois as
visões são representadas junto ao modelo de classes do domínio do sistema.
5.4 Criação do Gabarito preliminar de Objetos 3D para o Domínio do Sistema exemplo
Para criar as novas interfaces com RV no GaCIV e substituir as interfaces originais das
três versões do sistema, foi criado, previamente, um gabarito de objetos 3D relacionados à
oficina mecânica. Os objetos utilizados foram obtidos pela Internet em sites especializados na
produção de gráficos 3D tais como o site “3D Cafe” (www.3dcafe.com) que disponibilizam
gratuitamente modelos 3D aos seus usuários, ou construídos com a utilização do software World
Modeller® da Sense 8®.
O gabarito gerado, que serviu como base para as interfaces, está
ilustrado na figura 5.2.
FIGURA 5.2 – Gabarito preliminar para geração das interfaces com RV para o sistema exemplo.
Este gabarito foi desenvolvido inicialmente de forma intuitiva para servir de base às
interfaces avançadas das três versões do sistema exemplo. Esperava-se que o gabarito criado com
objetos associados intuitivamente ao contexto de uma oficina mecânica, tais como “Carro com
Defeito”, “Peças”, “Ferramentas” e “Balcão de Atendimento”, suprisse grande parte dos objetos
necessários para compor as interfaces. Foi observado posteriormente que os objetos agrupados de
forma intuitiva cobriram apenas algumas das funcionalidades e o gabarito precisou ser
47
complementado e reformulado de acordo com a versão do sistema, como será mostrado nas
seções seguintes. Segundo o ponto de vista deste pesquisador, a maioria dos objetos
acrescentados poderia ter sido incluída logo no início do processo, caso fosse possível um
levantamento de requisitos junto a usuários finais do sistema, simplificando também o trabalho
posterior de levantamento de dados do sistema através de sua execução. A realização de um
processo de desenvolvimento de software centrado no usuário para a criação da interface com
RV, com participação ativa do usuário nas fases iniciais do projeto, permitiria que o
desenvolvimento das interfaces com RV fosse mais rápido e eficiente, pois todo o gabarito
preliminar estaria de acordo com o modelo mental que o usuário faz de suas tarefas. A utilização
de processos de desenvolvimento de software centrados no usuário vem sendo discutida para uso
em diversos produtos, mas principalmente para sistemas computacionais, desde a década de 60
(Reich et al, 1995) e recomendada atualmente por corporações de grande porte como a IBM
(IBM, 2002) para criação de software com interfaces WIMP, e é recomendado para criação de
interfaces com RV em (Shamus & Harrison, 2001). Entretanto, deve ser considerado que a
participação de usuários do sistema legado nem sempre é possível, como mostrado em (Gulliksen
et al, 1999) e como ocorrido neste trabalho, devido a limitações de tempo.
Foi percebido também que o gabarito pode ser usado como protótipo para avaliação e
criação da interface final. Os gabaritos criados com apoio do GaCIV possuem a maior parte da
interatividade da interface, só não executam aplicações, e permitem o reposicionamento dos
objetos, facilitando sua compreensão e refinamento segundo a avaliação do usuário. A utilização
de protótipos e a presença de usuários durante a avaliação desses protótipos, como é
recomendado em processos de desenvolvimento de software centrados no usuário (Norman,
1998) (IBM 2002), pode, segundo o ponto de vista deste pesquisador, facilitar o teste e validação
da interface com RV antes da fase final de desenvolvimento, isto é, preparação dos módulos da
aplicação e ligação com a interface com RV. Esses aspectos não foram desenvolvidos neste
trabalho pois não é o foco da proposta, limitada principalmente por recursos humanos e de tempo.
Outra dificuldade encontrada foi a aquisição de objetos 3D. Nem todos os objetos necessários
foram encontrados a disposição na Internet e foi necessário desenvolvimento em software gráfico
3D para a representação de funcionalidades do sistema exemplo. Este pesquisador reconhece que
a participação de especialistas na área de comunicação visual e design 3D formando uma equipe
multidisciplinar seria ideal para o desenvolvimento do trabalho, resultando em objetos com
48
maior capacidade de representação para a interface com RV. A formação de equipes
multidisciplinares é recomendada para desenvolvimento de sistemas interativos com interfaces
convencionais (Norman, 1998), isto é, textuais e WIMP, e, como constatado neste trabalho, é de
vital importância para interfaces com RV devido a sua inerente complexidade de
desenvolvimento, porém enorme potencial de representação.
5.5 Sistema legado
A versão legada do sistema exemplo é na verdade o sistema original do qual foram
obtidas as versões segmentada e OO para a possibilidade da realização do trabalho proposto, isto
é, análise do processo de reengenharia para interfaces com RV aplicada nas diferentes versões.
5.5.1 Características de implementação
O sistema exemplo utilizado neste estudo é o mesmo apresentado em (Penteado et al,
1998), que exibiu o processo de engenharia reversa e segmentação de um sistema legado. Ele foi
originalmente desenvolvido em Clipper 5.0, com aproximadamente 20K linhas de código e 25
tabelas do tipo “dbf” relacionadas por chaves estrangeiras.
O estilo da interface do sistema legado está ilustrado na figura 5.3. É uma interface textual
onde a interação com o usuário é realizada através do teclado e de um monitor comum. O usuário
pode selecionar opções ou entrar diretamente com dados necessários durante o diálogo humanocomputador e visualiza-los em forma de texto monocromático.
FIGURA 5.3 – Estilo de interface textual utilizado pelo sistema legado
O sistema legado apresenta uma estrutura de árvore de menus de interface pouco
profunda, isto é, a partir das diversas opções apresentadas na tela principal pode-se, em geral,
49
acessar diretamente uma operação do sistema, como mostra a figura 5.4. A interface reflete a
estrutura monolítica do código da aplicação.
FIGURA 5.4 – Estrutura da árvore de menus do sistema legado
Apesar de parecer uma estrutura simples que permite rápido acesso às funcionalidades do
sistema, a estrutura apresentada na figura 5.4 falha em apresentar todas as funcionalidades no
menu principal de forma clara. Além disso, muitas funcionalidades distintas estão ligadas umas
às outras. Detalhes sobre a influência da estruturação do código na interface podem ser vistas no
Capítulo 6, onde os sistemas são analisados quanto a sua usabilidade.
5.5.2 O processo de reengenharia de interfaces com RV para o sistema legado
O sistema legado foi preparado para receber a interface com RV no nível mais alto de
abstração possível. Dessa forma, o usuário deve, através de uma interface com RV, acessar o
menu principal do sistema legado e, a partir de então, trabalhar com a interface legada.
Como o sistema legado foi desenvolvido em um único módulo de programação, não
existe a possibilidade, dentro da proposta do trabalho, de gerar interfaces com RV para as
diversas opções de menu. Assim, um único objeto da interface avançada leva ao menu principal
da aplicação. O usuário acessa todas as funções da aplicação através do menu original da
aplicação ilustrado na figura 5.3. Isso, em uma análise preliminar, mostra a limitação do processo
de reengenharia para essa versão do sistema.
Para representar o sistema legado na nova interface utilizou-se o objeto “Computador” figura 5.5 - que foi adicionado ao gabarito original e este objeto foi ligado ao aplicativo préexistente.
50
FIGURA 5.5 – Objeto computador no menu principal do sistema legado com interface com RV
A adição posterior do objeto computador ocorreu porque durante a construção do gabarito
inicial não foi prevista a necessidade de objetos relativos a metáforas computacionais.
5.6 Sistema segmentado
A versão segmentada do sistema foi obtida através de engenharia reversa e reengenharia
anteriores ao início das atividades deste projeto (Penteado et al, 1998) como será comentada na
próxima seção 5.6.2. O sistema segmentado, ainda implementado em Clipper, apresenta o mesmo
estilo de interface textual vista no sistema legado.
5.6.1 Características de implementação
Ao contrário do sistema legado, o sistema segmentado apresenta uma estrutura profunda
de árvore de menus de interface, favorecida pela estrutura modular do código da aplicação como
pode ser visto na figura 5.6.
Cada módulo de funcionalidade pode ser compilado separadamente e executado
independentemente dos outros módulos. Essa estruturação permite separar conjuntos de
funcionalidades e representa-las sob forma de diferentes objetos 3D na interface avançada.
51
FIGURA 5.6 – Estrutura da árvore de menus da interface do sistema segmentado
Como pode ser visto na figura 5.6, a árvore de menus da interface apresenta diversas
ramificações que representam agrupamentos de funcionalidades seguindo um critério de
classificação. É importante notar que, apesar de aumentar a carga cognitiva no esforço de
navegação do usuário, essa estrutura favorece o reconhecimento de funcionalidades se a
classificação delas estiver de acordo com o modelo mental do usuário.
5.6.2 O processo de reengenharia do sistema segmentado
A segmentação a qual o sistema legado foi submetido para se obter o sistema segmentado
consiste no processo de reengenharia com mudança de paradigma de desenvolvimento, para o
orientado a objetos, mas preservando a linguagem de implementação original.
A abordagem FUSION/RE foi utilizada para a realização da engenharia reversa do
sistema legado. Essa abordagem é utilizada para a recuperação dos modelos orientados a objetos
da fase de análise, propostos no método FUSION (Coleman et al, 1994), a partir de sistemas que
foram desenvolvidos sem esse paradigma.
No primeiro passo um modelo de objetos é elaborado a partir das estruturas de dados
existentes no sistema legado; esse modelo é pseudo-orientado a objetos. Em seguida, refina-se
esse modelo para que um modelo de classes seja obtido e a partir desses sejam elaborados os
modelos de ciclo de vida e de operações. As anomalias existentes no código legado são indicadas
pela classificação dos procedimentos que compõem o código legado. Essas anomalias referem-se
a um procedimento consultar e/ou alterar mais do que uma estrutura de dados; violando o
princípio de encapsulamento de dados na orientação a objetos. Uma tabela relacionando os
52
procedimentos com os métodos, elementos de dados com os atributos finaliza o processo de
engenharia reversa.
Após a realização do processo de engenharia reversa descrito acima, pode-se optar por
não trocar a linguagem original de programação do sistema legado, mas inserir características OO
que ele suporte. Dessa forma, o código legado, escrito em linguagem procedural é adaptado com
características de orientação a objetos. Os experimentos realizados mostraram que o código fica
melhor organizado, facilitando a manutenção/expansão do sistema legado, bem como a
reutilização dos métodos também pode ser comprovada.
Detalhes desse processo são encontrados no Relatório Técnico Científico “Módulo RSOO
– Reengenharia de Software Orientada a Objetos” (Sakata, 1998), no Relatório Técnico
“Detalhamento do Passo de Abstração do Modelo de Análise do Método FUSION RE” (Braga &
Masiero, 1998) e em (Penteado, 1996).
5.6.3 O processo de reengenharia de interfaces com RV para o sistema segmentado
No processo de reengenharia de interfaces do sistema segmentado, além da documentação
citada na seção 5.6.2, foram analisados o código - fonte do sistema e a execução do mesmo para
recuperação de dados sobre o sistema. Utilizou-se cenários textuais e diagramas de caixas,
mostrados nos Apêndices D e E respectivamente, no estilo dos diagramas apresentados nas
figuras 5.4 e 5.6, para representar a estrutura da interface e, conseqüentemente, como as
funcionalidades podem ser acessadas no sistema segmentado. Através dos conhecimentos
adquiridos com esse estudo foi possível preparar o sistema segmentado para receber a nova
interface com recursos de RV a ser gerada com auxílio do GaCIV.
A estrutura apresentada na figura 5.6 permite pelo menos duas maneiras de se realizar a
reengenharia de interface utilizando o GaCIV: substituindo os módulos no nível mais alto de
abstração ou re-agrupando as funcionalidades (módulos de abstração mais baixos). Optou-se pela
primeira, de forma que a reengenharia de interfaces mantivesse o critério de classificação das
funcionalidades utilizado originalmente. A escolha pela primeira opção foi feita com base na
idéia de que a classificação original está intimamente ligada ao paradigma de desenvolvimento e
implementação e, dessa forma, é possível avaliar o impacto do paradigma na interface com RV
gerada na reengenharia de interfaces.
53
A segunda opção permite a classificação das funcionalidades seguindo novos critérios,
podendo modificar o modelo de apresentação do sistema para o usuário. Observações sobre essa
opção são comentadas no Capítulo 7.
A aplicação original foi compilada a partir de um arquivo “batch” de nome
“CompSist.bat” que, por sua vez, compila e faz a ligação de todos os módulos do sistema criando
um único arquivo executável de nome “Sistema.exe”. A execução desse arquivo apresenta
interfaces semelhantes ao estilo de interação e apresentação.
A preparação do sistema segmentado resultou na criação de diversos arquivos “batch” que
compilassem apenas os módulos necessários para cada atividade distinta do sistema. A partir
desses arquivos, foram gerados seus respectivos arquivos “.exe”. Um exemplo é o arquivo
“CompConsCli.bat” que gera o arquivo “ConsCli.exe” e corresponde à atividade de consulta aos
dados de uma peça cadastrada no banco de dados do sistema como ilustra a figura 5.7.
Como comentado anteriormente, percebeu-se a possibilidade de criação de módulos de aplicação
em vários níveis de abstração, isto é, há a possibilidade de criar módulos no nível mais baixo de
abstração com o qual as atividades são acessadas diretamente e separadamente de outras (como é
o caso de “ConsCli.exe” ilustrada na figura 5.7) ou criar módulos em níveis intermediários de
abstração que apresentam um conjunto de atividades relacionadas, como pode ser visto na figura
5.8, que ilustra a execução do módulo de aplicação “Consulta.exe” criado a partir do sistema
segmentado.
FIGURA
5.7 –
Execução
do
módulo
de
aplicação
“ConsCli.
exe”
gerado a
partir da
versão
segmentada do sistema exemplo
54
FIGURA 5.8 – Execução do módulo de aplicação “Consulta.exe” gerado a partir da versão
segmentada do sistema exemplo
Foram gerados 70 módulos para o sistema segmentado, sendo 63 módulos em um baixo
nível de abstração, com cerca de 510 linhas de código cada módulo, e 7 módulos com cerca de
5000 linhas cada, em um nível de abstração alto. Com os módulos da aplicação gerados, o
sistema ficou preparado para receber a nova interface a ser criada com auxílio da ferramenta
GaCIV. Além da motivação relacionada à análise da influência do paradigma de
desenvolvimento na geração de interfaces com RV apresentada anteriormente, optou-se em
desenvolver a interface com RV através dos sete módulos de nível mais alto, como mostra o
diagrama da figura 5.9, com intuito de se obter resultados comparativos, lembrando que a
reengenharia da interface do sistema legado só foi possível nesse nível de abstração.
FIGURA 5.9 – Módulos do sistema segmentado na estrutura da árvore de menus
55
O diagrama da figura 5.9 localiza os sete módulos na estrutura da árvore de menus do
sistema segmentado. Os níveis de profundidade da árvore da estrutura da interface do sistema
segmentado estão numerados de forma que quanto mais alto a numeração for, mais baixo é o
nível de abstração da interface. Os sete módulos utilizados foram criados com base nos menus do
segundo nível de profundidade da estrutura e dão acesso às funcionalidades dos níveis mais
baixos, como mostrado no Anexo III. Por exemplo, o módulo Consulta, quando executado, dá
acesso às funcionalidades de consulta ao cliente (módulo “Conscli.exe”, visto na figura 5.7),
consulta a peças, consulta a componentes etc. A tabela 5.1 relaciona os menus originais, o nome
dos módulos e os nomes reais utilizados na implementação.
TABELA 5.1 – Associação entre menus originais, nome dos módulos criados e arquivos de
implementação dos módulos criados para o sistema segmentado
Menus Originais
Nome do Módulo
Implementação
Menu de Lançamentos
Lançamentos
Lancamen.exe
Menu de Relatórios
Relatórios
Relatorios.exe
Menu de Consultas
Consultas
Consulta.exe
Menu de Manutenção de Arquivos
Manutenção de Arquivos
Arquivo.exe
Menu de Manutenção de Tabelas
Manutenção de Tabelas
Tabela.exe
Menu de Impressos
Impressos
Impressa.exe
Menu de Indexação
Indexação
Index.exe
A criação da interface com RV para o sistema segmentado também se baseou no gabarito
gerado em atividades anteriores, porém, devido às características do sistema segmentado,
mostrou-se necessário a inclusão de novos objetos 3D. Durante o processo de reengenharia da
interface, percebeu-se novamente a necessidade de objetos que não estariam relacionados a uma
oficina mecânica, mas que abstraíssem atividades relacionadas ao sistema computacional. Dessa
maneira foram incluídos objetos para representar, por exemplo, consulta, impressão e
manutenção de arquivos. Para acessar os impressos o usuário seleciona o objeto “Impressora”,
localizado no “Balcão de atendimento”, ilustrado na figura 5.10.
56
FIGURA 5.10 – Objeto 3D “Impressora” ligado ao módulo “Impressos” do sistema segmentado
O objeto “Arquivo”, ilustrado na figura 5.11, dá acesso às funções de manutenção da
base de dados.
FIGURA 5.11 – Objeto 3D “Arquivo” ligado ao módulo “Manutenção de Arquivos” do sistema
segmentado
Os objetos da interface com RV, quando selecionados, executam módulos da versão
segmentada do sistema exemplo, isto é, a partir deles, o usuário acessa a interface original do
sistema segmentado, como visto nas figuras 5.10 e 5.11.
5.7 Sistema Orientado a Objetos
O sistema OO foi desenvolvido dentro do escopo desta pesquisa, com o objetivo de se
obter três versões de um mesmo sistema para serem analisadas comparativamente quanto ao
processo de reengenharia de interfaces com RV.
57
5.7.1 Características de implementação
O sistema OO foi desenvolvido na linguagem Java® (Java, 2002) utilizando o ambiente
visual JBuilder® (JBuilder, 2002) como apoio e o sistema de banco de dados Interbase®
(Interbase, 2002) para implementação da base de dados. Foram implementadas 83 classes, sendo
67 classes para a interface, 14 classes relacionadas às classes do domínio do sistema e 2 classes
específicas para implementação.
A versão final da interface do sistema OO foi implementada seguindo o estilo de interação
OO utilizando recursos WIMP, como ilustrado na figura 5.12.
FIGURA 5.12 – Interface da versão OO do sistema exemplo
Devido à modularização possível com a utilização do paradigma OO, a estrutura da árvore
de menus na interface apresentou-se profunda de forma semelhante à do sistema segmentado,
como pode ser visto na figura 5.13.
58
FIGURA 5.13 – Árvore de menus da interface do sistema OO
Na interface do sistema OO os objetos são apresentados como ícones gráficos 2D no
menu principal. A partir de cada um deles é possível acessar seus métodos de interação que
correspondem a funcionalidades do sistema, como mostra a figura 5.13.
Apesar da semelhança estrutural, a organização das funcionalidades na interface seguindo
o estilo de interação OO não pode ser mudada, pois essas funcionalidades estão organizadas de
forma a atender especificamente objetos que permitem a aplicação delas, enquanto na interface
OO a classificação das funcionalidades segue uma hierarquia criada pelo projetista, sem
quaisquer ligações com o tipo de dados que as funcionalidades acessam.
5.7.2 O processo de reengenharia do sistema orientado a objetos
O desenvolvimento da versão OO do sistema foi resultado de um processo de
reengenharia do sistema exemplo legado visando a mudança de paradigma de implementação,
linguagem de implementação e mudança de paradigma de interação da interface funcional e
textual para uma interface OO baseada em widgets WIMP.
Os modelos de projeto criados para o processo de segmentação foram analisados e
reconstruídos em UML para a reengenharia com mudança de linguagem de programação para
uma linguagem OO (Java®). O modelo de classes utilizado, mostrado no Apêndice A, foi obtido
a partir do modelo recuperado no processo de engenharia reversa usando FUSION RE, mostrado
no Anexo I. A partir da documentação e execução do sistema legado, foram gerados os modelos
de use case, mostrados no Apêndice B, e os diagramas de seqüência para as funcionalidades do
sistema, mostrados no Apêndice C.
59
Todas as funcionalidades apresentadas pelo sistema segmentado foram implementadas.
Duas versões de interface, com estilos diferentes de interação, foram geradas utilizando recursos
WIMP. A primeira versão possui características funcionais de interação de interfaces, isto é, o
usuário escolhe a função através de uma estrutura de menus para realizar suas tarefas, como
ilustrada na figura 5.14.
FIGURA 5.14 – Interface funcional para a versão OO do sistema exemplo.
Após a implementação, verificou-se que a interface funcional não expressava de forma
adequada, considerando o ponto de vista deste pesquisador, o paradigma de orientação a objetos
(OOUI). Por esse motivo, optou-se por uma segunda versão do sistema com interfaces icônicas.
A segunda versão, mostrada nas figuras 5.15, 5.16 e 5.17, segue o estilo OOUI de maneira
mais adequada, tendo os objetos do domínio do sistema representados por ícones que podem ser
organizados de acordo com a preferência do usuário. A organização dos objetos na interface pode
ser modificada através da ação “arrastar e soltar”. Nessa interface, como em qualquer OOUI, o
usuário escolhe o objeto da interface, e em seguida utiliza os métodos oferecidos por ele para
interagir com o objeto. O usuário deve clicar com o botão direito do mouse e obter um menu
popup com os métodos apropriados para a interação. Cada um dos ícones–objetos apresenta sua
identificação quando o cursor do mouse é posicionado neles (hint), ilustrado na figura 5.15.
60
FIGURA 5.15 – Hint do objeto “Cliente” na OOUI do sistema OO
A figura 5.16 apresenta uma nova organização dos ícones realizada através da ação
“arrastar e soltar”.
FIGURA 5.16 – Ícones reorganizados pelo usuário na OOUI do sistema OO
A interação com os objetos da interface á exemplificada na figura 5.17, onde é mostrado o
menu popup obtido ao se pressionar o botão direito do mouse no ícone que representa “Cliente”.
61
FIGURA 5.17 – Menu popup com métodos para interação com o objeto “Cliente” da interface do
sistema OO.
Idealmente, a OOUI deveria representar graficamente as instâncias criadas, como por
exemplo, inclusão de novo cliente em forma de um ícone semelhante ao ícone do objeto
“Cliente”. Entretanto, no ponto de vista deste pesquisador, isso causaria uma poluição visual na
interface, dificultando a identificação dos objetos com os quais o usuário está trabalhando.
5.7.3 O processo de reengenharia de interfaces com rv para o sistema orientado a objetos
Assim como realizado nas outras versões do sistema exemplo, utilizou-se o gabarito
previamente criado para a geração da interface avançada para realizar essa atividade. Apesar de
ter um maior aproveitamento dos objetos existentes, novos objetos 3D foram adicionados para
este processo como, por exemplo, o objeto “Caminhão de entrega” que representa o objeto
“Fornecedor” do domínio do sistema, ilustrado na figura 5.18, e o objeto 3D que representa o
objeto “Cliente” do sistema, ilustrado na figura 5.19.
62
FIGURA 5.18 – Objeto da interface avançada para representar o objeto “Fornecedor” da interface
do sistema OO
FIGURA 5.19 – Objeto da interface avançada do sistema OO para representar o objeto “Cliente”
Ao selecionar esses objetos na interface com RV, um menu com os métodos de interação
para o respectivo objeto é apresentado ao usuário, de acordo com os princípios do paradigma de
interação OO, ilustrado na figura 5.20.
63
FIGURA 5.20 – Opções de métodos para interagir com objeto “Cliente” do sistema OO com
recursos de RV
Observou-se, no processo de reengenharia da interface do sistema OO, que os objetos da
interface com RV tornaram-se versões 3D dos ícones da interface WIMP e foi necessária a
criação de uma camada de interface WIMP composta por botões para acessar as funcionalidades
de cada objeto. Essa camada equivale ao menu popup da interface original do sistema OO.
5.8 Considerações Finais
Neste capítulo foram apresentados os processos de reengenharia aplicado às interfaces das
três versões do sistema exemplo, assim como detalhes de implementação de cada um deles e
como foram obtidos.
Com as interfaces 3D criadas nos processos de reengenharia apoiados pelo GaCIV é
possível analisa-las comparativamente e obter importantes conclusões em relação à influência do
paradigma de desenvolvimento do sistema na usabilidade da interface resultante, além de
diretivas para o desenvolvimento de processos dessa natureza, como será visto no Capítulo 6 e 7.
64
Capítulo 6 – Análise dos Resultados Obtidos
6.1 Considerações Iniciais
Apesar de toda a extensa pesquisa realizada no campo de RV e em usabilidade, tendo
(Bowman et al, 2001a) (Bowman et al, 2001b) (Gabbard, 1997) (Kaur, 1998) (Gabbard e Hix,
2001) (Greenhalgh et al, 1997) (Nielsen, 1993) como trabalhos mais representativos, ainda há
pouca proximidade entre as duas áreas. Existem diversos métodos para avaliação de usabilidade
de aplicações interativas, porém esses métodos são limitados quando se trata de avaliação de
ambientes virtuais. Há necessidade de trabalhos que associem usabilidade e RV abrangendo as
complexas interdependências entre usuários, tarefas, mecanismos de entrada, mecanismos de
saída, etc, existentes em um ambiente de RV (Gabbard, 1997).
O teste de usabilidade de interfaces com RV imersiva junto ao usuário, por exemplo, pode
apresentar diversas dificuldades tais como a dificuldade de compartilhar uma mesma experiência
de interação entre o usuário e o avaliador e obter informações úteis a partir dela. Possíveis
problemas dessa natureza, entretanto, devem servir como estímulo ao teste de interfaces com RV
junto ao usuário, pois indicam a necessidade de treinamento especial para avaliadores e, até
mesmo, criação de novas ferramentas e processos para o teste de usabilidade nesse ambiente
(Nielsen, 1993).
A complexidade de testes com participação de usuários sugere o uso de um método de
avaliação heurística baseado em um conjunto de heurísticas de usabilidade. Atualmente poucas
abordagens de heurísticas de usabilidade específicas para interfaces com RV podem
ser
encontradas na literatura. Dois exemplos significativos são encontrados em (Kaur, 1998) e em
(Gabbard, 1997) que é estendida para realidade aumentada em (Gabbard & Hix, 2001). Essas
limitações dificultam a tarefa do engenheiro de software que necessita garantir a usabilidade da
interface com RV gerada, tanto na engenharia avante quanto na reengenharia de interfaces de
sistemas legados.
Neste capítulo é apresentada uma análise comparativa dos resultados obtidos a partir dos
processos de reengenharia de interface aplicados. Os critérios de usabilidade utilizados nas
avaliações heurísticas das interfaces WIMP e textuais são apresentados na seção 6.2. São
apresentadas análises de usabilidade das interfaces originais das três versões do sistema exemplo
65
nas seções 6.3, 6.4 e 6.5; os critérios de usabilidade utilizados para analisar interfaces com RV
são mostrados em 6.6; uma comparação entre interfaces originais e interfaces avançadas de cada
versão na seção 6.7, e, uma análise comparativa entre os resultados obtidos das três versões
também na seção 6.7. Na seção 6.8 são apresentadas algumas considerações finais.
6.2 Critérios de usabilidade para sistemas textuais e WIMP
Durante o estudo de caso, as interfaces legadas e as interfaces geradas pelos processos de
reengenharia foram analisadas utilizando heurísticas de usabilidade. Para as textuais e WIMP
utilizou-se as seguintes diretivas, revisadas por Nielsen (1993) a partir das originais de Nielsen e
Molich (1990):
1) Visibilidade do estado do sistema: os sistemas devem sempre manter o usuário
informado sobre o que ocorre, através de feedback em tempo razoável;
2) Concordância entre o sistema e o mundo real: o sistema deve usar linguagem familiar
ao usuário com conceitos familiares ao usuário ao invés de termos ligados ao sistema.
Seguir convenções do mundo real, fazendo a informação aparecer de forma natural e
em ordem lógica;
3) Controle e liberdade do usuário: usuários geralmente escolhem tarefas por engano das
quais ele deve poder sair imediatamente sem que seja forçado a passar por um diálogo
extenso desnecessário. Deve haver também apoio ao “desfazer” e “refazer”;
4) Consistência e padrões: usuários não devem se preocupar se palavras, situações e
ações diferentes possuem o mesmo significado;
5) Prevenção de erros: é melhor evitar erros do que corrigi-los;
6) Reconhecer, não relembrar: tornar objetos, ações e opções visíveis. O usuário não
deve ter que se lembrar de uma parte da interface para a outra;
7) Eficiência de uso e reconhecimento: oferecer atalhos para melhorar a performance de
usuários experientes;
8) Estética e design: diálogos não devem conter informações que não sejam relevantes ou
raramente usadas;
66
9) Ajuda para reconhecimento, diagnóstico e recuperação de erros: mensagens de erros
devem ser expressas em linguagem simples, sem usar códigos, indicando
precisamente o problema e sugerindo soluções;
10) Ajuda e documentação: mesmo que o sistema seja bem utilizado sem documentação, é
importante que haja documentação e ajuda para o usuário.
6.3 Análise da interface do Sistema Legado
A estrutura da árvore de menus da interface do sistema legado é representada na figura
6.1.
FIGURA 6.1 – Árvore de menus do sistema legado
Nota-se nesse diagrama que a árvore de menus é pouco profunda, com praticamente
apenas um nível de menu para se ter o acesso às funcionalidades. Apesar de aparentemente
simplificar a navegação do usuário, esse tipo de estrutura compromete a organização das
funcionalidades oferecidas pelo sistema. No sistema exemplo, algumas funções independentes
estão misturadas sob um mesmo rótulo na forma de sub-tarefas, como acontece com a inclusão de
dados de um cliente no banco de dados que está associado a “Lançamento da 1a Parte da Ordem
de Serviço”, mostrado na figura 6.2.
67
FIGURA 6.2 – Tela de Lançamento da 1a Parte da Ordem de Serviço do sistema legado
Para que o usuário possa cadastrar um cliente, ele deve selecionar a função “Lançamento
a
da 1 Parte da Ordem de Serviço” e digitar “99999” no espaço dedicado ao código do cliente.
Essa organização não natural das funcionalidades gera carga cognitiva desnecessária para o
usuário ou mesmo desorientação. Além disso, a orientação do usuário fica prejudicada quando se
passa de uma sub-tarefa para outra dentro de uma mesma tarefa. Para cumprir a tarefa
“Lançamento da 1a Parte da Ordem de Serviço” o usuário deve cumprir uma série de sub-tarefas
como “Selecionar Cliente”, “Verificar Dados do Cliente”, “Selecionar Veículo do Cliente”,
“Verificar Veículo do Cliente” e finalmente descrever os serviços a serem executados. A figura
6.2 mostra a terceira tela da interface para a tarefa “Lançamento da 1a Parte da Ordem de
Serviço” e nela já há poucos indícios de qual tarefa o usuário está realizando.
Outro fator que afeta a navegação do usuário é a inconsistência de rótulos e de comandos
para cancelar ações. Durante a navegação na interface do sistema são encontrados os rótulos
“Abertura da Ordem de Serviço”, “Entrada Ordem de Serviço” e “Lançamento da 1a Parte da
Ordem de Serviço” com o mesmo significado. Em relação aos comandos de cancelamento, na
maior parte do sistema pode-se utilizar a tecla “ESC”, apesar de não estar especificado em lugar
algum qual é a função da tecla “ESC”. Entretanto em algumas sub-tarefas o cancelamento é feito
através de outros comandos, como “0”, na figura 6.2, e “A” na figura 6.3.
Devido a sua natureza textual o design é pobre, possuindo poucos elementos gráficos e
que pode se tornar cansativo após algum tempo de uso contínuo.
68
A hora e a data atual, dados não muito relevantes para a execução de tarefas do usuário, são
mostradas com destaque em todas as telas, podendo causar desvio de atenção e perda de
performance.
FIGURA 6.3 – Tela de verificação de “Veículos do Cliente”
O feedback ao usuário é dado em mensagens na parte inferior da tela e em mensagens de
erro em fundo vermelho como o exemplo mostrado na figura 6.4.
FIGURA 6.4 – Mensagem de erro do sistema legado
Percebe-se, ao analisar a mensagem ilustrada na figura 6.4, que o usuário não tem como
saber se o erro foi causado pelo sistema ou por suas ações. Além disso, as opções oferecidas para
o usuário não explicitam quais serão seus resultados, isto é, o usuário não tem como saber o que
acontece se ele escolher a opção “Default”, por exemplo. Com isso a recuperação a partir de um
erro fica comprometida.
O sistema ainda oferece listas de elementos selecionáveis para facilitar e evitar erros no
preenchimento de dados durante a execução das tarefas, como a lista de clientes na execução da
tarefa “Abertura da Ordem de Serviço” ilustrada na figura 6.5.
69
FIGURA 6.5 – Preenchimento de dados do cliente com seleção
Entretanto essa facilidade não é encontrada consistentemente em toda a interface, como
pode ser visto na figura 6.6, onde o usuário deve entrar com o nome do cliente a ser consultado.
FIGURA 6.6 – Preenchimento de dados do cliente sem seleção
6.4 Análise da Interface do Sistema Segmentado
A estrutura da árvore de menus da interface do sistema segmentado, representada na
figura 6.7, mostra-se um pouco mais profunda que a apresentada pelo sistema legado. Há duas ou
mais camadas de menus para que o usuário acesse a funcionalidade desejada. Essa organização
permite que funcionalidades independentes encontrem-se separadas e classificadas segundo
algum critério que satisfaça as necessidades do usuário. Por exemplo, as tarefas relacionadas a
consultas à base de dados, foram rotuladas como “Consultas”, como visto na figura 6.8, e dessa
70
forma acessadas a partir do menu principal. A reorganização das funcionalidades, facilitando o
reconhecimento pelo usuário e conseqüentemente melhorando a performance na realização de
tarefas, foi possível devido ao processo de segmentação ao qual o sistema legado foi submetido
em um trabalho anterior (Penteado, 1996).
Além da reorganização das funcionalidades, foram eliminadas as ambigüidades de rótulos
nas novas camadas de menus. Entretanto, as interfaces no nível mais baixo de abstração, que
ocorrem durante a execução das funcionalidades, não foram modificadas e, portanto, mantém as
características originais do sistema legado.
O feedback nos novos menus foi melhorado, mostrando mensagens que explicitam o
objetivo do menu em questão na parte inferior da tela, como pode ser visto na figura 6.8.
Apesar da sensível melhora na navegação causada pela reorganização das funcionalidades
em novos menus, os rótulos utilizados no menu principal estão mais ligados ao contexto
computacional do que ao contexto do domínio do sistema. Nesse menu encontram-se rótulos
como: “Consultas”, “Manutenção de Arquivos” e “Indexação”.
FIGURA 6.7- Estrutura de árvore de menus do sistema segmentado
71
FIGURA 6.8 – Menu de consultas do sistema segmentado
Além disso, nem todas as funções se beneficiaram com a nova organização dos menus. A
função consultar peças, por exemplo, possui mais de um critério de consulta, fazendo com que o
usuário tenha que navegar para outros menus, a partir do representado na figura 6.9, se quiser
tentar mais de uma opção de consulta.
FIGURA 6.9 – Menu de consultas a peças do sistema segmentado
Foi observado, durante as análises dos sistemas legado e segmentado, que sistemas
legados baseados em formulários e consultas a bancos de dados possuem um conjunto de tarefas
comuns que são aplicadas a diferentes tipos de dados. Essas operações são cadastrar ou inserir
dados no banco de dados, consultar dados, atualizar dados, excluir dados, imprimir relatórios.
Apesar disso, essas operações podem estar estruturadas de formas distintas, muitas vezes
72
confusas, na interface do sistema legado devido à desestruturação do código. Com isso, o usuário
acaba se perdendo ou tendo dificuldades para acessar as tarefas aplicáveis ao dado desejado.
6.5 Análise de Usabilidade da Interface do Sistema OO
A interface do sistema orientado a objetos baseia-se em widgets WIMP e segue o
paradigma de interação orientada a objetos (OOUI) ao invés do paradigma funcional usado
anteriormente, tendo os objetos do domínio do sistema representados por ícones gráficos que
podem ser reorganizados de acordo com a preferência do usuário. Os ícones substituem os menus
principais das versões anteriores do sistema.
Na figura 6.10 está representada a árvore de menus do sistema OO.
...
Funcionalidades do
Funcionalidades do
Funcionalidades do
objeto 1
objeto 2
objeto 3
FIGURA 6.10 – Árvore de menus do sistema OO
...
73
Semelhante ao que ocorre com a árvore de menus do sistema segmentado, duas camadas
de interface precisam ser navegadas pelo usuário para que sejam acessadas as funcionalidades do
sistema. A segunda camada corresponde aos menus popup de cada objeto da interface que
oferecem ao usuário listas de funcionalidades permitidas para interação com os objetos. Uma
grande diferença na mudança de estilo de interação é que o usuário em um estilo funcional pensa
na tarefa a ser realizada antes de escolher o dado que vai utilizar, ou seja, o objeto que sofrerá a
ação. No paradigma OO de interação, a ordem de raciocínio é inversa, pois o usuário escolhe
primeiro o dado (objeto) que vai ser utilizado, depois a ação que esse objeto sofrerá. Isso faz com
que, no estilo de interface OO, o usuário cometa menos erros, pois ele só pode realizar as tarefas
permitidas para aquele tipo de dado/objeto escolhido (Collins, 1995).
Para prevenir erros, a interface dispõe para o usuário caixas de itens selecionáveis para
preenchimento de dados requisitados pelo sistema, como mostra a caixa da figura 6.11, onde o
usuário escolhe o cliente a ser consultado.
FIGURA 6.11 – Caixa de itens selecionáveis para a funcionalidade “Consultar Cliente” do
sistema OO
O feedback ao usuário é dado através de janelas de alerta em casos de erros, ilustrado na
figura 6.12, e em dicas (hints) dadas ao repousar o cursor do mouse sobre algum item da interface
por um instante, visto na figura 6.13.
74
FIGURA 6.12 – Janela de alerta ao usuário no sistema OO
FIGURA 6.13 – Hint apresentado para campo “Categoria” do formulário de cadastro de clientes
no sistema OO
A utilização de widgets permitiu a solução para um problema de navegação encontrado na
versão anterior durante a execução da tarefa de consulta de peças. Através de “radio buttons” o
usuário pode mudar a opção de consulta a peças sem mudar de menu da interface, como é
mostrado na figura 6.14.
75
FIGURA 6.14 – Escolha de opção de consulta de peças no sistema OO
Ainda na figura 6.14, pode-se notar que apenas a opção escolhida pelo usuário apresentase disponível para uso, isto é, o radio button tem a função de habilitar a opção escolhida e
desabilitar todas as outras. A ambigüidade de comandos para cancelar uma ação foi eliminada
utilizando-se botões com o rótulo “Cancelar” em todos os menus.
6.6 Critérios de usabilidade para sistemas com interfaces com RV
Para analisar a usabilidade das interfaces com RV geradas com apoio do GaCIV foram
observadas as seguintes diretivas extraídas da taxonomia de Gabbard (1997) de acordo com a
aplicabilidade no sistema em questão. As tabelas de 6.1 a 6.7 apresentam o contexto das diretivas,
os rótulos pelos quais serão referenciadas no texto e a descrição da diretiva.
76
TABELA 6.1 – Diretivas para “Usuários em Ambientes Virtuais”
Usuários em Ambientes Virtuais
Rótulo
Diretiva de Usabilidade
Usuário1
Contar com a experiência do usuário
Usuário2
Contar com as aptidões técnicas do usuário (orientação, visualização espacial etc)
Usuário3
Apoiar tanto usuários destros quanto canhotos
Usuário4
Acomodar interação natural para usuários de várias idades
TABELA 6.2 – Diretivas para “Navegação e Locomoção”
Navegação e Locomoção
Rótulo
Diretiva de Usabilidade
Nav1
Considerar princípios organizacionais na construção do ambiente
Nav2
Quando apropriado, incluir rótulos espaciais, pontos de referência, e um horizonte
Nav3
Evitar navegação baseada em modo
TABELA 6.3 – Diretivas para “Seleção de Objeto”
Seleção de Objeto
Rótulo
Diretiva de Usabilidade
Seleção1
Usar manipulação direta para seleções baseadas em atributos espaciais (forma, local,
orientação)
Seleção2
Quando houver seleção de objetos distantes, exagerar o tamanho, aparência e inter –
distância de objetos
Seleção3
Seleção de objetos deve ser o mais óbvio e acessível possível
TABELA 6.4 – Diretiva para “Apresentação do Usuário e Representação”
Apresentação do Usuário e Representação
Rótulo
Diretiva de Usabilidade
Repres1
Prover ponto de vista egocêntrico quando usuários devem experimentar um forte
senso de presença
77
TABELA 6.5 – Diretiva para “Envolvimento Virtual e Configuração”
Envolvimento Virtual e Configuração
Rótulo
Diretiva de Usabilidade
Config1
Explorar experiências do mundo real, mapeando funcionalidades desejadas para itens
do dia a dia
TABELA 6.6 – Diretivas para “Mecanismos de Entrada em Geral”
Mecanismos de Entrada em Geral
Rótulo
Diretiva de Usabilidade
Entrada1
Eliminar graus-de-liberdade estranhos implementando apenas as dimensões que os
usuários percebem como relacionadas as suas tarefas
Entrada2
Segundo o ponto de vista do usuário, o dispositivo de saída deve ser consistente e
ligado cognitivamente a suas ações
Entrada3
Diminuir a carga cognitiva evitando dispositivos tais como joysticks e bastões
Entrada4
Evitar integração entre dispositivos de entrada tradicionais como teclados e mouses
e dispositivos de entrada 3D
TABELA 6.7 – Diretivas para “Sistema com Ambiente Virtual e Informação da Aplicação”
Sistema com Ambiente Virtual e Informação da Aplicação
Rótulo
Diretiva de Usabilidade
SisInfo1
Prestar atenção especial à organização da apresentação visual
As diretivas escolhidas e apresentadas anteriormente nas tabelas de 6.1 a 6.7 foram
escolhidas por abordarem aspectos de navegação em alto nível de abstração nas interfaces com
RV não-imersiva, além de abordar aspectos de dispositivos de entrada e saída para RV nãoimersiva, tecnologia utilizada neste trabalho.
6.7 Análise Comparativa dos processos de Reengenharia
Os processos de reengenharia de interfaces realizados visaram aumentar a usabilidade do
sistema ao incrementar o senso de envolvimento do usuário através da modificação significativa
de elementos de navegação e apresentação nos níveis mais altos de abstração da árvore de menus
78
do sistema exemplo. Dessa forma, a análise comparativa foi realizada visando principalmente o
impacto da reengenharia de interface para interface com RV nas características relacionadas à
navegação e apresentação das interfaces.
Analisando as interfaces geradas com o GaCIV durante os processos de reengenharia de
interfaces, em relação às características de usabilidade extraídas de (Gabbard, 1997) e citadas
anteriormente na seção 6.6, foram constatadas algumas características comuns às três versões do
sistema exemplo :
•
A utilização da RV não-imersiva mostrou-se positiva em relação à diretiva “Entrada2”,
pois o uso de monitores comuns para a apresentação dos gráficos 3D evita a necessidade
de treino para utilização de dispositivos especiais. Além disso, o usuário também entrará
em contato com menus 2D da aplicação, menus estes que são comprovadamente
eficientes em monitores simples.
•
Tendo como base as diretivas “Entrada3” e “Entrada4”, associando-as ao contexto da
mudança de interfaces puramente textuais para interfaces RV, conclui-se que o uso de
mecanismos avançados de entrada necessários para a navegação em um ambiente de RV
imersiva poderia aumentar o esforço cognitivo do usuário. As interfaces geradas neste
trabalho permitem que os usuários do sistema original continuem utilizando os mesmos
mecanismos de entradas aos quais ele já estava habituado, isto é, mouse e teclado.
•
Ainda em relação aos dispositivos de entrada, a opção por dispositivos 2D vai de acordo
com as diretivas “Usuário1”, “Usuário2”, “Usuário3” e “Usuário4”, pois são dispositivos
consolidados e populares aos quais a grande maioria dos usuários está familiarizada.
•
A seleção de objetos permitida pelo GaCIV é simples e intuitiva, pois se aproxima da
idéia de seleção no mundo real (Gabbard, 1997), como indicado em “Seleção1” e
“Seleção3”. Como os objetos podem ser selecionados independentemente da distância
entre ele e o usuário, evita-se a necessidade de excessiva locomoção do usuário dentro do
ambiente RV para acessar suas tarefas. Entretanto, para que isso ocorra os objetos
apresentados devem ter formas, cores, tamanho e posicionamento que os distinguam bem
um dos outros, como observado em “Seleção2”, cuidado este que foi tomado durante a
geração das interfaces.
•
Durante a reengenharia de interfaces textuais para interfaces com RV, notou-se que
realizar o mapeamento da navegação do usuário nas interfaces legadas, através de menus,
79
para objetos 3D da forma mais natural possível é fundamental para se obter uma interface
com usabilidade, como indica a diretiva “Config1”. Segundo essa diretiva, o ambiente
virtual no qual o usuário está imerso afeta a usabilidade ao transmitir um contexto para as
tarefas do usuário.
•
O ponto de vista egocêntrico, ou ponto de vista do usuário, nas interfaces com RV
geradas pelo GaCIV reforça a idéia de imersão que traz grande parte do ganho em
usabilidade ao optar por esse tipo de interface como indica a diretiva “Repres1”.
•
Apesar de ser possível a movimentação usando os seis graus de liberdade, propostos para
ambientes com RV, as interfaces do GaCIV não necessariamente exigem essa
movimentação. Os graus de liberdade utilizados durante a navegação do usuário
dependem do posicionamento dos objetos, que por sua vez dependem do contexto do
sistema. As diretivas “Entrada1” e “Nav1” devem ser considerada durante a construção
das interfaces, visando o melhor posicionamento dos objetos segundo o domínio do
sistema.
•
Apesar da interface resultante ser uma interface mista (parte 3D e parte 2D), como o
estilo de interação básico não muda (apontar e clicar), não há aumento significativo de
esforço cognitivo em relação a esse aspecto.
6.7.1 Sistema Legado
(a) Interface do Sistema Legado
(b) Interface com RV para o Sistema Legado
FIGURA 6.15 – Interfaces do Sistema Legado
80
O processo de reengenharia da interface do sistema legado que resultou na interface
apresentada na figura 6.15 (b) apresentou poucos benefícios, pois apenas acrescentou uma
camada de interface, o que aumentou o esforço necessário para o acesso das tarefas fornecidas
pelo sistema, como mostra a figura 6.16. Isto é, a interface apresentada na figura 6.15 (b) não
substitui o menu mostrado na figura 6.15 (a), colocando-se entre o usuário e suas tarefas como
mostra o diagrama de caixas da figura 6.16.
FIGURA 6.16 – Estruturas de interface para o sistema legado com interface com RV
6.7.2 Sistema Segmentado
Ao contrário da interface com RV para o sistema legado, a interface com RV para o
sistema segmentado - figura 6.17(a) - substitui o menu principal da interface original - figura
6.17(b) . As opções de funcionalidades que antes eram apresentadas em textos agora são
apresentadas por objetos gráficos 3D. Além de representarem individualmente opções de
funcionalidades, o conjunto dos objetos constitui um contexto para as funcionalidades, facilitando
a percepção e associação realizada pelo usuário.
81
(a) Interface do Sistema Segmentado
(b) Interface com RV para o Sistema
Segmentado
FIGURA 6.17– Interfaces do Sistema Segmentado
O agrupamento de objetos gerando contextos para tarefas relacionadas entre si é apoiado
pela diretiva “SisInfo1”, citada anteriormente. Com essa meta em vista, os objetos da interface do
sistema segmentado foram organizados de forma a sugerirem contextos para suas
funcionalidades, obviamente dentro de um contexto maior que é a “oficina mecânica”. Obteve-se
então três agrupamentos distintos dentro do mesmo ambiente representando três contextos
diferentes: “Escritório da Oficina”, “Compras e Vendas” e “Pátio de Oficina”. O contexto
“Escritório de Oficina” é ilustrado na figura 6.17(b) mostrando objetos relacionados a tarefas de
acesso a arquivos de dados e impressão de relatórios. O contexto “Compras e Vendas” é ilustrado
na figura 6.18.
82
FIGURA 6.18 – Contexto de “Compras e Vendas” na interface com RV do sistema segmentado
Na figura 6.18 são mostrados objetos que sugerem em seu conjunto uma transação
comercial envolvendo os produtos representados pelas caixas. A partir desses objetos é possível
acessar as funcionalidades relativas ao “Lançamento de Compras”, “Lançamento de Vendas” e
“Contas a Pagar e Receber”.
O contexto “Pátio de Oficina” é ilustrado pela figura 6.19.
FIGURA 6.19 – Contexto de “Pátio de Oficina” na interface com RV do sistema segmentado
83
Os objetos de “Pátio de Oficina” mostram um cliente e seu carro aparentemente com
problemas. Nesse contexto pode-se acessar a funcionalidade “Lançamento de Ordem de Serviço”.
A ligação semântica entre os objetos 3D e a funcionalidade do sistema está no fato de uma ordem
de serviço ser requisitado sempre por um cliente que necessita de algum serviço de manutenção
para seu veículo.
Como dito anteriormente, os diferentes contextos das funcionalidades podem ser
representadas a partir da organização e agrupamento dos objetos da interface. Entretanto a
representação de diferentes contextos em uma mesma interface, especialmente em um mesmo
ambiente de RV, implica na utilização de pistas ou rótulos para facilitar o reconhecimento destes
contextos, como indica a diretiva “Nav2”. Nesse sentido, procurou-se fazer dos próprios
conjuntos de objetos as pistas necessárias para reconhecimento dos contextos, destacando-se o
“balcão” e o “funcionário operando o computador” para representar o contexto “Escritório da
Oficina”, o “dinheiro” e a “mulher compradora” para representar o contexto “Compras e
Vendas”, e o objeto “carro com defeito” para representar o contexto “Pátio de Oficina”. Essa
solução para distinguir contextos foi escolhida visto que a separação dos contextos utilizando
obstáculos físicos no ambiente virtual, tais como paredes e portas,
dificultariam a navegação do
usuário impedindo-o de passar de um contexto ao outro rapidamente. Segundo a opção escolhida,
tudo que o usuário precisa fazer para mudar de contexto é girar alguns graus sobre o próprio eixo
Y.
O uso de rótulos textuais seria uma opção valiosa para facilitar a identificação das tarefas
representadas pelos objetos 3D, principalmente tarefas abstratas como “Consultar Arquivos”,
representada pelo objeto “Lupa”. Entretanto essa opção não pode ser utilizada por limitações do
ambiente GaCIV em sua versão atual.
Apesar de toda a preocupação em permitir um melhor acesso às funcionalidades, a
reengenharia da interface do sistema segmentado esbarrou em um problema recorrente do
processo de segmentação aplicado: a granularidade da modularização obtida. Na interface
original, várias funcionalidades distintas se encontram sob o rótulo “Lançamentos”. Dessa forma
os objetos 3D relativos a “Compras e Vendas” e a “Pátio de Oficina” ativam o menu
“Lançamentos” da interface original, mostrada na figura 6.20.
84
FIGURA 6.20 – Menu de lançamentos do sistema segmentado
A figura 6.20 mostra como diversas funcionalidades, distintas o bastante para serem
representadas separadamente, estão indevidamente agrupadas sob o mesmo rótulo “Lançamento”.
Isso resulta em uma classificação nada intuitiva ao usuário e conseqüentemente complexidade
maior para representação com objetos 3D relacionados ao cotidiano do usuário.
6.7.3 Sistema OO
Como ocorrido com a interface gerada para o sistema segmentado, a interface com RV
gerada para o sistema OO substitui o menu principal da interface original de forma a aprimorar a
apresentação das funcionalidades, tornando a interface mais envolvente para o usuário.
Na figura 6.21 estão ilustradas as interfaces original e com RV do sistema OO. No
sistema OO, é possível utilizar objetos que reflitam o domínio do sistema, como por exemplo
“Cliente”, “Empregado” ou “Peças”. Como o domínio do sistema está relacionado diretamente
com objetos do mundo real, há maior facilidade em representá-los na interface 3D. Dessa forma,
a interface avançada resultante do processo de reengenharia de interfaces aplicado no sistema OO
apresenta-se mais intuitiva e natural para o usuário de acordo com as diretivas “Usuário1” e
“Config1” citadas anteriormente na seção 6.6.
85
(a) Interface do Sistema OO
(b) Interface com RV do Sistema OO
FIGURA 6.21 – Interfaces para o Sistema OO
A utilização do paradigma OO de interação na interface do sistema OO permitiu a
necessidade de apenas dois contextos na interface: “Compras e Vendas” e “Pátio de Oficina”. Os
objetos representados na interface buscam representar objetos do domínio do sistema sendo que
as operações de manipulação dos dados desses objetos podem ser acessados à partir da seleção de
sua representação 3D. Na figura 6.22, é exemplificado como o usuário acessa a função “Novo”,
referente à tarefa “incluir cliente no banco de dados”, após ter selecionado a representação 3D do
cliente na interface com RV.
(a) Popup obtidos à partir dos ícones 2D
(b) Menu de opções obtido à partir de objetos 3D
FIGURA 6.22 – Ações permitidas para o objeto “Cliente”
86
Ao selecionar o objeto desejado, o usuário recebe as opções de funcionalidades permitidas
para aquele objeto em forma de um menu WIMP composto por botões, como mostrado na figura
6.22 (b). O menu de opções corresponde ao menu popup da interface original, visto na figura
6.22 (a). Com isso, eliminou-se a necessidade do contexto “Escritório de Oficina”, facilitando a
navegação do usuário. Os objetos da interface com RV do sistema OO concentram-se
principalmente no contexto “Pátio de Oficina” pois é o contexto mais intuitivo, segundo o ponto
de vista deste pesquisador, quando se trata de uma oficina mecânica.
O contexto de “Compras e Vendas” foi criado de forma semelhante ao ilustrado na figura
20 para representar compras e vendas de peças e funcionalidades relativas a finanças.
Apesar dos ganhos em qualidade na apresentação das funcionalidades na interface com
RV, alguns recursos existentes na interface WIMP, tais como possibilidade de personalização da
organização dos objetos da interface e o rótulo textual, existentes para os ícones, não puderam ser
reproduzidos na nova interface. Entretanto, se por um lado a reorganização dos objetos parece
interessante para que o usuário possa personalizar sua interface, aproximando objetos
relacionados a tarefas mais freqüentemente utilizadas, no caso da interface com RV a alteração da
organização dos objetos poderia descaracterizar os contextos criados para facilitar o
reconhecimento das tarefas. Além disso, a reorganização dos objetos em um ambiente virtual
implica em movimentação e rotação de objetos em um espaço de três dimensões, algo bem
menos trivial do que a movimentação de ícones 2D.
Em relação aos rótulos textuais, a organização dos objetos 3D em contextos procurou
compensar a impossibilidade de utilizá-los devido a limitações do ambiente GaCIV. Além disso,
era esperado que com o ganho no poder de representação obtido com objetos 3D não fosse
necessário a utilização de rótulos 3D.
6.7.4 Comparação entre os processos de reengenharia de interface: Sistema Legado vs.
Segmentado vs. OO
Com exceção da versão legada do sistema, a reengenharia da interface utilizando o
GaCIV como apoio automatizado das duas outras versões do sistema, segmentada e OO,
modificou significantemente a navegação e acesso às tarefas do usuário.
Nos processos de reengenharia das interfaces das versões do sistema exemplo, procurouse fazer o mínimo de alterações necessárias ao código existente. Assim, a reengenharia aplicada
87
ao sistema legado apresentou poucos benefícios, pois apenas acrescentou uma camada de
interface para acessar sua estrutura monolítica, o que aumentou o esforço cognitivo necessário
para interação e conseqüentemente para o acesso das tarefas fornecidas pelo sistema.
As interfaces com RV geradas para os sistemas segmentado e OO resultaram em maiores
benefícios para esses sistemas pois substituíram os menus principais dos dois. A principal
diferença entre a interfaces avançadas geradas para o sistema segmentado e o sistema OO é a
natureza dos objetos que as compõem. Para a interface do sistema segmentado, utilizam-se
objetos que abstraem tarefas a serem realizadas pelo usuário, como por exemplo “Consultar”. Já
no sistema OO, é possível utilizar objetos que refletem os objetos do domínio do sistema, como
por exemplo “Cliente” ou “Peças”. Em outras palavras, a interface avançada para o sistema
segmentado apresenta objetos que refletem, na sua maioria, abstrações ligadas ao sistema
computacional; enquanto que a interface avançada para o sistema orientado a objetos concentrase na representação de objetos do domínio do sistema, e, portanto, de maior significado para as
tarefas do usuário.
Essa diferença da natureza dos objetos, causada pela estruturação dos sistemas exemplos,
resultou em representações de contextos e quantidade de objetos diferentes. Para acessar as
funcionalidades do sistema segmentado, grande parte delas foi representada por objetos do
contexto “Escritório da Oficina”, que apresenta pouca ligação semântica com os outros contextos,
“Compras e Vendas” e “Pátio de Oficina”, da mesma interface.
Em contrapartida, a interface gerada para o sistema OO concentrou-se no contexto “Pátio
de Oficina”, tornando-se mais intuitiva, segundo o ponto de vista deste pesquisador.
Além da estruturação do sistema, o estilo de interação influenciou as interfaces com RV.
O usuário, em um estilo funcional (segmentado) pensa na tarefa a ser realizada antes de escolher
o dado que vai utilizar, ou seja, o objeto que sofrerá a ação. No outro estilo, OO, a ordem de
raciocínio é inversa, pois o usuário escolhe primeiro o dado (objeto) que vai ser utilizado, depois
a ação que esse objeto sofrerá. Isso faz com que, no estilo de interface OO, o usuário cometa
menos erros, pois ele só pode realizar as tarefas permitidas para aquele tipo de dado/objeto
escolhido.
Em relação ao processo de reengenharia de interfaces aplicado nas três versões do
sistema, observou-se que:
88
-
na versão OO do sistema o esforço para a reengenharia das interfaces é muito próximo do
despendido para o segmentado. Isso acontece, segundo ponto de vista deste pesquisador,
pela segmentação do sistema ter sido pautada pelo paradigma OO;
-
a vantagem apresentada pelo processo de reengenharia de interface aplicado no sistema
segmentado é que os objetos 3D obtidos para representar ações do usuário na interface
com RV, por não estarem ligados diretamente ao domínio do sistema, possuem a
possibilidade de ser reutilizados em interfaces de outros sistemas que sejam baseados em
ações de acesso a bancos de dados e impressão de documentos. Ressalta-se que grande
parte dos sistemas legados comerciais é baseada nessas ações.
É importante notar que os problemas de usabilidade encontrados nos níveis mais baixos
de abstração das interfaces originais não foram atingidos pela reengenharia de interface
aplicada.
Foi observado nos processos de reengenharia de interfaces aplicados que dois tipos
distintos de menus podem ser encontrados nas árvores de menus de sistemas interativos:
-
menus de classificação, que correspondem aos menus de mais alto nível de abstração,
utilizados pelo projetista para classificar as funcionalidades. Nesses menus, nenhum
processo computacional significativo é realizado. A tarefa do usuário é navegar por eles
em busca das funcionalidades desejadas. O código fonte desse tipo de menu pode ser
facilmente separado do código da aplicação pois não está relacionado a nenhum processo
de transformação de dados;
-
menus ou interfaces de acesso às funcionalidades. Esse tipo de interface está fortemente
ligado a funcionalidades do sistema, sendo necessário estudos cuidadosos para extração
de seu código do código da aplicação.
Como neste trabalho foi realizada apenas a reengenharia dos menus de classificação,
nenhum problema de usabilidade em níveis de menus de funcionalidades foi atingido.
6.7 Considerações finais
Neste capítulo foram analisadas as interfaces obtidas através da reengenharia das
interfaces das três versões do sistema exemplo. Na análise realizada comparou-se as interfaces
originais e interfaces com RV de cada uma das versões e, em seguida, comparou-se as interfaces
89
com RV das três versões. Com isso, foi possível elicitar problemas e soluções de usabilidade
adicionados pelas novas interfaces aos sistemas exemplos.
Ambos os sistemas, segmentado e OO, permitiram que suas funcionalidades fossem
reestruturadas na interface devido suas implementações modularizadas. A partir da análise
comparativa observou-se que o sistema OO obteve maiores benefícios com o processo de
reengenharia da interface seguido pelo sistema segmentado. O sistema legado, com sua estrutura
monolítica, não apresentou melhorias em usabilidade com a adição da interface com RV, pelo
contrário, dificultou o acesso às suas funções.
90
Capítulo 7 - Conclusões
7.1 Considerações iniciais
Um dos objetivos principais deste trabalho é verificar o apoio que o paradigma OO
oferece ao processo de reengenharia de interfaces para interfaces com RV, processo esse apoiado
pelo ambiente GaCIV. Também é apresentado aqui um conjunto de diretivas de reengenharia de
interfaces para interfaces com RV a partir da experiência obtida com o estudo de caso. Durante o
trabalho foram observados pontos que podem ser cruciais para a eficiência do processo de
reengenharia de interface tal qual foi realizada. Em relação a esses pontos, procurou-se diretivas
que pudessem auxiliar o engenheiro de software a lidar com eles. Nem todas as diretivas são
fáceis de seguir porque dependem do contexto em que serão aplicadas e, obviamente, do bom
senso da equipe envolvida com a reengenharia da interface. Entretanto, as diretivas apresentadas
aqui serão explicadas para simplificar o máximo possível seu uso.
Nesse capítulo são apresentadas algumas considerações sobre o escopo do trabalho na
seção 7.2, as conclusões do trabalho na seção 7.3 e possíveis trabalhos futuros resultantes desta
pesquisa na seção 7.4.
7.2 Considerações sobre o Escopo do Trabalho
Durante este trabalho procurou-se seguir a proposta inicial de realizar a reengenharia de
interfaces em sistemas que passaram anteriormente por reengenharia, sem alteração significativa
do código das interfaces originais. Com isso, a reengenharia de interfaces foi realizada de forma a
reorganizar os módulos das aplicações existentes, substituindo o nível mais alto de abstração de
menus por uma camada de interface utilizando RV. Apesar dos resultados esperados terem sido
obtidos, isto é, a confirmação do paradigma OO como paradigma de desenvolvimento que facilita
a integração de interfaces com RV com sistemas legados em um processo de reengenharia, e a
possibilidade de avaliar a influência dos paradigmas de desenvolvimento e implementação nesse
processo de reengenharia de interfaces, observou-se que outros resultados relevantes poderiam
ser obtidos se os sistemas exemplos sofressem uma nova fase de engenharia reversa de forma que
todo o código de suas interfaces fosse separado das aplicações, permitindo que a reengenharia de
91
interfaces atingisse um nível mais baixo de abstração. Esse processo de separação do código da
interface e do código da aplicação é recomendado por Moore (1996), como citado anteriormente,
desde que seja apoiado por ferramentas automatizadas. Essa atividade extrapola o escopo desta
pesquisa e não foi realizada devido a limitações de tempo.
Uma das maiores dificuldades encontradas neste trabalho, na fase de reengenharia de
interfaces para interfaces com RV, foi a elaboração de metáforas para composição do gabarito e,
posteriormente, das interfaces com RV. Alguns conceitos e objetos de natureza abstrata
apresentaram maior complexidade para ser representados com objetos 3D. É importante ressaltar
que uma metáfora de interface que represente um modelo de interação incorreto pode causar
dificuldades para o usuário (Rocha e Baranauskas, 2000).
Durante os processos de reengenharia de interface, percebeu-se que as dificuldades em
compor metáforas se devem ao aspecto multidisciplinar inerente ao desenvolvimento de
interfaces e a impossibilidade de formar uma equipe com tal característica para este trabalho
(Rocha e Baranauskas, 2000). Além da necessidade de especialistas da área de comunicação
visual, de design gráfico (CAD 3D), de lingüística e outras disciplinas relacionadas, a equipe de
desenvolvimento das interfaces de RV deveria incluir também representantes das diversas classes
de usuários finais do sistema. A participação de usuários durante o desenvolvimento permitiria a
obtenção de avaliação e
feedback nas fases de desenvolvimento dos gabaritos e,
conseqüentemente, a elicitação e correção de problemas de usabilidade antes do estágio final de
geração e ligação das interfaces aos aplicativos.
Buscou-se, dentro das limitações encontradas em relação ao cronograma e recursos
humanos, aplicar metáforas visando espelhar o mundo real na interface 3D, como utilizado pela
IBM (2000a).
Apesar das limitações citadas, este trabalho buscou atingir questões sobre uma prática não
abordada de forma específica na literatura atual, a reengenharia de interfaces para interfaces com
RV, oferecendo contribuições que podem se tornar pontos de partida para muitas outras pesquisas
neste assunto.
92
7.3 Principais Contribuições
As principais contribuições resultantes deste trabalho são, como esperado, a confirmação
do paradigma de orientação a objetos de desenvolvimento como apoio para a reengenharia de
interfaces para interfaces com RV, como é visto na seção 7.3.1. Outras contribuições, obtidas
durante a avaliação dos processos, são diretivas para a realização de reengenharia de interfaces
para interfaces com RV em um alto nível de abstração, tal qual realizada neste trabalho. As
diretivas foram obtidas através da constatação de dificuldades encontradas no estudo de caso,
busca de soluções e a análise dos resultados obtidos. Foram reunidas diretivas em relação ao
processo de reengenharia e relacionados à usabilidade das interfaces com RV geradas a partir
desse processo, como é mostrado na seção 7.3.2.
7.3.1 Conclusões esperadas segundo a proposta de trabalho
No esforço de criação de interfaces com RV baseadas em metáforas do mundo real, a
criação da interface com RV para o sistema legado não gerou maiores problemas, pois pareceu
óbvia a escolha de um “computador” ou “um funcionário utilizando um computador” para
representar todo o sistema computacional pré-existente. Entretanto, a interface de RV para o
sistema segmentado apresentou objetos de naturezas diversas, fugindo do contexto de um pátio
de oficina. A causa dessa disparidade entre os objetos é que a modularização do sistema
segmentado, apesar de pautada pelo paradigma OO, guarda muitas das características da
organização da interface funcional do sistema legado, forçando o uso de metáforas ligadas à
computação na composição da interface. Isso pode ser exemplificado com o uso de objetos
típicos de um escritório (“computador”, “impressora” e “arquivo”), o “carro quebrado” e o
contexto “Compras e Vendas” representada por um “cliente” e um “funcionário”.
Já o sistema OO, por ter sua interface também seguindo esse paradigma, facilitou a
representação do sistema na interface 3D com objetos quase que totalmente pertencentes ao
contexto de um pátio de oficina. Entretanto, alguns conceitos do sistema tornaram-se tão
abstratos que não permitiam representação clara com objetos 3D ligados ao mundo real. Como
exemplo podem ser citados “Tipos de veículos” e “Veículos de cliente”, dois objetos distintos do
domínio do sistema, porém de natureza muito semelhantes quando associados a um objeto 3D.
Para superar as dificuldades em representar conceitos abstratos com objetos 3D ligados ao mundo
93
real, foram utilizados objetos que representassem contextos ou “objetos-contextos”, como será
explicado a seguir.
Como “objetos-contextos” foram considerados algumas abstrações de mais alto nível que
pudessem agrupar vários objetos do sistema, em uma hierarquia de classificação, e ao mesmo
tempo ser passível de representação na interface com objetos 3D ligados ao mundo real.
O diagrama de classes da figura 7.1 apresenta três objetos-contextos, Peças, Cliente e
Fornecedor.
O bjet o-Con text o Peças
P eç a
Objeto-Contexto Cliente
Com ponente
Cliente
V eículo de Cliente
Objeto-Contexto Fornecedor
Fornecedor
Fabricante
FIGURA 7.1 – Objetos-contextos da interface com RV para o Sistema OO
Na figura 7.1, os objetos com rótulos iniciados por “Objeto-Contexto” correspondem aos
objetos 3D apresentados dentro do ambiente de RV que corresponde ao menu principal da
interface com RV. Os objetos ligados aos objetos-contextos pela relação de agregação
correspondem às representações dos objetos do domínio do sistema que compõem o objetocontexto, e podem ser representados de diversas formas na interface com RV formando uma
hierarquia de classificação de objetos.
Dessa forma “Veículos de Cliente” foi agrupado com o objeto do sistema “Cliente” e
acessados a partir de um mesmo objeto-contexto, “Objeto-Contexto Cliente”, representado por
um cliente na interface com RV. Assim, o usuário seleciona o objeto “Cliente” na interface,
representado por uma figura humanóide, e tem acesso a um menu onde pode escolher entre os
diversos aspectos daquele contexto, isto é, pode acessar os “Veículos de Cliente” ou o “Cliente”
94
propriamente dito. Da mesma forma foram agrupados os objetos de domínio do sistema “Peças” e
“Componentes”, no “Objeto-Contexto Peças”, e os objetos “Fornecedor” e “Fabricante”,
agrupados no “Objeto-Contexto Fornecedor” . Idealmente esses objetos-contextos deveriam ser
criados a partir de uma análise conjunta com o usuário do sistema para que correspondam da
melhor forma ao modelo mental que ele possui do sistema.
É interessante ressaltar que a idéia de objeto-contexto aplicada neste trabalho é
semelhante à idéia de “visões” utilizada na metodologia OVID (Roberts, 1998), como visto no
capítulo 3. Da mesma forma que as visões do OVID, os objetos-contextos representam os
aspectos dos objetos do sistema que devem ser apresentados aos usuários como objetos da
interface, de acordo com as tarefas que eles executam.
Outro ponto semelhante a ser ressaltado é que objetos-contextos agregam vários objetos
do domínio do sistema, assim como as “visões” que podem ser compostas por outras “visões”.
Quando implementada, essa relação de agregação permite que o usuário navegue de um objeto a
outro, pertencentes a um mesmo “contexto”, criando estruturas de interfaces semelhantes a uma
árvore de menus orientada a objetos.
Além disso, observou-se que, aplicando o paradigma de interação orientado a objetos
através da reengenharia de interfaces do sistema legado, pode-se obter uma organização da
interface de tal forma que o usuário se preocupe apenas em encontrar os dados com os quais quer
trabalhar, sem se preocupar com as ações, pois elas serão padrões e consistentes para cada tipo de
dado (Collins, 1995). Para tanto, é importante a reestruturação do código do sistema de forma a
isolar as tarefas para poderem ser agrupadas de acordo com o “objeto-dado” a que elas se
relacionam, utilizando métodos de separação do código da interface e aplicação (Moore, 1996),
segmentação ou mesmo de reengenharia de software orientada a objetos.
Com a reestruturação do código da aplicação realizada, o ganho na performance do
usuário será resultado de uma maior preocupação do engenheiro de software na organização e
representação da melhor forma possível, coerente com o mundo real, dos objetos da interface.
Em relação à organização da interface resultante, deve ser dada especial atenção às
hierarquias construídas pelo usuário em relação aos “objetos-dados” utilizados em suas tarefas.
Para um usuário, por exemplo, é conveniente classificar “Peças” como “Itens de ordem de
serviço” ao invés de “Partes do Veículo”. Quanto mais próximo do pensamento do usuário, mais
95
natural se tornará a interface (Nielsen, 1993), (Gabbard, 1997), (IBM. 2000a), (Rocha e
Baranauskas, 2000).
Outro modo de se reorganizar a interface é representar as ações como objetos da interface,
mesmo porque as ações dos diversos sistemas legados baseados em acesso a bancos de dados
terão como base as ações de consulta, cadastro, exclusão e alteração de dados, com poucas
variações, como visto no capítulo 6.
Quanto à representação das funcionalidades na interface, quanto mais fáceis de identificar,
maior o ganho para a performance do usuário em encontrar e realizar tarefas (Nielsen, 1993),
(Gabbard, 1997). Segundo o ponto de vista deste pesquisador, quanto mais fáceis de associar os
objetos 3D com o domínio do sistema, mais facilmente os usuários identificarão as
funcionalidades na interface obtendo, conseqüentemente, melhorias em sua performance na
utilização do sistema.
O problema em representar ações na interface é que os objetos podem fugir do contexto
do domínio do sistema. Porém, por se tratarem de ações mais genéricas suas representações
podem ser reutilizadas em outros sistemas, como foi percebido na reengenharia da interface do
sistema segmentado.
Portanto, devido aos resultados obtidos, pode-se inferir que a modularização do sistema,
facilitada pelo uso do paradigma OO de desenvolvimento e implementação, apresenta grandes
vantagens em relação aos outros paradigmas estudados quando o objetivo é realizar a
reengenharia de interfaces para interfaces com RV em um alto nível de abstração utilizando
metáforas do mundo real.
7.3.2 Diretivas para reengenharia de interfaces com RV
Nesta seção serão apresentadas as diretivas relacionadas ao processo de reengenharia de
interfaces para interfaces com RV, e relacionadas a aspectos de usabilidade durante esse
processo.
7.3.2.1 Diretivas para o processo de reengenharia de interfaces com RV
As diretivas encontradas em relação à reengenharia de interfaces são listadas e explicadas
a seguir:
96
1. Compor uma equipe multidisciplinar para realização da reengenharia de interfaces
para interfaces com RV. A formação de equipes multidisciplinares é recomendada para
desenvolvimento de sistemas interativos com interfaces convencionais (Norman, 1998),
(textuais e WIMP) e, como constatado neste trabalho, é de vital importância para
interfaces com RV devido a sua inerente complexidade de desenvolvimento, porém
enorme potencial de representação. A equipe de desenvolvimento das interfaces de RV
deve incluir integrantes da área de comunicação visual, de design gráfico (CAD 3D), de
lingüística entre outras disciplinas relacionadas, facilitando assim a criação de diversas
versões de objetos 3D durante o processo de criação da interface com RV, e avaliação
dessas versões junto ao usuário, em um processo de desenvolvimento centrado no usuário.
Como é recomendado de maneira geral em projetos centrados no usuário, é interessante o
uso de protótipos da interface para validação junto ao usuário com o intuito de evitar que
muitos problemas de usabilidade surjam após a implementação final da interface (IBM,
2002). Entretanto, enquanto interfaces 2D e textuais podem ser prototipadas utilizando
simplesmente papel e caneta, interfaces com RV envolvem tecnologias não triviais que na
maioria das vezes extrapolam as habilidades do engenheiro de software, tais como:
modelagem de objetos 3D, organização de objetos 3D no ambiente virtual para
representar metáforas do mundo real etc. Ao contrário de interfaces WIMP, que possuem
widgets e estilo de interações padronizados e de fácil implementação, os recursos de RV
para criação de interfaces ainda não estão definidos. Portanto, são necessários
especialistas para cobrir aspectos de hardware, animação gráfica, interação e apresentação
da interface com RV.
2. Para sistemas legados com problemas de usabilidade nas interfaces ligadas às
funcionalidades em sua interface original, procurar realizar um processo de
reengenharia no sistema, separando código de aplicação e interface, com o intuito de
reformular a interface. Como visto no capítulo 6, seção 6.7.4, as interfaces ligadas às
funcionalidades do sistema formam uma classe de interfaces que, por estar acoplada a
processos computacionais de transformação de dados, necessita de especial atenção para
compreensão e reformulação. Um processo de reengenharia de alto nível de abstração na
árvore de menus, como foi realizado, não será suficiente para resolver seus problemas de
usabilidade. O processo de reengenharia de interfaces como mostrado em (Merlo et al,
97
1993) e (Moore, 1996) comentado no capítulo 3, onde há a separação do código da
interface do código da aplicação com apoio automatizado, permite que o engenheiro de
software atinja os problemas mais graves de usabilidade do sistema.
3. Utilizar modelos de representação de alto nível de abstração para representar a
estrutura de organização das tarefas do usuário na interface legada. Os modelos para a
representação da árvore de menus da interface dos sistemas que irão passar por
reengenharia de interfaces para interfaces com RV devem ter poder de representação para
mapear a organização da interface original de forma independente da tecnologia utilizada
na implementação, permitindo facilidade de visualização. Isso é necessário porque
interfaces com RV se diferem radicalmente das interfaces WIMP e textuais, e todas as
informações sobre implementação dessas interfaces e modelos de interação, com exceção
das metáforas utilizadas, terão pouca utilidade durante a criação da nova interface com
RV. Além disso, é interessante recuperar e representar informações das tarefas realizadas
pelo usuário no sistema legado. Essas informações deverão ser analisadas, se possível
com a participação de usuários, e reformuladas para a geração da nova interface com RV.
No trabalho realizado, utilizou-se cenários textuais e diagramas de caixas para
representação das tarefas do usuário e estrutura das interfaces recuperadas a partir da
execução dos sistemas, como visto no capítulo 5.
4. Modularizar o máximo possível o código da aplicação. Com a aplicação
modularizada, é possível obter flexibilidade na implementação da interface e construção
de hierarquias de classificação correspondentes aos modelos mentais construídos pelo
usuário para identificar e realizar tarefas.
5. A reengenharia de interface para interface com RV pode ser mais eficiente se
realizada simultaneamente aos processos de reengenharia que resultarem na
modularização do sistema. Considerando que os processos de reengenharia – de interface
e sistema - sejam realizados paralelamente por duas equipes em constante comunicação, o
projeto da
modularização do sistema, realizado pela equipe de desenvolvimento da
aplicação, pode ser orientado à otimização da representação do sistema na interface. Da
mesma forma, a equipe de desenvolvimento da interface com RV pode constatar
problemas em apresentar conceitos abstratos utilizados pelos desenvolvedores do sistema,
98
ajudando a validar o modelo utilizado pela equipe de desenvolvimento da aplicação,
sugerindo alterações no modelo utilizado.
6. A busca de informações sobre usuários finais no processo de reengenharia de
interfaces para RV é vital para se obter ambientes virtuais que correspondam às suas
expectativas. Essa diretiva é de especial importância quando opta-se em utilizar metáforas
do mundo real para a interface com RV, pois é necessário conhecer as experiências do
usuário no seu cotidiano para que a interface resultante seja aceita pelos usuários. De
forma semelhante ao fato constatado no processo de engenharia avante de interfaces 2D
ou 3D, o resultado final da reengenharia de interfaces para interfaces com RV tal qual foi
realizado depende diretamente da análise de usuários finais conhecedores do sistema
legado ou da participação deles no processo. A aplicação de um processo de
desenvolvimento de software centrado no usuário para a fase de engenharia avante da
interface com RV, com participação ativa do usuário nas fases iniciais do projeto da
interface, permite que o desenvolvimento das interfaces com RV seja simplificado e fique
mais próximo do modelo mental que o usuário faz de suas tarefas. Um exemplo de PCU
aplicado ao desenvolvimento de interfaces com RV pode ser visto em (Shamus &
Harrison, 2001). Sem a participação do usuário, a equipe responsável pela reengenharia de
interface pode, no máximo, imaginar como seria a melhor representação 3D para a
interface legada. Apesar dessa constatação, em processos de reengenharia, a participação
direta do usuário pode ser impraticável devido à distância espaço/temporal da atual equipe
de desenvolvimento e os usuários do sistema original, como mostrado em (Gulliksen et al,
1999).
7.3.2.2 Diretivas de usabilidade para a reengenharia de interfaces com RV
Em relação à usabilidade, percebeu-se que os conjuntos de diretivas existentes para
ambientes de RV ainda falham em abordar certos aspectos da composição do ambientes 3D, tais
como:
-
completitude do contexto utilizado;
-
harmonia do ambiente;
-
fidelidade ao mundo real;
Algumas diretivas encontradas durante este trabalho podem simplificar o trabalho do
engenheiro de software nesse sentido:
99
1. Quando o acesso a uma funcionalidade for representado por idéias abstratas,
relacionadas a ações, por exemplo, evitar utilizar objetos que seja de difícil associação à
idéia que o usuário possui da funcionalidade. Pode parecer interessante utilizar um único
objeto para representar cada funcionalidade, evitando sobrecarga visual. Porém, nem
todas as funcionalidades são facilmente representáveis com um único objeto. É preferível
utilizar vários objetos criando um contexto que permita melhor reconhecimento da
funcionalidade por parte do usuário.
2. Quando vários objetos são utilizados para criar um contexto, todos os objetos devem
estar ligados à aplicação que representam. Se todos os objetos do mesmo contexto
estiverem devidamente conectados à mesma aplicação, o usuário não precisará procurar e
relembrar qual deles representa a ligação.
3.
Alguns objetos podem destoar do domínio representado pelo ambiente desde que
representem alguma metáfora familiar ao usuário. Apesar de ser desejável que a
interface se aproxime o máximo da experiência real do usuário para cumprir suas tarefas,
é bom lembrar que o projetista pode ter alguma liberdade para extrapolar os limites da
realidade. A interface é uma abstração da realidade que, seguindo o modelo mental do
usuário, pode criar atalhos impossíveis no mundo real. Na interface com RV criada para o
sistema segmentado, utilizou-se um objeto 3D “Lupa” posicionado à frente do objeto 3D
“Arquivo”, como visto na figura 7.2, representando a funcionalidade relativa a consultas
nos arquivos .
100
FIGURA 7.2 – Objeto “Lupa” representando a tarefa “Consultar Arquivo” na interface
com RV para o sistema segmentado
Aparentemente o objeto “Lupa” destoa do ambiente virtual, entretanto seu
posicionamento sugere a metáfora de busca em arquivos utilizada freqüentemente em
interfaces 2D WIMP, já familiar à maioria dos usuários.
4. Evitar objetos de significado ambíguo. Se necessário, criar uma hierarquia de
classificação para os objetos de natureza ambígua de forma que possam ser acessados na
interface a partir de outros objetos 3D que se destaquem pelos aspectos que os
distinguem. Por exemplo, ambos os objetos “Veículo de Cliente” e “Tipos de Veículos”
poderiam ser representados por veículos 3D, entretanto isso criaria confusão para o
usuário que dificilmente conseguiria distingui-los. Para distingui-los, pode-se representar
o objeto “Veículo de Cliente” classificado sob o contexto “Cliente”. Ao acessar o objeto
“Cliente”, o usuário escolhe com quais objetos deste contexto ele deseja interagir, entre
eles, o “Veículo de Cliente”.
5. Completar o ambiente com objetos que permita sua melhor adequação ao contexto
para tornar a interface mais agradável ao usuário, aumentando a sensação de imersão.
Não basta colocar no ambiente apenas objetos que dêem acesso às funcionalidades, pois
esses objetos devem estar ligados semanticamente entre si e ligados ao ambiente. Por
exemplo, o objeto “Impressora” que leva à funcionalidade de geração de impressos do
sistema segmentado utilizado nesta pesquisa, fica deslocado do ambiente se não for
101
colocado junto a um objeto “Computador” e um objeto “Funcionário”. Esses objetos
complementares dão significado e ligam o objeto impressora ao ambiente 3D, como
mostra a figura 7.3.
(a)
(b)
FIGURA 7.3 – Objetos complementares para a interface com RV para o sistema
segmentado
Na figura 7.3 (a) pode ser observada a interface com RV para o sistema segmentado em
sua primeira versão, apenas com objetos de acesso às funcionalidades. Como pode ser
visto na figura 7.3 (b), em uma versão posterior da mesma interface, com objetos
complementares os objetos de acesso às funcionalidades ficaram mais harmônicos em
relação ao ambiente e domínio.
6. Objetos utilizados para complementar o ambiente não devem possuir ligações com
funcionalidades do sistema. Os objetos complementares, como citado anteriormente,
servem apenas como parte do cenário do ambiente e devem ser usados apenas quando
necessários para evitar sobrecarga visual do ambiente e desorientação do usuário.
7.4 Trabalhos Futuros
Alguns trabalhos futuros puderam ser identificados como possíveis extensões para o
trabalho realizado e serão descritos a seguir:
1 – Quando utilizar interfaces com RV? Uma questão teórica recorrente durante todo o
trabalho é : “Quais aplicações devem ou não utilizar RV?”. A literatura atual não apresenta
respostas conclusivas para essa questão que se mostrou crucial para que seja possível responder
outra questão: “Quais sistemas legados devem obter maior ganho de qualidade com a
102
reengenharia para interfaces com RV?”. Dessa forma, um estudo para se obter respostas
completas e conclusivas a essas duas perguntas torna-se uma extensão desejável a este trabalho.
2 – Métodos e metodologias para reengenharia de interfaces com RV. Em relação a
métodos e metodologias para reengenharia de interfaces com RV, notou-se que poucas
abordagens existentes apresentam simplicidade de uso e aplicabilidade em processos de
reengenharia de interfaces. Existe uma necessidade de métodos para modelagem simples, rápida
e eficaz de estruturas de interfaces e diálogo humano-computador. Alguns métodos podem ser
observados em (Moore, 1996), porém todos eles apresentam alta complexidade na aplicação da
reengenharia de interfaces de alto nível de abstração. A pesquisa ou mesmo o desenvolvimento
de uma técnica de recuperação e representação abstrata de estruturas de interfaces e interação
humano-computador, para uso em processos de reengenharia de interfaces, especialmente para
interfaces com RV, pode cobrir algumas lacunas não abordadas neste trabalho.
3 – Usabilidade de interfaces mistas. Contribuições importantes em relação a questões de
usabilidade das interfaces mistas, isto é, interfaces legadas com uma camada de interface com
RV, geradas a partir do processo realizado neste trabalho, podem ser dadas a partir de testes de
usabilidade junto ao usuário. Testes dessa natureza precisam ser cuidadosamente planejados e
executados para que seus resultados levantem vantagens e desvantagens do uso desse processo de
reengenharia em sistemas legados visando melhorar a usabilidade e aumentar o tempo de vida
deles, tornando-se potencialmente uma das mais importantes extensões deste trabalho.
4 – Aprimorar o ambiente GaCIV. O uso do GaCIV, apesar de mostrar-se valioso como
suporte para a reengenharia de interfaces de sistemas legados, mostrou que esse ambiente ainda
pode ser aprimorado com possíveis novas funcionalidades tais como:
•
inclusão de hints ou rótulos textuais aos objetos da interface com RV para permitir um
melhor reconhecimento dos objetos por parte dos usuários;
•
possibilidade de interação entre objetos da interface, permitindo maior repertório de
interação humano-computador seguindo o paradigma OO (OOUI);
•
possibilidade de animação de objetos 3D, permitindo a representação de ações utilizando
poucos objetos;
•
facilidades para criação de hierarquias de classificação, isto é, árvores de menus em
interfaces com RV.
103
5 – Técnicas para criação de hierarquias de classificação em menus com RV. Quanto ao
uso de árvores de menus em interfaces com RV, outro estudo se faz necessário com o intuito de
verificar a melhor forma de implementa-la e as implicações na usabilidade da interface ao utilizalas.
104
Referências Bibliográficas
(Assis, 1999) ASSIS, A.F.S.R. Um Ambiente Computacional para Desenvolvimento de
Interfaces Utilizando Realidade Virtual. São Carlos: Departamento de Computação,
Fevereiro/2000. Monografia apresentada ao PPG-CC da UFSCar para exame de qualificação.
(Assis & Silva, 2000a) ASSIS, A.S.F.R., SILVA, J.C.A. Development of Interactive Systems
with Virtual Reality Based on User Centered Design. In: SCI 2000 - WORLD
MULTICONFERENCE ON SYSTEMICS, CYBERNETICS AND INFORMATICS, 4, 2000,
Estados Unidos. Proceedings... , julho/2000.
(Assis & Silva, 2000b) ASSIS, A.S.F.R., SILVA, J.C.A. Meeting the Challenge of Systems
Development with Virtual Interfaces. In: 2000 INTERNATIONAL CONFERENCE ON
INFORMATION SOCIETY IN THE 21ST CENTURY: EMERGING TECHNOLOGIES AND
NEW CHALLENGES (IS2000). Proceedings. Japão, Aizu-Wakamatsu, Fukushima. Novembro
5-8, 2000. p. 562-566.
(Bisbal et al, 1999) BISBAL, J., LAWLESS, D., WU, B., GRIMSON, J., Legacy Information
Systems: Issues and Directions. IEEE Software, vol.16, No. 5, pp. 103-111, Setembro/Outubro
1999.
(Bowman et al, 2001a) BOWMAN, D., KRUIJFF, E., LAVIOLA, J., POUPYREV, I. An
Introduction to 3D User Interface Design. Presence: Teleoperators and Virtual Environments,
vol. 10, no. 1, pp. 96-108, 2001.
(Bowman et al, 2001b) BOWMAN, D., JOHNSON, D., HODGES, L. Tested Evaluation of
Virtual
Environment
Interaction
Techniques.
Environments, vol. 10, no. 1, pp. 75-95, 2001.
Presence:
Teleoperators
and
Virtual
105
(Braga, 1990) BRAGA, R. T. V. – Documentação Técnica sobre o Sistema Legado,
Documentação de Trabalho,1990.
(Braga & Masiero, 1998)
BRAGA, R.T.V., MASIERO, P.C. Detalhamento do Passo de
Abstração do Modelo de Análise do Método Fusion/RE. Relatório Técnico, ICMSC-USP, São
Carlos, 1998.
(Card & Newell, 1983) CARD, S.M.T., NEWELL, A. The Psychology of Human-Computer
Interaction, Hillsdale, NJ, EUA: Lawrence Erlbaum Associates Publishers, 1983.
(Chikofsky & Cross, 1990) CHIKOFSKY, E.J., CROSS II, J.H. Reverse Engineering and Design
Recovery: A Taxonomy. IEEE Software, v.7, n.1, pp. 13-17, 1990.
(Cognetics, 1999) COGNETICS. LUCID, URL: http://www.cognetics.com/ lucid/index.html.
Consultado em julho/2001.
(Coleman et al, 1994) COLEMAN, D. et al. Object-Oriented Development: The Fusion
Method. Prentice Hall, 1994.
(Collins, 1995) COLLINS, D. Designing Object-Oriented User Interfaces. Estados Unidos:
The Benjamin/Cummings Publishing Company, Inc, 1995.
(Constantine, 1995) CONSTANTINE, L. Essential Modeling - Use Cases for User Interfaces.
ACM Interactions, vol 2, p. 34-46, abril 1995.
(Costa, 1997) COSTA, R.M. Um método de Engenharia Reversa para Auxiliar a
Manutenção de Software. Dissertação (Mestrado em Computação) – ICMSC, Universidade de
São Paulo. São Carlos, 1997.
106
(Dayton et al, 1998) DAYTON, T. et al. Bridging User Needs to Object Oriented GUI Prototype
via Task Object Design, User Interface Design – Bridging the Gap from User Requirements
to Design, Estados Unidos: CRC Press LLC, 1998.
(Feltrim et al, 1999) FELTRIM, V.D., FORTES, R.P.M., SILVA, W.F. Aspectos de Validação
do Método de Engenharia Reversa Fusion-RE/I aplicado a um Sistema Hipermídia. In:
SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE, 1999 Anais... FlorianópolisSC, Outubro/1999.
(Feltrim, 1998) FELTRIM, V.D. et al. Uma modelagem do domínio de Engenharia Reversa
de Software utilizando o método OOHDM. Notas do Instituto de Ciências Matemáticas de São
Carlos, Universidade de São Paulo – São Carlos, 1998.
(Gabbard et al, 2000) GABBARD, J.L. et al. Usability Design and Evaluation Guidelines for
Augmented
Reality
(AR)
Systems
URL:
http://www.sv.vt.edu/classes/ESM4714/Student_Proj/class00/gabbard/index.html. Consultado em
março/2002.
(Gabbard, 1997) GABBARD J. L., A Taxonomy of Usability Characteristics for Virtual
Environments, Dissertação
(Mestrado em Computação) - Departmento de Ciências da
Computação, Virginia Tech, 1997.
(Gabbard & Hix, 2001) GABBARD J. L., HIX D., Usability Design and Evaluation Guidelines
for
Augmented
Reality
(AR)
Systems,
http://www.sv.vt.edu/classes/
ESM4714/Student_Proj/class00/gabbard/index.html. Consultado em dezembro/2001.
(Gray & Boehm-Davis, 2000) GRAY, W. D. & BOEHM-DAVIS, D. A. GOMS
Tutorial/Workshop,
2000
IEA/HFES
CONFERENCE,
URL:
http://hfac.gmu.edu/~gray/pubs/papers/goms/goms-wdg_dab.htm. Consultado em fevereiro/2001.
107
(Greenhalgh et al, 1997) GREENHALGH, C.M., BULLOCK, A.N., TROMP, J. G., BENFORD,
S.D. Evaluating the Network and Usability Characteristics of Virtual Reality Conferencing, The
British Telecom Technology Journal (BTTJ), Special Issue on Shared Spaces, 15 (4),
October 1997. http://citeseer.nj.nec.com/greenhalgh97evaluating.html
(Gulliksen et al, 1998) GULLIKSEN, J. et al.
User Centered Design - Problems and
Possibilities: A Summary of the 1998 PDC and CSCW Workshop. SIGCHI Bulletin, v.31, n.2,
Abril/1998.
(Hannaford & Venema, 1995) HANNAFORD, B., VENEMA, S. Kinesthetic displays for remote
and virtual environments. In: _____. Virtual Environments and Advanced Interface Design.
Oxford University Press, 1995. pages 415-436.
(Harel, 1987) HAREL, D. Statecharts: A Visual Formalism to Complex Systems, Science of
Computer Programming, v.8, p. 231-274. 1987.
(Hincley et al, 1994) HINCKLEY, K., PAUSCH, R., GOBLE, J.C., KASSELL, N.F. (1994a).
Design hints for spatial input. In: ACM SYMPOSIUM ON USER INTERFACE SOFTWARE &
TECHNOLOGY, nro, 1994, Cidade. Proceedings… pages 213-222.
(Horrocks, 1999) HORROCKS, Ian. Constructing the User Interface with Statecharts,
Inglaterra: Addison Wesley Longman Limited, 1999.
(IBM. 2000a) IBM.
Design Principles for Tomorrow.
URL: http://www.ibm.com/ibm/
hci/designer/uiarch/prinpl3_noframes.html. Consultado em dezembro/2000.
(IBM, 2000b) IBM. OOUI Introduction. URL: http://www.ibm.com/ibm/hci/guidelines/
design/ooui_introduction.html. Consultado em dezembro/2000.
(IBM,
2001a)
IBM.
Ease-to-use,
URL:
ext.nsf/publish/558. Consultado em fevereiro/2001.
http://www-3.ibm.com/ibm/easy/eou_
108
(IBM,
2001b)
IBM.
Real
Things
design,
URL:
http://www-3.ibm.com/ibm/
easy/eou_ext.nsf/Publish/581. Consultado em fevereiro/2001.
(IBM,
2002)
IBM.
User-Centered
Design,
URL:
http://www-
3.ibm.com/ibm/easy/eou_ext.nsf/Publish /570PrintView. Consultado em janeiro/2002.
(Interbase, 2002) Interbase , URL: http://www.borland.com/interbase/index.html. Consultado
em março/2002.
(Java, 2002) Java, URL:http://java.sun.com/ Consultado em março/2002.
(JBuilder, 2002) JBuilder, URL:http://www.borland.com/jbuilder/index.html Consultado em
março/2002.
(Kaur, 1998) KAUR K. Designing virtual environments for usability. , Londres, Junho/1998.
Dissertação (PhD em Ciência da Computação) - Centre for HCI Design, City University.
(Kuhn & Muller, 1993) KUHN, S., MULLER, M.J. Participatory Design. Communications of
the ACM, v.36, n.4, p.25-28, junho/1993.
(Lucena & Liesenberg, 1999) LUCENA, F.N., LIESENBERG, H.K.E. Interfaces HomemComputador:
Uma
Primeira
Introdução.
Disponível
em
1997.
URL:
http://www.dcc.unicamp.br/proj-xchart/start/welcome.html. Consultado em abril/1999.
(Merlo et al, 1993) MERLO E., GIRARD J. F., KONTOGIANNIS K., PANANGADEN P., De
MORI R., Reverse Engineering of User Interfaces, Proceedings... First Working Conference on
Reverse Engineering, Baltimore, 1993 http://citeseer.nj.nec.com/merlo93reverse.html
(Merlo, 1995) MERLO, E. et al., Reengineering User Interfaces. IEEE Software, vol.12, no. 1,
pp 64-73, janeiro 1995.
109
(Myers, 1996) MYERS, B.A., A Brief History of Human Computer Interaction Technology,
Relatórios Técnicos CMU-CS-96-163 e CMU-HCII-96-103, Human Computer Interaction
Institute Technical Report, Estados Unidos: dezembro/1996.
(Moore, 1996) MOORE, M. A Survey of Representations for Recovering User Interface
Specifications in Reengineering, Relatório de Pesquisa GIT-CC-96-34, College of Computing,
Georgia Institute of Technology, 1996.
(Moore, 2002) MOORE, M., MORPH - User Interface Reengineering. Dissertação disponível
on-line, PhD em Ciência da Computação, Georgia Institute of Technology URL:
http://www.cis.gsu.edu/~mmoore/MORPH/dissertation/Dissertation.html.
Consultado
em
março/2002.
(Moran, 1981) MORAN, T. The Command Language Grammar: A Representation for the User
Interface of Interactive Computer Systems, International Journal of Man-Machine Studies,
vol. 15, nro. 1, pg. 3-50, 1981.
(Nielsen & Molich, 1990) NIELSEN, J., MOLICH, R. Heuristic evaluation of user interfaces. In:
ACM CONFERENCE HUMAN FACTORS IN COMPUTING SYSTEMS (CHI'90), 1990,
Seattle, WA, EUA Proceedings… 1-5 abril 1990, pg. 249-256.
(Nielsen, 1993) NIELSEN, J. Usability Engineering. Estados Unidos: AP Professional, 1993.
(Nielsen, 1998) NIELSEN, J. 2D is Better than 3D. Disponível em novembro/1998, URL:
http://www.useit.com/alertbox/981115.html, Consultado em julho 2002.
(Ning et al, 1994) NING, J.Q. et al. Automated Support for Legacy Code Understanding,
Communications of the ACM, v.37, n5, pp 50-57, maio/1994.
110
(Norman, 1998) NORMAN, D.A. Want Human-Centered Development? Reorganize the
Company. In:_____The Invisible Computer. MIT Press, 1998.
(Penteado, 1996) PENTEADO, R.A.D. Um Método para Engenharia Reversa Orientada a
Objetos. Dissertação (Doutorado em Física Computacional) – Instituto de Física de São Carlos,
Universidade de São Paulo. São Carlos, 237 p. 1996.
(Penteado et al, 1996) Penteado, R.; Germano, F.; Masiero, P. C. - An Overall Process Based on
Fusion to Reverse Engineering Legacy Code. In: Working Conference Reverse Engineering,
3, Monterey-California. Anais. IEEE, p. 179-188. 1996.
(Penteado et al, 1998) PENTEADO, R. et al Improving the Quality of Legacy Code by Reverse
Engineering. In: International Conference on Information Systems Analysis and Synthesis,
ISAS’98, 4, Orlando-Florida. p.364-370. 1998.
(Pressman, 1997) PRESSMAN, R. Software Engineering: A Pratitioner’s Approach. Estados
Unidos: McGraw-Hill, 1997.
(Reich et al, 1995)
REICH, Y., KONDA, S. L., LEVY, S. N., MONARCH, I. A., e
Subrahmanian, E. "Varieties and issues of participation and design." Design Studies,
http://citeseer.nj.nec.com/reich96varieties.html, Consultado em abril/2001.
(Reisner, 1981) REISNER, P. Formal Grammar and Human Factors Design of an Interactive
Graphics System, IEEE Transaction on Software Engineering, vol. SE-7, nro. 2, pg. 229-240,
1981.
(Roberts, 1998) ROBERTS, D. et al. Designing for the User with OVID: Bridging User
Interface Design and Software Engineering, Macmillan Technical Publishing, 1998.
111
(Rocha & Baranauskas, 2000) ROCHA, H.V., BARANAUSKAS, M.C.C. Design e Avaliação
de Interfaces Humano-Computador, São Paulo, Brasil: IME-USP, 2000.
(Sakata, 1998) SAKATA, T.C. Módulo RSOO – Reengenharia de Software Orientada a
Objetos, Relatório Técnico, Universidade Federal de São Carlos, Departamento de Computação.
(Shamus & Harrison, 2001) SHAMUS, P.S., HARRISON, M.D. User centred design and
implementation of virtual environments, International Journal of Human-Computer Studies,
Academic Press, 55(2), pp 109-114, August 2001
(Shneiderman, 1998)
SHNEIDERMAN, B.
Designing the User Interface: Strategies for
Effective Human-Computer Interaction. Estados Unidos: Addison-Wesley, 1998.
(Silva, 1998) SILVA, J.C.A. A Realidade Virtual e a Qualidade de Interfaces. In: WORKSHOP
DE QUALIDADE DE SOFTWARE – XII SIMPÓSIO BRASILEIRO DE ENGENHARIA DE
SOFTWARE, Maringá, 1998. Anais… Maringá-PR, 1998, p. 11-17.
(Silva, 1999) SILVA, J.C.A. Development of Virtual Interfaces Using Configurable Templates.
In: ICCIMA99 – 3RD INTERNATIONAL CONFERENCE ON COMPUTATIONAL
INTELLIGENCE AND MULTIMEDIA APPLICATIONS, NEW DELHI, INDIA, 23-26
SETEMBRO 1999. Proceedings… India, 1999, p. 354-358.
(Silva & Penteado, 2000) SILVA, J.C.A, PENTEADO, R.A.D. A Study of the Integration of
Reverse Engineering and Interfaces with Virtual Reality. In: SCI2000 and ISAS2000 – 4th
WORLD MULTICONFERENCE ON SYSTEMICS, CYBERNETICS AND INFORMATICS
AND THE 6TH INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS
ANALYSIS AND SYNTHESIS, Orlando, USA, July 23-26, 2000 Proceedings. USA, 2000, p.
112-117.
(Sneed, 1995) SNEED, H.M. Planning the Reengineering of the Legacy Systems In: IEEE
Software, nro volume, nro fasciculo, pp 24-34, janeiro 1995.
112
(Sneed, 2001) SNEED, H.M. Wrapping Legacy COBOL Programs behind an XML-Interface. In:
WORKING CONFERENCE ON REVERSE ENGINEERING, 2001. Proceedings... WCRE
2001, 2-5 outubro 2001, Suttgart, Alemanha. IEEE Computer Society.
(Soares et al, 2001a) SOARES, C.L. et al Metodologias para Desenvolvimento de Interfaces –
Análise Comparativa, Relatório Técnico, Universidade Federal de São Carlos, Departamento de
Computação.
(Stroulia et al, 1999) STROULIA, E., EL-RAMLY, M., KONG, L., SORENSON, P.,
MATICHUCK, B. Reverse engineering legacy interfaces: An interaction-driven approach. In 6TH
WORKING CONFERENCE ON REVERSE ENGINEERING (WCRE'99) Proceedings…
Local:
IEEE
Computer
Society,
1999,
pp
292--301.
http://citeseer.nj.nec.com/stroulia99reverse.html
(Tucker & Stirewalt, 1999) TUCKER K., STIREWALT K.,Model Based User-Interface
Reengineering,
Proceedings...
Working
Conference
on
Reverse
Engineering,1999,
http://citeseer.nj.nec.com/tucker99model.html
(Van Dam, 1997) VAN DAM, A. Post-WIMP User Interfaces. Communications of the ACM,
v.40, n.2, p.63-67, fevereiro/1997.
(Vanniamparampil et al, 1995) Vanniamparampil A. et al User interface reengineering: A
diagnostic approach, Relatório Técnico, University of Maryland, Department of Computer
Science, fevereiro/1995
(Wasserman et al, 1986) WASSERMAN, A.I. et al. Developing Interactive Information Systems
with the User Software Engineering Methodology.
Engineering, v.12, n.2, p.326-345, fevereiro/1986
IEEE Transactions on Software
113
(Weiss & Jessel, 1998) WEISS, P., JESSEL, A.S. Virtual Reality Applications to Work, URL:
http://www.infocommons.utoronto.ca/atrc/rd/library/
papers/weiss.html.
Consultado
em
agosto/2001.
(Willans & Harrison, 2001) WILLANS, J.S., HARRISON, M.D. Prototyping pre-implementation
designs of virtual environment behaviour. In: 8TH IFIP WORKING CONFERENCE ON
ENGINEERING FOR HUMAN-COMPUTER INTERACTION (ECHI'01), Toronto, Canada,
2001.
(Wood, 1998) WOOD, E. L. User Interface Design – Bridging the Gap from User Requirements
to Design, Estados Unidos: CRC Press LLC, 1998.
114
Apêndice A - Modelo de Classes para a Reengenharia.
Modelo de classes do sistema-exemplo gerado a partir do modelo Fusion recuperado no
processo de segmentação.
115
Figura A.1 – Diagrama de Classes do sistema exemplo
116
Apêndice B - Use Cases
Use Cases gerados para a re-implementação do sistema-exemplo em Java®.
Em todos os use cases mostrados a seguir, as possíveis mensagens de erros foram
substituídos por um fluxo com o nome “mensagem <número>”, onde o número varia de acordo
com o use case. Essa simplificação para facilitar visualização.
nom e do cliente
m ensagem 01
código, data
Funcionário
dados do cliente
cli ente c adastrado
Incluir C liente
(f rom U s e C as e View)
(f rom U s e C as e View)
< <us es >>
Verificar C liente
(f rom U s e C as e View)
Figura B.1 - “Incluir Cliente”
código do com ponente
m ensagem 02
código do com ponente
dados do com ponente
Func ioná rio
In cluir C om ponente
confirm ação
(f rom Us e C as e View)
(f rom U s e C as e View)
com ponen te cadastrad o
<<us es >>
Ve ri ficar C om p onen te
(f rom Us e C as e View)
Figura B.2 – “Incluir Componente”
117
nom e do em pregado
dados de cadastro do em pregado
m ensagem 03
In cluir Em preg ado
Fun cionário
em pregado cadastrado
(f rom U s e C as e View)
(f rom U s e C as e View)
<<u s es >>
Verificar Em preg ado
(f rom U s e C as e View)
Figura B.3 – “Incluir Empregado”
ab reviaçã o do fornec edor
dados de cadastro do fornecedor
m ensagem 04
In cluir Forn ecedo r
Fu ncion ário
(f rom U s e C a se View )
fornecedor cadastrado
(f rom U s e C as e View)
<<us es >>
Ve rifica r Fo rn ecedor
(f rom U s e C as e View)
Figura B.4 – “Incluir Fornecedor”
118
código da m ão-de-ob ra
m ensagem 05
dados de cadastro da m ão-de-ob ra
Funcionário
Incluir Mão-de-Obra
m ão-de-ob ra cadastrada
(f rom U s e C as e View)
(f rom U s e C ase V ie w)
<<us es >>
Verificar Mão-de-Obra
(f rom U s e C ase V ie w)
Figura B.5 – “Incluir Mão-de-Obra”
código do tipo de veículo
dados de cadastro do tipo de veiculo
m ensagem 06
Funcionário
(f rom U s e C as e View)
ti po de veículo c adastrado
Incluir Tipo de Veículo
(f rom U s e C as e View)
<<us es >>
Verificar Tipo de Veículo
(f rom U s e C as e View)
Figura B.6 – “Incluir Tipo de Veículo”
119
C ódigo da Pe ça
m ensagem 07
D ado s d e ca dastro da peça
In cluir Peça
Fu ncion ário
(f rom U s e C a se View )
(f rom U s e C as e View)
códigos de peças equ ivalentes
Ve r ific ar Peça
(f rom U s e C a se View )
Figura B.7 – “Incluir Peça”
ab reviatura de fab ricante
dados de cadastro do fab ricante
m ensagem 08
Funcionário
( fr om Us e C a se View )
fab ricante cadastrado
Incluir Fabricante
(f rom U s e C as e View)
<<us es >>
Verificar Fabr icante
(f rom U s e C as e View)
Figura B.8 – “Incluir Fabricante”
120
dados atualiz ados do cliente
m ensagem 09
Func ion ário
(f rom U s e C as e View)
Alterar C liente
cl iente atualiz ado
(f rom U s e C as e View)
<<us es >>
Selecionar C liente
(f rom U s e C as e View)
Figura B.9 – “Alterar Cliente”
121
dados atualiz ados do em pregado
m ensagem 10
Funcionário
Alte ra r Em pregado
e m pr egado atualiz ad o
(f r om Us e C a se View )
(f rom U s e C as e View)
<<us es >>
Selecionar Em pregado
(f r om Us e C a se View )
Figura B.10 – “Alterar Empregado”
dados atualiz ados do fornecedor
m ensagem 11
fornecedor atualiz ado
Funci onár io
( from U s e C ase V ie w)
Alterar Fornecedor
( from U s e C a se View )
<<us es >>
Selecionar Fornece dor
( from U s e C a se View )
Figura B.11 – “Alterar Fornecedor”
122
dados atualiz ados do com ponente
m ensagem 12
Funcionário
Alte rar C om p onente
com ponente atualiz ado
(f rom U s e C as e View)
(f rom U s e C as e View)
<<us es >>
Selec ion a r C ompo nente
(f rom U s e C as e View)
Figura B.12 – “Alterar Componente”
da dos atuali z ados da mão -de- ob ra
m ensagem 13
m ão-de-ob ra atualiz ada
Funcio nário
(f rom U s e C as e View)
Alterar Mão-de -Ob ra
(f ro m U s e C as e V ie w)
<<us es >>
Selecion ar Mão-de-Obra
(f ro m U s e C as e V ie w)
Figura B.13 – “Alterar Mão-de-Obra”
123
dados atualiz ados do tipo de veículo
m ensagem 14
Alterar Tipo de Veículo
Funcionário
(f rom U s e C as e View)
tipo de veículo atualiz ado
(f rom U s e C as e View)
<<us es >>
Selecionar Tipo de Veículo
(f rom U s e C as e View)
Figura B.14 – “Alterar Tipo de Veículo”
tipo de alteração
d ados atualiz ados da peça
m ensagem 15
Fun cionário
Alter ar Peça
peça atualiz ada
(f rom U s e C as e View)
(f rom U s e C as e View)
<<u s es >>
Selecio nar Peça
(f rom U s e C as e View)
Figura B.15 – “Alterar Peça”
124
dados atualiz ados do fab r ican te
me nsagem 16
Funcionário
fab ricante atualiz ado
Alterar Fabricante
(f rom U s e C as e View)
(f rom U s e C as e View)
<<us es >>
Selecionar Fabricante
(f rom U s e C as e View)
Figura B.16 – “Alterar Fabricante”
confirm a exclusão
m ensagem 17
clien te exc luído
Funcioná rio
(f rom U s e C as e View)
Excluir C liente
(f rom U s e C as e View)
< <uses >>
Seleciona r C liente
(f rom U s e C as e View)
Figura B.17 – “Excluir Cliente”
125
confirm a exclusão
m ensagem 18
em pregado excluído
Funcionário
Excluir Em pregado
( from Us e C a se Vie w)
(f rom U s e C as e View)
<<uses >>
Selecionar Em pr egado
( from Us e C a se Vie w)
Figura B.18 – “Excluir Empregado”
confirm a exclusão
m ensagem 19
fornecedor excluído
Funcionário
(f rom U s e C as e View)
Excluir Forn ecedor
(f rom U s e C as e View)
<<uses >>
Selecionar Fornecedor
(f rom U s e C as e View)
Figura B.19 – “Excluir Fornecedor”
126
confirm a exclusão
m ensagem 20
com ponente excluído
Excluir C om ponente
Funci onár io
(f rom U s e C as e View)
( fr om Us e C ase V ie w)
<<us es >>
Selecionar C om ponente
(f rom U s e C as e View)
Figura B.20 – “Excluir Componente”
con firm a e xclusão
me nsagem 21
m ão-de-ob ra excluída
Fu ncion ário
(f rom U s e C as e View)
Exclu ir Mã o-de -Ob ra
(f rom U s e C as e View)
<<us es >>
Seleciona r Mão -de-Obra
(f rom U s e C as e View)
Figura B.21 – “Excluir Mão-de-Obra”
127
confirm a exclusão
m ensagem 22
tipo de veículo excluído
Fun ci on ário
Exclu ir Tip o d e Ve ícu lo
(f rom U s e C as e View)
( from U s e C ase Vie w)
<<u s e s >>
Se le cio n a r Tipo d e Veículo
(f rom U s e C as e View)
Figura B.22 – “Excluir Tipo de Veículo”
co nfirm a exclusão
m ensa gem 2 3
peça excluída
Fun cionário
(f rom U s e C as e View)
Exclu ir Peça
(f rom U s e C as e View)
<<u s es >>
Sel eci onar Peça
(f rom U s e C as e View)
Figura B.23 – “Excluir Peça”
128
confirm a exclusão
m ensagem 24
fab ricante excluído
Excluir Fa bricante
Fun cioná rio
(f rom U s e C as e View)
(f rom U s e C as e View)
<<u ses > >
Sele cionar Fabrica nte
(f rom U s e C as e View)
Figura B.24 – “Excluir Fabricante”
dados atualiz ados do c liente
S elec ionar Cliente
(from U se Case View )
dados atualiz ados do veículo do cliente
A lterar Cliente
(from U s e Case View )
< < us es > >
< < ex tend> >
confirm a cliente
confirm a veíc ulo do cliente
A brir Ordem de S erviç o
F unc ionário
(from Us e Case V iew )
d ados do serviço a exec utar
mens agem 25
(from U se Case View )
< < us es > >
< <ex tend> >
oredem de serviço ab erta
Se lec ion ar V eíc ulo de
Cliente
(from U se Case View )
Figura B.25 – “Abrir Ordem de Serviço”
A lterar V eíc ulo de Cliente
(from U se Case View )
129
S el ec ionar Ordem de
S erviç o
dados de peç as utiliz adas
Dar baix a da P eç a
(from Us e C ase View )
(from U se C ase View )
dados de peç as c om pradas fora
<< us es > >
< < us es > >
dados d a mão-de-ob ra utiliz ada
dados de c ontas a rec eb er
m ens a gem 26
Func ionári o
Fec har Ordem de S erviç o
b aixa no es toque de peç as
< < ex tend> >
(from U se C ase View )
(from U se C ase View )
Lanç ar P eç a Com prada
Fora
lançam ento de peç as c om pradas fora
< < ex tend> >
< < us es > >
(from U se C ase View )
ordem de s erviç o fec hada
Cadas trar Contas a Rec eber
Calc ular M ão-de-Obra
Utiliz ada
(from U se C ase View )
(from Us e C ase View )
Figura B.26 – “Fechar Ordem de Serviço”
confirm a exclusão
m ensagem 27
or dem de ser viç o ex clu ída
Fun cionário
(f rom U s e C as e View)
Excluir Or dem de Serviço
(f rom U s e C as e View)
<<u s es >>
Selecio nar Ordem de Serviço
(f rom U s e C as e View)
Figura B.27 – “Excluir Ordem de Serviço”
130
da dos atua liz ados do veículo d o c liente
m ensagem 28
v eíc ulo do cl iente atualiz ado
Altera r Veículo de C lien te
Fu ncion ário
(f rom U s e C as e View)
(f rom U s e C a se View )
<<us es >>
Sele cion ar Ve íc ulo d e C lie nte
(f rom U s e C as e View)
Figura B.28 – “Alterar Veículo de Cliente”
dados da peça utiliz ada
m ensagem 29
b aixa da peça
D ar b aixa da Peça
Func ioná rio
(f rom U s e C as e View )
(f rom U s e C as e View)
Figura B.29 – “Dar Baixa de Peça”
d a d o s d a co mp ra
me n sa g e m 3 0
c o mpr a d e p eç a l an çad a
L a n ça r P e ça Co m p ra d a Fo ra
Fun ci o n ár i o
(from U se C ase View )
(from U se C ase View )
Figura B.30 – “Lançar Peça Comprada Fora”
131
dados da m ão-de-ob ra utiliz ada
m ensagem 31
m ão-de-ob ra calculada
C alcula r Mã o-de -Obra U tilizada
Fun cioná rio
( from U s e C a se View)
(f rom U s e C as e View)
Figura B.31 – “Calcular Mão-de-Obra Utilizada”
da dos das contas a rece b er
m ensagem 32
contas cadastradas
C ad as tra r C ontas a R e ce ber
Funci onár io
( f rom Us e C as e Vie w)
(f rom U s e C as e View)
Figura B.32 – “Cadastrar Contas a Receber”
Apêndice C – Diagramas de Sequência
Diagramas de Seqüência gerados para a implementação do sistema OO.
Nos diagramas de seqüência apresentados a seguir, as classes identificadas com nomes
indiciados pela palavra “Frame” são classes específicas de implementação da interface em
Java®.
132
:
Fram eIncluiC lientes
: Funcionário
:
Fram eVerific arC l iente
1: Pede nom e do cl iente
2: Inform a nom e do c liente
3: V erific arCliente(nom e)
4: Inform a código, data
5: Inform a dados de cadas tro do cliente
6: Pede confirm ação
7: Confirm aç ão
8 : Cad astraCli ent e(da dos de cadas tro do c lient e)
Figura C.1 – “Incluir Clientes”
: Clie nte
133
: Funci oná r io
:
F ram e In clu iC o m pon en te s
:
Fram e Ve r ifi carC om p on ente
: Com ponente
1: Ped e có digo d o co m pon ente
2: Informa c ódigo do c ompon ente
3: Ve rificarC om p on ente(có digo d o co m pon en te )
4: Inform a có digo d o com p on ente
5: Inform a da dos d e ca das tro d o com pon ente
6: Ped e co nfirm a ção
7: Confirmaç ão
8: Cadas tra Co mpone nte( dados de c adas tro do c om ponent e)
Figura C.2 – “Incluir Componente”
134
: Fram eVerificarEm pregado
: Funcionário
:
Fr am eInc lui Em pregad os
: E m pregado
1: Pe de n ome do emp regad o
2: Inform a nom e do em pregado
3: V erific arE m prega do(nom e do em pregado)
4: GerarCodigo()
5: GerarS enha()
6: Mos tra nom e do Em pregado e Senha
7: E ntra c om dados de c adas tro do em pregado
8: Pede confirm ação
9: Confirm a
10: C adas trarEm pregado(D ados de cadas tro do em pregado)
Figura C.3 – “Incluir Empregado”
135
: Funcionário
:
Fram eVerificarFabricante
:
Fram eIncluiFabricantes
: Fabric ante
1: Pede abreviatura de fabricante
2: Infor m a ab reviatura do fabri can e
3: V erific arFabric ante(abreviatura do fabric ante)
4: Ap res enta abr eviatu ra
5: Inform a dad os de c adas tro do fabric ante
6: Pede confi rm ação
7: Confirma
8: C adas trarFabricante(dados de cadas tro do fabricante)
Figura C.4 – “Incluir Fabricante”
136
: Fun cion ário
:
Fram eIncluiTipoD eVeiculo
: Fram eV erific arTi poD eV eiculo
:
Tip oD eVe iculo
1: Pede código do tipo de veículo
2: In forma c ódigo do tip o de veíc ulo
3: VerificarTipoD eVeiculo(código do tipo de veículo)
4: Pede dados de cadas tro do tipo de veículo
5: Inform a dados de cadas tro do tipo de veículo
6: Pede confirm acao
7: Confirm a
8 : C adas trarTip oD eVeic ulo (dados de cada s tro d o tipo de veículo)
Figura C.5 – “Incluir Tipo de Veículo”
137
: Funcionário
:
Fram eVerificarFornecedor
:
F ram eInclu iFor nece dores
: Fornec edor
1: Pede abreviatura do fornecedor
2: Fornece abreviatura do fornecedor
3: V erific arFornecedor(abreviatura do fornecedor)
4: Pede dados de cadas tro do fornecedor
5: Inform a dados de cadas tro do fornec edor
6: Pede confirm ação
7: Confirm a
8: C ada s tr arFo rnec edor(dados de cads tr o do forn ecedor)
Figura C.6 – “Incluir Fornecedor”
138
: Fu ncion ário
: Fram eInc luiM a oD eOb ra
:
Mao deOb ra D aOrdServico
1: Pede códig o d a Mã o-de-Obra
2: Iinfo rm a cód igo da Mão-de -Obra
3: Pede dad os d e cad as tro da Mão-d e-Obra
4: In form a dad os d e cad as tro da Mão-d e-Obra
5: Pede confirm ação
6: Confirm a
7: C ad as tra rMaoD e Obra(dad os de cad as tro da Mão -d e-Obra)
Figura C.7 – “Incluir Mão-de-Obra”
139
:
Fram eIncluiPecas
: Fun c ioná rio
: Pe c a
1: Pede dados de ca das tro da peça
2: Inform a d ados de cad as tro da p eça
3: Pede con firm ação
4: Confirm a
5: C adas trarPeca (dados de ca das tro da peça)
Figura C.8 – “Incluir Peça”
140
:
Fra m eSele cio n arC l ie n te
: F u nci oná r io
: Cliente
:
Fra m eD ad os C lie nte
1: Ap res en ta l is ta de c ódi gos e no mes de cl ien tes cad as trado s
2: E scolhe cliente da lista
3: DadosCliente(código do cliente es colhido)
4: Ap res e n ta d ado s ca d as trado s do cl ie n te
5: E ntra com dados atualiz ados do cliente
6: Atualiza rC liente(da do s atualiza do s do clie nte)
Figura C.9 – “Alterar Cliente”
: Fu ncioná rio
:
Fram e Se lecio narC liente
: Cliente
1: Apre s enta lis ta de códigos e n om es de clien tes cadas trados
2: Sele ciona clie nte da lis ta apres e ntad a
3: Exclu irC liente (c ód igo do cli en te s eleciona do)
Figura C.10 – “Excluir Cliente”
141
:
Fr ameSe lec ionar Fabr ic ante
: Func ioná rio
:
Fr ameD ados Fabricante
: Fabric ante
1: Ap res enta lis ta d e ab reviatura s de fabricantes cada s trados
2: Seleciona fabricante da lis ta apres entada
3: D ados Fabricante(abreviatura do fabricante s elecionado)
4: Apres enta dados do fabricante s elecionado
5: E ntra c o m dados atua li zados do fabric ante
6: AtualizarFabricante(dados atualizados do fabricante)
Figura C.11 – “Alterar Fabricante”
: Fu ncion ário
:
Fr ame Se lec ion arFabr icante
: Fabric ante
1: Ap re s en ta l is ta de a breviatu r as d e fabr ica ntes cad as trad os
2: Sele ciona fa b ricante d a li sta a pres e nta da
3: Excl uirFab r ic an te (abr e vi atura d o fa b ri can te s e lec ion ad o)
Figura C.12 – “Excluir Fabricante”
142
: Funcionário
:
Fram eSelecionarC om ponente
: Com ponen te
:
FrameD ado s C ompo nente
1: Apres enta lis ta de códigos dos com ponentes cadas trados
2: Seleciona com ponente da lis ta apres entada
3: DadosCom ponente(código do c om ponente selec ionado)
4: Apres enta dados do com ponente s elecionado
5: E ntra c om dados atualizados do com ponente
6: Atual izarC om pone nte( dados atual izados do com ponente)
Figura C.13 – “Alterar Componente”
: Funcionário
:
Fram eSelecionarC om ponente
: Com ponente
1: Apr es enta lis ta de cód igos dos com ponentes cadastra dos
2: Seleciona com ponente da lis ta apres entada
3 : Excl ui rC om ponente(c ódigo do com ponente s elecio nando)
Figura C.14 – “Excluir Componente”
143
:
Fram eSelecionarMaoD eObra
: Funci onár io
:
Fram eD ados MaoD eObra
:
Ma odeObraD aO rdServico
1: Apres enta lis ta de códigos , des crições e tipo das m ão-de-obra cadas tradas
2: Seleciona m ão-de -obra d a li sta apres entada
3: DadosM aoDeObra(c ódigo da m ão-de-obra s elecionada)
4: Apres enta dados da m ão-de-obra s elecionada
5: E ntra com dados atualizados da m ão-de-obra
6: Atual izarMa oDe Ob ra(dados atuali za dos da m ão-de-o bra)
Figura C.15 – “Alterar Mão-de-Obra”
: Func ion ário
:
Fram eSelecionarMa oD eObra
:
Maod eObr aD aO rd Se rvico
1: Apres enta lis ta de cód igos , de s criçõ es e tipo d as m ã o-de-obra ca das trad as
2: Selecio na m ã o-de-obra da lis ta ap re s entada
3: ExcluirMa oD eObra(código da m ão -d e-obra s elecionada)
Figura C.16 – “Excluir Mão-de-Obra”
144
: Funcionário
:
Fram eSelecionarTipoD eVeiculo
:
Fram eD ados TipoD eVeiculo
:
TipoDeV eiculo
1: Apres enta lis ta de códigos dos tipos de veículo cadas trados
2: Selec iona tip o de veíc ulo apres entado
3: D ados TipoD eVeiculo(código do tipo de veículo s elecionado)
4: Apres enta dados do tipo de veículo s elec ion ado
5: E ntra c om dados atualiz ados do tipo de veíc ulo
6: Atual izar Tip oD eVeic ulo (dado s atual izados do tipo de veícul o)
Figura C.17 – “Alterar Tipo de Veículo”
: Fu ncioná rio
:
Fram eSelecio narTipoD eVeiculo
:
TipoDeV eiculo
1: Apres en ta lis ta d e código s d os tipo s de ve ículo cadas trado s
2: Seleciona tip o de ve ícu lo apres en ta do
3: ExcluirTipoD eVeiculo(código d o tipo de veículo s elecion ado)
Figura C.18 – “Excluir Tipo de Veículo”
145
:
Fram eS elecionarP eca
: Funcionário
:
Fram eDados P eca
: P eca
1: Apres enta lis ta de código de barras das peças cadas tradas
2: Se lec iona peç a d a li s ta apres entada
3: Dados P eca(c ódigo de barras da peça selecionada)
4: Apres enta dados da peça s elecionada
5: E ntra com dados atualiz ados da peça
6: AtualizarPeca(dados atualizados da peça)
Figura C.19 – “Alterar Peça”
: Funci onár io
:
Fram eS elec io narP ec a
: Peca
1: Apres enta lis ta de código de barras das peças cadas tradas
2: Seleciona peça da lis ta apres entada
3: ExcluirPeca(código de barras da peça s elecionada)
Figura C.20 – “Excluir Peça”
146
:
Fram eSelecio narForne cedor
: Func ion á rio
:
Fram eD ado s Forne cedor
: Forneced or
1: Apres enta lis ta d e a brevia turas de forneced ores cadas trado s
2: Selecio na forne cedor da lis ta
3: DadosFornecedor(abreviatura do fornec edor selecionado)
4: Apres enta dad os do forne cedor s elecio nado
5: Entra com dado s at ualiz a dos do forne cedor
6: Atua lizarForneced or(d ados atualiza dos do fo rn ecedo r)
Figura C.21 – “Alterar Fornecedor”
: Fu nc ion á rio
:
Fram e Selecion arFornecedo r
: Fornec edor
1: Apres enta lis ta de abreviatu ra s de fo rn ecedores cadas trados
2: Seleciona forneced or da lis ta
3: ExcluirFornecedo r(ab re via tura do fornecedo r s elecionad o)
Figura C.22 – “Excluir Fornecedor”
147
: Funcionário
:
Fram eSelecionarEm pregado
: E mpregado
:
Fram eD ados Em preg ado
1: Apr es enta li sta de códigos e nom es d e em pr egados cada s trados
2: Seleciona em pregado da lis ta apres entada
3 : Da dos E mpregado( códi go do e mpr egado selec io nado)
4: Apres enta dados do em pregado s elecionado
5: E ntra c om dados atualizados do em pregado
6: AtualizarEm pregado(dados atualizados do em pregado)
Frame C.23 – “Alterar Empregado”
: Funcionário
:
Fram eSelecionarEm pregado
: E m pregado
1: Apres enta lis ta de códigos e nom es de em pregados cadas trados
2 : Selec iona em preg ado d a l is ta apre s enta da
3: ExcluirEm pregado(código do em pregado s elecionado)
Figura C.24 – “Excluir Empregado”
148
: Funcionário
:
Fram eSe leciona rEm preg ado
:
Fram eD ados Em pregado
: E m pregado
1: Apres enta lis ta de códigos e nom es de em pregados cadas trados
2: Seleciona em pregado da lis ta apres entada
3: Dados E m pregado(código do em pregado selecionado)
4: Apres en ta dados do em pregado s elecionado
Figura C.25 – “Consultar Empregado”
: Funcionário
:
Fram eSe leciona rEm preg ado
:
Fram eD ados Em pregado
: E m pregado
1: Apres enta lis ta de códigos e nom es de em pregados cadas trados
2: Seleciona em pregado da lis ta apres entada
3: Dados E m pregado(código do em pregado selecionado)
4: Apres en ta dados do em pregado s elecionado
Figura C.26 – “Consultar Componente”
149
:
Fram eSe lecionarC liente
: Cliente
:
Fram eD ados C liente
: F unci oná rio
1: Apresenta lista de códigos e nomes de clientes cadastrados
2: E scolhe cliente da lista
3: DadosCliente(c ódigo do cliente escolhido)
4: Apr es enta dados cadas trad os d o cl iente
Figura C.27 – “Consultar Cliente”
: Funcionário
:
Fram eS elecionarP eca
:
Fram eDados P eca
1: Pede letra inicial do nom e da peça
2: E ntra com letra inic ial
3: Dados P eca(letra inic ial do nom e da peç a)
4: Ap res enta dados da peça
Figura C.28 – “Consultar Peça pela Letra Inicial”
: P eca
150
: Fu n cio n ário
:
Fram eS elecionarP eca
:
Fram eDadosP eca
: P eca
1 : Pe d e có d ig o do fa b rica n te da p e ça
2: E ntra com código
3: DadosP eca(código do fabricante da peça)
4 : Ap res e n ta dado s d a peça
Figura C.29 – “Consultar Peça pelo Fabricante”
: Funcionário
:
Fram eS elecionarP eca
:
Fram eDados P eca
1: Pede código de barras da peça
2: Entra com código de barras
3: Dados P eca(c ódigo de barras da peça)
4: Ap res enta dados da peça
Figura C.30 – “Consultar Peça pelo Código de Barras”
: P eca
151
:
Fram eSelecionarForn ece dor
: Funcion ário
:
F ram eD ados Forne ced or
: Forn ec edor
1 : Apre s e nta lis ta de ab reviatura s de fo rnecedor es cadas tra dos
2: Sel e ciona for neced or d a li s ta
3: DadosFornecedor(abreviatura do fornecedor s elecionado)
4: Apre s enta dado s do fornecedo r s elecio nado
Figura C.31 – “Consultar Fornecedor”
: Fu nci onário
:
Fram eS elec iona rO DS
:
Ordem D eSe rvico
1: Apres enta lis ta de Ordens de Serviço
2: Seleciona Ord em de Serviço da lis ta a pres en tada
3: Excl u irO D S(cód igo d a Orde m de Serviço s ele cionad a)
Figura C.32 – “Excluir Ordem de Serviço”
152
: Funcionário
:
Fr ameSelecionar OD S
:
Fram eD ados Ordem D eServico
:
Or dem D eServico
1: Apres enta lis ta de Ordens de Serviço
2: Seleciona Ordem de Serviço da lis ta apres entada
3: DadosODS (código da Ordem de S erviço selecionada)
4: Apres enta dados da Ordem de Serviço
Figura C.33 – “Consultar Ordem de Serviço”
153
Figura C.34 – “Abrir Ordem de Serviço” – 1a parte
154
Figura C.35 – “Abrir Ordem de Serviço” – 2a parte
155
Apêndice D - Cenários Textuais
Os cenários apresentados neste apêndice foram obtidos através da execução do sistema
legado e visam representar o diálogo humano-computador realizado durante a execução das
tarefas do usuário. A letra “S” indica ação do sistema enquanto a letra “U” representa ação do
usuário. As ações estão agrupadas em “telas” que correspondem às telas navegadas pelo usuário
durante a execução de sua tarefa.
Lançamento da Ordem de Serviço (Primeira Parte – Abrir Ordem de Serviço)
1a tela
U → código do cliente (sistema oferece opção)
S → data de entrada (atual), número da ordem de serviço
S → dados do cliente (todos os atributos)
U → modifica dados conforme necessário
S → pede confirmação dos dados
U → entra como confirmação dos dados
S → mostra dados dos veículos do cliente
S → pede confirmação
U →entra com confirmação
S → pergunta se serviços serão executados
U → responde “N” (não) → sai da opção
U → responde “S” (sim)
S → mostra dados do veículo (permite alterações)
S → pede confirmação
U → confirma
S → pede dados dos serviços a executar (descrição, orçamento, data e horas)
S → cadastra primeira parte
S → pede confirmação para imprimir
156
Lançamento de Ordem de Serviço (Segunda parte - Fechar Ordem de Serviço)
1a tela
S → exibe lista de ordens de serviço abertas
U → escolhe ordem de serviço aberta
2a tela
S → exibe número da Ordem de Serviço
S → exibe nome do cliente, tipo e marca do veículo
U → entra com data de saída de peças
U → entra com códigos de barras das peças
S → apresenta dados da peça
U → entra com quantidade, preço unitário e baixa no estoque (S/N)
S → pede confirmação da baixa
U → entra com código do empregado que vendeu, utilizando ou não lista de
opções
U → Pode cadastrar várias peças até digitar <99999>
3a tela
S → existem peças adquiridas fora (S/N)
S → exibe lista de peças
U → escolhe
4a tela
S → exibe dados da peça
U → altera dados / entra com quantidade e código da peça
S → exibe valor da peça e preço unitário de venda
U → altera preço de venda
U → entra com local de aquisição
S → pede confirmação de lançamento
U → pode lançar várias peças adquiridas fora
Lançamento
de
peças
adquiridas
fora
Cálculo da Mão-de-Obra utilizada (continuação da segunda parte ODS)
5a tela
(repete)
U → escolhe tipo Mão-de-Obra, várias vezes
U → digita “qq”, termina
U → entra com valor
U → entra com código do empregado
6a tela
S → apresenta valor total da ordem de serviço
U → entra com desconto e despesas extras
S → soma desconto e despesas ao valor e apresenta novo valor
U → entra com condições de pagamento
7a tela
S → cadastra contas a receber (usuário confirma cadastro de contas a receber)
157
Contas a Receber
S → apresenta número de parcelas, data de vencimento, valor, moeda e número
doc/cheq
U → entra com banco
S → cadastra conta a receber
Inclusão de Venda de Peça
1a tela
a
1 tela
(repete
várias
vezes)
2a tela
S → apresenta numero de venda e data (editável)
U → entra com código do cliente (sistema oferece lista)
S → apresenta nome do cliente
U → entra com condições de pagamento
U → entra com número da nota fiscal
S → confirma baixa no estoque
U → entra com código de barras
S → apresenta descrição, quantidade e preço unitário
U → altera quantidade e preço unitário
U → entra com desconto
S → apresenta preço unitário
S → apresenta preço total
S → apresenta número de venda, data , código do cliente, nome do cliente,
condições de pagamento, número da nota fiscal e total de vendas
U → entra com descontos e despesas extras
S → apresenta total geral
158
Eliminação da Ordem de Serviço
1a tela
S → exibe lista de ordem de serviço
U → escolhe ordem de serviço
2ª tela
S → exibe data de entrada, código e nome do cliente, tipo do veículo, valor da
Ordem de Serviço, marca
S → pede confirmação
U → confirma
S → elimina ordem de serviço
Consulta Ordem de Serviço Completa
1a tela
S → exibe lista de ordem de serviço (número da ordem de serviço, nome cliente,
data de entrada)
U → escolhe ordem de serviço
2ª tela
S → exibe dados da ordem de serviço, do veículo e do cliente
Consulta de Fornecedores
1a tela
S → exibe lista de nome de fornecedores abreviado e nome fantasia
U → escolhe fornecedor pelo nome abreviado
2ª tela
S → exibe dados do fornecedor
Consulta de Peças
1a tela
S → pergunta qual o tipo de consulta (letra inicial, fabricante, código de barras,
código original, equivalência, estatísticas de custos)
Consulta pela Letra Inicial
1a tela
S → pede nome (descrição da peça)
2a tela
S → mostra dados da peça (código e descrição)
159
U → entra com código da peça
S → apresenta dados da peça
Consulta pelo Fabricante
1a tela
U → entra com o id do fabricante ou código
S → apresenta dados do fabricante
Consulta pelo Código de Barras
1a tela
S → pede código de barras
U→ entra com código de barras
2a tela
S → apresenta todas as características de peças
Consulta por Estatística de Custo
1a tela
S → pede código original da peça a ser consultada
U → entra com código original
S → apresenta custo médio/mínimo/máximo/atual ou data da última compra
(depende da ordem de serviço)
Consulta por Código Original de Peças
1a tela
S → pede código original da peça
U → entra com código original da peça
2a tela
S → apresenta dados da peça
160
Consulta a Empregados
1a tela
S → exibe lista com código e nome dos empregados
U → escolhe um empregado
2a tela
S → apresenta dados do empregado
Consulta a Cliente
1a tela
U → entra com nome do cliente
2a tela
S → mostra lista de nomes e códigos
U → entra com código
3a tela
S → apresenta dados do cliente
Manutenção de Tabelas
Sugestão de Preços
1a tela
U → entra com valor de trabalho, preço para a carga rápida, preço para carga lenta
e valor para hora trabalhada
S → pede confirmação
Eliminação de Fornecedor
1a tela
U → entra com abreviação de fornecedor
S → verifica existência de fornecedor
2a tela
S → exibe dados de fornecedor
S → pede confirmação
U → confirma
S → elimina fornecedor
161
Modificação de Empregados
1a tela
S → exibe lista de código/nome de empregados
U → escolhe empregado
2a tela
S → exibe dados do empregado
U → modifica nome
U → modifica outros dados
S → pede confirmação
S → grava/abandona
Eliminação de Empregados
1a tela
S → exibe lista de código/nome de empregados
U → escolhe empregado
2a tela
S → exibe dados do empregado
S → pede confirmação
U → confirma
S → elimina fornecedor
Modificação Parcial de Peças
1a tela
U → entra com código de barras
S → verifica existência
2a tela
S → exibe dados da peça
U → altera dados da peça (menos o código, peças equivalentes e veículos)
S → pede confirmação
S → grava/abandona
Modificação do Fornecedor
1a tela
U → entra com abreviação de fornecedor
S → verifica existência
2a tela
S → exibe dados para modificação
U → altera dados
S → pede confirmação
162
S → grava/abandona
2a tela
S → oferece opções de “ramos”
U → escolhe ramos
U → digita fim
S → grava/abandona
Modificação Total de Peças
1a tela
U → entra com código de barras
2a tela
S → exibe dados para modificação
S → pede alteração do código
U → entra com código
S → libera outros campos (menos o código)
U → altera dados
S → pede código de peças equivalentes
U → informa código de peças equivalentes
S → pergunta se há mais alguma modificação
S → grava/abandona
3a tela
S → informa código da peça e veículos a que se adaptam
U → altera veículos
S → grava/abandona
Eliminação de Peças
1a tela
U → entra com código de barras
S → verifica existência
2a tela
S → exibe dados de fornecedor
U → confirma eliminação
163
Eliminação de Mão de Obra
1a tela
S → oferece lista
U → escolhe mão de obra
2a tela
S → exibe dados da mão de obra
S → pede confirmação
U → confirma
S → elimina
Modificação de Tipo de Veículo
1a tela
U → entra com código de tipo de veículo
S → verifica existência
2a tela
S → exibe dados
U → altera dados (menos o código)
S → pede confirmação
S → grava/abandona
Eliminação de Veículo
1a tela
U → entra com código de veículo
S → verifica existência
2a tela
S → exibe dados do veículo
S → pede confirmação
U → confirma
S → elimina veículo
164
Modificação de Componentes
1a tela
U → entra com código do componente
S → verifica existência
2a tela
S → exibe dados para modificação
U → altera dados (menos o código)
S → pede confirmação
S → grava/abandona
3a tela
S → exibe código
U → entra com veículos adaptáveis
S → pede confirmação
S → grava/abandona
Eliminação de Componentes
1a tela
U → entra com código do componente
S → verifica existência
2a tela
S → exibe dados (menos veículo )
S → pede confirmação
U → confirma
S → elimina componente
Modificação de Mão-de-Obra
2a tela
S → exibe lista
U → escolhe da lista
3a tela
S → exibe dados
U → modifica dados (menos o código)
S → pede confirmação
S → grava/abandona
165
Modificação de Clientes
1a tela
S → oferece lista (código e nome) de clientes
U → entra com código do cliente
S → verifica existência
2a tela
U → altera dados (menos código e nome)
S → pede confirmação
S → grava/abandona
Eliminação de Clientes
1a tela
U → entra com código do cliente
S → verifica existência
2a tela
S → exibe código e nome do cliente
S → pede confirmação
U → confirma
S → elimina cliente
Modificação de Fabricante
1a tela
U → entra com abreviação do fabricante
S → verifica existência
2a tela
U → altera dados (menos abreviação)
S → pede confirmação
U → confirma
S → grava/abandona
Eliminação de Fabricante
1a tela
U → entra com abreviação do fabricante
S → verifica existência
2a tela
S → exibe dados do fabricante
S → pede confirmação
U → confirma
S → elimina fabricante
166
Inserção de Clientes
1a tela
S → pede nome do cliente
U → informa nome do cliente
S → verifica se cliente não existe (senão informa erro)
2a tela
S → indica código e data
U → entra com dados do cliente
S → pede confirmação
U → confirma
S → insere cliente
Inserção de Componentes
1a tela
S → pede código do componente
U → informa código do componente
S → verifica se componente não existe (senão informa erro)
2a tela
S → informa código do componente
U → entra com dados do componente
S → pede confirmação
U → confirma
S → insere componente
167
Inserção de Mão de Obra
1a tela
S → informa código da mão de obra
U → entra com dados da mão de obra
S → pede confirmação
U → confirma
S → insere mão de obra
Inserção Veículos
1a tela
S → informa código do veículo
S → pede marca, tipo e grupo do veículo
U → informa marca, tipo e grupo do veículo
S → pede confirmação
S → grava/abandona
Inserção de Fornecedores
1a tela
S → pede abreviatura do fornecedor
U → informa abreviatura do fornecedor
S → verifica se fornecedor não existe (senão informa erro)
2a tela
S → informa abreviatura e código fornecedor
U → entra com dados do fornecedor
S → pede confirmação
S → grava/abandona
3a tela
S → informa abreviatura e nome fantasia
U → seleciona ramo do fornecedor
168
Inserção de Empregados
1a tela
S → pede nome do empregado
U → informa nome do empregado
S → verifica se empregado não existe (senão informa erro)
2a tela
S → gera e mostra código do empregado
S → mostra nome do empregado e senha
U → entra com dados do empregado
S → pede confirmação
U → confirma
S → insere empregado
Inserção de Fabricantes
1a tela
S → pede abreviatura do fabricante
U → informa abreviatura do fabricante
S → verifica se fabricante não existe (senão informa erro)
2a tela
S → mostra abreviatura
U → entra com nome e código do fabricante
S → pede confirmação
U → confirma
S → insere fabricante
169
Apêndice E - Diagramas de Caixas
Os diagramas de caixas aqui apresentados representam os níveis mais abstratos das
árvores de menus das interfaces dos sistemas legado, segmentado e OO, antes e depois do
processo de reengenharia para interfaces com RV.
Figura E.1 – Diagrama para a árvore de menus originais do sistema legado
Figura E.2 – Diagrama para a árvore de menus do sistema legado com interface com RV
170
Figura E.3 – Diagrama para a árvore de menus originais do sistema segmentado
Figura E.4 – Diagrama para a árvore de menus do sistema segmentado com interface com RV
171
Figura E.5 – Diagrama para a árvore de menus originais do sistema OO
Figura E.6 – Diagrama para a árvore de menus do sistema OO com interface com RV
172
Anexo I – Modelo de Classes Original
Modelo de classes recuperado na fase de engenharia reversa para a segmentação aplicada no
sistema legado.
O modelo apresentado a seguir foi usado como base para o modelo de classes mostrado
no Apêndice A e foi obtido no processo de segmentação mostrado em (Penteado, 1998).
173
Figura I.1 – Modelo de classes obtido no processo de segmentação do sistema legado
174
Anexo II – Modelo de Ciclo de Vida
Modelo de ciclo de vidas do sistema exemplo
O modelo apresentado a seguir foi obtido no processo de segmentação mostrado em
(Penteado, 1998) e utilizado para compreender as tarefas do usuário durante a reengenharia para a
linguagem Java® e durante a reengenharia de interface para interfaces com RV.
Figura II.1 – Ciclo de vida do sistema legado
175
Anexo III – Mapa de Menus
Mapa parcial de menus
Neste anexo é apresentado o mapa de menus das camadas de abstração mais alta da árvore
de menus do sistema-exemplo, apresentada em sua documentação técnica (Braga, 1990).
176
Figura III.1 – Primeira parte do mapa de menus
177
Figura III.2 – Segunda parte do mapa de menus
178
Figura III.3 – Terceira parte do mapa de menus
179
Figura III.4 – Quarta parte do mapa de menus
180
Download

UNIVERSIDADE FEDERAL DE SÃO CARLOS