第6章-人機交互界面表示模型與實現(xiàn)_第1頁
第6章-人機交互界面表示模型與實現(xiàn)_第2頁
第6章-人機交互界面表示模型與實現(xiàn)_第3頁
第6章-人機交互界面表示模型與實現(xiàn)_第4頁
第6章-人機交互界面表示模型與實現(xiàn)_第5頁
已閱讀5頁,還剩201頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章--人機交互界面表示模型與實現(xiàn)人機交互界面的表示模型與實現(xiàn)在界面設計的早期階段,研究建立一種用戶界面表示模型和形式化設計語言利用形式化的設計語言來分析和表達用戶任務以及用戶和系統(tǒng)之間的交互情況;使界面表示模型能方便地映射到實際的設計實現(xiàn)。

2主要內(nèi)容人機交互界面表示模型界面描述語言窗口系統(tǒng)用戶界面管理系統(tǒng)36.1人機交互界面表示模型三種模型:行為模型,主要從用戶和任務的角度考慮如何來描述人機交互界面,將詳細介紹GOMS,UAN及LOTOS模型。結(jié)構(gòu)模型,主要從系統(tǒng)的角度來表示人機交互界面。重點介紹狀態(tài)轉(zhuǎn)換網(wǎng)絡(STN-StateTransitionNetwork)和產(chǎn)生式規(guī)則(ProductionRule)。46.1人機交互界面表示模型對象模型,是一種目前非常流行的面向?qū)ο蟮谋硎灸P?,它將人機交互活動歸結(jié)為事件與對象的相互作用。模型轉(zhuǎn)換,界面的事件-行為表示模型與系統(tǒng)的結(jié)構(gòu)模型之間的轉(zhuǎn)換。表現(xiàn)模型,主要介紹人機界面表現(xiàn)的具體描述方法56.1.1行為模型分析人員獲取用戶需求后,結(jié)合領(lǐng)域?qū)<业囊庖姾椭笇?,獲取系統(tǒng)中需要完成的任務,對任務的主要因素進行詳細地分析,如任務的層次、發(fā)生條件、完成的方法以及它們之間的關(guān)系等等。所有這些內(nèi)容,都是在行為模型中所要研究的。

66.1.1行為模型行為模型將在后面的具體系統(tǒng)設計中起著非常重要的指導作用下面從模型的基本原理、實例、局限性等方面介紹四種行為模型:目標操作和選擇行為模型GOMS

時序關(guān)系說明語言LOTOS用戶行為標注UAN預測性的行為模型GUL,融合上面三個71.GOMS1983年由Card,Morgan和Newell提出的。通過目標(Goal)、操作(Operator)、方法(Method)以及選擇規(guī)則(Selection)四個元素來描述用戶的行為。GOMS是在交互系統(tǒng)中用來分析建立用戶行為的模型。它采用“分而治之”的思想,將一個任務進行多層次的細化。81.GOMS1.目標Goals目標就是用戶執(zhí)行任務最終想要得到的結(jié)果,它可以在不同的層次中進行定義。高層次的目標可定義為“編輯文章”,低層次的目標可定義為“刪除字符”高層次的目標可分解成若干低層次的目標91.GOMS2.

操作Operators操作是任務分析到最低層時的行為,是用戶為了完成任務所必須執(zhí)行的基本動作。雙擊鼠標,按Enter鍵操作不能再分解,在GOMS模型中是原子原子元素101.GOMS3.方法Methods方法是描述如何完成目標的過程。一個方法本質(zhì)上來說是內(nèi)部的算法,用來確定子目標序列及完成目標所需要的操作。111.GOMS3.方法Methods在Macintosh操作系統(tǒng)下關(guān)閉窗口的方法:GOAL:ICONSIZE-WINDOW.[selectGOAL:USE-CLOSE-METHOD..MOVE-MOUSE-TO-WINDOW-HEADER..POP-UP-MENU..CLICK-OVER-CLOSE-OPTION.GOAL:USE-L7-METHOD..PRESS-L7-KEY]121.GOMS4.選擇規(guī)則Selection選擇是用戶要遵守的判定規(guī)則,以確定在特定環(huán)境下所要使用的方法。當有多個方法可供選擇時,GOMS中并不認為這是一個隨機的選擇,而是盡量預測會使用哪個方法,這需要根據(jù)特定用戶、系統(tǒng)的狀態(tài)、目標的細節(jié)預測要選擇哪種方法。131.GOMS4.選擇Selection用戶Sam一般不用L7,在玩游戲時用:Rule1:UsetheCLOSE-METHODunlessanotherruleappliesRule2:IftheapplicationisGAME,useL7-METHOD另一個完整的實例如下:14GOMS實例Task:Editing任務EDITING的GOMS描述實例GOAL:EDIT-MANUSCRIPTGOAL:EDIT-UNIT-TaskrepeatuntilnomoreunittasksGOAL:ACQUIRE-UNIT-TASKGET-NEXTifatendofmanuscriptGET-NEXT-TASKGOAL:EXECUTE-UNIT-TASKGOAL:LOCATE-LINE[select:USE-QS-METHEDUSE-LF-METHOD]GOAL:MODIFY-TEXT[select:USE-S-METHODUSE-M-METHOD]VERIFY-EDIT

15GOMS實例上面實例中可以看到,當所有子目標完成后,對應的最高層的用戶目標就得以實現(xiàn)了屬于同一目標的字母表之間存在幾種關(guān)系:如順序關(guān)系,選擇關(guān)系16GOMS應用作為一種人機交互界面表示的理論模型,GOMS是人機交互研究領(lǐng)域內(nèi)少有的幾個廣為人知的模型之一,并被稱為最成熟的工程典范,該模型在計算機系統(tǒng)的評估方面也有廣泛的應用。17GOMS應用GOMScansavemoney!美國公司NYNEX利用GOMS分析一套即將被采用的新的計算機系統(tǒng)的應用效果,結(jié)果發(fā)現(xiàn)效果不理想,放棄了使用新系統(tǒng),為公司節(jié)約了數(shù)百萬的資金。18GOMS的局限性GOMS沒有清楚的描述錯誤處理的過程,一旦子目標由于錯誤而導致目標無法正常實現(xiàn)而異常終止,系統(tǒng)將無法處理。這些錯誤在GOMS模型中無法描述會假設用戶完全按一種正確的方式進行人機交互,因此只針對那些不犯任何錯誤的專家用戶。19GOMS的局限性GOMS對于任務之間的關(guān)系描述過于簡單,只有順序和選擇.事實上任務之間的關(guān)系還有很多種(具體參見節(jié)中LOTOS的介紹),這限制了它的表示能力。另外選擇關(guān)系通過非形式化的附加規(guī)則描述,實現(xiàn)起來也比較困難。20GOMS的局限性GOMS把所有的任務都看作是面向操作目標的,而忽略了一些任務所要解決的問題本質(zhì)以及用戶間的個體差異,它的建立不是基于現(xiàn)有的認知心理學,故無法代表真正的認知過程。GOMS的理論價值不容忽視,但需要對它進行一定程度的擴展,并結(jié)合其他的建模方式,以更好的應用于人機交互領(lǐng)域212.LOTOS時序關(guān)系說明語言LOTOS(LanguageOfTemporalOrderingSpecification)T.Bolognesi,H.Brinskma,"IntroductiontotheISOSpecificationLanguageLOTOS”,1987.222.LOTOS國際標準形式描述語言,適于描述具有并發(fā)、交互、反饋和不確定性等特點的并發(fā)(concurrent)系統(tǒng)中的行為。開始作為一種描述網(wǎng)絡協(xié)議的語言,由于交互系統(tǒng)、特別是多通道交互系統(tǒng)有并發(fā)系統(tǒng)的特點,因此成為用來描述交互系統(tǒng)的行為模型。23LOTOS基本思想系統(tǒng)的外部可見行為可以看作是由一個有時序關(guān)系的交互序列組成。系統(tǒng)由一系列進程組成,進程同環(huán)境之間通過稱為“關(guān)口”(gates)的交互點進行交互。兩個以上的進程在執(zhí)行同一個外部可見的行為時會發(fā)生交互操作,進行數(shù)據(jù)交換、信息傳遞、協(xié)調(diào)同步等操作。24LOTOS基本思想進程行為用“行為表達式”來描述,復雜的行為由簡單的行為表達式通過表示時序關(guān)系的LOTOS算符組合而成。在將LOTOS思想用于人機交互的行為模型時,用進程之間的約束關(guān)系來描述交互子任務之間的關(guān)系。

25LOTOS算符T1|||T2(交替Interleaving)T1和T2兩個任務相互獨立執(zhí)行,可按任意順序執(zhí)行,但永遠不會同步。

T1[]T2(選擇Choice)需要在T1,T2中選擇一個執(zhí)行,一旦選擇某一個后,必須執(zhí)行它直到結(jié)束,在這中間另一個再無執(zhí)行機會。任務如何來選擇沒有給出一定的形式化描述

26LOTOS算符T1|[a1,...,an]|T2(同步Synchronization)任務T1,T2必須在動作(a1,……,an)處保持同步

T1[>T2(禁止Deactivation)一旦T2任務被執(zhí)行,T1便無效(不活動)

T1>>T2(允許Enabling)當T1成功結(jié)束后才允許T2執(zhí)行

27LOTOS與GOMS的結(jié)合LOTOS模型很好的描述了任務之間的時序約束關(guān)系,這些時序約束關(guān)系能更好的描述GOMS中子目標之間的關(guān)系。如果能將兩個表示模型結(jié)合起來,用GOMS模型描述任務的分解過程,而用LOTOS給出子任務之間的約束關(guān)系,這樣就可以增加兩種表示模型的表示能力。

28LOTOS實例29中國象棋的LOTOS任務分解實例30結(jié)合GOMS和LOTOS的中國象棋程序的行為描述GOAL:中國象棋[>:GOAL:運行|||:*GOAL:走棋ACTION:自動記錄棋譜>>:GOAL:當前方走>>:OPRATOR:拾取棋子OPRATOR:放置棋子GOAL:對弈方走>>OPRATOR:拾取棋子OPRATOR:放置棋子*GOAL:打譜[]:OPRATOR:加速OPRATOR:減速OPRATOR:暫停OPRATOR:恢復GOAL:退出31LOTOS總結(jié)LOTOS與GOMS結(jié)合,可以清楚地了解整個目標層次及各目標之間的約束關(guān)系。但與GOMS同樣存在無法描述目標異常結(jié)束的缺陷,同時當任務進行選擇時用什么規(guī)則進行選擇并為涉及。32LOTOS總結(jié)LOTOS最大的優(yōu)越性在于可以構(gòu)造一套現(xiàn)成的自動化工具,利用這些工具,可自動進行錯誤檢測,但它過于形式化的記法比較晦澀難懂。GOMS和LOTOS的結(jié)合可以很好地描述人機交互的較高級的任務,對于原子任務的形式化描述,上述模型并沒有給出一個比較清晰的描述,下面討論的UAN模型主要用于原子目標的描述。

333.UAN

UANUserActionNotion用戶行為標注UAN是一種簡單的符號語言,主要描述用戶的行為序列及在執(zhí)行任務時所用的界面。

盡管UAN屬于一種行為模型,但作為一種任務描述語言,它又涉及一定程度的系統(tǒng)行為的描述,因而它兼有行為模型和結(jié)構(gòu)模型的一些特點。34UAN模型的基本思想預定義一些標志符:用戶動作標志符:在UAN的表示模型中有一些常用的已經(jīng)預定義的符號,用來表示常見的用戶界面的交互動作條件標志符:除了動作的符號,還包含表示條件及選擇的標識符35UAN預定義的動作標志符(部分)用戶動作標志符:move_mouse(x,y)移動鼠標至(x,y)release_button(x,y)在(x,y)位置釋放鼠標按鈕;highlight(icon)使icon高亮顯示;de_highlight(icon)取消icon的高亮顯示。用戶動作標志符:~[X],在某個圖形對象上移動鼠標;£,按下鼠標;¢,釋放鼠標;!,使對象高亮顯示;-!,取消對象的高亮顯示Display,顯示圖形對象Erase,取消顯示對象。36UAN預定義的條件標志符(部分)while(condition)TASK當條件condition為真時,循環(huán)執(zhí)行任務TASK;if(condition)thenTASK如果條件condition滿足,則執(zhí)行任務TASK;iterationA*orA+表示迭代操作;waiting表示等待,可以等待一個條件滿足,也可以等待任務中的一個操作執(zhí)行。

37UAN模型的基本思想有了上面定義的符號,UAN采用一種表格結(jié)構(gòu)來表示任務,表格構(gòu)成:任務(task):任務名稱(thenameoftask)用戶行為界面反饋界面狀態(tài)38UAN模型的基本思想界面被分解成一些類似層次結(jié)構(gòu)的異步任務,每個任務的實現(xiàn)都用表格來描述,用戶動作的關(guān)聯(lián)性和時序關(guān)系由表格的行列對齊關(guān)系和從上到下、從左到右的閱讀順序來確定。39UAN實例-單通道交互任務:draganddropafiletotherecyclebin用戶行為界面反饋界面狀態(tài)mouse_down(x,y)

drag_icon(x,y)

mouse_up(x,y)thenhighlight(icon)show_outline(icon)thenhighlight(bin)

thenhide(icon)show_bin_full()ifintersect(icon,x,y)icon=selected

ifintersect(bin,x,y)

ifintersect(bin,x,y)40UAN實例-多通道交互任務:draganddropafiletotherecyclebin用戶行為界面反饋界面狀態(tài)2D鼠標語音thenhighlight(icon)

show_outline(icon)thenhighlight(bin)

thenhide(icon)show_bin_full()ifintersect(icon,x,y)icon=selected

ifintersect(bin,x,y)

ifintersect(bin,x2,y2)mouse_down(x,y)drag_icon(x,y)mouse_up(x,y)PronounceMove_to_recycle_bin41UAN總結(jié)UAN模型更接近于實現(xiàn),界面狀態(tài)和界面反饋用一般的程序語言描述,實現(xiàn)起來比較方便,當然這種描述由于接近于程序語言,因此設計時需要一定的編程基礎UAN模型在精確刻畫各成分之間的各種平行和串行的時序關(guān)系方面尚顯不足,任務之間的時序關(guān)系沒有明確表示出來,當所描述的界面使用多種輸入設備和有若干可選交互路徑時,比較繁瑣。42層次化的界面描述方法43G-U-L模型在結(jié)合了LOTOS后,整個行為模型變得更為完整,可以考慮將GOMS、UAN、LOTOS中模型結(jié)合為一個預測行為模型:G-U-L模型。G-U-L運用GOMS原理為基礎進行任務分解,建立基本的行為模型,原子操作由UAN模型描述,在此基礎上,運用LOTOS算符來表示任務目標之間的時序關(guān)系。44G-U-L模型在G-U-L模型中沒有加入規(guī)則,在表示目標之間的關(guān)系中也未考慮同步。這主要考慮到規(guī)則的轉(zhuǎn)換要涉及到推理、建立知識庫等問題,而同步的問題的描述和轉(zhuǎn)換也非常的復雜,這會在工作的初期造成非常大的困難。454.任務模型任務模型表示法(ConcurrentTaskTreeNotation,CTT),是一種基于圖形符號的,采用層次的樹狀結(jié)構(gòu)來組織并表示任務模型的方法介紹任務模型中任務種類和暫態(tài)關(guān)系的含義及其圖形符號:461)任務分析任務分析是一個以人們的行為為出發(fā)點的分析過程,它分析人們完成任務的方法:他們要做的事、要起作用的事和想要知道的事。任務分析一個重要方法是任務分解,即需要考察將一項任務分成若干子任務的途徑以及這些子任務執(zhí)行次序的方法471)任務分析任務分解使得任務的執(zhí)行過程層次化,即一個任務的執(zhí)行被委托給它下一層的子任務來完成這些子任務之間的關(guān)系及其執(zhí)行順序成為了解一個任務執(zhí)行過程的重點考慮一個用戶交互過程,對其進行任務分析的目的和重點在于得到交互任務及其子任務的一個層次體系,以及一些描述子任務執(zhí)行的順序和條件的解決方案。481)任務分析這個方案必須能夠恰當?shù)夭东@用戶的交互意圖,能夠如實地反映交互過程,并把它準確地表達出來同時它不能曲解交互過程蘊含的業(yè)務要求這樣一個層次體系以及方案就是一個任務模型表達越準確,由任務模型生成的用戶界面越能夠貼近實際的交互需求,符合一般的交互習慣,同時不會改變業(yè)務規(guī)則492)任務種類抽象任務(AbstractTask)用戶任務(UserTask)交互任務(InteractionTask)系統(tǒng)任務(ApplicationTask)502)任務種類抽象任務(AbstractTask),代表一個復雜抽象的任務,通常用來表示由其他種類的任務任意組合而成的任務用戶任務(UserTask),代表一個只能由用戶參與的任務,通常用來表示和用戶感知或者認知行為相關(guān)的任務。例如用戶閱讀系統(tǒng)的反饋的信息提示,決定下一步的操作512)任務種類交互任務(InteractionTask):代表執(zhí)行過程中需要用戶與系統(tǒng)進行交互的任務。例如用戶在線注冊填寫面板系統(tǒng)任務(ApplicationTask):代表由系統(tǒng)來執(zhí)行而不需要用戶參與交互的任務。例如,系統(tǒng)處理用戶提交的注冊信息,然后將處理結(jié)果顯示給用戶523)暫態(tài)關(guān)系符號在任務模型表示法定義了豐富的暫態(tài)關(guān)系,用以表示在執(zhí)行過程中任務之間的相互聯(lián)系和制約作用。這些關(guān)系都有相應的圖形符號:(1)Choice:t1[]t2[]…[]tn選一個且只能選一個執(zhí)行,且在執(zhí)行過程中,一旦選定了一個任務則其他任務將不能被執(zhí)行533)暫態(tài)關(guān)系符號(2)Concurrent(IndependentConcurrency):t1|||t2|||…|||tn任務可以并發(fā)的執(zhí)行,任務之間的執(zhí)行開始和結(jié)束沒有任何的限制(3)帶信息交換的Concurrent:t1|[]|t2|[]|…|[]|tn任務可并發(fā)執(zhí)行,允許任務間進行信息交換543)暫態(tài)關(guān)系符號(4)Disabling:t1[>t2一旦任務t2開始執(zhí)行,則中斷并終止任務t1的執(zhí)行(5)Enabling:t1>>t2>>…>>tn必須按照順序執(zhí)行,ti+1只有在ti已經(jīng)執(zhí)行完成后才能開始執(zhí)行553)暫態(tài)關(guān)系符號(6)帶信息交換的Enabling:t1[]>>t2[]>>…[]>>tn允許任務之間進行信息交換(7)Independence:t1|=|t2任務可以按任意順序執(zhí)行,但當一個開始執(zhí)行后,另一個任務則不能開始執(zhí)行,除非已經(jīng)開始的任務執(zhí)行完成564)單用戶任務模型單用戶任務模型在CTT中表示為一棵樹用戶使用自動取款機的任務模型574)單用戶任務模型每個節(jié)點代表一個任務,任務可以被分解成更為具體的子任務,并用該節(jié)點的子節(jié)點來表示。根節(jié)點代表的任務抽象層次最高,葉子節(jié)點代表的任務最為具體。584)單用戶任務模型擁有相同父節(jié)點的兄弟節(jié)點之間的關(guān)系由暫態(tài)關(guān)系符號來表示。暫態(tài)關(guān)系符號決定了兄弟任務在某個時刻的相互之間的制約關(guān)系,并且決定了這組任務所能有的執(zhí)行順序任務具有不同的種類,以區(qū)別不同任務執(zhí)行過程中參與的角色的不同,以及對交互要求的高低596.1.2結(jié)構(gòu)模型前面介紹了用任務分析或用戶行為的方法描述人機對話的過程本節(jié)主要介紹用結(jié)構(gòu)化的方法來描述人機交互的一般過程,簡單介紹形式化語言的描述—產(chǎn)生式規(guī)則,這種結(jié)構(gòu)的方法從理論上可以引導界面設計者及界面工具的設計者進行有效的設計重點討論狀態(tài)轉(zhuǎn)換網(wǎng)絡及其擴展方式它是一種圖示化的結(jié)構(gòu)601.產(chǎn)生式規(guī)則產(chǎn)生式規(guī)則-ProductionRule是一種形式化語言,這種結(jié)構(gòu)的方法從理論上可以引導界面設計者及界面工具的設計者進行有效的設計。

狀態(tài)轉(zhuǎn)換網(wǎng)絡-StateTransitNetwork用結(jié)構(gòu)化的方法來描述人機交互的一般過程,是一種圖示化的結(jié)構(gòu)611.產(chǎn)生式規(guī)則

產(chǎn)生式規(guī)則-ProductionRule,又稱為上下文無關(guān)文法,將人機交互對話看作是一種語言,運用基于語法的方法來描述交互對話。產(chǎn)生式規(guī)則是一種形式化語言,這些規(guī)則可用于描述人機交互界面。621.產(chǎn)生式規(guī)則

產(chǎn)生式規(guī)則的一般形式是:ifconditionthenaction這些規(guī)則可以表示為不同的形式,如condition→

actioncondition:action631.產(chǎn)生式規(guī)則所有的規(guī)則都是有效的,并且系統(tǒng)不斷用它來檢測用戶的輸入是否與這些條件相匹配。若匹配則激活相應的動作,這些動作可以是執(zhí)行應用程序的一個過程,也可以是直接改變某些系統(tǒng)狀態(tài)的值。641.產(chǎn)生式規(guī)則一般來說,組成界面描述的產(chǎn)生式規(guī)則很多,規(guī)則定義的順序并不重要,只要與規(guī)則中的條件相匹配,就可以激活相應的動作。產(chǎn)生式規(guī)則系統(tǒng)可以是事件引導的,也可以是狀態(tài)引導的,或者兩者都有。

651)事件引導的系統(tǒng)

Sel-line→start-line<highlight'line'>C-pointstart-line→rest-line<rubberbandon>C-pointrest-line→rest-line<drawline>D-pointrest-line→<drawline><rubberbandoff>產(chǎn)生式集合,實現(xiàn)用戶在屏幕上繪直線

66事件的主要類型

用戶事件(userevent),Sel-line表示從菜單中選擇line命令,C-point和D-point表示用戶在繪圖平面上單擊和雙擊鼠標

內(nèi)部事件,用于保持對話狀態(tài),如start-line表示開始畫線后的狀態(tài),rest-line表示選擇了第一個點之后的狀態(tài)。

系統(tǒng)響應事件,以尖括號表示可見或可聽的系統(tǒng)響應,如<highlight'line'>,把菜單項'line'高亮度顯示,<drawline>表示在屏幕上顯示直線,<rubberbandon>表示橡皮筋繪制方式打開,<rubberbandoff>表示橡皮筋繪制方式關(guān)閉。

67產(chǎn)生式規(guī)則的解釋在上面的產(chǎn)生式規(guī)則中,第一條規(guī)則表示選擇畫線命令后,系統(tǒng)狀態(tài)進入了開始畫線狀態(tài),接著把'line'菜單項高亮度顯示;第二條規(guī)則表示,用戶在開始畫線狀態(tài)時,在繪圖區(qū)域單擊鼠標則系統(tǒng)表示已定義了一個點,此時橡皮筋繪圖方式打開;第三條規(guī)則表示在定義了一個(或多個)點后,用戶單擊鼠標可以連續(xù)地定義點;第四條規(guī)則表示雙擊鼠標則結(jié)束畫線的交互過程。

68事件引導的系統(tǒng)對話控制由一塊系統(tǒng)內(nèi)存專門存放一系列的事件,如果來自用戶的事件與系統(tǒng)內(nèi)存中的內(nèi)部事件合并后與某條產(chǎn)生式規(guī)則匹配,則激活該條規(guī)則保存內(nèi)部事件序列構(gòu)造一個對話控制器,主要負責事件的產(chǎn)生和規(guī)則的匹配69對話控制對話控制主要負責事件的產(chǎn)生和規(guī)則的匹配,可以看到在每一時刻系統(tǒng)內(nèi)存中會保存一些內(nèi)部事件,當產(chǎn)生一個事件時,可能是用戶事件(如單擊鼠標),也可能是內(nèi)部事件(如時鐘事件等)。70對話控制對話控制就要將所有的產(chǎn)生式規(guī)則與事件集合進行匹配,這個過程是復雜的而且是耗時的,當產(chǎn)生式很多并且產(chǎn)生式規(guī)則的條件復雜時,匹配算法的效率就顯的更為重要,因此需要設計好的數(shù)據(jù)結(jié)構(gòu)和匹配算法來提高匹配規(guī)則的效率??梢詫⒁?guī)則和事件進行分組和分層。

712)狀態(tài)引導的系統(tǒng)

狀態(tài)引導的系統(tǒng)在系統(tǒng)內(nèi)存保存的不再是動態(tài)的隨時進出的事件,而是一些表示系統(tǒng)的當前狀態(tài)的屬性,這些屬性在不同的時刻有不同的值。72畫線操作在系統(tǒng)中的五個屬性Mouse:﹛mouse-null,select-line,click-point,double-click﹜Line-state:﹛menu,start-line,rest-line﹜Rubber-band:﹛rubber-band-on,rubber-band-off﹜Menu:﹛highlight-null,highlight-line,highlight-circle﹜Draw:﹛draw-nothing,draw-line﹜73對象的狀態(tài)第一個特征Mouse有4個不同的狀態(tài)mouse--null(鼠標空閑),select-line(選擇線命令),click-point(單擊鼠標),double-click(雙擊鼠標)當用戶對鼠標進行操作時Mouse自動設置成相應的狀態(tài);74對象的狀態(tài)第二個特征Line-state用于保持當前會話的狀態(tài),分別是menu(可選命令狀態(tài)),start-line(開始繪制線),rest-line(已經(jīng)定義點);75對象的狀態(tài)后三個屬性用于控制系統(tǒng)響應Rubber-band橡皮筋繪制的開和關(guān)狀態(tài),Menu表示任何項也沒有選中(highlight-null)、選中繪直線命令(highlight-line)或選中繪圓命令(highlight-circle)

Draw表示什么也不畫狀態(tài)(draw-nothing)或畫直線狀態(tài)(draw-line)顯示控制器根據(jù)上面狀態(tài)做出相應顯示控制76狀態(tài)引導的產(chǎn)生式規(guī)則(畫直線)Select-line→mouse-nullstart-linehighlight-lineClick-pointstart-line→mouse-nullrest-linerubber-band-onClick-pointrest-line→mouse-nulldraw-lineDouble-clickrest-line→mouse-nullmenudraw-linerubber-band-off77狀態(tài)引導的產(chǎn)生式規(guī)則的特點當產(chǎn)生式規(guī)則的條件和狀態(tài)匹配時將激活該產(chǎn)生式規(guī)則,對于某一特定的屬性,如果前面的狀態(tài)需要改變成新的狀態(tài)時才需要在產(chǎn)生規(guī)則的后面標注78狀態(tài)引導的產(chǎn)生式規(guī)則的特點例如,在第二條規(guī)則中,規(guī)則指定“Line-state”屬性應設置成“rest-line”,因為原來的“start-line”值將丟失而在第三條規(guī)則中,沒有提及"rest-line"值,因為它已默認,"Line-state"屬性的值繼續(xù)保留為"rest-line"。

79狀態(tài)引導的產(chǎn)生式規(guī)則的特點屬性的永久特性有時會引起一些奇怪錯誤因此在上述的規(guī)則集中,每一條產(chǎn)生式規(guī)則都要求將鼠標的狀態(tài)設置為"mouse-null",

否則,當用戶單擊了鼠標,激活了第二條規(guī)則,如果不立即將鼠標的屬性設置為"mouse-null",則會立即激活第三條規(guī)則,此時系統(tǒng)的狀態(tài)和第三條規(guī)則的條件是匹配的,并且會反復的一直執(zhí)行下去。803)混合引導系統(tǒng)

有的對話過程比較適合于事件引導方式,有的對話過程適合于狀態(tài)引導方式,當然也可以將兩者結(jié)合起來,例如采用下面的形式:

event:condition→action813)混合引導系統(tǒng)

描述一個產(chǎn)生式規(guī)則,事件用來計劃產(chǎn)生式規(guī)則,如果條件不滿足,即當前系統(tǒng)內(nèi)存中的狀態(tài)和產(chǎn)生式的規(guī)則不匹配,則無法激活規(guī)則,另外當狀態(tài)改變時,產(chǎn)生式規(guī)則中的action本身也可以產(chǎn)生新的事件,從而可以激活另一條規(guī)則。

82文本樣式

混合的事件/狀態(tài)產(chǎn)生式系統(tǒng)

Bold:﹛off,on﹜

Italic:﹛off,on﹜Underline:﹛off,on﹜

圖6-2粗體/斜體/下劃線對話框根據(jù)用戶點擊鼠標的位置不同,可能產(chǎn)生三個事件:select-bold,select-italic,select-under,該對話過程有下面六個產(chǎn)生式規(guī)則定義。

83混合的事件/狀態(tài)產(chǎn)生式系統(tǒng)select-bold:Bold=off→Bold=onselect-bold:Bold=on→Bold=offselect-italic:Italic=off→Italic=onselect-italic:Italic=on→Italic=offselect-under:Underline=off→Underline=onselect-under:Underline=on→Underline=off84產(chǎn)生式規(guī)則總結(jié)如果有n個轉(zhuǎn)換開關(guān),則會產(chǎn)生2n個規(guī)則產(chǎn)生式規(guī)則比較適合于描述并發(fā)的操作,而對于順序的對話就不太適合852.狀態(tài)轉(zhuǎn)換網(wǎng)絡狀態(tài)轉(zhuǎn)換網(wǎng)絡(STN)的基本思想是定義一個具有一定數(shù)量的狀態(tài)的轉(zhuǎn)換機,稱之為有限狀態(tài)機-FiniteStateMachine(FSM)FSM從外部世界中接收到事件,并能使FSM從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)。862.狀態(tài)轉(zhuǎn)換網(wǎng)絡這里介紹兩種最基本的狀態(tài)轉(zhuǎn)換網(wǎng)絡:傳統(tǒng)狀態(tài)轉(zhuǎn)換網(wǎng)絡(StateDiagrams)擴展狀態(tài)轉(zhuǎn)換網(wǎng)絡(StateCharts)后者是前者的一個擴展

871)傳統(tǒng)狀態(tài)轉(zhuǎn)換網(wǎng)絡狀態(tài)轉(zhuǎn)換網(wǎng)絡的主要組成部分是狀態(tài),以及代表狀態(tài)改變和轉(zhuǎn)換的箭頭,狀態(tài)轉(zhuǎn)換網(wǎng)絡實際上是一個有向圖,圖的節(jié)點代表狀態(tài),圖中的有向邊轉(zhuǎn)換代表一個狀態(tài)到另一個狀態(tài)的狀態(tài)可以定義為在給定時間、方法和行為的情況下,與用戶環(huán)境相關(guān)的一組環(huán)境變量或?qū)傩约?81)傳統(tǒng)狀態(tài)轉(zhuǎn)換網(wǎng)絡狀態(tài)轉(zhuǎn)換網(wǎng)絡則用于圖形化地顯示狀態(tài)以及任何時刻在狀態(tài)之間發(fā)生的交互源狀態(tài)目標狀態(tài)轉(zhuǎn)換891)傳統(tǒng)狀態(tài)轉(zhuǎn)換網(wǎng)絡當發(fā)生一個外部或內(nèi)部事件時,系統(tǒng)就會從一個狀態(tài)轉(zhuǎn)換到另外一個狀態(tài),這稱為狀態(tài)轉(zhuǎn)換。外部事件主要由用戶操作外部輸入設備來產(chǎn)生,內(nèi)部事件可以是系統(tǒng)產(chǎn)生的事件,如時鐘事件,也可以是為了改變系統(tǒng)的狀態(tài)和行為而產(chǎn)生的事件,如當一個任務完成后可以激活另一個任務等。90一個狀態(tài)轉(zhuǎn)換與一對狀態(tài)相關(guān)聯(lián)。一般的系統(tǒng)具有很多個狀態(tài),假設系統(tǒng)由n個狀態(tài)組成,狀態(tài)之間的轉(zhuǎn)換最多可能有n*(n-1)個。91帶條件的狀態(tài)轉(zhuǎn)換源狀態(tài)目標狀態(tài)條件動作92帶條件的狀態(tài)轉(zhuǎn)換

T2[C2]T1[C1]SE1E2S+C1S+C2E1E2T1T293帶條件的狀態(tài)轉(zhuǎn)換實例(基于鼠標的畫圖工具)drawcircle單擊在圓周上rubberband單擊在中心點highlight‘circle’選擇‘circle’Circle1MenuFinishCircle2drawline雙擊rubberband單擊在第一點highlight‘line’選擇‘line’Line1FinishLine294基于鼠標畫圖工具狀態(tài)轉(zhuǎn)換網(wǎng)95帶條件的狀態(tài)轉(zhuǎn)換實例(基于鼠標的畫圖工具)圖中是一個基于鼠標畫圖工具,圖中涉及到了狀態(tài)、轉(zhuǎn)換、條件、動作等元素。它有一個菜單(有兩個選項“circle”和“l(fā)ine”)和一個繪圖平面。若選擇“circle”則要求你確定兩個點:第一個點是圓心,第二個點表示圓周上的任意一點。第一個點確定后,系統(tǒng)就在圓心和當前鼠標位置之間畫一條“橡皮圈”線,第二個點確定后就畫出了一個圓。96傳統(tǒng)狀態(tài)轉(zhuǎn)換模型狀態(tài)轉(zhuǎn)換網(wǎng)絡比相應的文本解決方案更易于設計、理解、修改和文檔化,它給出了對行為的精確的、甚至是格式化的定義。97傳統(tǒng)狀態(tài)轉(zhuǎn)換模型存在著一定的局限性,一個最大的缺陷是需要定義出系統(tǒng)的所有狀態(tài),這對于小型的系統(tǒng)是沒有問題的,但是在一個較大的系統(tǒng)中,系統(tǒng)會很快崩潰,狀態(tài)的數(shù)目是呈指數(shù)級增長的,同時狀態(tài)的增長直接導致了狀態(tài)轉(zhuǎn)換網(wǎng)絡過于復雜、無法實際應用。98傳統(tǒng)狀態(tài)轉(zhuǎn)換模型為了解決狀態(tài)爆炸的問題,可以采用面向?qū)ο蠓椒▉頌槊總€類定義單獨的狀態(tài)轉(zhuǎn)換網(wǎng)絡。每個類都有一個簡單的、易于理解的狀態(tài)轉(zhuǎn)換網(wǎng)絡,這種方法很好地消除了狀態(tài)級數(shù)爆炸的問題992)擴展狀態(tài)轉(zhuǎn)換網(wǎng)絡

(1)層次狀態(tài)轉(zhuǎn)換網(wǎng)絡層次元素的使用不改變對話基本描述法功能,但它卻能簡單地說明一個大的復雜的系統(tǒng),從最高級的主菜單到擊鍵或擊鼠標這樣的小動作100分層的狀態(tài)圖實例101帶有幫助功能的狀態(tài)轉(zhuǎn)換按下HELP按鈕按下HELP按鈕從菜單出發(fā)drawcircle單擊在圓周上rubberband單擊在中心點Circle1FinishCircle2幫助子系統(tǒng)幫助子系統(tǒng)描述并發(fā)任務?102狀態(tài)轉(zhuǎn)換模型狀態(tài)的爆發(fā)式增長問題具有良好的描述串行和順序行為的能力,并發(fā)及其他行為的描述能力差雖然是一個結(jié)構(gòu)模型,但難以實現(xiàn)1036.1.3行為模型和結(jié)構(gòu)模型的轉(zhuǎn)換一般來說行為模型主要對設計起指導作用,在此基礎上,設計人員再進行結(jié)構(gòu)模型(如狀態(tài)轉(zhuǎn)換網(wǎng)絡等)的創(chuàng)建,這個過程很大程度上取決于設計人員的經(jīng)驗和對行為模型的理解。整體框架轉(zhuǎn)換算法1046.1.3行為模型和結(jié)構(gòu)模型的轉(zhuǎn)換

一般來說行為模型主要對設計起指導作用,在此基礎上,設計人員再進行結(jié)構(gòu)模型(如狀態(tài)轉(zhuǎn)換網(wǎng)絡等)的創(chuàng)建,這個過程很大程度上取決于設計人員的經(jīng)驗和對行為模型的理解.本節(jié)主要介紹一種從行為模型到結(jié)構(gòu)模型的一種轉(zhuǎn)換思想和算法,以實現(xiàn)兩種模型間的自動的轉(zhuǎn)化工作。

1051.基本的模型轉(zhuǎn)換整體框架

轉(zhuǎn)換算法

行為模型(G-U-L)

結(jié)構(gòu)模型StateChartsGOMSUANLOTOS約束規(guī)則用戶DomainExpertDesigner圖6-17模型轉(zhuǎn)換整體框架106模型轉(zhuǎn)換整體框架

整個框架分為三個部分:行為模型使用G-U-L模型,在這一層將產(chǎn)生一個基本的預測性的行為模型。

結(jié)構(gòu)模型采用層次狀態(tài)轉(zhuǎn)換網(wǎng)絡,它涉及到的元素有狀態(tài)、轉(zhuǎn)換、事件、層次結(jié)構(gòu)。不考慮狀態(tài)轉(zhuǎn)換網(wǎng)絡在轉(zhuǎn)換中條件和同步,可以簡化轉(zhuǎn)換工作。

107模型轉(zhuǎn)換整體框架

整個框架分為三個部分:用戶包含兩種用戶,領(lǐng)域?qū)<液驮O計者。G-U-L模型的創(chuàng)建主要是由領(lǐng)域?qū)<液驮O計者合作來完成的,然后通過模型轉(zhuǎn)換算法轉(zhuǎn)換成為結(jié)構(gòu)模型,最后提供給設計者使用。

1082.轉(zhuǎn)換算法

1)基本思想2)基本步驟3)實例應用1091)基本思想

采用G-U-L以層次化結(jié)構(gòu)對任務進行建模,包括目標(包括循環(huán)屬性)、行為、關(guān)系。狀態(tài)轉(zhuǎn)換網(wǎng)絡表示的是狀態(tài)之間的轉(zhuǎn)換,也采用層次化表示,涉及到的主要是狀態(tài)、轉(zhuǎn)換、事件和行為。1101)基本思想

在G-U-L中體現(xiàn)的層次關(guān)系轉(zhuǎn)換到狀態(tài)轉(zhuǎn)換網(wǎng)絡中也體現(xiàn)出層次的關(guān)系,G-U-L中的每個目標都對應一個狀態(tài)轉(zhuǎn)換網(wǎng)絡。如果一個目標下層有子目標,對子目標來說,它所對應的狀態(tài)網(wǎng)絡應該嵌套在上層目標對應的狀態(tài)網(wǎng)絡中。

1111)基本思想在產(chǎn)生的狀態(tài)轉(zhuǎn)換網(wǎng)絡中,有兩類事件起作用:一類是外部由用戶激活的事件,如“按下鼠標”

事件、“點擊鍵盤”

事件等;另一類是內(nèi)部由目標產(chǎn)生的內(nèi)部事件,這里只定義了“目標正常結(jié)束”,表示目標正常結(jié)束時產(chǎn)生的事件。1121)基本思想在進行從G-U-L到狀態(tài)的轉(zhuǎn)換時,這些事件只是形式上的一個定義,沒有具體的實現(xiàn)過程,如要在某一層出現(xiàn)的第i個外部事件用“外部事件i”來代替,而由某個目標Ti執(zhí)行時產(chǎn)生的內(nèi)部事件也僅僅用類似于“Ti正常結(jié)束事件”來表示1131)基本思想而具體的事件還需要由狀態(tài)網(wǎng)絡進行,系統(tǒng)實現(xiàn)時通過專門的事件管理器來定義和管理。

對G-U-L中的行為在轉(zhuǎn)換后就成為對應的狀態(tài)轉(zhuǎn)換網(wǎng)絡中的一個行為。114圖6-18事件產(chǎn)生過程G產(chǎn)生“G正常結(jié)束”事件S0……F圖6-18中描述了一個目標層次中產(chǎn)生事件的過程。1152)基本步驟對轉(zhuǎn)換后的數(shù)據(jù),存儲的是狀態(tài)轉(zhuǎn)換網(wǎng)絡中表示轉(zhuǎn)換的弧,如下圖所示:出發(fā)狀態(tài)目的狀態(tài)觸發(fā)事件父狀態(tài)行為1162)基本步驟其中的觸發(fā)事件就是觸發(fā)從出發(fā)狀態(tài)到目的狀態(tài)轉(zhuǎn)換的事件;父狀態(tài)表示的是當前弧所在狀態(tài)網(wǎng)絡的上層狀態(tài),可以是一個抽象出來的狀態(tài)名1172)基本步驟轉(zhuǎn)換基本步驟(1)讀取存儲G-U-L模型的數(shù)據(jù)文件,進行解析,定義一個數(shù)組stn用于存儲狀態(tài)網(wǎng)絡中的弧。獲取G-U-L模型中的最高目標,設為G0,然后調(diào)用(2)中的Translate函數(shù),在Translate執(zhí)行完畢后,stn中便存儲了轉(zhuǎn)換后的狀態(tài)網(wǎng)絡的數(shù)據(jù)。函數(shù)示意如下:1182)基本步驟main(){定義一個存儲弧的數(shù)組stn[]讀取G-U-L文件GOALG0<-GetSubGoal(null);//獲取在目標Translate(G0,&stn);//調(diào)用轉(zhuǎn)換函數(shù)}1192)基本步驟(2)對當前的目標進行處理,如果是原子目標,參考原子目標的UAN模型,創(chuàng)建其狀態(tài)轉(zhuǎn)換網(wǎng)絡。否則,獲得目標層次下的數(shù)據(jù),包括行為、關(guān)系算符及子目標名。通過關(guān)系符號來調(diào)用(3)中相應的關(guān)系轉(zhuǎn)換函數(shù),對所有的子目標進行遞歸調(diào)用。函數(shù)示意假如下: 1202)基本步驟Translate(目標G,存儲數(shù)組stn[]){獲得目標G的子目標subG[]switch(關(guān)系){case“[]”:選擇關(guān)系處理case“>>”:允許關(guān)系處理case“|||”:交替關(guān)系處理case“[>”:禁止關(guān)系處理}//對所有的子目標進行遞歸調(diào)用for(intI;I<subG.length;I++)Translate(subG[I],stn);} 1212)基本步驟(3)定義了G-U-L的各種關(guān)系向狀態(tài)網(wǎng)絡轉(zhuǎn)換的具體的實現(xiàn)函數(shù),實際就是生成狀態(tài)網(wǎng)絡中的弧,并進行存儲。各狀態(tài)網(wǎng)絡中都會有一個初始狀態(tài)S。在每個處理函數(shù)中,需要考慮目標具有循環(huán)屬性的情況,這在狀態(tài)轉(zhuǎn)換網(wǎng)絡中的體現(xiàn)是某個狀態(tài)通過一個事件激活以后能仍然返回到該狀態(tài)。如果要轉(zhuǎn)換到其他狀態(tài),還需要一個外部事件的作用。如對*G,如圖所示:1222)基本步驟帶有循環(huán)屬性的目標對應的狀態(tài)轉(zhuǎn)換圖G正常結(jié)束事件外部事件SU123G-U-L中各種約束關(guān)系對應的狀態(tài)轉(zhuǎn)換網(wǎng)絡

[](選擇choice):設目標G下的子目標關(guān)系為[](G0,G1),表示共有兩條路徑可以完成目標G。從初始狀態(tài)S0出發(fā),有兩條弧需要記錄,經(jīng)過“外部事件0”到S1的轉(zhuǎn)換及經(jīng)過“外部事件1”到S2的轉(zhuǎn)換,記錄格式如下:

124G-U-L中各種約束關(guān)系對應的狀態(tài)轉(zhuǎn)換網(wǎng)絡

[](選擇choice):S0S1外部事件0GNullS0S2外部事件1GNull125在狀態(tài)S1下,等待“G0正常結(jié)束事件”發(fā)生后被激活轉(zhuǎn)到S0,或在S2下,等待“G1正常結(jié)束事件”發(fā)生后被激活轉(zhuǎn)到S0也回到S狀態(tài),這兩條弧在返回S0后都將執(zhí)行動作“產(chǎn)生G正常結(jié)束事件”,并記錄下這兩條轉(zhuǎn)換的弧。每次重新回到S0都認為完成了目標G的一次執(zhí)行。126在下圖中考慮了存在目標循環(huán)的情況,即[](*G0,G1),需要記錄的弧也在圖中進行了反映,在后面介紹的關(guān)系中所涉及到的循環(huán)情況與此類似。選擇關(guān)系允許在一個層次下有多個目標同時存在,如[](G0,G1,……,Gn)。

127選擇”關(guān)系狀態(tài)網(wǎng)絡圖6-21a“選擇”關(guān)系狀態(tài)網(wǎng)絡G1正常結(jié)束事件G0正常結(jié)束事件外部事件1外部事件0S1S2S0產(chǎn)生G正常結(jié)束事件產(chǎn)生G正常結(jié)束事件128選擇”關(guān)系狀態(tài)網(wǎng)絡-考慮了存在目標循環(huán)的情況

圖6-21b帶循環(huán)的“選擇”關(guān)系狀態(tài)圖產(chǎn)生G正常結(jié)束事件G0正常結(jié)束事件S0外部事件1外部事件0G1正常結(jié)束事件產(chǎn)生G正常結(jié)束事件S2S1外部事件2129>>(允許Enabling):設目標G下的子目標關(guān)系為>>(G0,G1),在這種關(guān)系中完成目標G的路徑只有一條,當G0成功結(jié)束后才允許G1執(zhí)行,這是一個順序執(zhí)行的過程。在轉(zhuǎn)換成狀態(tài)轉(zhuǎn)換網(wǎng)絡后如下圖所示。

130圖6-22允許”關(guān)系狀態(tài)網(wǎng)絡G1正常結(jié)束事件G0正常結(jié)束事件外部事件S1S2S0產(chǎn)生G正常結(jié)束事件131從狀態(tài)S0在外部事件激發(fā)轉(zhuǎn)換至S1,在S1狀態(tài)等待“G0正常結(jié)束事件”發(fā)生后轉(zhuǎn)換至S2;然后在S2處等待“G1正常結(jié)束事件”轉(zhuǎn)換至S0,這樣表示目標G執(zhí)行完畢,同時發(fā)生動作“產(chǎn)生G正常結(jié)束事件”,處理轉(zhuǎn)換過程中存儲所有的弧。這種約束關(guān)系允許同一層次下有多個目標存在,如>>(G0,G1,……,Gn)允許,這些目標都是順序執(zhí)行。

132|||(交替Interleaving):設目標G下的子目標關(guān)系為|||(G0,G1),表示兩個目標之間一種任意的組合來執(zhí)行完成。在轉(zhuǎn)換到狀態(tài)網(wǎng)絡后,如圖6-23所示,有S0->S1->S4->S0和S0->S2->S3->S0兩條途徑可以完成目標G的一次執(zhí)行。

133圖6-23“交替”關(guān)系狀態(tài)網(wǎng)絡G0正常結(jié)束事件S2G1正常結(jié)束事件G0正常結(jié)束事件外部事件0S0S3’S4S1產(chǎn)生G正常結(jié)束事件產(chǎn)生G正常結(jié)束事件G01常結(jié)束事件外部事件1134從S0狀態(tài),如果產(chǎn)生“外部事件0”,依次等待“G0正常結(jié)束事件”、“G1正常結(jié)束事件”并最終回到S0狀態(tài),同理,若產(chǎn)生“外部事件1”,則會沿著另一條路徑回到S0。記錄下所有狀態(tài)轉(zhuǎn)換的弧。在有交替關(guān)系的層次中最多只允許有兩個狀態(tài)存在。

135[>(禁止Deactivation):設目標G下的子目標關(guān)系為[>(G0,G1),一旦G1任務被執(zhí)行,G0便無效(不活動)。這個關(guān)系在轉(zhuǎn)換到狀態(tài)網(wǎng)絡以后與前面不同的是,在狀態(tài)S2被“G1正常結(jié)束事件”激活以后,不會再回到S0,而是轉(zhuǎn)到了一個新的狀態(tài)F。在有禁止關(guān)系的層次中最多只允許有兩個目標狀態(tài)存在。一個典型的例子是G0=”運行”,G1=”退出”。在執(zhí)行退出以后整個程序結(jié)束,也就無法再回到運行狀態(tài)了。

136G0正常結(jié)束事件產(chǎn)生G正常結(jié)束事件G1正常結(jié)束事件外部事件0外部事件1S2S0F圖6-24“禁止”關(guān)系狀態(tài)網(wǎng)絡產(chǎn)生G正常結(jié)束事件S11373)實例應用

根據(jù)上面的轉(zhuǎn)換算法,在圖中給出了中國象棋的最高層目標、運行、走棋三個目標的狀態(tài)轉(zhuǎn)換網(wǎng)絡,它們之間通過事件的產(chǎn)生和激活完成其層次間的通信。其他目標的狀態(tài)網(wǎng)絡表示與這三個圖類似,在這里沒有列出.138運行正常結(jié)束事件外部事件1外部事件0退出正常結(jié)束事件S0S1S2F圖6-24a最高層目標狀態(tài)轉(zhuǎn)換網(wǎng)絡最高層目標

139運行

運行

產(chǎn)生運行正常結(jié)束事件產(chǎn)生運行正常結(jié)束事件打譜正常結(jié)束事件打譜正常結(jié)束事件S02外部事件1打譜正常結(jié)束事件走棋正常結(jié)束事件外部事件0S00S03S04S01圖6-24b“運行”目標狀態(tài)轉(zhuǎn)換網(wǎng)絡140走棋

圖6-24c“走棋”目標狀態(tài)轉(zhuǎn)換網(wǎng)絡走棋

對弈方走正常結(jié)束事件產(chǎn)生走棋正常結(jié)束事件當前方走正常結(jié)束事件外部事件S001S002S0001416.1人機交互界面表示模型

6.1.4表現(xiàn)模型表現(xiàn)模型(PM)描述了用戶界面的表現(xiàn)形式,由層次性的交互對象組成。邏輯組織結(jié)構(gòu)面板內(nèi)部的事件分發(fā)及響應方式面板間關(guān)系1421.邏輯組織結(jié)構(gòu)在一個填表用戶界面中,可以有很多面板,這些面板以鏈表的形式組織每個面板或是嵌套面板,或是包含很多界面元素,這就形成了森林的結(jié)構(gòu)。根:整個面板對象;中間節(jié)點:嵌套的容器對象;葉:單位界面元素對象143面板用戶界面的圖形顯示面板用戶界面的數(shù)據(jù)結(jié)構(gòu)表示面板用戶界面的繪制面板用戶界面的邏輯組織結(jié)構(gòu)1442.面板內(nèi)部的事件分發(fā)及響應方式控制面板用戶界面交互的核心模塊可以看作是一個事件處理中心,事件處理中心接收并解析用戶動作,然后將結(jié)果表現(xiàn)給用戶。145事件處理中心對事件的響應的實現(xiàn)1463.面板間的關(guān)系JacobEisenstein創(chuàng)立了兩種新的抽象描述來描述基于面板的用戶界面表現(xiàn)模型。147面板關(guān)系分類面板種類1486.2界面描述語言界面描述語言一般分為兩類:命令式語言(ImperativeLanguage)陳述式語言(DeclarativeLanguage)。1496.2界面描述語言命令式語言要求編程人員明確的指定如何執(zhí)行任務陳述性語言要求編程人員只需指定任務要做什么陳述性語言要比命令式的語言更為抽象。下面介紹幾種常見的陳述性語言。1501.用戶界面標記語言(UIML)語言的基本表示結(jié)構(gòu)1512.擴展界面標記語言(XIML)XIML由組件(Components)、關(guān)系(Relations)和屬性(Attributes)三部分構(gòu)成。152XIML語言的基本表示結(jié)構(gòu)1533.XML用戶界面語言XULXUL提供了創(chuàng)建現(xiàn)代圖形界面大多數(shù)元素的能力。能夠滿足特定設備的普遍需求,對開發(fā)者來說,也已經(jīng)足夠強大,能夠創(chuàng)建復雜的界面。1546.3窗口系統(tǒng)

6.3.1窗口系統(tǒng)結(jié)構(gòu)窗口系統(tǒng)一般有三種結(jié)構(gòu):在各個應用程序內(nèi)部實現(xiàn)和管理多任務在操作系統(tǒng)核心集中處理多任務管理多任務的管理可由獨立的管理程序進行管理,應用程序通過調(diào)用該管理程序提供的接口來實現(xiàn)對多任務的管理和設備的獨立性操作1556.3.2交互事件處理應用程序內(nèi)部事件處理循環(huán)1562.事件注冊方式系統(tǒng)為每一個應用程序建立一個事件處理中心,事件處理中心負責事件的處理157事件注冊方式處理流程圖1586.3.3交互組件開發(fā)包一般的窗口系統(tǒng),輸入和顯示是分離的,許多語言提供了用于開發(fā)交互系統(tǒng)的開發(fā)軟件包,交互系統(tǒng)開發(fā)軟件包在支持窗口管理的基礎上增加了另一種抽象,它把輸入和輸出的行為結(jié)合起來。159按鈕交互對象行為1606.3.4交互框架交互系統(tǒng)在一般桌面應用中,主要有兩種交互方式:桌面方式瀏覽器方式161桌面應用框架162下拉菜單示例工具欄示例163樹形菜單示例164狀態(tài)欄示例165標簽頁方式工作區(qū)示例1666.3.5MVC模式和基于Struts的實現(xiàn)

1.MVC模型MVC最初是在Smalltalk-80中被用來構(gòu)建用戶界面的,是目前廣泛流行的一種軟件設計模式。在J2EE應用體系結(jié)構(gòu)中,MVC主要適用于交互式的Web應用,尤其存在大量頁面及多次客戶訪問及數(shù)據(jù)顯示167MVC模型1686.3.5MVC模式和基于Struts的實現(xiàn)

1.MVC模型MVC把一個應用的輸入、處理、輸出流程按照模型(model)、視圖(View)和控制(Controller)的方式進行分離,形成模型層、視圖層、控制層三個層次。視圖模型控制1691.MVC模型-視圖視圖代表用戶交互界面,對于Web應用來說,可以概括為HTML界面,也有可能為XHTML、XML和Applet一個應用可能有很多不同的視圖,MVC設計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,不包括在視圖上的業(yè)務流程的處理(交給模型處理)1701.MVC模型-視圖實例:一個訂單的視圖,只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型1711.MVC模型-模型模型負責業(yè)務流程/狀態(tài)的處理以及業(yè)務規(guī)則的制定。模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務模型的設計可以說是MVC最主要的核心,包含完成任務所需的所有的行為和數(shù)據(jù)1721.MVC模型-控制器控制器將模型映射到界面中。用于處理用戶的輸入,每個界面一個控制器是一個接收用戶輸入、創(chuàng)建或修改適當?shù)哪P蛯ο蟛⑿薷脑诮缑嬷畜w現(xiàn)出來的狀態(tài)機。也可以創(chuàng)建其他界面和控制器。決定那些界面和模型組件在某個給定的時刻應該是活動的,負責接收和處理用戶的輸入,來自用戶輸入的任何變化都被從控制器送到模型1731.MVC模型-優(yōu)點可以為一個模型在運行時同時建立和使用多個視圖視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據(jù)需求動態(tài)打開或關(guān)閉、甚至在運行期間進行對象替換模型可移植性,因為模型是獨立于視圖的,可以把一個模型獨立地移植到新的平臺工作1741.MVC模型-缺點嚴格遵循MVC,使模型、視圖與控制器分離,會增加結(jié)構(gòu)的復雜性,并可能產(chǎn)生過多的更新操作,降低運行效率視圖與控制器既相互分離但又過于緊密鏈接,視圖若沒有控制器的存在,其應用是很有限的視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)175Struts結(jié)構(gòu)Struts的體系結(jié)構(gòu)實現(xiàn)了MVC模式的概念,它將這些概念映射到Web應用程序的組件和概念中176

Struts結(jié)構(gòu)177struts演示的基本構(gòu)架和數(shù)據(jù)流程178UIMS(UserInterfaceManagementSystems)支持用戶界面的表示、設計、實現(xiàn)、執(zhí)行、評估和維護,能夠為用戶提供一致的人機界面,以極其友好的方式與用戶進行人機交互,并能使開發(fā)者幾乎隨心所欲地使用此開發(fā)工具進行軟件開發(fā)。6.4用戶界面管理系統(tǒng)UIMS1796.4用戶界面管理系統(tǒng)軟件包功能有限,開發(fā)費用高,對非程序員使用困難。比軟件包更高層次的是用戶界面管理系統(tǒng)(UIMS:UserInterfaceManagement)UIMS支持用戶界面的表示、設計、實現(xiàn)、執(zhí)行、評估和維護,能夠為用戶提供一致的人機界面,以極其友好的方式與用戶進行人機交互,并能使開發(fā)者幾乎隨心所欲使用開發(fā)工具進行軟件開發(fā)1806.4用戶界面管理系統(tǒng)軟件包功能有限,開發(fā)費用高,對非程序員使用困難。比軟件包更高層次的是用戶界面管理系統(tǒng)(UIMS:UserInterfaceManagement)UIMS支持用戶界面的表示、設計、實現(xiàn)、執(zhí)行、評估和維護,能夠為用戶提供一致的人機界面,以極其友好的方式與用戶進行人機交互,并能使開發(fā)者幾乎隨心所欲使用開發(fā)工具進行軟件開發(fā)1816.4.1對話獨立性對話的獨立性是人機交互研究領(lǐng)域的主要問題,主要是強調(diào)業(yè)務(應用程序的語義)與提供給用戶的界面的分離。對話的獨立性有許多優(yōu)點:可移植性:應用程序可用于不同的系統(tǒng)可重用性:對話獨立性界面的多樣性:同一應用,不同

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論