專利名稱:具有推測執(zhí)行的預(yù)測性圖形用戶界面的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖形用戶界面的運行。
背景技術(shù):
應(yīng)用軟件在計算機系統(tǒng)上的高效運行通常非常依賴于提供圖形用戶界面(下文稱為“GUI代碼”)的程序代碼的運行效率。許多應(yīng)用軟件以下述方式運行,即,GUI保持空閑,直到計算機用戶經(jīng)由GUI提供輸入。GUI代碼對用戶輸入做出響應(yīng),用戶輸入需要GUI的改變以達成這種改變。GUI代碼執(zhí)行該改變所需的處理時間量將取決于用戶所請求的動作。例如,在字處理應(yīng)用中,用戶在文本輸入期間按下字母數(shù)字鍵將需要最小量的處理能力來達成GUI的改變。另一方面,選擇選項來顯示文件菜單將需要GUI代碼分配GUI資源來顯示彈出式菜單;將所有條目放入菜單;并隨后顯示菜單。這類操作以及其它更為復(fù)雜的GUI操作可能導(dǎo)致用戶輸入和呈現(xiàn)給用戶的GUI的改變之間可察覺到的時滯。將需要減小這樣的時滯。
發(fā)明內(nèi)容
因此,在本發(fā)明的第一方案中,提供了一種運行具有圖形用戶界面(GUI)的應(yīng)用程序的方法,該方法包括下述步驟預(yù)測對GUI的下一用戶輸入;在接收下一用戶輸入之前,執(zhí)行提供所預(yù)測的用戶輸入需要的GUI功能的GUI代碼的預(yù)備部分;以及判定所預(yù)測的用戶輸入是否對應(yīng)于實際的下一用戶輸入,并且在肯定性判定時處理所述GUI代碼的啟動部分以完成所需的GUI功能。
用于每個GUI功能的GUI代碼邏輯上被劃分為預(yù)備模塊和啟動模塊。預(yù)備模塊包括下述代碼,所述代碼在被執(zhí)行時對用戶數(shù)據(jù)沒有副作用,并且沒有其已被執(zhí)行的可見線索(即,在GUI中可見)。啟動模塊包括下述代碼,所述代碼在被執(zhí)行時執(zhí)行完成所需GUI功能需要的所有步驟,包括對GUI進行視覺改變。
這樣,利用本發(fā)明,對可能的下一用戶輸入進行了預(yù)測,并且與所預(yù)測的用戶輸入相關(guān)聯(lián)的GUI代碼的預(yù)備模塊被執(zhí)行。如果下一用戶輸入如所預(yù)測的那樣,則在改變GUI的過程中用戶可察覺到的延遲被減少了執(zhí)行預(yù)備模塊所占用的時間量。
可以以多種不同方式來進行預(yù)測。一種技術(shù)包括維護不同的GUI狀態(tài)處的用戶輸入的記錄。所述預(yù)測隨后基于特定狀態(tài)處的最常見的下一用戶輸入。例如,如果在GUI“文件菜單”上用戶曾經(jīng)僅僅選擇幾個可用選項,并且其中一個選項比其它選項被更為頻繁地選擇過,則該預(yù)測將包括選擇與所述被更為頻繁地選擇過的選項相關(guān)聯(lián)的用戶輸入。因此該技術(shù)可以被看作基于長期的用戶輸入統(tǒng)計。在下面的說明中,該技術(shù)被稱為“足跡(Footprint)”。
另一種基于短期統(tǒng)計的技術(shù)可以和上述技術(shù)結(jié)合使用。該短期預(yù)測方法更依賴于對緊接在所等待的用戶輸入之前的用戶輸入的分析。因此,例如,如果用戶想要移動到字處理文檔的頂部,則他/她可以通過多次按下向上箭頭來實現(xiàn)這個操作。在這個用戶輸入的向上箭頭序列中的某一點處,基于短期統(tǒng)計的預(yù)測將預(yù)測下一輸入是向上箭頭,而基于長期統(tǒng)計的預(yù)測可能預(yù)測下一用戶輸入是除了按下向上箭頭鍵之外的其它操作,例如是按下空格鍵的操作。因此,與長期的技術(shù)相比,該短期的技術(shù)可以得到更為準確的預(yù)測。在下面的說明中,該短期的技術(shù)被稱為“嗅覺(Scent)”。
下面通過示例并參考附圖詳細描述了本發(fā)明的實施例,附圖中圖1示出了可以實現(xiàn)本發(fā)明的數(shù)據(jù)處理設(shè)備;圖2是指示示例性GUI狀態(tài)之間的轉(zhuǎn)換的圖表;
圖3是示出了在根據(jù)本發(fā)明優(yōu)選實施例的方法中所包括的步驟的流程圖;圖4是示出了本發(fā)明實施例的預(yù)測技術(shù)中所包括的步驟的流程圖;圖5是示出了根據(jù)本發(fā)明實施例更新用戶輸入記錄過程中所包括的步驟的流程圖;圖6是根據(jù)本發(fā)明實施例的足跡和嗅覺計數(shù)器更新的示意性示圖。
具體實施例方式
圖1是適于實現(xiàn)本發(fā)明的計算機系統(tǒng)10的示意性示圖。系統(tǒng)10包括處理功能20、存儲器30和顯示器40。存儲器由易失性存儲設(shè)備(例如,RAM)和非易失性存儲設(shè)備(例如,盤存儲設(shè)備)組成。操作系統(tǒng)50和應(yīng)用60、70軟件通常存儲在非易失性存儲設(shè)備中,并且按需傳送到易失性存儲設(shè)備以由處理功能執(zhí)行。在典型的個人計算機中,操作系統(tǒng)可以是Windows XP或類似系統(tǒng)、Linux、MacOS或者其它適當(dāng)?shù)能浖?。典型個人計算機系統(tǒng)上的應(yīng)用軟件將幾乎總是包括字處理軟件,例如,MicrosoftWord。
應(yīng)用軟件60包括圖形用戶界面(GUI)代碼64,GUI代碼64與操作系統(tǒng)代碼交互以向軟件用戶提供GUI功能。例如,在字處理程序包的情形中,當(dāng)用戶通過移動鼠標并點擊鼠標左鍵從應(yīng)用的工具欄選擇“文件”選項時,這些用戶動作被操作系統(tǒng)檢測和解釋。操作系統(tǒng)代碼調(diào)用字處理軟件中的GUI代碼所提供的功能來引起文件菜單被創(chuàng)建并被顯示在計算機顯示器上。執(zhí)行GUI代碼以引起菜單的顯示將產(chǎn)生下述延遲,所述延遲是當(dāng)用戶點擊鼠標按鍵的時刻和顯示菜單選項的時刻之間的延遲。在該簡單示例中,時間延遲很短,因而可能不會被用戶察覺到。然而,其它更為復(fù)雜的GUI功能將需要更長時間來執(zhí)行,因而用戶在等待經(jīng)由GUI而與應(yīng)用的連續(xù)交互的時候由于延遲而感覺到不方便。
根據(jù)優(yōu)選實施例,通過對下一個可能的用戶輸入進行預(yù)測并且預(yù)處理提供所需GUI功能的部分GUI代碼,該延遲可以被降低。如果預(yù)測正確,則執(zhí)行GUI代碼的其它部分,并且完成GUI功能。該預(yù)測被與GUI代碼64交互的預(yù)測代碼62執(zhí)行。預(yù)測代碼還提供對在進行預(yù)測的過程中使用的用戶輸入事件記錄的維護和更新。這些記錄可以被方便地存儲在計算機系統(tǒng)10內(nèi)的非易失性存儲設(shè)備30中。
為了有助于理解所述實施例的操作,將計算機程序提供的GUI視為一系列狀態(tài)是有幫助的。圖2示出了一系列GUI狀態(tài)以及引起從一個狀態(tài)到另一狀態(tài)的轉(zhuǎn)換的用戶輸入,例如移動鼠標、按下鍵、點擊菜單項等。執(zhí)行諸如顯示菜單的功能的GUI代碼模塊與到GUI狀態(tài)的轉(zhuǎn)換相關(guān)聯(lián)。
根據(jù)優(yōu)選實施例,這些GUI功能的每個被分成兩個代碼模塊預(yù)備模塊和啟動模塊。圖1示出了多個GUI功能1、2、…N的示圖,每個GUI功能具有預(yù)備模塊和啟動模塊,即,P1,A1;P2,A2;…PN,AN。執(zhí)行功能包括執(zhí)行預(yù)備模塊,隨后執(zhí)行啟動模塊。根據(jù)實施例,所執(zhí)行的預(yù)備模塊代碼對用戶數(shù)據(jù)沒有副作用,并且沒有任何其已被執(zhí)行的可見線索。例如,在“顯示“文件”菜單”的預(yù)備模塊中,可以分配GUI資源來顯示彈出式菜單以及被放入菜單的所有條目。然而,該菜單將不被顯示。在啟動模塊中,執(zhí)行與移動到那個狀態(tài)相關(guān)聯(lián)的所有副作用,包括修改用戶數(shù)據(jù)和對GUI的視覺改變。在“顯示“文件”菜單”的啟動模塊中,在預(yù)備模塊中生成的彈出式菜單被顯示。
該過程在圖3的流程圖中示出。在“開始”100處,GUI可以被認為已經(jīng)完成了先前用戶啟動的GUI功能。在步驟110處,對下一用戶輸入進行預(yù)測。如所指示的那樣,該預(yù)測包括執(zhí)行多個步驟,其細節(jié)將在下文參考圖4和圖6來描述。一旦已經(jīng)做出了預(yù)測,則執(zhí)行與所預(yù)測的用戶事件相關(guān)聯(lián)的預(yù)備模塊,并且將結(jié)果存儲在非易失性存儲器中。響應(yīng)于在步驟130處接收到下一用戶輸入(這可能在對預(yù)備代碼的執(zhí)行完成時或尚未完成時發(fā)生),在步驟140中,根據(jù)圖5和圖6中列出的過程(其細節(jié)也將在下文描述),與實際用戶事件相關(guān)聯(lián)的計數(shù)器被更新。在步驟150中對實際用戶輸入是否對應(yīng)于所預(yù)測的用戶輸入做出判定。如果不是,則預(yù)備代碼的執(zhí)行結(jié)果被丟棄,例如存儲器資源被釋放。隨后在步驟165處執(zhí)行用于實際事件的預(yù)備和啟動代碼模塊以完成相關(guān)的GUI功能。
如果實際用戶輸入與所預(yù)測的輸入相同,則在步驟170處執(zhí)行用于所需GUI功能的啟動代碼模塊,并且在步驟180處完成所述GUI功能。隨后,該過程通常將返回步驟110以預(yù)測下一用戶輸入。然而,如果最后的用戶輸入使得應(yīng)用終止,則該過程將在步驟190處結(jié)束。
這樣,在用戶與應(yīng)用程序的交互期間,對可能的下一用戶輸入做出預(yù)測。一旦該預(yù)測被做出,就使用處理功能的空閑時間來執(zhí)行與所預(yù)測的用戶輸入相關(guān)聯(lián)的GUI代碼的預(yù)備模塊。當(dāng)用戶提供下一輸入并且它如所預(yù)測的那樣時,僅需要執(zhí)行啟動模塊。如果執(zhí)行預(yù)備模塊需要“n”毫秒且執(zhí)行啟動模塊需要“n”毫秒,則從用戶的角度來看,該動作所需的時間是過去的一半。
現(xiàn)在參考圖4來描述示例性預(yù)測技術(shù)的細節(jié)。為了預(yù)測用戶將要做出的輸入,需要判定執(zhí)行特定轉(zhuǎn)換的可能性。在優(yōu)選實施例中,這是使用被稱為“足跡”和“嗅覺”的技術(shù)來實現(xiàn)的。取決于所使用的具體軟件應(yīng)用,這些技術(shù)可以獨立使用也可以方便地結(jié)合使用。
“足跡”通過在每個轉(zhuǎn)換上具有整數(shù)計數(shù)器而工作,在下面的說明中,足跡計數(shù)器被一般地表示為CF,并且對于每個用戶事件被表示為CF(事件)。每次進行轉(zhuǎn)換,與實際用戶輸入相關(guān)聯(lián)的計數(shù)器CF就增加1。隨著應(yīng)用被使用,將基于已踩出路徑的足跡次數(shù)而形成圖案。因此基于足跡計數(shù)器的預(yù)測是基于與特定應(yīng)用的用戶交互的長期歷史的。
“嗅覺”與足跡類似。但它是短期統(tǒng)計。在下面的說明中,嗅覺計數(shù)器被一般地表示為CS,并且對于每個用戶事件被表示為CS(事件)。概況地說,該技術(shù)的實用性可以參考下面的示例來理解。采用用戶輸入文本數(shù)據(jù)到字處理文檔中的示例,并且其中每次擊鍵是一個事件,足跡將認為最可能的下一用戶輸入將是按下空格鍵?;谶@種預(yù)測的優(yōu)先處理一般會證明是高效的。然而,可以設(shè)想基于足跡的預(yù)測沒能提供改良的情形。例如對于用戶通過多次按下向上箭頭想要滾動到文檔頂部的情形。如先前的示例中那樣,足跡記錄指示下一最可能的用戶輸入是按下空格鍵。即使在每次向上箭頭鍵被按下時與按下向上箭頭相關(guān)聯(lián)的計數(shù)器增加1,也可能是下述的情形,即,即使到達文檔的頂部,關(guān)于向上箭頭的足跡也不會與關(guān)于空格鍵的足跡一樣多。因此,每個預(yù)測將是不正確的,因而不會給用戶提供益處。
為了應(yīng)對這一可能性,提供了“嗅覺”技術(shù)。嗅覺類似于足跡,其值在發(fā)生每次用戶事件時增加,但是嗅覺隨著時間而消失(該值周期性遞減)。弱嗅覺被認為比強足跡作用更大,因此用戶遵循所嗅出的路徑的可能性會比遵循足跡獲得的路徑的可能性更高。因此,每次按下向上箭頭時,沿著該路徑的嗅覺增加,并且預(yù)測將趨向于用戶再次按下向上箭頭而非空格鍵。一旦用戶已經(jīng)完成了按下向上箭頭,則嗅覺將慢慢減少,并且空格鍵將是最可能要被按下的鍵。對嗅覺與足跡的相對重要性的判定將需要針對具體應(yīng)用來調(diào)整。
現(xiàn)在將參考圖4和圖6來描述基于嗅覺和足跡的預(yù)測技術(shù)(圖3中的步驟110)的具體實施例。預(yù)測開始于步驟110a。在步驟110b處,對CS的最高值做出判定。在圖6給出的示例中(其示出了兩個可能的用戶事件A和B),狀態(tài)200中示出的CS的最高值與事件A相關(guān)聯(lián)。該值在圖4的步驟110c中與CS的閾值相比較。在本示例中,該閾值被設(shè)置為值4。當(dāng)CS(A)小于4時,在步驟110d中基于具有最高CF的事件(其在狀態(tài)200中是事件B)來做出預(yù)測。該過程在步驟110f處結(jié)束。然而,如果CS大于或等于閾值(例如,象處于圖6的狀態(tài)210中那樣),則基于具有CS的最大值的事件來做出預(yù)測。
因此,預(yù)測基于嗅覺和足跡計數(shù)器的值。每個事件的CS和CF值根據(jù)圖5中闡述的方法而進行更新。圖6更詳細地示出了在特定示例中這些值是如何改變的。圖5的方法開始于步驟140a。當(dāng)接收到用戶輸入時,用于實際事件的CF值遞增。在步驟140c處,對先前的預(yù)測是否是基于CS值做出判定。如果不是(即,預(yù)測基于CF),則在步驟140d對實際用戶事件是否對應(yīng)于所預(yù)測的事件做出判定。如果不是,則用于實際事件的CS遞增,并且過程在步驟140j處結(jié)束。然而,如果基于CF的所預(yù)測事件與實際事件相同,則所有大于零的CS值遞減,并且過程隨后在步驟140j處結(jié)束。如果在步驟140c處判定先前的預(yù)測是基于CS的,則在步驟140g處對實際用戶事件是否對應(yīng)于所預(yù)測的事件做出判定。如果是,則用于實際事件的CS遞增,并且過程在140j處結(jié)束。如果不是,則用于所預(yù)測事件的CS遞減,并且用于實際事件的CS增加。
將參考圖6中示出的示例來了解該方案的優(yōu)點,圖6中每個框表示一個GUI狀態(tài)。每個框中包含了用于兩個用戶事件A和B的嗅覺和足跡計數(shù)器值。當(dāng)然將會了解,在實際應(yīng)用中,可能在每個GUI狀態(tài)處可以有更多的用戶輸入,并且這些用戶輸入可以從一個狀態(tài)到下一狀態(tài)時進行改變。
在“開始”狀態(tài)200中,計數(shù)器值如所示的那樣。根據(jù)圖4中闡述的步驟,做出基于足跡的預(yù)測下一用戶輸入將是B。然而,在本示例中,下一用戶輸入實際是A。因此,根據(jù)圖5中闡述的方法,CF(A)和CS(A)都遞增。用于事件B的計數(shù)器不變。這在狀態(tài)210處描述。
根據(jù)圖4再次做出預(yù)測。在該情形中,CS(A)大于閾值4,因此做出基于嗅覺的預(yù)測下一用戶事件將是A。在本示例中,下一用戶事件就是A。因此,根據(jù)圖5中闡述的方法,CF(A)和CS(A)都遞增。用于事件B的計數(shù)器不變。這在狀態(tài)220處描述。
根據(jù)圖4再次做出預(yù)測。在該情形中,CS(A)等于閾值4,因此做出基于嗅覺的預(yù)測下一用戶事件將是A。在本示例中,下一用戶事件實際是B。因此,根據(jù)圖5中闡述的方法,CF(B)和CS(B)都遞增而CS(A)遞減。這在狀態(tài)230處描述。
根據(jù)圖4再次做出預(yù)測。在該情形中,CS(A)等于閾值4,因此做出基于嗅覺的預(yù)測下一用戶事件將是A。在本示例中,下一用戶事件實際是B。因此,根據(jù)圖5中闡述的方法,CF(B)和CS(B)都遞增而CS(A)遞減。因此,與事件A相關(guān)聯(lián)的嗅覺遞減而與事件B相關(guān)聯(lián)的嗅覺遞增。這在狀態(tài)240處描述。
根據(jù)圖4再次做出預(yù)測。在該情形中,CS(A)小于閾值4,因此做出基于足跡的預(yù)測下一用戶事件將是B。在本示例中,下一用戶事件就是B。因此,根據(jù)圖5中闡述的方法,CF(B)遞增而CS(B)和CS(A)都遞減。因此,由于預(yù)測基于長期統(tǒng)計,所以與事件A和B相關(guān)聯(lián)的嗅覺都遞減。這在狀態(tài)250處描述。
可以設(shè)想替代性實施例。當(dāng)做出預(yù)測時,可能是下述情形很可能要遵循若干路徑(例如,預(yù)測方法可能包括對用于若干可能事件的CF值非常相似的判定)。如果處理功能的能力足夠,則可以執(zhí)行用于那些功能中的每個功能的預(yù)備代碼。當(dāng)最終知曉了轉(zhuǎn)換時,通過解放差的預(yù)測的預(yù)備代碼擁有的任何資源,所述差的預(yù)測可以變好。例如,如果做出用戶可能點擊文件菜單的預(yù)測,但是用戶并沒有點擊,則會釋放所分配的GUI菜單資源。
此外,如果存在大量空閑的處理周期,則預(yù)測技術(shù)可以包括預(yù)測可能的用戶事件序列。例如,如果用戶點擊“文件”菜單,則可以預(yù)測用戶將繼續(xù)點擊“打印”隨后是“OK”。在這種情況下,可以在確認第一預(yù)測之前執(zhí)行用于兩個事件的預(yù)備模塊。再一次地,將需要如前所述那樣清除差的預(yù)測。
取決于不同的應(yīng)用以及用戶的需求,預(yù)測技術(shù)中采用的狀態(tài)和事件的粒度將會不同。例如,對于點擊按鈕和菜單項是僅有的用戶事件的情形,可以使用粗粒度,而對于使用諸如向北移動鼠標指針的用戶事件來預(yù)測用戶正向菜單欄前進的情形,可以使用較精細的粒度。
權(quán)利要求
1.一種運行具有圖形用戶界面的應(yīng)用程序的方法,該方法包括下述步驟預(yù)測對圖形用戶界面的下一用戶輸入;在接收到下一用戶輸入之前,執(zhí)行提供所預(yù)測的用戶輸入需要的圖形用戶界面功能的圖形用戶界面代碼的預(yù)備部分;以及判定所預(yù)測的用戶輸入是否對應(yīng)于實際的下一用戶輸入,并且在肯定性判定后,處理所述圖形用戶界面代碼的啟動部分以完成所需的圖形用戶界面功能。
2.如權(quán)利要求1所述的方法,還包括下述步驟維護對圖形用戶界面的用戶輸入的歷史;其中預(yù)測特定圖形用戶界面狀態(tài)處的下一用戶輸入的步驟基于對在所述特定圖形用戶界面狀態(tài)處的先前用戶輸入的歷史的分析。
3.如權(quán)利要求1所述的方法,還包括下述步驟維護每個圖形用戶界面狀態(tài)處的對圖形用戶界面的用戶輸入的歷史,所述預(yù)測特定圖形用戶界面狀態(tài)處的下一用戶輸入的步驟包括判定所述預(yù)測是基于所維護的歷史還是基于對圖形用戶界面的最近用戶輸入記錄的步驟。
4.如權(quán)利要求1或2所述的方法,其中所述預(yù)測步驟包括預(yù)測潛在的用戶輸入序列,并且所述執(zhí)行步驟包括執(zhí)行用于所預(yù)測序列的用戶輸入的每一個的圖形用戶界面代碼的預(yù)備部分。
5.如權(quán)利要求1或2所述的方法,其中所述預(yù)測步驟包括預(yù)測多個可替換的潛在的用戶輸入,并且所述執(zhí)行步驟包括執(zhí)行用于所述可替換的用戶輸入的每一個的圖形用戶界面代碼的預(yù)備部分。
6.一種數(shù)據(jù)處理設(shè)備,包括用于預(yù)測所述設(shè)備提供的對圖形用戶界面的下一用戶輸入的裝置;在接收到下一用戶輸入之前用于執(zhí)行提供所預(yù)測的用戶輸入需要的圖形用戶界面功能的圖形用戶界面代碼的預(yù)備部分的裝置;以及用于判定下一個接收到的用戶輸入是否對應(yīng)于所預(yù)測的下一用戶輸入并在肯定性判定后用于處理所述圖形用戶界面代碼的啟動部分以完成所需的圖形用戶界面功能的裝置。
7.一種包括程序代碼裝置的計算機程序,該計算機程序在計算機上運行時適于執(zhí)行權(quán)利要求1至5中任何一個的所有步驟。
全文摘要
一種運行具有圖形用戶界面(GUI)的應(yīng)用程序的方法,包括下述步驟(i)預(yù)測對GUI的下一用戶輸入;(ii)在接收下一用戶輸入之前,執(zhí)行提供所預(yù)測的用戶輸入需要的GUI功能的GUI代碼的預(yù)備部分;(iii)接收下一用戶輸入;以及(iv)只有當(dāng)下一用戶輸入對應(yīng)于所預(yù)測的用戶輸入時,才處理所述GUI代碼的啟動部分以完成所需的GUI功能。
文檔編號G06F9/44GK1820248SQ200380110432
公開日2006年8月16日 申請日期2003年12月2日 優(yōu)先權(quán)日2003年6月28日
發(fā)明者D·E·埃萬斯 申請人:國際商業(yè)機器公司