人機交互系統
一門技術科學
人機交互系統(Human-computer interaction,簡稱HCI),是研究人與計算機之間通過相互理解的交流與通信,在最大程度上為人們完成信息管理,服務和處理等功能,使計算機真正成為人們工作學習的和諧助手的一門技術科學。
人機交互系統
用戶界面的發展對計算機系統整體性能的提高所具有的重要性已經得到了人們的高度重視,與此同時,圍繞人機建模業已形成了計算機產業又一新的競爭領域。在美國人機建模研究在信息技術中被列為與軟體和計算機並列的六項國家關鍵技術之一,並被認為“對於計算機工業有著突出的重要性,對其它工業也是很重要的”。美國國防關鍵技術計劃不僅把人機交互界面列為軟體技術發展的重要內容之一,而且還專門增加了與軟體技術並列的人-系統界面一項內容。日本也提出了FPIEND21計劃(Future Personalized Information Enviroment Develop- ment),其目標就是要開發21世界的計算機界面。
我國在人機界面方面的設計與國際同類研究相比還存在較大差距。現今的研究僅僅著重於支持界面的軟體和硬體,對界面本身還缺少深入的研究,用戶界面的設計還沒有成為軟體設計中獨立的一部分,也缺少新的人機界面設計技術。而另一方面,計算機科學的發展和計算機的普及應用卻對人機界面的研究提出了越來越高的要求。
進入九十年代計算機軟體開發已進入了以開發軟體工具和建立軟體開發環境為目標的時代。作為支持人機交互軟體開發環境的用戶界面管理系統UIMS正日益受到人們的關注和重視。今後UIMS將有可能進入各類實際軟體開發環境,成為繼DBMS之後的又一個重要的軟體開發環境和工具。
人機交互系統是伴著計算機的誕生就發展起來的。在現代和未來的社會裡,只要有人利用通信、計算機等信息處理技術,為社會、經濟、環境和資源進行活動時,人機交互都是永恆的主題。鑒於它對科技發展的重要性,研究如何實現自然、便利和無所不在的人機交互,成是現代信息技術,人工智慧技術研究的至高目標,也是數學、信息科學、智能科學、神經科學,以及生理、心理科學多科學交叉的新結合點,並將引導著二十一世紀前期信息和計算機研究的熱門方向。
基於鍵盤和字元顯示器的交互階段
這一階段所使用的主要交互工具為鍵盤及字元顯示器,交互的內容主要有字元、文本和命令,交互過程顯得呆板和單調。這一階段可稱為第一代人機交互技術。
基於滑鼠和圖形顯示器的交互階段
這一階段所使用的主要交互工具為滑鼠及圖形顯示器,交互的內容主要有字元、圖形和圖像。70年代發明的滑鼠,極大地改善了人機之間的交互方式,在窗口系統大量使用的今天幾乎是必不可少的輸入設備;應該說,滑鼠和窗口系統的出現,是人機交互技術發展歷史上的一次技術革命。這一階段可稱為第二代人機交互技術。
基於多媒體技術的交互階段
20世紀80年代末出現的多媒體技術,使計算機產業出現了前所未有的繁榮,音效卡、圖像卡等硬體設備的出現使得計算機處理聲音及視頻圖像成為可能,從而使人機交互技術開始向聲音、視頻過渡。
第四代人機自然交互與通信
它是一種以多模信息交互為輸入輸出,以Agent為交互通信界面,具有基於知識對話的網路信息交互和檢索能力,並具有二維和三維虛擬交互環境可視化顯示的人機交互技術。
以第四代自然交互與通信為例,介紹該概念模型的主要組成部分。
(1)多模態輸入/輸出:多模態輸入/輸出是第四代人機交互與通信的主要標誌之一。多模態輸入包括鍵盤、滑鼠、文字、語音、手勢、表情、注視等多種輸入方式;而多模態輸出包括文字、圖形、語音、手勢、表情等多種交互信息。
(2)智能介面代理:智能介面代理是實現人與計算機交互的媒介。
(3)視覺獲取:視覺系統主要用於實時獲取外部視覺信息。
(4)視覺合成:使人機交互能夠在一個模擬或虛擬的環境中進行,彷彿現實世界中人與人之間的交互。
(5)對話系統:目前主要由兩種研究趨勢,一種以語音為主,另一種從某一特定任務域入手,引入對話管理概念,建立類似於人人對話的人機對話。
(6) Internet信息服務:扮演信息交流媒介的角色。
(7)知識處理:自動地提取有組織的,可為人們利用的知識。
以第四代自然交互與通信為例,該系統的主要功能為:多模感知功能;智能代理交互功能;知識處理功能;可視化顯示功能。
軟體界面是人-機之間的信息界面,從某種意義上講,它比硬體和工作環境更為重要。優化軟體界面就是要合理設計和管理人- 機對話的結構。對話的結設計一般可分為初始設計、形式評價和總結評價三個階段。
人類工程學是一門應用廣泛的綜合性邊緣學科,作為一門獨立的學科,人類工程學在我國的歷史還很短,我國的心理學家、人類學家、勞動保護和醫學工作者、機械工程師正結合自己的領域,開展這方面的工作。
人類工程學中人的特性
人在系統中是主體,任何先進的機器都是由人設計的,由人操縱的,所以系統工作效率的優劣、安全性,很大程度上決定於人的工作狀況。人類工程學中要研究人對外界信息的感知特性,人對信息的加工、處理及思維能力,人的學習、記憶特性,人的自身節率等等。
人的感覺功能
a.視覺人們通過視覺器官認識外界事物,由大腦產生正確的思考,視覺對勞動的產量、質量及安全均有影響,還影響到勞動者的心理活動過程。
b.聽覺人耳對聲音響度的感覺主要是和聲強有關。人接受聽覺信息要比接受視覺信息快。據測定,人的聽覺反應時間約為120-150ms,較光信息快30-50ms。聽覺信號常用於報警。
c.觸覺等人們通過觸覺器官接受物體的空間位置、形狀、表面情況和原材料等信息。
人的信息處理及輸出特性
a.人的反應時間操作者在操縱、監視設備時,從出現信號刺激到採取相應動作,存在一個反應時間。人體的運動系統反應速度比較緩慢,神經肌肉接頭的反應延遲時間為0.1-0.2。
b.人的信息傳輸信息在神經系統中的傳輸,是由不同的感覺通道,傳輸不同的信息,如視覺系統的單個神經纖維能傳輸不同的顏色信息,信息的傳輸速率是一個重要的物理量。
人機分工
人機交互系統
(2)計算機輔助設計和計算機圖形學中的人的因素
利用CAD技術並結合CAM技術可以大大縮短產品的設計-製造周期,CAD已經成為製造業中求生存的一種主要手段。CAD中主要的人的因素問題有:CAD硬體中的圖形終端、輸入裝置和菜單設計,CAD系統中人的信息加工能力,如有關CAD顯示的視覺、CAD中的空間推理、CAD中的問題解決及運動反應等過程;CAD系統中人機功能分配;CAD系統中的工作設計、人員選拔和訓練等。
(3)計算機輔助製造中的人的因素
CAM可被廣義地認為是在製造業的管理、控制和運行中有效地應用計算機的一項新技術,其最終目標是要建成CIMS,它將是一項在21世紀最具競爭力的技術。認知工程學在CAM領域的主要研究內容:自動化與工作分片、CAM中的人的決策和自動化製造中人的監控。
1.媒體最佳組合
媒體界面的成功並不在於僅向用戶提供豐富的媒體,而應在了解媒體的功能、選擇方法的基礎上,在相關理論的指導下,在語義層上將各種媒體有機地結合起來以更有效地傳遞信息。
2.界面分析與規範
在人機界面設計中,首先應進行界面設計分析,即收集有關用戶及其應用環境信息以後,進行用戶特性分析,用戶任務分析,記錄用戶有關係統的概念、術語,這項工作可與應用系統分析結合進行。分析任務中對界面設計要有界面規範說明,選擇界面設計類型,並確定設計的主要組成部分。
由於人機界面是為適合人的需要而建立的,所以要清楚使用該界面用戶的類型,要了解用戶使用系統的頻率、用途及對用戶的綜合知識和智力的測試,這些均是用戶設計中的內容。在此基礎上產生任務規範說明,進行任務設計。任務設計的目的在於重新組織任務規範說明以產生一個更有邏輯性的編排。設計應精心地分別給出人與計算機的活動,使設計者較好地理解在設計一個界面時所遇到的問題,這樣形成系統操作手冊、訓練文件和用戶指南的基礎。在考慮用戶工作方式及系統環境和支持等因素下,精心任務設計。
任務確定之後,要決定界面類型。目前有多種人機界面設計類型,各有不同的品質和性能,因此設計者要了解每種類型的優點和限制。大多數界面使用一種以上的設計類型。下表列出了常用界面類型的優缺點。表1
3.圖標:用圖像代表功能
非常容易學,易用(滑鼠操作〕,語言獨立性強,編程較容易占具屏幕可觀的空間,表達抽象概念描述力差,需文字解釋,需圖形硬體和軟體支持。
4.表格填寫
使用速度快、易用、容易掌握僅適合於數據輸入,不高級數據錄入中用得最廣泛的會話類型,用於顯示和恢復界面,編輯初始界面。
5.命令語言(單字命令到複雜語法的命令〕
使用功能強,靈活,是界面可控制系統的高級方法,對屏幕空間使用十分經濟學習困難(學習代碼和語言條款〕,用戶需要系統功能的某些知識,使用困難,研究該界面工作量大會使用複雜命令界面的熟練用戶,用戶發起和控制的對話。
6.自然語言
自然的交流難於編程實現,語言識別困難,會出現二義性,輸入慢在有限制的問題中使用,可用於用戶發出的會話。
人機交互系統
(2)廣而淺的菜單樹優先於窄而淺的菜單樹;
(3)用圖形、數字或標題來顯示位置;
(4)用選項名稱來作樹的標題;
(5)根據含義將選項分組;
(6)根據含義將選項排序;
(7)選項力求簡短,以關鍵詞開始;
(8)語法、布局、用詞前後一致;
(9)允許超前鍵入、超前跳轉或其它捷徑;
(10)允許跳轉到前層的菜單和主菜單;
(11)考慮聯機求助、新穎選擇機制、響應時間、顯示速率和屏幕尺寸。
在一個交互系統中,由於操作者的個人原因,經常會產生誤操作,包括鍵入錯誤、數據輸入錯誤等。同樣,在用戶編製的程序或設備連接時也可能會有錯誤。一個好的交互系統不能要求操作者不犯錯誤,但應該具有較強的處置各種錯誤的能力,除了在軟體設計時注意各種容錯機制、魯棒性技術及各種診斷措施以外,在計算機用戶界面上應提供各種避免用戶操作錯誤的提示及各種錯誤信息的分析。
數據錄入錯誤
在各類數據處理軟體中,數據錄入的錯誤是經常發生的薄弱環節,為了減少用戶在錄入時的錯誤,應採用一系列措施。
a.對用戶輸入在屏幕上予以“回答”;
b.對用戶在屏幕上的交互輸入,應提供暫存文件以記錄全部輸入,以便全部數據輸入完后或臨時需要時進行檢查和確認;
c.對用戶各種輸入應提供檢查;
d.對於資料庫中的重要數據,必須進行嚴格的複查核對。
控制輸入
控制輸入的內容與用戶界面的風格、控制方式有關。在有的菜單選項用戶界面上,往往提供一組編號菜單項,用戶輸入一個號碼后,立即可進入該號指定的項目。採用這種方法雖然可以減少按鍵,提供操作效率,但在誤按號碼后將會引起錯誤。
a.對錯誤命令應提供反饋信息,告訴用戶正確的命令格式及參數;
b.對文件操作的命令只對該文件的副本進行,以便在必要時仍可從文件的原稿中恢復;
c.對一些影響重大的命令需要由用戶再次確認;
d.建立命令的歷史文件,這是對系統進行恢復的最有效措施,它對於不同開發階段的錯誤情況獲取都是有用的。
其它錯誤
在一個交互系統中,各個部分都可能出現錯誤,包括硬體錯誤和軟體錯誤。在設計系統時,應允許採用不同廠商的設備,且設備不同也不應引起錯誤,這就是設備的獨立性問題。
錯誤信息
人機交互系統
a.儘可能使錯誤信息準確和定位。
b.應指明用戶針對這類錯誤應如何做。
c.語言應簡潔、明確,儘可能用通俗易懂的辭彙。
d.避免使用指責性語言,語氣儘可能友善,但應給以告誡。
e.對於錯誤信息應該根據系統的實際情況進行分層提示。
f.應保持錯誤信息的風格一致,包括信息出現的位置,是否用對話框或窗口,術語及縮寫等。
g.儘可能採用可視的圖形信息及音響效果。
評價是人機界面設計的重要組成部分,但往往被設計者忽視。通常評價在最後產品上進行,但若在系統設計初期就進行,或對原型進行評價,就能及早發現設計缺陷,避免人力、物力的浪費。
對界面設計的質量評價通常可用四項基本要求衡量:
(1)界面設計是否有利於用戶目標的完成。
(2)界面學習和使用是否容易。
(3)界面使用效率如何。
(4)設計的潛在問題有那些。
而對界面的總體設計和具體功能塊設計,則可用上面提到的各類界面設計準則根據其應用對象進行綜合測試。具體要求的界面品質,可照以下幾項參考:
(1)適應性。衡量界面在幫助用戶完成一項或多項任務時的滿意程度。
(2)有效性。度量指標錯誤率、任務完成時間、系統各設備使用率等。
(3)易學習性。從系統開始使用一段時間后,錯誤率下降的情況、完成任務時間減少的情況、正確調用設備及命令的情況以及用戶知識增加的情況來評測。
(4)系統設備及功能使用面。若有些設備或功能任何用戶都未用過,則可能設計有誤。
(5)用戶滿意程度。以用戶滿意程度、發現問題多少及使用興趣來衡量。
界面評估採用的方法已由傳統的知覺經驗的方法,逐漸轉為科學的系統的方法進行。傳統經驗方法有如下幾種:
(1)實驗方法。在確定了實驗總目標及所要驗證的假設條件后,設計最可靠的方法是隨機和重複測試。
(2)監測方法。即觀察用戶行為。觀察方法有多種,如直接監測,錄像監測,系統監測等。
(3)調查方法。這種方法可為評價提供重要數據,在界面數據的任何階段均可使用。調查方法可以採用調查表(問卷〕或面談方式。調查收集到的大多是主觀數據,主要了解用戶使用該界面的情況,對界面的態度和意見。
X窗口系統窗口系統是控制點陣圖顯示設備與輸入設備的系統軟體。它所管理的資源有屏幕、窗口、象素映象(pixmap)、色彩表、字體、游標、圖形資源及輸入設備。
窗口系統向用戶提供下列界面:
1應用界面
2編程界面
3窗口管理界面
美國國家標準技術委員會於1990年5月把窗口系統X.11.3版本正式發布為美國國家標準文件(編號為FIPS-PUB-158)。該標準共包括4個內容:
(1)X協議(X protocol)
X窗口系統實際上由核心協議所定義。協議包括四個方面:請求(request)、回答(reply)、出錯(error)及事件(event)。X協議共有120個請求,可擴充至256個。整個協議描述客戶與伺服器進程通訊的語法結構與語義。
(2〕X庫函數(Xlib)
X庫函數是X窗口系統的C語言編程界面,是嚮應用程序員提供的低級編程界面。X庫把參數封裝為協議請求,利用IPC機制發射給伺服器進程。X庫共有320多個函數,可分為系統功能(連接的建立與撤除等)、窗口功能(窗口屬性與操作)、通訊功能(圖原、通訊屬性、正文字體、區域、圖像等)、色彩功能(色彩表操作)、事件功能(輸入事件及窗口事件處理)及其它功能(原子、實用函數)。
(3)X工具箱本徵函數(X toolkit intrinsics)X工具箱是在X庫上的高級編程界面。它向用戶提供菜單、對話框、圖符等各種圖形界面元素的編程手段。X工具箱包含兩部分:Widget集及Intrinsics函數集。前者是具有一定風格及外觀的圖形界面元素對象集,它與特定風格有關;後者是利用這些對象編程時的通用函數,共有270個函數,包括界面函數與應用程序聯繫的“回調函數”等。
(4)字體標準格式(BDF,Bitmap Distributed Format)這是X窗口系統所提供各種字體的標準點陣圖(bitmap)的組成規定。
X窗口系統的一個重要設計思想是提供實現各種界面的機制,而不是策略。由於上述四部分只規定了應用程序員的編程介面,因而不同廠商或用戶可在它們之上實現各種窗口管理程序及界面外觀。由此,X窗口系統成為工作站各用戶界面的基礎、事實上的工業標準。
窗口是X窗口系統的一個重要資源,是屏幕上的一個矩形區域(透明窗口無此區域邊框〕。它實質上是點陣圖輸出設備及輸入設備的一個抽象,有自己的坐標及感興趣的事件等。X窗口系統有一個根窗口覆蓋整個屏幕,應用程序的窗口均為根窗口的子窗口。這樣所有窗口構成了樹形結構,子窗口大小不能超出父窗口。X窗口系統中窗口的樹形結構為應用程序的多級抽象提供了清晰的概念。
X窗口系統的運行環境應該是在具有進程間通信機制的操作系統上工作,例如有TCP/IP(支持Socket機制〕網路協議的UNIX操作系統上工作。此時,應在後台運行伺服器進程(X Server)、窗口管理程序(uwm)及終端模擬程序(X term)。有以上三個進程,就可以在窗口系統下執行各種命令,用滑鼠或鍵盤管理窗口,運行各種應用程序。X窗口提供了極強的顯示管理及輸入設備的管理功能,是工作站上CAD軟體及其用戶界面的主要支撐環境,已成為工作站窗口系統事實上的工業標準。X窗口系統也要求可觀的計算機資源。
OSF/Motif和OPEN LOOKX窗口系統提供了一系列構造用戶界面的機制,包含協議、庫函數、工具箱本徵函數及字體格式等。但它並不提供某種具體的用戶界面風格。在X窗口系統之上已經構造了具有不同用戶界面風格的高級界面對象集,通常稱為Widget Set。它們各有不同的視感(look & feel),其中對象可以包括窗口、菜單、對話框、按鈕、圖符、邊框等。一種風格的某種Widget Set為用戶提供了一種外觀統一的圖形用戶界面,也為應用程序員提供了面向對象的應用編程界面(API〕。OSF/Motif是由開放軟體基金會(OSF〕1989年發布的圖形用戶界面規範。它以UNIX操作系統用X窗口系統為軟體平台,吸取了IBM OS/2的PresentationManager,MS-Dos及HP newware界面風格的特點,提供了風格(style)、窗口管理、工具箱、用戶界面語言(UIL〕等一系列機制及規定。OSF/Motif已在多種硬體平台及操作系統上工作。OPEN LOOK是由UNIX國際1988年發布的圖形用戶界面規範,它已作為UNIX系統第四、第五版本發布的重要組成部分正式使用。它也在許多工作站上實現並推廣使用。
Windows
1986年Microsoft公司為IBM個人計算機的DOS環境開放了Windows窗口系統,後來經過大量改進,於1990年正式發布了Windows3.0版本。由於該窗口系統在儲存管理上突破了原來DOS640KB的限制,從而具有強的功能,為在DOS環境提供了可實用的圖形用戶界面。MS-Windows的出現,使得DOS環境下的大量CAD/CAM軟體有了十分強的窗口環境支持,從而使得CAD/CAM的用戶界面更加方便、一致。MS-Windows已成為在DOS環境圖形用戶界面的主要產品。Windows窗口系統是基於核心的窗口系統(Windows95,Windows98,Windows NT),其核心功能放在操作系統內。由於Windows窗口環境具有風格一致的操作界面,在Windows環境下開發的應用軟體具有同樣的界面風格因而易學易用。這種通用的操作系統為界面各種對象的設計提供了過程化設計的平台和工具箱,從而使界面設計實現容易。
人機交互系統
計算機用戶界面是計算機系統的重要組成部分,它直接關係到整個計算機系統的可使用性和效率。經驗表明開發高質量的用戶界面,需花費大量的人力物力,且開發周期較長。
傳統的用戶界面的設計與描述是基於"嵌入"方式進行的,應用程序設計人員在設計軟體時,是按功能及界面兩方面要求混合編寫用戶界面和應用功能兩部分程序。這種開發方式忽略了用戶界面的個性,使程序複雜化,可維護性差。當前計算機軟體的開發已不再是將用戶界面和應用功能兩部分混合編寫了。而是越來越傾向於二者分別編寫,單獨編譯,再連接成可執行文件。這是因為對不同的應用系統,用戶界面部分在邏輯上和處理方法上具有高度的相似性。而讓軟體開發人員花費大量的時間與精力去開發一個很類似又不具有通用性的用戶界面程序顯然是不可取的。因此開發能夠用規範化和規模化生產的方法自動生成一致性的用戶界面的工具是用戶界面研究的內容。
用戶界面管理系統(UIMS)就是一種開發用戶界面的軟體工具。UIMS支持用戶界面的表示、設計、實現、原型、執行、評估和維護。UIMS能夠為整個環境提供一個友好一致的人機界面,使用戶能以極其友好的方式幾乎能隨心所欲地使用此環境進行軟體開發,即使得此環境具有友好的交互介質、友好的界面方式、友好的屏幕式樣。
(2)UIMS的表示方法:
UIMS的表示方法主要包含人機界面的規格說明和它與人文因素、應用程序及其數據結構的聯繫等。UIMS邏輯結構模型中幾個主要層次的表示方法,其中除了對話層的表示方法比較成熟、研究成果豐富外,其它層次的表示方法尚有待發展。
1外形層的表示方法:
外形層的表示方法主要涉及用戶輸入輸出信息的處理。需要解決如下問題:
a.如何處理和表示圖形的輸入輸出。
b.如何適應多媒體的需要,將輸入輸出信息擴充到視頻、語音、動畫、模擬等。
c.如何適應智能人機界面規格說明的需要,即信息流的內外映射中如何包含簡單的基於人機界面設計規格的決策,使一對一映射的關係擴充到多對一、多對多的映射關係。
2對話層的表示方法:
對話層的表示方法比較多,Green M(1986),Myers BA(1989)等曾先後對對話層的表示方法進行了如下分類:
a.基於語言的表示方法:
即界面設計者用一種專門的人機界面描述語言uidl來說明界面。這種語言可能有多種形式:菜單網路、狀態轉換圖、上下文無關文法、事件語言、面向對象語言等。語言的主要任務是說明界面對話層的語法,即輸入輸出動作的合法順序。
菜單網路:是最簡單的表示方法,即支持菜單的層次或網路結構。
狀態轉換圖:一個狀態轉換網路是由一組狀態組成。在由每個狀態出發的邊上標誌出一個輸入詞碼,它能引起轉移到該邊另一端的狀態。除輸入詞碼外,有些系統的邊上標出了被調用的應用子程序和被顯示的輸出內容。但是使用這種方法,界面和應用程序的聯繫是通過很多全程變數實現的,所有的狀態必須有清楚的邊來反映所有可能出現的錯誤輸入和公用命令。
上下文無關文法:即使用上下文無關文法來描述用戶和程序之間的對話,且大多以編譯器為基礎。
事件語言:在事件語言中,輸入詞碼被認為是事件並立即送事件處理器。這些處理器能產生輸出事件,改變系統的內部狀態,或調用應用子程序。
面向對象語言:即提供一個面向對象的框架,設計者在該框架內編寫界面程序。
b.基於圖形的表示方法:
基於圖形的UIMS讓用戶或至少部分地讓用戶使用滑鼠器直接將對象放到屏幕上來定義界面。它把界面的圖示表示作為最重要的一個方面,而圖形工具是說明這種表示的最合適的方法。
c.基於應用語義過程的表示方法:
即從應用的語義過程規格說明自動生成界面,並且讓設計者修改界面以改進它的性能。
3)應用層的表示方法:
目前應用界面模型和應用層的表示方法很不成熟,仍舊處於發展初期。作為可供實用的實用界面模型,至少必須包含如下三個內容:
a.它必須包含與用戶和人機界面有關的應用數據結構的說明;
b.它必須包含人機界面調用的應用子程序的說明,例如子程序名、運算對象等。這實際上是定義了人機界面和應用程序之間的界面;
c.必須列舉應用程序對用戶的限制。從而使人機界面排除了許多可能引起語義錯誤的操作,避免了對應用程序的破壞。
正在研究的應用層的表示方法有兩類:
一是對象—運算元法。對象對應於應用程序的數據結構,運算元對應於人機界面調用的應用子程序。
二是基於關係和一階邏輯。關係用來表示應用程序中的數據結構,而一階邏輯模型的說明用來表示應用子程序。
FITOOL支持用戶界面管理系統(UIMS)的Seeheim模型,基於Motif和X-Windows,運行於UNIX操作系統。
FITOOL對話層的表示方法採用面向對象表示方法結合圖形表示方法,使系統具有直接操縱的特點。
FITOOL由如下幾部分組成:
a.窗口編輯器
窗口編輯器管理並生成各種初始化窗口。用戶若要創建界面必須先運行此模塊,這既是初始化界面結構也是初始化管理內部數據結構的鏈表。
b.原始構件編輯器
原始構件編輯器提供了各種界面構件,用戶可按自己的需求用滑鼠點取相應的界面構件,並可對其進行任意配置,直到滿意為止。
c.管理器編輯器
管理器編輯器提供了各種界面管理器構件,可以管理一個或若干個後代。
圖4-1FITOOL結構圖
d.菜單編輯器
菜單編輯器可以單獨進行使用,用戶可以創建下拉式菜單,選項式菜單,彈出式菜單,菜單可以是文字式,圖符式或圖符文字混合式。
e.對話框編輯器
對話框編輯器提供了各種對話形式,用戶可按要求自行創建和配置。
f.資源修改模塊
資源修改模塊可單獨運行以對所產生的界面的任何部分進行資源的重新配置。
g.界面瀏覽器
界面瀏覽器可以瀏覽用戶已有的界面(文件),並可以重用之。
h.界面/應用對話編輯器
界面/應用對話編輯器用來定義用戶界面與應用程序之間的數據的傳遞及動作的響應。
i.源代碼生成器
源代碼生成器用於生成用戶界面源程序(包括C文件和UIL件)。
j.中英文文本編輯器
中英文文本編輯器可進行任何文字編輯操作。
k.編譯與連接模塊。
編譯與連接模塊用於編譯並連接用戶界面源程序生成執行文件。
使用本文描述的工具,界面設計人員不需要專門掌握一種用戶界面描述語言,而是通過界面編輯器來直接操縱屏幕上的可視對象,生成和修改用戶界面原型,並能將結果立即顯示在屏幕上,達到"所見即所得(WYSIWYW)"的效果。
使用FITOOL,用戶可以任意布置自己的用戶界面,並最後得到相應的用戶界面及其源程序,並可以和應用程序進行聯編,最後形成可用的執行文件。
使用FITOOL,用戶需做如下工作:
描述,即理解應用程序,確定用戶界面外觀和交互行為
a.確定所需的用戶界面構件:
按照最終用戶界面的外觀和功能進行界面布局描述和設計,這部分工作可以在稿紙上完成,並列出所需要的界面構件名稱及最終的配置。
b.確定界面的層次關係:
有了界面的布局,啟動FITOOL,運行相應模塊按步驟創建用戶界面。
c.確定界面與應用程序的對話結構:
按應用程序對界面響應的要求,定義應用與用戶界面之間的數據傳遞及相應的對話框。
構造用戶界面
a.運行窗口編輯器,創建並管理各種初始化窗口。用戶若要創建界面必須先運行此模塊,這既是初始化界面結構也是初始化管理內部數據結構的鏈表。
b.管理器編輯器提供了各種界面管理器構件,這些構件有的可以管理一個後代,有的可以管理若干個後代,用戶可按自己對界面總體的要求需求用滑鼠點取合適的界面管理器構件,並可對其資源進行任意配置,直到滿意為止。
c.原始構件編輯器提供了各種界面構件,用戶可按自己的需求用滑鼠點取相應的界面構件,並可對其進行任意配置,直到滿意為止。
d.菜單編輯器可以單獨進行使用,用戶可以創建下拉式菜單,選項式菜單,彈出式菜單,菜單可以是文字式,圖符式或圖符文字混合式。
e.對話框編輯器提供了各種對話形式,用戶可按要求自行創建和配置。
f.資源修改模塊可單獨運行以對所產生的界面的任何部分進行資源的重新配置。
g.界面瀏覽器可以瀏覽用戶已有的界面(文件),並可以重用之。
h.界面/應用對話編輯器用來定義用戶界面與應用程序之間的數據的傳遞及動作的響應。
i.源代碼生成器用於生成用戶界面源程序(包括C文件和UIL文件)。
j.中英文文本編輯器可進行任何文字編輯操作。例如:編輯任何程序語言的源程序或任何中英文文本文件。
k.編譯與連接模塊用於編譯並連接用戶界面源程序生成執行文件。
因此用戶可按事先確定的界面層次關係,用滑鼠選取相應的界面構件,並定製相應的資源,可隨時對字體和顏色進行修改以滿足自己的要求,最後組裝成自己的界面。並可得到相應的源程序(*.c、*.h、*.uil),經編譯后得到對應的目標文件(*.o、*.uid),和應用程序對應的目標文件(*.o)進行連接后可得到相應的執行文件。
測試用戶界面
將生成的源程序與應用程序的目標文件經連接後生成可執行文件,經運行如發現不合要求,可進行相應的修改,直到滿足要求。
最後生成最終用戶界面(包括永久對象和臨時對象)和源程序。
系統的實現採用C++、C語言、Motif及其用戶界面語言uil混合編寫而成。
Motif基於X—Windows的Xt工具箱(Xt Intrinsics),是一個用C語言實現、持面向對象體系的程序庫;C++則是由C語言發展而來,但它直接提供面向對象式的編程方法。
Motif內部使用的面向對象式體系對Motif的應用程序來說不會有絲毫的影響,因為它提供面向函數的介面,調用程序對Motif及Xt Intrinsics內部實現的細節不必深究。因此從表面上看,Motif和其他C語言庫沒有任何區別。C++的設計允許程序員輕易地使用象Motif這樣的C語言庫。C++還為面向對象設計方法和系統軟體設計方法的結合提供了簡易的方法,它使得程序在受益於面向對象技術的同時不失掉C的高效性,更不必重新設計象X和Motif這樣的標準C庫函數。
OSF/Motif與C++混合編程
用C++的面向對象的特性進行程序設計,並假設程序中的類代表令人感興趣的體系結構單元。用C++類封裝widget集合以創建一用戶界面組成部件的類,將Motif wi- dget作為基本單元來構造它們的界面。一個組成部件不僅封裝了一個widget集合,而且定義了整個組成部件的行為。
創建用戶界面組成部件
用C++類封裝widget集合以創建用戶界面組成部件的技術。即使用C++創建高一級的、將一個或多個widget組合成一個邏輯群的用戶界面組成部件。這樣做的目的是不用分離的類替換widget,而是用基本的Motifwidget,將一個應用程序及其界面的關鍵組成部件作為類實現。這樣的話,Motif本身是否是面向對象的並不重要,C++程序員可以直接調用Xt和Motif的函數來創建基本的Motifwidget。
使用C++類組合一組widget以創建更複雜的用戶界面組成部件。並且在一個C++類中,可以創建widget,並指定其資源和賦值回調等。這樣,一個C++類不僅封裝一個widget集合,而且定義了整個組成部件的行為。其意圖是不僅僅用一個類替換一個widget集合,而是創建一個應用程序所要求的基本類,其中某些類使用widget實現一用戶界面組成部件。
虛擬與回調(作為靜態成員函數實現)的組合提供了創建抽象用戶界面組成部件的一種方法。基類可以由組成部件支持的widget,以及整體布局,而將組成部件的具體行為留給派生類。
用戶界面組成部件的協議
定義一個簡單的協議,即使所有用戶界面組成部件能保證在不同組成部件之間的一致性,並且使不同的組成部件很容易地在一起工作。
組成部件在類的構造函數中創建一個或多個widget。通常情況下,回調與其它創建也在構造函數中處理,每個組成部件創建一個單獨的widget,是為基widget。使它作為類所表示的widget樹的根,其它所有widget都是它的孩子。
組成部件將一個widget作為構造函數中的一個參數。該widget作為該組成部件的基widget的父親。
組成部件將它創建的widget子樹的根賦給一個保護的實例變數。
組成部件將一個字元串作為構造函數的一個參數。
每個組成部件類提供一訪問方式,用來查詢子樹的根widget。然而一個組成部件類的目標是封裝一個widget的單獨邏輯集合的行為,偶爾需要類公開widget樹的根widget。
組成部件類允許widget子樹由類封裝,以進行處理或不處理。組成部件就作為一個邏輯群處理,並且只有widget子樹的根被處理或不處理。其它widget應在創建時在構造函數中被處理,而此時不處理根widget。
組成部件處理其widget樹中widget的析構函數。當一個對象被清除時,它所封裝的widget也應被清除。
基類的定義與實現
BasicComponent類。
BasicComponent類實現一些對所有組成部件類都有用的基本特性。
UIComponent類。
UIComponent類是由BasicComponent類派生得到的,但增加了處理widget析構,並且使用資源管理程序定做和初始化類。
Motif與C++類混合編程的應用框架
創建一個應用框架用來定義一個應用程序的總體結構。和其它框架一樣,類和框架配合的好要比任何一個類的函數性要重要的多。
框架的本意是依靠獲取應用程序的共同元素來簡化編寫Motif應用程序的任務。儘管Xt和Motif提供一個比Xlib更高層的的介面,但是絕大多數的Motif和Xt應用程序仍然包括數量驚人的重複代碼。例如所有的Motif應用程序必須初始化Xt Int rinsics,打開和X伺服器的聯繫,進入事件循環,以及其它等等。對每一個應用程序來說,複製實現這些步驟的代碼是沒有什麼理由的。我們可以把這些步驟放在一個類中,其他的應用程序就可以復用它。可能抽取典型的Motif應用程序的控制結構部分,儘管許多特殊的細節在不同的應用程序間是有差別的。
Motif應用程序所共有的一些特點:
初始化Xt Intrinsics;
打開和X伺服器的聯繫;
創建一個Shellwidget作為其它widget的父親;
創建一個或一個以上widget定義用戶界面;
進入事件循環來處理事件。
大部分Motif應用程序中main()主體是非常類似的。絕大多數程序都執行上面的步驟,而很少有不同的。實際上,如果我們忽略不同的應用程序間的細小差別,看到幾乎每一個Xt應用程序都包含相同的語言並且遵循相同的形式。程序和程序之間,重複地為每個程序打開這些語句是一個時間上的浪費。
一個功能更強的方法是抽取一個應用程序的骨架,放在一個類中。應用程序可以通過實例化這個類,或者創建一個從這個類派生出來的新類來複用公共的代碼段。使用一個類來獲取應用程序的共同特點比拷貝上面顯示的樣板有幾個優點。首先,一旦程序設計者作了一份樣板的拷貝,喪失了跟蹤原始代碼的能力。然而,那些僅是簡單地實例化一個封裝這個代碼的對象的程序,可以從修改錯誤和改進中獲益,因為它們只需要與一個修改過的版本重新連接。
基於面向對象理論的應用程序可以通過派生出一個新類修改已生成代碼的行為。因為改變只是對一個派生類做的,而對原始類未作改動,所以要復原至最初的行為就容易得多了。確定任何在發展過程中帶入的新錯誤完全包容在新代碼中,也變得容易多了。
Application類:
Application類處理初始化和所有基於Xt的應用程序通用的事件處理步驟。Motif應用程序只是簡單地實例化一個Application對象,而不是調用類似XtApp Initialize()或XtAppMainLoop()的Xt函數。程序可以從Application類中派生出新類也可以直接實例化。Application類在構造函數中不創建任何widget。Appli cation類為在整個應用程序中都可能需要的一些數據提供存儲的空間。
框架支持應用程序的多頂層窗口。一個方法是創建一個唯一的頂層的窗口作為應用程序的主窗口。所有其它的窗口都是彈出Shell,它們的父親是那個主窗口。另一種方法是創建一個唯一的Shell,它永遠不出現在屏幕上。所有其它的窗口必須是這個主Shell的彈齣兒子。在這個模型中,所有頂層窗口等價對待,彼此間是兄弟關係,一個窗口邏輯上可以是應用程序的頂層窗口。
可以定義一個MainWindow類以提供應用程序中頂層窗口的基本屏幕布置。
基於這個框架的應用程序不必定義main()。函數main()定義框架的一部分,並且管理調用Application::initialize()成員函數以及進入事件循環。隱藏main()允許框架管理比所有應用程序必須執行的常式初始化更多的事情,即每一個程序都是Application類的一個實例。應用程序的創建就是簡單地由實例化一個Application對象完成的。
對話類:
為了一些特殊意圖,在屏幕上現實相對時間較短的對話窗口,是許多互動式應用程序的一個共同特點。管理帶有許多輸入,控制或者選項的應用程序的一種方法是把用戶界面中不常使用的部分放在幾個分開的對話窗口中,只有當需要才顯示,對話窗口可以有幾種不同的使用方法。
對話類依賴Application類,因為對話需要一個父widget。因此要強迫應用程序傳送一個widget給post方法作為父親使用,但是允許有不同的父親。為了不使高速緩存複雜化,這裡使用Application類的Shellwidget以保證所有的對話有相同的父親,在屏幕上集中了對話。
命令類:
在互動式應用程序中,用戶的每一個動作幾乎都被認為是一條命令。例如,絕大多數的字處理程序支持類似"插入字元"的簡單命令和更複雜的類似"段落重新劃分"以及"保存文件"的命令。用戶可能認為插入字元不是發出了一條命令,但是對程序員來說,插入字元和段落重新劃分之間沒有什麼不同。程序員典型地把這些命令作為函數(例如,回調函數)來實現,這些函數作為用戶動作的結果被執行。這樣系統的每一個命令被模型化為一個對象。
Cmd類完全獨立於任何用戶界面。命令對象可以有計劃地實例化和執行。而不必依賴於某個用戶界面組成部件。然而,通過一些用戶界面組成部件,代表由用戶初始化的動作,對一個命令對象來說是很普遍的。CmdInterface類就是支持Cmd對象和widget或其它用戶界面組成部件間的相互作用。
OSF/Motif之UIL與C++混合編程
人機交互系統
使用UIL可以快速地開發用戶界面的原型,因為使用者不需要知道具體的wid-get創建函數極其調用格式。UIL不需要控制流,用戶可以大致按對象在界面中的放置順序來描述它們,這使得uil文件易讀且不易出錯。另外,由於用UIL編譯器對uil文件進行解釋產生的用戶界面描述文件uid與應用程序之源程序分離,應用程序只是在運行時才讀取uid文件。也就是說同一個應用程序可以有一個或多個不同的界面,同一個界面可以被一個或多個不同的應用程序所擁有。
使用uid文件的應用程序的結構:
調用MrmInitialize()函數初始化MRM所需之內部數據結構;
調用MrmOpenHierarchy()函數將MRM與具體的uid文件聯繫起來;
調用MrmRegisterNames()函數來登記回調函數;
調用MrmFetchWidget()函數按搜索層次指針記錄的uid文件獲取順序從uid文件中獲取文件信息,並創建列於相應uid文件中的widget及其子widget。
創建Application類的子類Mrmapp類。
Mrmapp類是Application類的子類,它提供了普遍使用的讀取uid文件,創建widget的方法。
使用UIL語言與C++語言混合編程非常方便。對不同的程序只需要改變相應的讀入uid文件語句,使程序調用合適的uid文件即可。
FITOOL就是通過建立上述Motif與C++類混合編程的應用框架實現的。
BITIS計算機輔助設計與製造(CAD/CAM/CAPP)系統(圖4-2)的統一用戶界面就可以用FITOOL來設計與生成。
(1).需求分析
要求有一封面、一背景屏幕和一集成工具。
集成工具(圖4)層次結構如下:
初始化窗口;
管理器構件:主窗口,一個Form管理器,二個Frame管理器,一個RowColumn管理器。
原始構件:RadioBox,Label,PushButton。
菜單:下拉式菜單。2BITIS集成系統結構
(2).生成界面
a.首先用窗口編輯器,創建並管理各種頂層窗口。
b.用管理器編輯器產生一個主窗口,一個Form管理器,一個RowColumn管理器。
c.用原始構件編輯器產生Label,RadioBox,PushButton原始構件。
d.用菜單編輯器創建下拉式菜單。
e.用界面/應用對話編輯器定義用戶界面與應用程序之間的數據的傳遞及動作的響應。
f.用源代碼生成器生成用戶界面源程序(包括C文件和UIL文件)。
g.編譯與連接模塊用於編譯並連接用戶界面源程序生成執行文件。BITIS系統集成用戶界面:BITIS系統集成用戶界面
FITOOL可以運行於HP和SGI工作站,使用效果良好。其中有些功能有待進一步研究與完善。