專利名稱:工作軟件中的用戶界面實(shí)體模型的反向工程的制作方法
技術(shù)領(lǐng)域:
本主題公開一般涉及通過對(duì)控件分層結(jié)構(gòu)的狀態(tài)進(jìn)行建模;通過對(duì)跨屏幕的流、 導(dǎo)航以及鏈接進(jìn)行建模;以及通過使用用于生成目標(biāo)應(yīng)用模型的建模來創(chuàng)建用戶界面應(yīng)用的實(shí)體模型(mockup)。
背景技術(shù):
隨著計(jì)算技術(shù)的發(fā)展以及計(jì)算設(shè)備變得越來越普遍,計(jì)算機(jī)編程技術(shù)可適合用于所使用中的廣泛的各種計(jì)算設(shè)備。例如,根據(jù)不同編程語言可產(chǎn)生程序編碼來控制大小、容量不同的計(jì)算設(shè)備,從相對(duì)受限的設(shè)備(諸如簡(jiǎn)單的內(nèi)嵌系統(tǒng)、移動(dòng)手持設(shè)備等)到大的、 高性能的計(jì)算實(shí)體(諸如數(shù)據(jù)中心或服務(wù)器群集)。通常,當(dāng)正開發(fā)和/或修改應(yīng)用以供用于計(jì)算設(shè)備時(shí),可能會(huì)創(chuàng)建新的用戶界面或網(wǎng)站界面而不引用現(xiàn)有的界面。然而,更普遍的是使用現(xiàn)有的界面并對(duì)該界面應(yīng)用修改。 因此,實(shí)體模型或模型表示被創(chuàng)建并可用于獲取開發(fā)過程中涉及的其它人的反饋。當(dāng)分析員致力于現(xiàn)有應(yīng)用的增強(qiáng)時(shí),他們不得不在實(shí)體模型工具中手動(dòng)地重新創(chuàng)建現(xiàn)有應(yīng)用的屏幕,以便能夠修改這些屏幕作為他們想要的規(guī)格的一部分。實(shí)體模型的創(chuàng)建是耗時(shí)的,并且經(jīng)常得到無法勝任某些目的的實(shí)體模型。例如,手動(dòng)創(chuàng)建的實(shí)體模型可花費(fèi)10分鐘至30分鐘或更長(zhǎng)時(shí)間來創(chuàng)建。在一些情況下,在嘗試創(chuàng)建實(shí)體模型中可捕獲屏幕截圖。然而,屏幕截圖并不能很好地適應(yīng)于實(shí)體模型的目的,即傳遞應(yīng)用或界面的意圖以及其中所包含的元素的交互。例如,如果屏幕截圖的右邊被改變,該部分被刪除并且由不再匹配整個(gè)屏幕截圖的重新創(chuàng)建的形狀所替代。這可在屏幕截圖部分和手繪部分之間創(chuàng)建一個(gè)斷開。例如,屏幕截圖部分可以是帶彩色的,而重新創(chuàng)建的部分是黑白的,這會(huì)分散注意。此外,兩個(gè)部分的質(zhì)量或粒度可能不是相同的。這可導(dǎo)致更多焦點(diǎn)被放置在瑣碎的細(xì)節(jié)上(例如,像素、顏色等等)而不是放在實(shí)體模型或模型表示的整體概念和意圖。因此,期望能夠具有快速創(chuàng)建用于現(xiàn)有應(yīng)用和/或網(wǎng)站的實(shí)體模型或模型表示的能力。還期望創(chuàng)建具有統(tǒng)一的粒度量的現(xiàn)有用戶界面的實(shí)體模型。如另一示例,將實(shí)體模型以數(shù)字的并且易于使用的格式來創(chuàng)建以允許實(shí)體模型能夠被容易地共享和操縱是有益的?,F(xiàn)有技術(shù)中,已提出了各種用于創(chuàng)建用戶界面實(shí)體模型的方案。然而,所提出的用于創(chuàng)建用戶界面實(shí)體模型的解決方案中沒有一個(gè)能解決全部上述需要,并且期望這樣的解決方案顯著地改善創(chuàng)建用戶界面實(shí)體模型的效率。當(dāng)今的計(jì)算系統(tǒng)和實(shí)體模型創(chuàng)建系統(tǒng)技術(shù)的上述缺點(diǎn)僅旨在提供常規(guī)系統(tǒng)的一些問題的概覽,并且不旨在是窮盡性的。常規(guī)系統(tǒng)的其他問題以及此處所描述的各非限制性實(shí)施例的對(duì)應(yīng)的益處可以在審閱以下描述后變得更顯而易見。
發(fā)明內(nèi)容
此處提供了簡(jiǎn)化的發(fā)明內(nèi)容以幫助能夠?qū)σ韵赂敿?xì)的描述和附圖中的示例性、
4非限制性實(shí)施例的各方面有基本或大體的理解。然而,本發(fā)明內(nèi)容并不旨在作為詳盡的或窮盡的。相反,本節(jié)發(fā)明內(nèi)容的唯一目的在于,以簡(jiǎn)化的形式提出與一些示例性、非限制性實(shí)施方式相關(guān)的一些概念,作為以下各實(shí)施方式的更詳細(xì)的描述的序言。在一個(gè)或多個(gè)實(shí)施例中,反向工程實(shí)體模型系統(tǒng)自動(dòng)捕獲運(yùn)行中的用戶界面應(yīng)用的窗口定義并生成可編輯的用戶界面實(shí)體模型。本方法具有多種益處,包括創(chuàng)建實(shí)體模型的簡(jiǎn)便和速度。一個(gè)或多個(gè)實(shí)施例還可對(duì)運(yùn)行中的用戶界面應(yīng)用的多個(gè)屏幕之間的流進(jìn)行記錄和反向工程。此外,基于該流,可生成各屏幕間的鏈接以表示給定情景的導(dǎo)航和交互性。因此,根據(jù)一個(gè)方面,當(dāng)設(shè)計(jì)新的特征請(qǐng)求時(shí),現(xiàn)有的用戶界面的實(shí)體模型不需要被重新創(chuàng)建。根據(jù)一些方面,為了便于窗口定義的捕獲,可利用輔助工具應(yīng)用編程接口(API)。在一些實(shí)施例中,反向工程實(shí)體模型系統(tǒng)能夠捕獲和解釋所呈現(xiàn)的控件分層結(jié)構(gòu)的“定義”并且能夠?qū)⑦@一表示存儲(chǔ)在用戶界面的模型中。這提供了諸如以低保真“粗略”(或手繪的)主題重新呈現(xiàn)屏幕的功能,這對(duì)于實(shí)體模型應(yīng)用來說是非常期望的特征 (例如,從瑣碎細(xì)節(jié)中帶走焦點(diǎn))。所捕獲的元數(shù)據(jù)也可被用于生成啟動(dòng)器應(yīng)用代碼(例如, 可擴(kuò)展應(yīng)用標(biāo)記語言(XAML)、超文本標(biāo)記語言(HTML)等等),這對(duì)于在各種技術(shù)間遷移用戶界面應(yīng)用和/或重新實(shí)現(xiàn)一個(gè)現(xiàn)有應(yīng)用來說是有價(jià)值的。這些和其他實(shí)施例在下文中更詳細(xì)地描述。
參考附圖進(jìn)一步描述各非限制性實(shí)施方式,在附圖中圖1是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的簡(jiǎn)化的反向工程實(shí)體模型系統(tǒng)的框圖;圖2是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的自測(cè)管理器組件的示例功能的框圖;圖3是根據(jù)一個(gè)或多個(gè)實(shí)施例的界面的框圖;圖4是根據(jù)一個(gè)或多個(gè)實(shí)施例的捕獲在一個(gè)應(yīng)用中開始而在多個(gè)應(yīng)用中中止的狀態(tài)的非限制性例示;圖5是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的自測(cè)管理器的另一示例功能的框圖;圖6是根據(jù)一個(gè)或多個(gè)實(shí)施例的各個(gè)應(yīng)用、各個(gè)網(wǎng)站或各個(gè)其它界面間的非限制性流的例示;圖7是根據(jù)一個(gè)或多個(gè)實(shí)施例的各網(wǎng)站界面間的流的例示;圖8是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)體模型處理組件的示例功能的框圖;圖9是例示出用于創(chuàng)建用戶界面的實(shí)體模型的示例性、非限制性過程的流程圖;圖10是示出用于捕獲用戶界面模型的示例性、非限制性過程的流程圖;圖11是示出用于將用戶界面模型轉(zhuǎn)換成目標(biāo)模型的示例性、非限制性過程的流程圖;圖12是表示其中可實(shí)現(xiàn)在本文中所述的各實(shí)施方式的示例性、非限制性聯(lián)網(wǎng)環(huán)境的框圖;以及圖13是表示其中可實(shí)現(xiàn)在本文中所述的各實(shí)施方式的一個(gè)或多個(gè)方面的示例性、非限制性計(jì)算系統(tǒng)或操作環(huán)境的框圖。
具體實(shí)施方式
概覽當(dāng)設(shè)計(jì)者想要改動(dòng)應(yīng)用、網(wǎng)站和/或與應(yīng)用或網(wǎng)站相關(guān)聯(lián)的一個(gè)或多個(gè)界面窗口時(shí),通過故事板(storyboarding)或交互框架(wireframing)來創(chuàng)建實(shí)體模型。存在至少三種與成功實(shí)體模型創(chuàng)建相關(guān)聯(lián)的屬性。第一種屬性是創(chuàng)建實(shí)體模型的簡(jiǎn)單性。例如,允許某些具有很少或不了解實(shí)體模型創(chuàng)建的人來創(chuàng)建有用的實(shí)體模型將是有益的。第二種屬性是實(shí)體模型創(chuàng)建的速度,以使實(shí)體模型成為有價(jià)值的和有用的工具。因此,期望減少創(chuàng)建實(shí)體模型所耗費(fèi)的時(shí)間量使得益處大于成本。另一種屬性是控件庫(kù)的可用性,并且期望利用這些控件庫(kù)來創(chuàng)建實(shí)體模型。因此,允許以有限數(shù)量的選擇(或點(diǎn)擊)或以單次選擇來創(chuàng)建應(yīng)用和/或網(wǎng)站的現(xiàn)有用戶界面的實(shí)體模型將是有益的。如此處所公開的,可通過捕獲形狀并將形狀轉(zhuǎn)換成可編輯的原始格式來創(chuàng)建實(shí)體模型。因此,替代通過進(jìn)行屏幕截圖來捕捉像素,可捕捉樹的概念或復(fù)選框的概念。界面窗口內(nèi)的元素和/或控件的大概的大小和坐標(biāo)也可被捕獲。因此,可獲取控件的類型、控件的狀態(tài)、和/或界面的布局信息以便高效地捕獲用戶界面??丶念愋吞峁┡c控件和/或元素相關(guān)的信息(例如,控件是復(fù)選框,控件是文本框,元素是圖像,等等)。對(duì)該控件專用的控件的狀態(tài)(例如,復(fù)選框被復(fù)選還是沒有被復(fù)選)也可被提供。所捕獲的布局信息可以是元素和/或控件的定位和大小。在一個(gè)實(shí)施例中,反向工程實(shí)體模型系統(tǒng)包括自測(cè)管理器組件,其被配置成捕獲與目標(biāo)應(yīng)用的多個(gè)用戶界面(UI)控件分層結(jié)構(gòu)相關(guān)聯(lián)的多個(gè)狀態(tài)。反向工程實(shí)體模型系統(tǒng)還包括實(shí)體模型處理組件以及輸出組件,實(shí)體模型處理組件被配置成基于多個(gè)狀態(tài)來生成模型表示,輸出組件被配置成以可編輯格式呈現(xiàn)模型表示。在另一示例中,系統(tǒng)還包括姿勢(shì)組件和觀察組件,姿勢(shì)組件被配置成接收對(duì)目標(biāo)應(yīng)用的選擇,觀察組件被配置成獲取目標(biāo)應(yīng)用的第一窗口的第一狀態(tài)以及第二窗口的第二狀態(tài)。第二窗口可被激活或物化作為第一窗口中的動(dòng)作的觸發(fā)的結(jié)果或作為控件分層結(jié)構(gòu)。系統(tǒng)還包括故事板管理器組件,其被配置成訪問多個(gè)UI控件分層結(jié)構(gòu)及相關(guān)聯(lián)的信息。實(shí)體模型處理組件被進(jìn)一步配置成將多個(gè)UI控件分層結(jié)構(gòu)及相關(guān)聯(lián)的信息序列化成模型表示。在另一示例中,系統(tǒng)還包括轉(zhuǎn)換器組件,其被配置成將模型表示轉(zhuǎn)換成與目標(biāo)應(yīng)用相兼容的格式。輸出組件被進(jìn)一步配置成以與目標(biāo)應(yīng)用相兼容的格式傳遞模型表示以用作為實(shí)體模型。在進(jìn)一步示例中,自測(cè)管理器組件被進(jìn)一步配置成捕獲控件(例如復(fù)選框)概念, 其中控件概念與多個(gè)狀態(tài)之一相關(guān)聯(lián)。在一些示例中,實(shí)體模型處理組件被進(jìn)一步配置成將模型表示保持為中間模型以供稍后轉(zhuǎn)換成與目標(biāo)應(yīng)用或不同的多個(gè)目標(biāo)應(yīng)用兼容的格式。在一些示例中,系統(tǒng)還包括姿勢(shì)組件,其被配置成根據(jù)標(biāo)識(shí)目標(biāo)應(yīng)用和目標(biāo)應(yīng)用的第一應(yīng)用窗口的姿勢(shì)來標(biāo)識(shí)對(duì)目標(biāo)應(yīng)用的選擇。在進(jìn)一步的示例中,系統(tǒng)進(jìn)一步包括跟蹤組件和導(dǎo)航組件,跟蹤組件被配置成監(jiān)視目標(biāo)應(yīng)用的多個(gè)屏幕之間的流,導(dǎo)航組件被配置成生成表示多個(gè)屏幕之間的流的鏈接。在一個(gè)示例中,自測(cè)管理器組件被進(jìn)一步配置成捕獲應(yīng)用的類型、應(yīng)用的范圍、控件或其子控件的狀態(tài)中的至少一個(gè)。在其它示例中,自測(cè)管理器組件利用輔助工具應(yīng)用編程接口。在另一實(shí)施例中,一種用于創(chuàng)建用戶界面的模型的方法包括標(biāo)識(shí)用戶界面內(nèi)的應(yīng)用,記錄表示應(yīng)用的第一窗口的狀態(tài)的第一數(shù)據(jù)集,將第一數(shù)據(jù)集輸入到模型中,以及以可使用格式輸出模型。在一個(gè)示例中,標(biāo)識(shí)包括接收對(duì)應(yīng)用和第一窗口的選擇以及確定第一窗口的引用,其中第一窗口和應(yīng)用當(dāng)前正被執(zhí)行在用戶界面中。在另一示例中,記錄包括記錄類型、范圍、控件或其子控件的狀態(tài)中的至少一個(gè)。 在又一示例中,記錄包括利用輔助工具應(yīng)用編程接口來捕獲與第一數(shù)據(jù)集有關(guān)的信息。在另一示例中,方法進(jìn)一步包括捕獲表示由第一窗口到至少一個(gè)第二窗口的過渡的第二數(shù)據(jù)集,并將第二數(shù)據(jù)集應(yīng)用到模型,其中輸出包括以可使用格式輸出包含第一數(shù)據(jù)集和第二數(shù)據(jù)集的模型。在又一示例中,方法包括捕獲表示從第一窗口到至少一個(gè)第二窗口的流的第二數(shù)據(jù)集,獲取表示至少一個(gè)第二窗口的狀態(tài)的第三數(shù)據(jù)集,以及在輸出之前將第一數(shù)據(jù)集、第二數(shù)據(jù)集以及第三數(shù)據(jù)集輸入到模型中。在又一示例中,方法進(jìn)一步包括創(chuàng)建詳細(xì)說明從第一窗口到后續(xù)窗口的移動(dòng)的導(dǎo)航以及保持第一窗口的第一狀態(tài)和后續(xù)窗口的第二狀態(tài)。方法還包括將第一狀態(tài)和第二狀態(tài)發(fā)送給模型,其中以與目標(biāo)應(yīng)用兼容的格式輸出第一狀態(tài)和第二狀態(tài)。在另一示例中,方法包括在輸出之前使用第一數(shù)據(jù)集生成中間模型。在又一示例中,輸出包括將模型映射到目標(biāo)應(yīng)用模型,生成目標(biāo)應(yīng)用模型,以及將目標(biāo)應(yīng)用模型呈現(xiàn)為現(xiàn)有應(yīng)用的實(shí)體模型。在另一示例中,輸出包括以可修改和可使用的數(shù)字格式輸出模型。在另一示例中,一種用于對(duì)用戶界面實(shí)體模型進(jìn)行反向工程的方法包括接收對(duì)為之創(chuàng)建實(shí)體模型的應(yīng)用或網(wǎng)站的執(zhí)行中的用戶界面窗口的選擇,以及捕獲從執(zhí)行中的用戶界面窗口到后續(xù)界面窗口的過程的交互細(xì)節(jié)。在從運(yùn)行中的用戶界面窗口到子界面窗口的過程期間訪問多個(gè)中間窗口。方法還包括記錄多個(gè)狀態(tài),其中多個(gè)狀態(tài)包括執(zhí)行中的用戶界面窗口、后續(xù)界面窗口以及多個(gè)中間窗口的每一個(gè)的狀態(tài)。此外,方法包括用于生成包括交互細(xì)節(jié)和多個(gè)狀態(tài)的模型、將模型映射到目標(biāo)應(yīng)用模型、以及呈現(xiàn)目標(biāo)應(yīng)用模型作為應(yīng)用或網(wǎng)站的可修改版本的可修改實(shí)體模型的裝置。此處,已在上文中表述了用于對(duì)來自工作軟件的用戶界面實(shí)體模型進(jìn)行反向工程的一些實(shí)施例的概覽。作為接下來的內(nèi)容的路標(biāo),更詳細(xì)地描述對(duì)用戶界面實(shí)體模型的反向工程的各示例性、非限制性實(shí)施例和特征。隨后,為了附加說明,給出一些非限制性實(shí)現(xiàn)和示例,之后是其中可實(shí)現(xiàn)這些實(shí)施方式和/或特征的代表性網(wǎng)絡(luò)和計(jì)算環(huán)境。工作軟件中的用戶界面實(shí)體模型的反向工程通過對(duì)在模塊化計(jì)算環(huán)境中通過反向工程來創(chuàng)建模型表示的一個(gè)或多個(gè)非限制性方式的進(jìn)一步描述,圖1大致地示出了示例性計(jì)算系統(tǒng)的框圖。該計(jì)算系統(tǒng)包括環(huán)境 100,它可以是圖形用戶界面、桌面應(yīng)用、基于Web的應(yīng)用或其它編程平臺(tái)。環(huán)境100可包括為之創(chuàng)建模型表示或?qū)嶓w模型的目標(biāo)應(yīng)用。例如,用戶可提供指示將要被捕獲的目標(biāo)應(yīng)用的姿勢(shì)或其它輸入(例如,語音命令、文本命令等)。姿勢(shì)可被提供作為一個(gè)或多個(gè)將要到達(dá)的選擇110形式的輸入。自測(cè)管理器組件120被配置成接收一個(gè)或多個(gè)將要到達(dá)的選擇110并捕捉目標(biāo)應(yīng)用的多個(gè)用戶界面控件分層結(jié)構(gòu)(例如,每個(gè)窗口一個(gè)控件分層結(jié)構(gòu))的眾多狀態(tài)(例如,窗口和窗口內(nèi)的所有子組件)。例如,第一窗口可啟動(dòng)第二窗口,第二窗口啟動(dòng)后續(xù)窗口。在另一示例中,與第一窗口交互的用戶可導(dǎo)航至第二窗口,并且通過與第二窗口(或第一窗口)的交互可導(dǎo)航至第三窗口,依此類推。自測(cè)管理器組件120將眾多狀態(tài)130傳遞給實(shí)體模型處理組件140,實(shí)體模型處理組件140被配置成至少部分基于眾多狀態(tài)來生成模型表示。例如,實(shí)體模型處理組件140 可在通用用戶界面模型中生成模型表示。模型表示可以任何可感知的格式輸出給用戶以供生成實(shí)體模型、代碼等等。例如,模型表示可以可編輯和開放式可使用格式(例如,用戶和/ 或其他人可讀取它并使用它)被呈現(xiàn)在用戶設(shè)備上。在一個(gè)示例中,模型表示可以數(shù)字格式輸出。在一個(gè)實(shí)施例中,可大約在捕獲眾多狀態(tài)的同時(shí)(例如實(shí)時(shí))或不同時(shí)刻(例如存儲(chǔ)以供稍后使用)輸出模型表示。在一些實(shí)施例中,實(shí)體模型處理組件140被進(jìn)一步配置成保持模型表示作為中間模型,以供稍后用作實(shí)體模型或用于其它目的。例如,中間模型是通用的,并且因此可以被標(biāo)準(zhǔn)化且多個(gè)應(yīng)用、第三方等等可使用中間模型。在一些實(shí)施例中,自測(cè)管理器組件120被進(jìn)一步配置成捕獲應(yīng)用的類型、應(yīng)用的范圍、控件或其子控件的狀態(tài)中的至少一個(gè)、或上述的組合。例如,子控件信息可包括給定控件分層結(jié)構(gòu)(例如窗口和該窗口內(nèi)它的所有子組件)的狀態(tài)。根據(jù)一些實(shí)施例,自測(cè)管理器組件120利用輔助工具應(yīng)用編程接口來捕獲眾多狀態(tài)。例如,輔助工具應(yīng)用編程接口可以是用戶界面自動(dòng)化、超文本標(biāo)記語言文檔對(duì)象模型 (HTML DOM)、或另一類型的輔助工具應(yīng)用編程接口。在一個(gè)實(shí)施例中,自測(cè)管理器組件120 通過應(yīng)用或窗口的標(biāo)識(shí)來獲取應(yīng)用或窗口的句柄。所獲取的句柄允許使用至少一些可用的控件庫(kù),從控件庫(kù)中可提取來自運(yùn)行中的應(yīng)用的信息。在一實(shí)施例中,由圖1所示的反向工程實(shí)體模型系統(tǒng)在操作上可不同于傳統(tǒng)實(shí)體模型構(gòu)建系統(tǒng),從而提供超越了使用傳統(tǒng)實(shí)體模型構(gòu)建系統(tǒng)的計(jì)算系統(tǒng)可獲得的益處的附加益處。例如,此處公開的反向工程實(shí)體模型系統(tǒng)能夠通過簡(jiǎn)單地記錄現(xiàn)有應(yīng)用的操作來快速地生成啟動(dòng)器故事板或屏幕。故事板是可能的輸出人造對(duì)象,盡管也可利用其它的輸出實(shí)體模型或模型表示的裝置。所公開的方面具有將屏幕編寫時(shí)間的量從例如每屏十分鐘 (或更多)減少到例如小于每屏一分鐘的益處。所公開的方面的另一益處是能夠以簡(jiǎn)化的形式創(chuàng)建啟動(dòng)器故事板或屏幕。所公開的方面的又一益處是控件庫(kù)的采用以使得能夠提取與運(yùn)行中的應(yīng)用相關(guān)聯(lián)的信息。例示其它方面,圖2是示出包含姿勢(shì)組件、觀察組件220、以及故事板管理器組件 230的自測(cè)管理器組件200的框圖。在一個(gè)實(shí)施例中,姿勢(shì)組件210被配置成接收對(duì)目標(biāo)應(yīng)用的選擇。在一個(gè)示例中,姿勢(shì)組件210被配置成獲取對(duì)執(zhí)行中的用戶界面窗口的選擇,將為該用戶界面窗口創(chuàng)建實(shí)體模型或其它模型表示。在一些實(shí)施例中,姿勢(shì)組件210被配置成根據(jù)標(biāo)識(shí)目標(biāo)應(yīng)用和目標(biāo)應(yīng)用的第一應(yīng)用窗口的姿勢(shì)來標(biāo)識(shí)對(duì)目標(biāo)應(yīng)用的選擇。例如, 姿勢(shì)組件210可被配置成監(jiān)視用戶可通過其來與反向工程實(shí)體模型系統(tǒng)交互的鍵盤、鼠標(biāo)或另一設(shè)備。根據(jù)一些方面,姿勢(shì)組件210接收指示模型表示應(yīng)被創(chuàng)建并且標(biāo)識(shí)應(yīng)當(dāng)被捕獲的界面的口頭命令、文本命令或某些其它輸入。例如,如圖3的界面300所示出的,當(dāng)用戶想要修改應(yīng)用310時(shí),用戶使應(yīng)用310 執(zhí)行并顯示。用戶還可使與自測(cè)管理器相關(guān)聯(lián)的工具320被顯示。應(yīng)用310和工具320可被并排定位在顯示器上。在一些示例中,應(yīng)用310和工具320可具有與彼此不同的定向。為了選擇應(yīng)用310,用戶可選擇工具320(例如,通過諸如鼠標(biāo)之類的指示設(shè)備)并將工具320拖曳到應(yīng)用310上(或應(yīng)用的第一窗口上)。在一些實(shí)施例中,工具320具有允許用戶精確定位應(yīng)用內(nèi)的某位置(諸如一個(gè)或多個(gè)元素或控件330、340和350)的十字線或其它特征。在360處顯示了通過將工具320放置在元素330上來選擇元素330。根據(jù)一些方面,可通過其它手段(例如,操縱下拉菜單、口頭命令等)來進(jìn)行選擇。再次參考圖2,基于所接收到的指示當(dāng)前執(zhí)行的應(yīng)用將被捕捉的姿勢(shì),觀察組件 220被配置成獲取目標(biāo)應(yīng)用的窗口定義或第一窗口的第一狀態(tài)(例如,當(dāng)姿勢(shì)組件210接收到輸入時(shí)正在執(zhí)行的窗口)。根據(jù)一些方面,觀察組件220被配置成與一個(gè)或多個(gè)輔助工具應(yīng)用編程接口(API)交互以獲取各狀態(tài)。例如,一個(gè)或多個(gè)API可訪問一個(gè)或多個(gè)控件庫(kù)并因此能夠提供與狀態(tài)有關(guān)的非常粒度的信息。第一窗口可啟動(dòng)一個(gè)或多個(gè)其它窗口或與一個(gè)或多個(gè)其它窗口交互,諸如通過控件分層結(jié)構(gòu)或通過用戶向下挖掘到應(yīng)用中(例如,從第一屏幕到第二屏幕(或后續(xù)屏幕) 的移動(dòng))。觀察組件220被配置成獲取表示第二窗口的第二狀態(tài)。在另一示例中,用戶可從第一界面窗口經(jīng)過眾多中間界面窗口遍歷到后續(xù)界面窗口。在這一情況下,觀察組件220 被配置成記錄多個(gè)狀態(tài),其中多個(gè)狀態(tài)包括執(zhí)行中的用戶界面(例如最初被選擇的窗口)、 后續(xù)界面窗口、以及多個(gè)中間界面窗口的每一個(gè)的狀態(tài)。對(duì)于每個(gè)被發(fā)現(xiàn)的(或通過(或經(jīng)由)之前的窗口開啟的)新窗口,故事板管理器組件230被配置成獲取每個(gè)窗口的控件分層結(jié)構(gòu)和相關(guān)聯(lián)的信息。例如,當(dāng)應(yīng)用穿過其控件分層結(jié)構(gòu)時(shí),故事板管理器組件230被配置成捕捉與分層結(jié)構(gòu)中的每個(gè)項(xiàng)目有關(guān)的基本信息。這一基本信息可包括控件類型、尺寸、坐標(biāo)、基于控件類型的狀態(tài)信息等等。例如,圖4示出了捕捉從一個(gè)應(yīng)用開始并在多個(gè)應(yīng)用中終止的狀態(tài)非限制性例示。如所例示的,應(yīng)用(諸如電子郵件應(yīng)用)的第一窗口 400被開啟。第一窗口 400可包括能夠啟動(dòng)另一窗口的鏈接,諸如聯(lián)系人鏈接410。當(dāng)用戶選擇或點(diǎn)擊聯(lián)系人鏈接410時(shí), 第一窗口 400啟動(dòng)第二窗口 420,諸如包括地址簿條目430的地址簿應(yīng)用。在查看地址簿條目430之后,用戶可關(guān)閉第二窗口 420并返回第一窗口 400。如果用戶想要查看聯(lián)系人鏈接410的公共社交媒體簡(jiǎn)檔,用戶在第一窗口 400中作出選擇,其中諸如瀏覽器應(yīng)用之類的第三窗口 440被啟動(dòng)。在查看想要的信息之后,用戶關(guān)閉第三窗口 440并進(jìn)而返回到第一窗口 400。然而,根據(jù)一些方面,以順序形式開啟各窗口使得每個(gè)窗口連續(xù)地開啟另一個(gè)窗例示其它方面,圖5是顯示包含跟蹤組件510和導(dǎo)航組件520的自測(cè)管理器500 的另一實(shí)施例的方框圖。在一個(gè)實(shí)施例中,跟蹤組件510被配置成監(jiān)視目標(biāo)應(yīng)用的多個(gè)屏幕之間的流。例如,跟蹤組件510可標(biāo)識(shí)各屏之間的切換和/或可標(biāo)識(shí)新屏幕是何時(shí)被啟動(dòng)和顯示的。在另一示例中,目標(biāo)應(yīng)用可被選擇且目標(biāo)應(yīng)用的第一屏可以正在執(zhí)行。當(dāng)用戶使自測(cè)管理器500在應(yīng)用內(nèi)移動(dòng)并且當(dāng)后續(xù)的屏被開啟(例如第一屏啟動(dòng)第二屏或與第二屏交互等等)時(shí),跟蹤組件510監(jiān)視流或?qū)Ш?例如,發(fā)生了什么使每個(gè)后續(xù)窗口開啟)。 在另一示例中,跟蹤組件510被配置成捕捉與從運(yùn)行中的用戶界面窗口到后續(xù)界面窗口的流程有關(guān)的細(xì)節(jié),其中在從運(yùn)行中的用戶界面窗口到后續(xù)用戶界面窗口的過程期間訪問多個(gè)中間窗口。導(dǎo)航組件520被配置成生成表示多個(gè)屏之間的流或交互性的鏈接。鏈接可包括與什么引起下一屏或后續(xù)屏執(zhí)行(例如,手動(dòng)地、自動(dòng)地)有關(guān)的細(xì)節(jié)。例如,當(dāng)用戶使用第一屏上的信息時(shí),用戶可能想要開啟第二屏和/或啟動(dòng)網(wǎng)站。導(dǎo)航組件520被配置成捕捉用戶輸入(例如,對(duì)網(wǎng)站中的鏈接的選擇、選擇下一按鈕等等)。以此方式,當(dāng)實(shí)體模型被創(chuàng)建時(shí),除了與應(yīng)用和/或應(yīng)用內(nèi)的每個(gè)窗口的狀態(tài)相關(guān)聯(lián)的元數(shù)據(jù)之外,還可提供多個(gè)屏之間的鏈接。圖6中示出了各應(yīng)用、各網(wǎng)站或各其它界面間的流的非限制性例示。如所示出的, 應(yīng)用的第一窗口被選擇并且第一窗口 600的至少一個(gè)狀態(tài)被捕捉以創(chuàng)建模型表示。例如, 第一窗口 600的狀態(tài)可包括與包含在第一窗口 600中的每個(gè)控件或元素612、614、616、618 有關(guān)的信息。在一些示例中,控件或元素的概念被捕捉而不是控件或元素的具體的信息 (例如,像素的數(shù)量、顏色等等)。在一個(gè)示例中,概念可包括控件或元素的類型(例如,框、 圓、復(fù)選框、文本框、圖像、鏈接等等)。在另一示例中,概念可包括布局信息,諸如窗口內(nèi)的定位和/或元素或控件的大小。在其它示例中,概念同時(shí)包括類型和布局信息。用戶可選擇下一按鈕618,并且基于該選擇,第一窗口 600啟動(dòng)第二窗口 620。從第一窗口 600到第二窗口 620的流622可被收集并被包含在被創(chuàng)建的實(shí)體模型或模型表示中。此外,用戶可選擇第二窗口 620中的下一按鈕624,其啟動(dòng)第三窗口 626。從第二窗口 620到第三窗口 6 的第二流6 可被捕捉作為模型表示的一部分。圖7中示出了各網(wǎng)站界面間的流的非限制性例示。諸如新聞網(wǎng)站之類的第一網(wǎng)站 700可呈現(xiàn)各種鏈接(例如,本地新聞、世界新聞、商業(yè)、政治、天氣、體育、財(cái)經(jīng)等等),用戶能夠根據(jù)用戶的興趣選擇鏈接以向下挖掘每一種類型的新聞。此外,在網(wǎng)站內(nèi)可存在其它鏈接,這一般通過下劃線來標(biāo)識(shí)。當(dāng)用戶選擇一個(gè)諸如天氣鏈接710之類的鏈接時(shí),從第一網(wǎng)站700到第二網(wǎng)站730的流720被捕捉。在這一示例中,第二網(wǎng)站730是天氣網(wǎng)站,其提供鏈接到后續(xù)網(wǎng)站的鏈接,其中每個(gè)到后續(xù)網(wǎng)站的鏈接可被收集并輸入到模型表示中。例示其它方面,圖8是顯示包含轉(zhuǎn)換器組件810和輸出組件820的實(shí)體模型處理組件800的框圖。在一個(gè)實(shí)施例中,實(shí)體模型處理組件800被配置成將控件分層結(jié)構(gòu)和相關(guān)聯(lián)的信息序列化成模型表示。例如,控件分層結(jié)構(gòu)和相關(guān)聯(lián)的信息可被序列化成簡(jiǎn)單的可擴(kuò)展標(biāo)記語言(XML)表示。在完成應(yīng)用的記錄和捕捉之后,轉(zhuǎn)換器組件810被配置成解釋模型表示并將其轉(zhuǎn)換成另一種具體的表示。例如,轉(zhuǎn)換器組件810被配置成將模型表示轉(zhuǎn)換成與一個(gè)或多個(gè)目標(biāo)應(yīng)用兼容的格式。在一個(gè)示例中,目標(biāo)應(yīng)用可以是粗略表示、XAML、HTML等。輸出組件 820被配置成以與目標(biāo)應(yīng)用相兼容的格式傳遞模型表示以用作為實(shí)體模型或其他目標(biāo)應(yīng)用模型。在一些實(shí)施例中,例如形狀被捕捉并且轉(zhuǎn)換器組件810將形狀轉(zhuǎn)換成可編輯的原始格式??删庉嫷脑几袷接奢敵鼋M件820呈現(xiàn)給用戶。在一個(gè)示例中,輸出組件820可呈現(xiàn)目標(biāo)應(yīng)用模型作為應(yīng)用的可編輯的和/或可使用的實(shí)體模型。根據(jù)一非限制性示例,如果目標(biāo)應(yīng)用是演示程序,則轉(zhuǎn)換器組件810可生成具有形狀的幻燈片,其中幻燈片由輸出組件820呈現(xiàn)。此外,如果窗口間的交互被捕捉,每個(gè)交互可在演示內(nèi)的適當(dāng)位置被呈現(xiàn)在幻燈片上。在另一非限制性示例中,如果目標(biāo)應(yīng)用是可視用戶界面構(gòu)建器,則轉(zhuǎn)換器組件810記語言(XAML)或另一種標(biāo)記語言。在又一非限制性示例中,如果目標(biāo)應(yīng)用是圖形應(yīng)用編程接口,則轉(zhuǎn)換器組件810可生成C#代碼或另一種類型的代碼。圖9是例示出用于創(chuàng)建用戶界面的實(shí)體模型的示例性、非限制性過程的流程圖。 在900,標(biāo)識(shí)了執(zhí)行在應(yīng)用、網(wǎng)站等的用戶界面內(nèi)的應(yīng)用。標(biāo)識(shí)可基于接收到的姿勢(shì)或其它指示,其指示初始化了一個(gè)應(yīng)用的實(shí)體模型。在910,表示應(yīng)用的第一窗口的狀態(tài)的第一數(shù)據(jù)集被記錄。在920,第一數(shù)據(jù)集被輸入到模型。如果有其它數(shù)據(jù)集被收集(例如,表示流的第二集、表示第二窗口的第三集等等),其它數(shù)據(jù)集與第一數(shù)據(jù)集組合以輸出作為表示模型。在930,模型以可使用格式被輸出作為實(shí)體模型或其它表示。圖10是示出用于捕捉用戶界面模型的示例性、非限制性過程的流程圖。在1000, 執(zhí)行中的用戶界面窗口被選擇??蓮挠脩籼幗邮障胍蹲浆F(xiàn)有應(yīng)用的實(shí)體模型的選擇。例如,對(duì)應(yīng)用和第一窗口(例如執(zhí)行中的用戶界面窗口)的選擇可被接收,其中第一窗口和應(yīng)用正被執(zhí)行在用戶界面內(nèi)。在1010,確定第一窗口的句柄或引用。在1020,類型、范圍、控件或其子控件的狀態(tài)或以上的組合中的至少一個(gè)被捕捉或記錄。在一個(gè)實(shí)施例中,類型、范圍、以及控件或其子控件的狀態(tài)可被記錄為第一數(shù)據(jù)集。 在又一實(shí)施例中,通過使用訪問一個(gè)或多個(gè)控件庫(kù)的輔助工具應(yīng)用編程接口可獲取額外信息。還可捕捉與第一窗口相關(guān)聯(lián)的子控件。在1030,判斷是否存在至少一個(gè)第二窗口的執(zhí)行(例如,導(dǎo)航到第二窗口、啟動(dòng)第二窗口等)。如果存在第二(或后續(xù))窗口的執(zhí)行(“是”),為每個(gè)后續(xù)窗口捕捉類型、范圍、控件或其子控件的狀態(tài)、或以上的組合中的至少之一。例如,從第一窗口(例如,最初選擇的窗口)到第二窗口(例如,第一子控件)的切換被捕捉作為第二數(shù)據(jù)集。至后續(xù)窗口的切換也可被捕捉作為后續(xù)數(shù)據(jù)集。如果在1030判斷沒有至第二窗口的流或沒有至后續(xù)窗口的流(“否”),則在1040, 使用被捕捉的信息來生成中間模型。例如,第一數(shù)據(jù)集和第二數(shù)據(jù)集(以及后續(xù)數(shù)據(jù)集) 被應(yīng)用到該模型。結(jié)果是用戶界面模型1050。圖11是示出用于將用戶界面模型轉(zhuǎn)換成目標(biāo)模型的示例性、非限制性過程的流程圖。如參考上述實(shí)施例所描述的,構(gòu)建用戶界面模型1100。在1110,用戶界面模型被映射到目標(biāo)應(yīng)用模型。在1120,目標(biāo)應(yīng)用模型被生成并可以任何可感知的格式被呈現(xiàn)。因此, 創(chuàng)建了現(xiàn)有應(yīng)用的實(shí)體模型。在一個(gè)實(shí)施例中,以可使用格式輸出模型。在另一實(shí)施例中, 以可修改的數(shù)字格式輸出模型。在一示例中,第一窗口的第一數(shù)據(jù)集被捕捉,并且表示從第一窗口到至少一個(gè)第二窗口的流的第二數(shù)據(jù)集被捕捉。此外,表示第二窗口的狀態(tài)的第三數(shù)據(jù)集被捕捉。第一數(shù)據(jù)集、第二數(shù)據(jù)集、以及第三數(shù)據(jù)集被輸入到模型中,并且以可使用格式來輸出模型。在另一實(shí)施例中,具體描述從第一窗口到后續(xù)窗口的移動(dòng)的導(dǎo)航被創(chuàng)建。此外,第一窗口的第一狀態(tài)和第二窗口的第二狀態(tài)被保持。第一狀態(tài)、第二狀態(tài)和導(dǎo)航細(xì)節(jié)被發(fā)送給模型,其中以與目標(biāo)應(yīng)用兼容的格式輸出第一狀態(tài)、第二狀態(tài)、以及導(dǎo)航細(xì)節(jié)。示例性聯(lián)網(wǎng)以及分布式環(huán)境本領(lǐng)域技術(shù)人員可以理解,此處所述的反向觀察實(shí)體模型系統(tǒng)和方法的各實(shí)施例可結(jié)合任何計(jì)算機(jī)或其他客戶機(jī)或服務(wù)器設(shè)備來實(shí)現(xiàn),該任何計(jì)算機(jī)或其他客戶機(jī)或服務(wù)
11器設(shè)備可作為計(jì)算機(jī)網(wǎng)絡(luò)的一部分來部署或者被部署在分布式計(jì)算環(huán)境中,并且可連接到任何種類的數(shù)據(jù)存儲(chǔ)。在這一點(diǎn)上,此處描述的各實(shí)施例可在具有任何數(shù)量的存儲(chǔ)器或存儲(chǔ)單元的、并且任何數(shù)量的應(yīng)用和進(jìn)程跨任何數(shù)量的存儲(chǔ)單元發(fā)生的任何計(jì)算機(jī)系統(tǒng)或環(huán)境中實(shí)現(xiàn)。這包括但不限于具有部署在具有遠(yuǎn)程或本地存儲(chǔ)的網(wǎng)絡(luò)環(huán)境或分布式計(jì)算環(huán)境中的服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)的環(huán)境。分布式計(jì)算通過計(jì)算設(shè)備和系統(tǒng)之間的通信交換來提供計(jì)算機(jī)資源和服務(wù)的共享。這些資源和服務(wù)包括信息的交換、對(duì)于諸如文件之類的對(duì)象的高速緩存存儲(chǔ)和盤存儲(chǔ)。 這些資源和服務(wù)還包括多個(gè)處理單元之間的處理能力共享以便進(jìn)行負(fù)載平衡、資源擴(kuò)展、 處理專門化等等。分布式計(jì)算利用網(wǎng)絡(luò)連接,從而允許客戶機(jī)利用其集體力量來使整個(gè)企業(yè)受益。就此,各種設(shè)備可具有可如參考本發(fā)明的各實(shí)施例描述地參與反向工程實(shí)體模型機(jī)制的應(yīng)用、對(duì)象或資源。圖12提供了示例性的聯(lián)網(wǎng)或分布式計(jì)算環(huán)境的示意圖。該分布式計(jì)算環(huán)境包括計(jì)算對(duì)象1210、1212等以及計(jì)算對(duì)象或設(shè)備1220、1222、1224、1226,1228等,這些計(jì)算對(duì)象或設(shè)備可包括如應(yīng)用1230、1232、1234、1236、1238以及數(shù)據(jù)存儲(chǔ)1240所表示的程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等??梢岳斫猓?jì)算對(duì)象1210、1212等以及計(jì)算對(duì)象或設(shè)備1220、 1222、1224、1226,1228等可包括不同的設(shè)備,諸如個(gè)人數(shù)字助理(PDA)、音頻/視頻設(shè)備、移動(dòng)電話、MP3播放器、個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)等。每個(gè)計(jì)算對(duì)象1210、1212等以及計(jì)算對(duì)象或設(shè)備1220、1222、12M、1226、12 等可經(jīng)由通信網(wǎng)絡(luò)1242直接或間接地與一個(gè)或多個(gè)其他計(jì)算對(duì)象1210、1212等以及計(jì)算對(duì)象或設(shè)備1220、1222、1224、1226,1228等通信。盡管在圖12中被示為單個(gè)元件,但通信網(wǎng)絡(luò) 1242可包括向圖12的系統(tǒng)提供服務(wù)的其他計(jì)算對(duì)象或計(jì)算設(shè)備和/或可表示未示出的多個(gè)互連網(wǎng)絡(luò)。每個(gè)計(jì)算對(duì)象1210、1212等或計(jì)算對(duì)象或設(shè)備1220、1222、1224、1226,1228等還可以含有應(yīng)用,諸如可以利用API或其他對(duì)象、軟件、固件和/或硬件的、適于實(shí)現(xiàn)或與根據(jù)各實(shí)施例所提供的反向工程實(shí)體模型技術(shù)進(jìn)行通信的應(yīng)用1230、1232、1234、1236、1238。存在支持分布式計(jì)算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng)可由有線或無線系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許多網(wǎng)絡(luò)耦合到因特網(wǎng),因特網(wǎng)為廣泛分布的計(jì)算提供了基礎(chǔ)結(jié)構(gòu)并且包含許多不同的網(wǎng)絡(luò),但任何網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)可用于變得與如各實(shí)施例中所述的反向工程實(shí)體模型系統(tǒng)相關(guān)聯(lián)的示例性通信。由此,可使用諸如客戶機(jī)/服務(wù)器、對(duì)等、或混合體系結(jié)構(gòu)之類的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的主機(jī)?!翱蛻魴C(jī)”是使用與其無關(guān)的另一類或組的服務(wù)的一類或組中的成員??蛻魴C(jī)可以是進(jìn)程,即大致上是請(qǐng)求另一程序或進(jìn)程所提供的服務(wù)的一組指令或任務(wù)。 客戶機(jī)進(jìn)程使用所請(qǐng)求的服務(wù),而無需“知道”關(guān)于其他程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中,尤其在聯(lián)網(wǎng)系統(tǒng)中,客戶機(jī)通常是訪問另一計(jì)算機(jī)(例如,服務(wù)器)所提供的共享網(wǎng)絡(luò)資源的計(jì)算機(jī)。在附圖12的圖示中,作為非限制性示例,計(jì)算對(duì)象或設(shè)備1220、1222、12M、1226、12 等可被認(rèn)為是客戶機(jī)而計(jì)算對(duì)象1210、 1212等可被認(rèn)為是服務(wù)器,其中計(jì)算對(duì)象1210、1212等作為提供數(shù)據(jù)服務(wù)的服務(wù)器,諸如從客戶機(jī)計(jì)算對(duì)象或設(shè)備1220、1222、12對(duì)、1226、12觀等接收數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、處理數(shù)據(jù)、 向客戶機(jī)計(jì)算對(duì)象或設(shè)備1220、1222、12M、1226、12 等發(fā)送數(shù)據(jù),但任何計(jì)算機(jī)都可取決于環(huán)境而被認(rèn)為是客戶機(jī)、服務(wù)器、或兩者。
服務(wù)器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡(luò)基礎(chǔ)架構(gòu)之類的遠(yuǎn)程網(wǎng)絡(luò)或本地網(wǎng)絡(luò)訪問的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。客戶機(jī)進(jìn)程可在第一計(jì)算機(jī)系統(tǒng)中活動(dòng),而服務(wù)器進(jìn)程可在第二計(jì)算機(jī)系統(tǒng)中活動(dòng),它們通過通信介質(zhì)相互通信,由此提供分布式功能并允許多個(gè)客戶機(jī)利用服務(wù)器的信息收集能力。按照此處所述的技術(shù)來利用的任何軟件對(duì)象可單獨(dú)提供或分布多個(gè)計(jì)算設(shè)備或?qū)ο笊?。在通信網(wǎng)絡(luò)1242或總線是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,例如,計(jì)算對(duì)象1210、1212等可以是其他計(jì)算對(duì)象或設(shè)備1220、1222、12對(duì)、1226、12觀等經(jīng)由諸如超文本傳輸協(xié)議(HTTP) 之類的多種已知協(xié)議中的任一種與其通信的Web服務(wù)器。計(jì)算對(duì)象1210、1212等作為服務(wù)器還可用作例如計(jì)算對(duì)象或設(shè)備1220、1222、1224、1226,1228等的客戶機(jī),這可以是如分布式計(jì)算環(huán)境的特性。示例性計(jì)算設(shè)備如上所述,有利的是,此處所描述的技術(shù)可適用于期望在計(jì)算系統(tǒng)中執(zhí)行用戶界面實(shí)體模型的反向工程的任何設(shè)備。因此,應(yīng)當(dāng)理解,構(gòu)想了結(jié)合各實(shí)施例使用的所有種類的手持式、便攜式和其它計(jì)算設(shè)備和計(jì)算對(duì)象,即,在設(shè)備的資源使用可理想地優(yōu)化的任何地方。因此,以下在圖13中所述的通用遠(yuǎn)程計(jì)算機(jī)只是計(jì)算設(shè)備的一個(gè)示例。盡管并非所需,但各實(shí)施例可部分地經(jīng)由操作系統(tǒng)來實(shí)現(xiàn),以供設(shè)備或?qū)ο蟮姆?wù)開發(fā)者使用和/或被包括在用于執(zhí)行此處所述的各實(shí)施例的一個(gè)或多個(gè)功能方面的應(yīng)用軟件內(nèi)。軟件可以在由諸如客戶機(jī)工作站、服務(wù)器或其它設(shè)備等一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述。本領(lǐng)域的技術(shù)人員可以理解, 計(jì)算機(jī)系統(tǒng)具有可用于傳遞數(shù)據(jù)的各種配置和協(xié)議,并且由此沒有特定配置或協(xié)議應(yīng)當(dāng)被認(rèn)為是限制性的。因此,圖13示出了其中可實(shí)現(xiàn)各實(shí)施例的一個(gè)或多個(gè)方面的合適的計(jì)算系統(tǒng)環(huán)境1300的一個(gè)示例,盡管如上所述,計(jì)算系統(tǒng)環(huán)境1300僅為合適的計(jì)算環(huán)境的一個(gè)示例, 并非對(duì)使用范圍或功能提出任何限制。也不應(yīng)當(dāng)將計(jì)算系統(tǒng)環(huán)境1300解釋為對(duì)在示例性計(jì)算系統(tǒng)環(huán)境1300中所示的組件中的任何一個(gè)或其組合有任何依賴或要求。參考圖13,用于實(shí)現(xiàn)一個(gè)或多個(gè)實(shí)施例的示例性遠(yuǎn)程設(shè)備包括計(jì)算機(jī)1310形式的通用計(jì)算設(shè)備。計(jì)算機(jī)1310的組件可包括,但不限于,處理單元1320、系統(tǒng)存儲(chǔ)器1330、 以及將包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元1320的系統(tǒng)總線1322。計(jì)算機(jī)1310通常包括各種計(jì)算機(jī)可讀介質(zhì),并且可以是可由計(jì)算機(jī)1310訪問的任何可用介質(zhì)。系統(tǒng)存儲(chǔ)器1330可包括諸如只讀存儲(chǔ)器(ROM)和/或隨機(jī)存取存儲(chǔ)器 (RAM)之類的易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。作為示例而非限制, 系統(tǒng)存儲(chǔ)器1330還可包括操作系統(tǒng)、應(yīng)用、其他程序模塊、以及程序數(shù)據(jù)。根據(jù)進(jìn)一步的示例,計(jì)算機(jī)1310還可以包括各種其它介質(zhì)(未示出),可以包括,但不是限制,RAM,、ROM、 EEPR0M、閃存存儲(chǔ)器或其它存儲(chǔ)器技術(shù),CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備或其它可用于存儲(chǔ)所需信息的有形的和/或非瞬時(shí)介質(zhì)。用戶可通過輸入設(shè)備1340向計(jì)算機(jī)1310輸入命令和信息。監(jiān)視器或其他類型的顯示設(shè)備也經(jīng)由諸如輸出接口 1350之類的接口連接到系統(tǒng)總線1322。除監(jiān)視器以外,計(jì)算機(jī)還可包括諸如揚(yáng)聲器和打印機(jī)之類的其他外圍輸出設(shè)備,它們可通過輸出接口 1350連接。計(jì)算機(jī)1310可使用到一個(gè)或多個(gè)其他遠(yuǎn)程計(jì)算機(jī)(諸如遠(yuǎn)程計(jì)算機(jī)1360)的諸如網(wǎng)絡(luò)接口 1370的邏輯連接在聯(lián)網(wǎng)或分布式環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)1370可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其他常見網(wǎng)絡(luò)節(jié)點(diǎn)、或者任何其他遠(yuǎn)程媒體使用或傳輸設(shè)備,并且可包括以上關(guān)于計(jì)算機(jī)1310所述的任何或全部元件。圖13所示的邏輯連接包括諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)之類的網(wǎng)絡(luò)1372,但也可包括其他網(wǎng)絡(luò)/總線。 這些聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。如上所述,盡管結(jié)合各種計(jì)算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了各示例性實(shí)施例,但底層概念可被應(yīng)用于任何網(wǎng)絡(luò)系統(tǒng)和任何計(jì)算設(shè)備或系統(tǒng)。而且,存在實(shí)現(xiàn)相同或相似功能的多種方法,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動(dòng)程序代碼、操作系統(tǒng)、控件、獨(dú)立或可下載軟件對(duì)象等,它們使得應(yīng)用和服務(wù)能夠使用此處提供的技術(shù)。由此,此處的各實(shí)施例從API (或其他軟件對(duì)象)的觀點(diǎn)以及從實(shí)現(xiàn)如此處描述的一個(gè)或多個(gè)實(shí)施例的軟件或硬件對(duì)象構(gòu)想。由此,此處所述的各實(shí)施例可具有完全采用硬件、 部分采用硬件并且部分采用軟件、以及采用軟件的方向。本文中所使用的詞語“示例性”意味著用作示例、實(shí)例、或說明。為避免疑惑,本文所公開的主題不限于這些示例。另外,在此所述的被描述為“示例性”的任意方面或設(shè)計(jì)并不一定要被解釋為相比其它方面或設(shè)計(jì)更優(yōu)選或有利。此外,在使用術(shù)語“包括”、“具有”、 “包含”和其他類似詞語的程度上,為避免疑惑,這些術(shù)語旨在以類似于術(shù)語“包括”作為開放的過渡詞的方式是包含性的而不排除任何附加或其他元素。如所述的,此處所述的各種技術(shù)可結(jié)合硬件或軟件或,在適當(dāng)時(shí),以兩者的組合來實(shí)現(xiàn)。如此處所使用的,術(shù)語“組件”、“系統(tǒng)”等同樣旨在指計(jì)算機(jī)相關(guān)實(shí)體,或者是硬件、 硬件和軟件的組合、軟件或者是執(zhí)行中的軟件。例如,組件可以是,但不限于,在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行碼、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,在計(jì)算機(jī)上運(yùn)行的應(yīng)用和計(jì)算機(jī)都可以是組件。一個(gè)或多個(gè)組件可駐留在進(jìn)程和/或執(zhí)行的線程內(nèi), 并且組件可位于一個(gè)計(jì)算機(jī)上和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。如前所述的系統(tǒng)已經(jīng)參考若干組件之間的交互來描述。可以理解,這些系統(tǒng)和組件可包括組件或指定的子組件、某些指定的組件或子組件和/或附加的組件,并且根據(jù)上述內(nèi)容的各種置換和組合。子組件還可作為通信地耦合到其他組件的組件來實(shí)現(xiàn),而不是被包括在父組件內(nèi)(層次性)。另外,應(yīng)注意到一個(gè)或多個(gè)組件可被組合成提供聚集功能的單個(gè)組件,或被分成若干單獨(dú)的子組件,且諸如管理層等任何一個(gè)或多個(gè)中間層可被設(shè)置成通信耦合到這樣的子組件以便提供集成功能。此處所述的任何組件也可與一個(gè)或多個(gè)此處未專門描述的但本領(lǐng)域技術(shù)人員一般已知的其他組件進(jìn)行交互。鑒于以上所述的示例性系統(tǒng),參考各附圖的流程圖還可理解根據(jù)所述的主題實(shí)現(xiàn)的方法。盡管為了說明簡(jiǎn)潔起見,作為一系列框示出和描述的方法,但是應(yīng)當(dāng)理解,各實(shí)施例不僅僅限于框的次序,因?yàn)橐恍┛蚩梢耘c此處所描繪和描述的框不同的次序發(fā)生和/或與其他框并發(fā)地發(fā)生。盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實(shí)現(xiàn)達(dá)到相同或類似結(jié)果的各種其他分支、流程路徑和框的次序。此外,并非全部所示的框都是實(shí)現(xiàn)下文中描述的方法所必需的。除了此處所描述的各實(shí)施例之外,可以理解,可以使用其他相似的實(shí)施例或者可對(duì)所述實(shí)施例作出修改和添加以便執(zhí)行對(duì)應(yīng)的實(shí)施例的相同或等效的功能而不背離這些實(shí)施例。此外,多個(gè)處理芯片或多個(gè)設(shè)備可共享此處所述的一個(gè)或多個(gè)功能的性能,并且類似地,存儲(chǔ)可跨多個(gè)設(shè)備實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)限于任何單個(gè)實(shí)施例,而是應(yīng)當(dāng)根據(jù)所附權(quán)利要求書的廣度、精神和范圍來解釋。
權(quán)利要求
1.一種反向工程實(shí)體模型系統(tǒng),包括自測(cè)管理器組件(120,200,500),其被配置成捕捉與目標(biāo)應(yīng)用的多個(gè)用戶界面(UI)控件分層結(jié)構(gòu)相關(guān)聯(lián)的多個(gè)狀態(tài)(130);實(shí)體模型處理組件(140,800),其被配置成基于所述多個(gè)狀態(tài)(130)來生成模型表示;以及輸出組件(820),其被配置成以可編輯格式呈現(xiàn)所述模型表示。
2.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,還包括 姿勢(shì)組件010),其被配置成接收對(duì)于所述目標(biāo)應(yīng)用的選擇;觀察組件(220),其被配置成獲取所述目標(biāo)應(yīng)用的第一窗口的第一狀態(tài)以及第二窗口的第二狀態(tài),其中所述第二窗口通過所述第一窗口中的動(dòng)作而激活;以及故事板管理器組件030),其被配置成訪問所述多個(gè)UI控件分層結(jié)構(gòu)及相關(guān)聯(lián)的信息?其中所述實(shí)體模型處理組件(140,800)被進(jìn)一步配置成將多個(gè)UI控件分層結(jié)構(gòu)及相關(guān)聯(lián)的信息序列化成所述模型表示。
3.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,還包括轉(zhuǎn)換器組件(810),其被配置成將所述模型表示轉(zhuǎn)換成與所述目標(biāo)應(yīng)用相兼容的格式, 其中所述輸出組件(820)被進(jìn)一步配置成以與所述目標(biāo)應(yīng)用兼容的格式傳遞所述模型表示以供用作實(shí)體模型。
4.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,所述自測(cè)管理器組件 (120,200,500)被進(jìn)一步配置成捕捉控件概念,其中所述控件概念與所述多個(gè)狀態(tài)(130) 之一相關(guān)聯(lián)。
5.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,所述實(shí)體模型處理組件 (140,800)被進(jìn)一步配置成保持所述模型表示作為中間模型以供稍后轉(zhuǎn)換成與所述目標(biāo)應(yīng)用兼容的格式。
6.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,還包括姿勢(shì)組件010), 其被配置成根據(jù)標(biāo)識(shí)所述目標(biāo)應(yīng)用和所述目標(biāo)應(yīng)用的第一應(yīng)用窗口的姿勢(shì)來標(biāo)識(shí)對(duì)所述目標(biāo)應(yīng)用的選擇。
7.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,還包括跟蹤組件(510),其被配置成監(jiān)視所述目標(biāo)應(yīng)用的多個(gè)屏幕(600,620,626)之間的流 (622,628);以及導(dǎo)航組件(520),其被配置成生成表示所述多個(gè)屏幕(600,620,626)之間的流(622, 628)的鏈接。
8.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,所述自測(cè)管理器組件 (120,200,500)被進(jìn)一步配置成捕捉應(yīng)用的類型、應(yīng)用的范圍、控件或其子控件的狀態(tài)中的至少一個(gè)。
9.如權(quán)利要求1所述的反向工程實(shí)體模型系統(tǒng),其特征在于,所述自測(cè)管理器組件 (120,200,500)利用輔助工具應(yīng)用編程接口。
10.一種用于創(chuàng)建用戶界面(300)的模型的方法,包括 標(biāo)識(shí)(900)用戶界面(300)內(nèi)的應(yīng)用;記錄(910)表示所述應(yīng)用的第一窗口(400,600)的狀態(tài)的第一數(shù)據(jù)集;將所述第一數(shù)據(jù)集輸入(920)到所述模型中;以及以可使用格式輸出(930)所述模型。
11.如權(quán)利要求10所述的方法,其特征在于,所述標(biāo)識(shí)(900)包括接收對(duì)于所述應(yīng)用和所述第一窗口的選擇,其中所述第一窗口和所述應(yīng)用當(dāng)前正執(zhí)行在所述用戶界面內(nèi);以及確定對(duì)于所述第一窗口的引用。
12.如權(quán)利要求10所述的方法,其特征在于,所述記錄(910)包括記錄類型、范圍、控件及其子控件的狀態(tài)中的至少一個(gè)。
13.如權(quán)利要求10所述的方法,其特征在于,所述記錄(910)包括利用輔助工具應(yīng)用編程接口來捕捉與所述第一數(shù)據(jù)集有關(guān)的信息。
14.如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括創(chuàng)建詳細(xì)說明從第一窗口(400,600,700)到后續(xù)窗口 (420,440,620,626,730)的移動(dòng) (622,628)的導(dǎo)航;保持第一窗口 (400,600,700)的第一狀態(tài)和后續(xù)窗口 (420,440,620,626,730)的第二狀態(tài);以及將所述第一狀態(tài)和所述第二狀態(tài)發(fā)送給所述模型,其中以與所述目標(biāo)應(yīng)用兼容的格式輸出所述第一狀態(tài)和所述第二狀態(tài)。
15.如權(quán)利要求10所述的方法,其特征在于,所述輸出(930)包括將所述模型映射到目標(biāo)應(yīng)用模型;生成所述目標(biāo)應(yīng)用模型;以及呈現(xiàn)所述目標(biāo)應(yīng)用模型。
全文摘要
本主題公開涉及捕捉執(zhí)行中的用戶界面應(yīng)用和/或網(wǎng)站的窗口定義以及生成可編輯的模型表示。通過記錄現(xiàn)有應(yīng)用或網(wǎng)站的操作可快速生成啟動(dòng)器故事板或屏幕。與目標(biāo)應(yīng)用的眾多用戶界面控件分層結(jié)構(gòu)相關(guān)聯(lián)的狀態(tài)被捕捉,存儲(chǔ)在通用用戶界面模型中,并被用于實(shí)體模型、代碼等的生成。在一個(gè)方面,應(yīng)用或網(wǎng)站被捕捉的指示被接收。之后,網(wǎng)站或應(yīng)用窗口和后續(xù)窗口的狀態(tài)被觀察并捕捉。對(duì)于在活躍的控件分層結(jié)構(gòu)中經(jīng)歷的每個(gè)后續(xù)窗口,關(guān)于每個(gè)項(xiàng)目的基本信息被捕捉。為給定窗口及其控件分層結(jié)構(gòu)收集的信息可被序列化成簡(jiǎn)單的XML表示。
文檔編號(hào)G06F9/44GK102446099SQ201110435569
公開日2012年5月9日 申請(qǐng)日期2011年12月12日 優(yōu)先權(quán)日2010年12月13日
發(fā)明者B·阿莫迪奧, S·巴蒂亞 申請(qǐng)人:微軟公司