專(zhuān)利名稱:應(yīng)用程序框架分階段模型的制作方法
應(yīng)用程序框架分階段模型背景一般而言,軟件系統(tǒng)通過(guò)在計(jì)算機(jī)內(nèi)執(zhí)行進(jìn)程來(lái)完成操作。通常,單個(gè)進(jìn)程 可包括若干個(gè)簡(jiǎn)單的任務(wù)或方法。為正確地完成進(jìn)程,必須以特定順序完成這些簡(jiǎn) 單方法,因?yàn)榈米砸粋€(gè)簡(jiǎn)單方法的結(jié)果可被輸入到另一簡(jiǎn)單方法。如果這些方法試 圖在接收到正確的輸入之前執(zhí)行,或者如果一方法提供了不及時(shí)的結(jié)果,則整個(gè)進(jìn) 程可能會(huì)失敗。由此,軟件系統(tǒng)內(nèi)方法的執(zhí)行順序是非常重要的。對(duì)于軟件開(kāi)發(fā)者而言,當(dāng)開(kāi)發(fā)軟件代碼時(shí)方法的排序變?yōu)橐粋€(gè)主要關(guān)注問(wèn)題。 一般而言,軟件系統(tǒng)中的方法對(duì)其它方法作出調(diào)用,使得其它方法可執(zhí)行和提供某 一操作。軟件開(kāi)發(fā)者必須注意對(duì)方法的調(diào)用順序,并且試圖編寫(xiě)不考慮調(diào)用順序可 在任何情況中操作的代碼。不幸的是,開(kāi)發(fā)足夠靈活以在任何條件下操作的復(fù)雜代 碼是極其困難的。當(dāng)軟件應(yīng)用程序的大小和復(fù)雜性增加時(shí),可能的調(diào)用順序的爆發(fā) 性增加使得非常難以正確實(shí)現(xiàn)對(duì)方法調(diào)用的排序。對(duì)軟件開(kāi)發(fā)者施加的負(fù)擔(dān)在存在 調(diào)用幾個(gè)不同方法的多個(gè)方法時(shí)變得尤為重要,其中返回的結(jié)果必須以特定順序到 達(dá)以使進(jìn)程正確執(zhí)行。同樣,軟件開(kāi)發(fā)者難以測(cè)試具有在變化的操作情形中作出各 種調(diào)用的方法的靈活代碼。本發(fā)明正是關(guān)于這些和其它考慮事項(xiàng)而作出的。概述提供了這一概述以用簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的若干 概念。這一概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或主要特征,也不旨 在用于幫助確定所要求保護(hù)的主題的范圍。本發(fā)明能夠在整個(gè)計(jì)算機(jī)系統(tǒng)中約束軟件方法的執(zhí)行。 一般而言,本發(fā)明提 供了一種多層分階段模型,它將軟件方法的執(zhí)行約束于兩個(gè)或更多階段,每一階段 可能具有兩個(gè)或更多子階段。階段是劃分軟件系統(tǒng)的方法的操作狀態(tài)。分區(qū)中的所 有方法被約束于僅在特定階段期間執(zhí)行。當(dāng)一組軟件組件對(duì)一階段空間中的公共分 階段達(dá)成一致時(shí),創(chuàng)建階段域。階段空間確定了有效的階段序列。在本發(fā)明的各實(shí)
施例中,階段空間是確定用于軟件組件的有效階段和有效階段轉(zhuǎn)換的有限有向圖。 在本發(fā)明的各實(shí)施例中,軟件組件服從階段約束。階段約束是限制階段在某 一軟件程序上下文中有效的靜態(tài)約束。階段約束可被應(yīng)用于軟件程序段,從而確保 只要執(zhí)行該軟件程序段,執(zhí)行線程將處于遵從該約束的階段中。為應(yīng)用階段約束, 軟件組件可包括形成階段約束屬性的數(shù)據(jù)結(jié)構(gòu)。該階段約束屬性可以是軟件組件的 運(yùn)行時(shí)元數(shù)據(jù)的一部分。在本發(fā)明的各實(shí)施例中, 一種計(jì)算機(jī)可讀介質(zhì)包括占據(jù)第一階段域的多個(gè)組 件。在某些實(shí)施例中,軟件組件的第一子集占據(jù)第一子階段域,而軟件組件的第二 子集占據(jù)第二子階段域。在本發(fā)明的某些實(shí)施例中,子階段是聚集在一父階段之下 的階段。在一個(gè)實(shí)施例中,本發(fā)明提供了一種用于將多個(gè)方法的執(zhí)行劃分成軟件系統(tǒng) 內(nèi)的各階段的方法。該方法首先轉(zhuǎn)移到可能具有兩個(gè)或更多子階段的第一階段。第 一組方法的執(zhí)行被約束于第一階段。然而,計(jì)算機(jī)系統(tǒng)轉(zhuǎn)移到一個(gè)或多個(gè)其它階段, 其中一組或多組其它方法的執(zhí)行被約束于一個(gè)或多個(gè)其它階段。最后,計(jì)算機(jī)系統(tǒng) 轉(zhuǎn)移到一個(gè)或多個(gè)其它階段。在本發(fā)明的各實(shí)施例中,還提供了一種軟件系統(tǒng)。該軟件系統(tǒng)包括控制用于整個(gè)軟件系統(tǒng)的一組階段的主指導(dǎo)器(director)組件。指導(dǎo)器是控制階段空間內(nèi) 的階段轉(zhuǎn)移的軟件構(gòu)造。在某些實(shí)施例中, 一個(gè)或多個(gè)子指導(dǎo)器向主指導(dǎo)器注冊(cè), 并控制一組或多組子階段。 一個(gè)或多個(gè)組件向一個(gè)或多個(gè)指導(dǎo)器注冊(cè),并被約束于 僅在一個(gè)或多個(gè)階段期間執(zhí)行方法。本發(fā)明可被實(shí)現(xiàn)為計(jì)算機(jī)進(jìn)程、計(jì)算系統(tǒng)或諸如計(jì)算機(jī)程序產(chǎn)品等制品。計(jì) 算機(jī)程序產(chǎn)品可以是可由計(jì)算機(jī)系統(tǒng)讀取并編碼了用于執(zhí)行計(jì)算機(jī)進(jìn)程的指令的 計(jì)算機(jī)程序的計(jì)算機(jī)存儲(chǔ)介質(zhì)。計(jì)算機(jī)程序產(chǎn)品還可以是計(jì)算系統(tǒng)可讀且編碼了用 于執(zhí)行計(jì)算機(jī)進(jìn)程的指令的計(jì)算機(jī)程序的載波上的傳播信號(hào)。參考以下簡(jiǎn)要概述的附圖、以下本發(fā)明各實(shí)施例的詳細(xì)描述以及所附權(quán)利要 求書(shū),能夠獲得對(duì)本發(fā)明及其改進(jìn)的更完整理解。附圖簡(jiǎn)述
圖1是根據(jù)本發(fā)明可在計(jì)算機(jī)環(huán)境中操作以對(duì)軟件方法的執(zhí)行排序的多層分 階段模型的一個(gè)實(shí)施例。圖2是示出根據(jù)本發(fā)明的操作分階段模型的計(jì)算環(huán)境和計(jì)算設(shè)備的框圖。
圖3是根據(jù)本發(fā)明的具有用于在階段模型中對(duì)軟件方法的執(zhí)行排序的軟件組 件的模塊化軟件系統(tǒng)的一個(gè)實(shí)施例。圖4是根據(jù)本發(fā)明的在整個(gè)計(jì)算機(jī)系統(tǒng)上操作以對(duì)該系統(tǒng)內(nèi)的任何軟件方法 的執(zhí)行排序的第一或頂層階段模型或空間的一個(gè)實(shí)施例。圖5是根據(jù)本發(fā)明的可在諸如圖4的主階段空間等主階段空間的一個(gè)或多個(gè) 階段期間操作的子階段空間的一個(gè)實(shí)施例,它們對(duì)數(shù)據(jù)檢索和寫(xiě)入進(jìn)行排序。圖6A和圖6B是根據(jù)本發(fā)明的可在諸如圖4的主階段空間等主階段空間的一 個(gè)或多個(gè)階段期間操作的子階段空間的實(shí)施例,它們對(duì)即插即用系統(tǒng)的配置和操作 進(jìn)行排序。圖7示出了根據(jù)本發(fā)明的包含說(shuō)明將軟件方法的執(zhí)行約束于某一階段的階段 約束屬性的數(shù)據(jù)結(jié)構(gòu)或語(yǔ)言屬性的一個(gè)實(shí)施例。圖8A和8B示出了根據(jù)本發(fā)明的用于對(duì)計(jì)算機(jī)系統(tǒng)的操作分階段的方法的一 個(gè)實(shí)施例。圖9是根據(jù)本發(fā)明的用于提供并儲(chǔ)存在分階段域中操作的用戶聯(lián)系人信息的 示例性計(jì)算機(jī)系統(tǒng)。詳細(xì)描述現(xiàn)在將參考其中示出本發(fā)明的示例性實(shí)施例的附圖來(lái)更全面描述本發(fā)明。然 而,本發(fā)明可以用許多不同的形式來(lái)具體化,且不應(yīng)被解釋為限于此處所述的實(shí)施 例。相反,提供這些實(shí)施例以使公開(kāi)內(nèi)容全面且完整,并使得它能夠向本領(lǐng)域的技 術(shù)人員完全傳達(dá)本發(fā)明的范圍。一般而言,分階段通過(guò)使軟件組件服從多層分階段模型來(lái)約束軟件方法在計(jì) 算機(jī)系統(tǒng)內(nèi)的執(zhí)行。軟件組件可以是類(lèi)、對(duì)象、方法或計(jì)算機(jī)系統(tǒng)內(nèi)的其它軟件代 碼構(gòu)造。階段是同時(shí)且共同由一組軟件組件共享的操作狀態(tài)。計(jì)算機(jī)系統(tǒng)執(zhí)行頂層 分階段模型,也稱為主分階段模型,且一個(gè)或多個(gè)子階段在該主分階段模型的一個(gè) 或多個(gè)階段期間發(fā)生。計(jì)算機(jī)系統(tǒng)內(nèi)的操作被約束到一組階段或子階段。多層分階段模型100的一個(gè)示例性實(shí)施例在圖1中示出。該多層分階段模型 具有包括三個(gè)階段102、 104和106的第一或主階段模型。主階段以由箭頭116描 繪的順序發(fā)生。兩個(gè)子階段,即子階段l 108和子階段2 110在階段1 102期間發(fā) 生。此外,另兩個(gè)子階段,即子階段2a和子階段2b在子階段2期間發(fā)生。由此, 分階段模型100表示了具有在其它階段或子階段期間發(fā)生的子階段的一組多層階
段。在下文中,對(duì)階段的任何討論也可應(yīng)用于子階段。每一軟件組件被約束于在一特定階段內(nèi)操作。對(duì)每一軟件方法施加約束以僅 在該軟件方法被約束到的階段期間執(zhí)行或被調(diào)用。能夠造成沖突或矛盾結(jié)果的軟件 方法被約束到不同的階段,在那些階段軟件方法不能從當(dāng)前階段合法地調(diào)用。由此, 每一軟件方法以已知的方式執(zhí)行而不會(huì)在完成矛盾任務(wù)的方法之間產(chǎn)生沖突。所有 方法都在一特定的階段約束下執(zhí)行,使得軟件系統(tǒng)被稱為處于與當(dāng)前階段約束兼容 的狀態(tài)中。其中可實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境200的一個(gè)示例在圖2中示出。計(jì) 算系統(tǒng)環(huán)境200僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非對(duì)本發(fā)明的使用范圍或功能 提出任何局限。也不應(yīng)將計(jì)算環(huán)境200解釋為對(duì)示例性操作環(huán)境200中示出的任一 組件或其組合具有任何依賴或需求。本發(fā)明可以使用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作。適用于本 發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于,個(gè)人計(jì)算機(jī)、 服務(wù)器計(jì)算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、 可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括任一上述系統(tǒng)或設(shè)備的 分布式計(jì)算環(huán)境等等。本發(fā)明可以在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下 文中描述。 一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它 們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類(lèi)型。本發(fā)明也可以在分布式計(jì)算環(huán)境中 實(shí)踐,其中,任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的本地和遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行。在分布式計(jì) 算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì) 中。參考圖2,用于實(shí)現(xiàn)本發(fā)明的示例性計(jì)算機(jī)系統(tǒng)200包括計(jì)算機(jī)210形式的通 用計(jì)算設(shè)備。計(jì)算機(jī)210的組件可包括但不限于,處理單元220、系統(tǒng)存儲(chǔ)器230 以及將包括系統(tǒng)存儲(chǔ)器230的各類(lèi)系統(tǒng)組件耦合至處理單元220的系統(tǒng)總線221。 系統(tǒng)總線221可以是若干種總線結(jié)構(gòu)類(lèi)型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制 器、外圍總線以及使用各類(lèi)總線體系結(jié)構(gòu)中的任一種的局部總線。作為示例而非局 限,這類(lèi)體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA) 總線、增強(qiáng)ISA (EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線以及外 圍部件互連(PCI)總線,也稱為Mezzanine總線。計(jì)算機(jī)210通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算 機(jī)210訪問(wèn)的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。 作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ) 介質(zhì)包括以用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息 的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)
介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、 數(shù)字多功能盤(pán)(DVD)或其它光盤(pán)存儲(chǔ)、磁盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè) 備、或可以用來(lái)儲(chǔ)存所期望的信息并可由計(jì)算機(jī)210訪問(wèn)的任一其它介質(zhì)。通信介 質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、
數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語(yǔ)"已調(diào)制數(shù)據(jù)信 號(hào)"指以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作 為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無(wú)線 介質(zhì),如聲學(xué)、RF、紅外和其它無(wú)線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)
可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器230包括以易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì), 如只讀存儲(chǔ)器(ROM) 231和隨機(jī)存取存儲(chǔ)器(RAM) 232?;据斎?輸出系統(tǒng) 233(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)210內(nèi)的元件之間傳輸信息的基本例程, 通常儲(chǔ)存在ROM 231中。RAM 232通常包含處理單元220立即可訪問(wèn)和/或當(dāng)前 正在操作的數(shù)據(jù)和/或程序模塊,諸如分階段模型100。作為示例而非局限,圖2 示出了操作系統(tǒng)234、應(yīng)用程序235、其它程序模塊236和程序數(shù)據(jù)237;諸如分 階段模型100等分階段模型可用于對(duì)儲(chǔ)存在RAM 232中或從其中執(zhí)行的所有軟件 的執(zhí)行進(jìn)行排序。
計(jì)算機(jī)210也可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。 僅作示例,圖2示出了計(jì)算機(jī)20具有對(duì)不可移動(dòng)、非易失性磁介質(zhì)241,如硬盤(pán) 驅(qū)動(dòng)器進(jìn)行讀寫(xiě)的不可移動(dòng)、非易失性存儲(chǔ)器接口 240。計(jì)算機(jī)210還可包括對(duì)諸 如磁盤(pán)驅(qū)動(dòng)器等設(shè)備251進(jìn)行讀寫(xiě)的非易失性存儲(chǔ)器接口 250,設(shè)備251對(duì)諸如磁 盤(pán)等可移動(dòng)、非易失性介質(zhì)252進(jìn)行讀寫(xiě)。另外,計(jì)算機(jī)210可包括對(duì)諸如CD ROM 或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤(pán)256進(jìn)行讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器255??梢栽?示例性操作環(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì) 包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤(pán)、數(shù)字錄像帶、固態(tài)RAM、固態(tài) ROM等等。硬盤(pán)驅(qū)動(dòng)器241通常通過(guò)不可移動(dòng)存儲(chǔ)器接口,如接口 240連接到系 統(tǒng)總線221,磁盤(pán)驅(qū)動(dòng)器251和光盤(pán)驅(qū)動(dòng)器255通常通過(guò)可移動(dòng)存儲(chǔ)器接口,如接
口 250連接到系統(tǒng)總線221。
上文討論并在圖2中示出的驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)210 提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,示出硬盤(pán) 驅(qū)動(dòng)器241儲(chǔ)存操作系統(tǒng)244、應(yīng)用程序245、其它程序模塊246和程序數(shù)據(jù)247, 它們可以與操作系統(tǒng)234、應(yīng)用程序235、其它程序模塊236和程序數(shù)據(jù)237相同, 也可以與它們不同。這里對(duì)操作系統(tǒng)244、應(yīng)用程序245、其它程序模塊246和程 序數(shù)據(jù)247給予不同的標(biāo)號(hào)來(lái)說(shuō)明至少它們是不同的副本。用戶可以通過(guò)連接到用 戶輸入設(shè)備,如鍵盤(pán)262和定位設(shè)備261 (通常指鼠標(biāo)、跟蹤球或觸摸墊)的用戶 輸入接口 260向計(jì)算機(jī)210輸入命令和信息。其它輸入設(shè)備(未示出)可包括話筒、 操縱桿、游戲墊、圓盤(pán)式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過(guò)耦 合至系統(tǒng)總線221的用戶輸入接口 260連接至處理單元220,但是也可以通過(guò)其它 接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。
監(jiān)視器291或其它類(lèi)型的顯示設(shè)備也通過(guò)接口,如視頻接口 290連接至系統(tǒng) 總線221。除監(jiān)視器291之外,計(jì)算機(jī)210也可包括其它外圍輸出設(shè)備,如揚(yáng)聲器 297和打印機(jī)296,它們通過(guò)輸出外圍接口 295連接。
計(jì)算機(jī)210可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)280的邏輯連 接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)280可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng) 絡(luò)PC、對(duì)等設(shè)備或其它常見(jiàn)的網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有以上相對(duì)于計(jì)算 機(jī)210所描述的元件,盡管在圖2中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備281。圖2描述的邏 輯連接包括局域網(wǎng)(LAN) 271和廣域網(wǎng)(WAN) 273,但也可包括其它網(wǎng)絡(luò),如 無(wú)線網(wǎng)絡(luò)。這類(lèi)網(wǎng)絡(luò)環(huán)境常見(jiàn)于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)210通過(guò)網(wǎng)絡(luò)接口或適配器270連接至 LAN 271。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)210通常包括調(diào)制解調(diào)器272或 用于通過(guò)WAN 273,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器272可以是內(nèi)置 或外置的,它可通過(guò)用戶輸入接口 260或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線221。在 網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)210所描述的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器 存儲(chǔ)設(shè)備281中。作為示例而非局限,遠(yuǎn)程應(yīng)用程序285駐留在存儲(chǔ)器設(shè)備281 上??梢岳斫?,示出的網(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈 路的其它手段。
再次參考圖l,階段l 102是子階段1 108和子階段2 UO的超階段。另兩個(gè) 子階段,即子階段2a 112和子階段2b 114在子階段2 IIO期間發(fā)生。同樣,子階
9
段2 110是子階段2a 112和子階段2b 114的超階段。任何階段或子階段可具有子 階段。對(duì)于多層分階段模型內(nèi)的子階段的層數(shù)沒(méi)有限制。另外,在任何階段空間中 必須有至少兩個(gè)階段,但是對(duì)兩個(gè)階段之上的階段數(shù)沒(méi)有限制。另外,如果在超階 段內(nèi)有子階段,則必須有至少兩個(gè)子階段,但是對(duì)在兩個(gè)子階段之上的任何超階段 期間發(fā)生的子階段的數(shù)目沒(méi)有限制。任何子階段組可在超階段期間循環(huán)一次或多 次。
階段模型100示出了階段空間。階段空間是確定有效階段(圖節(jié)點(diǎn))和有效 階段轉(zhuǎn)移(圖邊)的有限有向圖。因此,階段空間確定了有效階段序列。階段空間 100被定義在階段組階段1 102、階段2 104和階段3 106上。階段空間100還有三 個(gè)階段轉(zhuǎn)移118a、 118b和118c。階段轉(zhuǎn)移表示共享預(yù)轉(zhuǎn)換階段的所有軟件組件的 同時(shí)階段改變何時(shí)發(fā)生。
當(dāng)軟件組件共享一階段空間時(shí),這些軟件組件是階段域的一部分。階段域是 對(duì)由特定階段空間定義的公共分階段模型達(dá)成一致的一組軟件組件。例如,同意受 具有主階段102、 104和106的主階段空間約束的所有軟件組件是主階段域的一部 分。由此,與主階段域中的軟件組件相關(guān)聯(lián)的所有軟件組件包括與主階段102、 104 和106中的至少一個(gè)相關(guān)聯(lián)的階段約束。
階段約束是限制階段在某一特定程序上下文中有效的靜態(tài)約束。特別地,約 束可被應(yīng)用于程序段,從而斷言該程序段僅在遵從該約束的階段期間執(zhí)行。在一個(gè) 實(shí)施例中,階段約束被寫(xiě)為括號(hào)中的屬性,諸如[Phasel]。這一數(shù)據(jù)結(jié)構(gòu)將在以下 更詳細(xì)解釋。
具有占據(jù)一個(gè)或多個(gè)階段域的一個(gè)或多個(gè)組件的計(jì)算機(jī)環(huán)境300在圖3中示 出。主指導(dǎo)器302控制主階段空間的轉(zhuǎn)移和建立。該計(jì)算機(jī)環(huán)境內(nèi)的所有組件是主 階段域300的一部分,但是可占據(jù)一個(gè)或多個(gè)子階段域。為允許創(chuàng)建階段域300, 程序作者需要選擇階段空間、在該階段空間上執(zhí)行階段轉(zhuǎn)移的策略、以及處理跨階 段域邊界的消息的策略。
階段域300可由多層階段空間來(lái)表征。在本發(fā)明的各實(shí)施例中,諸如組件1304 等一個(gè)或多個(gè)組件向主指導(dǎo)器302注冊(cè)。組件1 304表示任何類(lèi)型的軟件構(gòu)造,包 括軟件組件或方法。軟件組件304被約束于主階段空間中的階段之一。
在其它實(shí)施例中,諸如子指導(dǎo)器1 306和子指導(dǎo)器2 308等一個(gè)或多個(gè)子指導(dǎo) 器向主指導(dǎo)器302注冊(cè)。子指導(dǎo)器控制具有一個(gè)或多個(gè)不同階段空間的一個(gè)或多個(gè) 其它階段域。由此,階段域300具有一個(gè)或多個(gè)嵌套的階段域。諸如向子指導(dǎo)器l
306注冊(cè)的組件2 310等所有組件被約束于子階段空間內(nèi)以及主階段空間的一個(gè)或 多個(gè)主階段內(nèi)的一個(gè)或多個(gè)子階段。在一個(gè)實(shí)施例中,由子指導(dǎo)器控制的子階段域 在單個(gè)主階段內(nèi)操作。子階段的操作可以在單個(gè)主階段期間重復(fù)發(fā)生。
在本發(fā)明的各實(shí)施例中,諸如子指導(dǎo)器2等子指導(dǎo)器向諸如子指導(dǎo)器3等其 它子指導(dǎo)器注冊(cè)以創(chuàng)建進(jìn)一步嵌套的子階段域。在某些實(shí)施例中,子指導(dǎo)器2 308 控制組件3 312的和子指導(dǎo)器3 314的操作。在其它實(shí)施例中,諸如子指導(dǎo)器3 314 的指導(dǎo)器控制諸如組件4 316和組件5 318等一個(gè)以上組件。每一子指導(dǎo)器可控制 具有獨(dú)有的階段的階段空間。由此,子指導(dǎo)器1 306操作第一子階段空間,而子指 導(dǎo)器3 314操作第二子階段空間。如果兩個(gè)子階段空間不交互,則階段空間被稱為 正交空間。正交階段空間的組合可形成笛卡爾階段空間,它可用于形成用于單個(gè)乘 積的階段域。底層階段組是正交階段組的笛卡爾乘積,其中有效階段轉(zhuǎn)移也是正交 階段組的有效轉(zhuǎn)移的笛卡爾乘積。
在本發(fā)明的各實(shí)施例中,指導(dǎo)器是邏輯時(shí)鐘。指導(dǎo)器類(lèi)似于硬件系統(tǒng)中的時(shí) 鐘循環(huán)通過(guò)各階段。在每一階段轉(zhuǎn)換時(shí),指導(dǎo)器同時(shí)改變階段域內(nèi)的所有軟件組件 的階段。在一個(gè)實(shí)施例中,任何子指導(dǎo)器可同時(shí)改變子階段域中的一個(gè)子階段。邏 輯時(shí)鐘等待被約束于該階段的操作或在約束于該階段的子階段內(nèi)執(zhí)行的操作完成。
可用于主階段域的階段空間400的一個(gè)示例性實(shí)施例在圖4中示出。階段空 間400具有三個(gè)階段。在讀請(qǐng)求階段402期間,將對(duì)數(shù)據(jù)讀或?qū)懙恼?qǐng)求或軟件系統(tǒng) 中的其它軟件命令或請(qǐng)求排隊(duì),直到進(jìn)入下一階段。在一個(gè)實(shí)施例中,僅所請(qǐng)求的 某些非沖突的方法在下一階段中執(zhí)行,而其它方法等待另一階段或該階段的下一循 環(huán)。
更新階段404將命令和請(qǐng)求定向到適當(dāng)?shù)能浖M件。在本發(fā)明的各實(shí)施例中, 在更新階段404期間,軟件組件履行命令或請(qǐng)求。在一個(gè)實(shí)施例中,更新階段404 具有在更新階段404期間發(fā)生的子階段空間500。 一個(gè)示例性子階段500在圖5中 示出并在下文解釋。在一個(gè)實(shí)施例中,更新階段404觸發(fā)用于數(shù)據(jù)層的子階段。換 言之,對(duì)數(shù)據(jù)寫(xiě)的任何請(qǐng)求在更新階段404的子階段中實(shí)現(xiàn)。
第三階段,即重新確認(rèn)階段406指導(dǎo)并執(zhí)行在更新階段404期間未處理的其 它方法。在一個(gè)實(shí)施例中,對(duì)檢索數(shù)據(jù)的所有請(qǐng)求在重新確認(rèn)階段406期間完成。 例如,在更新階段404中更新了數(shù)據(jù)之后,通知所有軟件組件發(fā)生了數(shù)據(jù)改變,且 被通知的軟件組件檢索更新的數(shù)據(jù)。在一個(gè)實(shí)施例中,重新確認(rèn)階段406操作子階 段空間600。子階段空間600的一個(gè)示例性實(shí)施例在圖6中示出并在以下描述。
為改變階段,階段空間400通過(guò)階段轉(zhuǎn)移。在該示例性實(shí)施例中,有表示三個(gè)階段402、 404和406之間的轉(zhuǎn)移的三個(gè)階段轉(zhuǎn)移408a、 408b和408c。如上所 述,階段轉(zhuǎn)移是諸如指導(dǎo)器302等指導(dǎo)器改變階段時(shí)鐘,且階段域中用于所有軟件 組件的階段同時(shí)改變的時(shí)間點(diǎn)??梢园l(fā)生對(duì)階段域內(nèi)的軟件組件的關(guān)于當(dāng)前階段或向新階段的轉(zhuǎn)換轉(zhuǎn)移的警 告或通知。在一個(gè)實(shí)施例中,指導(dǎo)器通知階段的所有軟件組件。在其它實(shí)施例中, 請(qǐng)求方法向指導(dǎo)器要求階段。在本發(fā)明的各實(shí)施例中,轉(zhuǎn)移通知被發(fā)送給階段域內(nèi) 的一個(gè)或多個(gè)軟件組件。在一個(gè)實(shí)施例中,轉(zhuǎn)移通知在當(dāng)前階段期間或在下一階段 的開(kāi)始處發(fā)生。在其它實(shí)施例中,對(duì)通知過(guò)程采用單獨(dú)的階段。例如,階段空間 400可具有位于轉(zhuǎn)移408a、 408b和408c處的三個(gè)通知階段,用于通知階段域內(nèi)的 軟件組件。更新階段404的一個(gè)示例性子階段空間500在圖5中示出。子階段500在某 些實(shí)施例中用于數(shù)據(jù)層。換言之,用于將數(shù)據(jù)寫(xiě)入共享數(shù)據(jù)結(jié)構(gòu)的方法被約束于該 數(shù)據(jù)子階段空間500的子階段之一。在一個(gè)實(shí)施例中,共享該數(shù)據(jù)的所有軟件組件 在協(xié)議階段502中同意提交改變或異常中止(abort)改變。改變?cè)谔峤换虍惓V兄闺A 段504中被提交或異常中止。在另一實(shí)施例中,協(xié)議階段和提交或異常中止階段是"提交或異常中止"子 階段504的子階段,且子階段空間500具有標(biāo)記階段502而非協(xié)議子階段502。此 處,數(shù)據(jù)改變?cè)谔峤换虍惓V兄闺A段504中作出,且使用該數(shù)據(jù)的所有軟件組件被 標(biāo)記用于在標(biāo)記階段502中更新。標(biāo)記一軟件組件是在該軟件組件中設(shè)置發(fā)信號(hào)通 知該軟件組件在適當(dāng)?shù)纳院箅A段中檢索更新的數(shù)據(jù)的標(biāo)志。在一個(gè)實(shí)施例中,標(biāo)記 的軟件組件在重新確認(rèn)階段406中檢索數(shù)據(jù)。在另一實(shí)施例中,標(biāo)記階段502具有 兩個(gè)子階段標(biāo)記子階段和最終標(biāo)記子階段。此處,使用該數(shù)據(jù)的軟件組件在標(biāo)記 子階段中被標(biāo)記,并在最終標(biāo)記子階段中檢索數(shù)據(jù)。在重新確認(rèn)階段406期間發(fā)生的另一示例性子階段空間600在圖6A中示出。 約束于子階段空間600的軟件構(gòu)造中的一個(gè)示例性改變?cè)趫D6B中示出。子階段空 間600提供用于即插即用操作的子階段。即插即用子階段空間600具有兩個(gè)階段 用子階段604和插子階段602。 一般而言,在插子階段602中,建立、改變或移除 軟件組件的組成和配置,但是不執(zhí)行任何使用時(shí)間功能。同樣,在用子階段604 中,對(duì)常規(guī)功能使用軟件組件的已建立的組成或配置,但是不建立、改變或移除組 成或配置方面。
模塊重新配置的一個(gè)示例性實(shí)施例在圖6B中示出。在該實(shí)施例中,軟件模塊
具有第一配置606。在諸如用戶輸入請(qǐng)求等某一動(dòng)作之后,軟件模塊改為第二配置 608。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,軟件模塊在第一配置606中與在第二配置608 中不同地操作。由此,重新配置應(yīng)當(dāng)在沒(méi)有方法在與該軟件模塊交互的用階段期間 執(zhí)行的情況下發(fā)生。在本發(fā)明的各實(shí)施例中,在插子階段602期間,初始化、連接 或斷開(kāi)軟件實(shí)例并設(shè)置屬性。在某些實(shí)施例中,其它子階段幫助對(duì)在插子階段602 中執(zhí)行的操作進(jìn)行排序。
在一個(gè)實(shí)施例中,插子階段602具有其它子階段。構(gòu)造子階段610通過(guò)實(shí)例 化己知的類(lèi)、調(diào)用軟件組件或使用現(xiàn)有實(shí)例上的接口來(lái)獲取克隆或?qū)iT(mén)化的導(dǎo)出實(shí) 例來(lái)創(chuàng)建新軟件實(shí)例。配置子階段612添加或移除實(shí)例之間的連接。最后,初始化 子階段614設(shè)置屬性并要求在正確連接的實(shí)例之間的協(xié)商。插子階段602中的子階 段可與此處所呈現(xiàn)的子階段有所不同。另外,用子階段604也可包含子階段。
構(gòu)想了其它分階段空間。例如,構(gòu)想了用于用戶界面改變的子階段空間。在 用戶界面子階段空間中,無(wú)效子階段可允許用于構(gòu)建結(jié)構(gòu)的方法的執(zhí)行。繪制子階 段然后繪制構(gòu)建結(jié)構(gòu)??蓪?duì)其它類(lèi)型的操作使用其它階段空間,如本領(lǐng)域的技術(shù)人 員將認(rèn)識(shí)到的。另外,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到以上呈現(xiàn)的示例性階段空間可在 階段或子階段的數(shù)目、層或級(jí)的數(shù)目以及階段或子階段的類(lèi)型方面有所改變。由此, 本發(fā)明是可擴(kuò)展的。在一個(gè)實(shí)施例中,新的超階段被疊加在現(xiàn)有階段空間上。在另 一實(shí)施例中,新的階段被添加到現(xiàn)有的階段空間。在還有一些實(shí)施例中,向現(xiàn)有的 階段空間添加更多子階段或子階段空間的新的層。
具有約束代碼項(xiàng)的執(zhí)行的階段約束的數(shù)據(jù)結(jié)構(gòu)700的一個(gè)示例性實(shí)施例在圖 7中示出。數(shù)據(jù)結(jié)構(gòu)700是代碼元素。任何類(lèi)型的代碼可具有階段約束。階段約束 702被示為在方法704之上。階段約束702將方法704的操作約束于階段約束中指 定的階段,在本實(shí)施例中為階段"perform""執(zhí)行"。由此,方法704僅在"perform" 階段或"perform"子階段期間執(zhí)行。
在本發(fā)明的各實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)包含取決于軟件組件和所執(zhí)行的操作的類(lèi) 型的一種形式的約束。在一個(gè)實(shí)施例中,約束是調(diào)用約束。調(diào)用約束將方法調(diào)用約 束于指定階段。由此,在其它軟件組件或同一軟件組件中的方法執(zhí)行通過(guò)限制這些 方法僅在指定階段期間啟動(dòng)來(lái)約束。在另一實(shí)施例中,約束是構(gòu)造函數(shù)約束。構(gòu)造 函數(shù)是實(shí)例化軟件組件的一種特殊形式的方法。由此,軟件組件的實(shí)例化被約束于 指定階段,諸如對(duì)于圖6A中的構(gòu)造子階段610所解釋的。在另一實(shí)施例中,約束
是引用約束。引用約束約束了軟件組件的整個(gè)類(lèi)以及該類(lèi)的所有原語(yǔ)操作。例如, 對(duì)接口施加的引用約束限制了軟件模塊之間的連接,如對(duì)于圖6A中的連接子階段612所解釋的。約束由軟件代碼中可被分配給任何目標(biāo)軟件組件的階段約束屬性來(lái)表達(dá)。在 本發(fā)明的各實(shí)施例中,階段約束屬性被分配給整個(gè)類(lèi)且是可繼承的。由此,子組件 從其父組件繼承約束。在某些實(shí)施例中,分階段模式對(duì)同一目標(biāo)施加多個(gè)階段約束 屬性。由此,軟件目標(biāo)通過(guò)多個(gè)階段約束的結(jié)合來(lái)約束。每一約束是對(duì)與所指定的階段的層次相關(guān)聯(lián)的"類(lèi)型"的約束。由此,指定 超階段的約束是對(duì)"超階段"的約束。指定子階段的約束是對(duì)"子階段"的約束。 對(duì)作為子階段的類(lèi)型的約束是對(duì)關(guān)于"超類(lèi)型"的所有約束的并集的約束。對(duì)類(lèi)型 的約束之間的關(guān)系由編譯器使用或在運(yùn)行時(shí)使用以檢查不同軟件組件之間的約束 關(guān)系的有效性。實(shí)施約束可在運(yùn)行時(shí)或在編譯時(shí)發(fā)生。在編譯時(shí),可檢査對(duì)類(lèi)型的約束。編 譯器可對(duì)照關(guān)于具有對(duì)類(lèi)型的約束的方法調(diào)用具有對(duì)子類(lèi)型的約束的方法的一組 合法性規(guī)則來(lái)檢查對(duì)類(lèi)型的約束以及對(duì)子類(lèi)型的約束。如果對(duì)子類(lèi)型的約束與對(duì)類(lèi)型的約束相同或比它弱,例如,如果對(duì)類(lèi)型的約束指定了插階段602,而對(duì)子類(lèi)型 的約束指定了初始化子階段614,則該約束模式是有效的。在該實(shí)施例中,初始化 子階段約束614在插子階段602內(nèi)執(zhí)行,且因此是較弱的約束。如果對(duì)子類(lèi)型的約 束與對(duì)類(lèi)型的約束互不相交,例如,如果對(duì)類(lèi)型的約束指定了用子階段604,而對(duì) 子類(lèi)型的約束指定了相反的插子階段602,則約束模式是無(wú)效的。如果對(duì)子類(lèi)型的 約束比對(duì)類(lèi)型的約束強(qiáng)或與其重疊,例如,如果對(duì)類(lèi)型的約束指定了插子階段602, 而對(duì)子類(lèi)型的約束指定了初始化子階段614,則約束模式是有效的,但是必須經(jīng)受 某一動(dòng)態(tài)檢查。在該實(shí)施例中,如果階段域當(dāng)前同時(shí)在插子階段602和初始化子階 段614中操作,則該調(diào)用模式是有效的。然而,如果域不在兩個(gè)子階段之一中,則 該模式是無(wú)效的。構(gòu)想了其它合法性規(guī)則并結(jié)合到本發(fā)明中。用于在多層分階段域中操作計(jì)算機(jī)環(huán)境的方法800的一個(gè)示例性實(shí)施例在圖 8A和圖8B中示出。在開(kāi)始之后,轉(zhuǎn)移操作802轉(zhuǎn)移到第一階段,如請(qǐng)求階段402。 在一個(gè)實(shí)施例中,啟動(dòng)諸如主指導(dǎo)器302的主指導(dǎo)器。在一個(gè)實(shí)施例中,諸如組件 304等組件被約束于向主指導(dǎo)器注冊(cè)的主階段之一。主指導(dǎo)器開(kāi)始階段時(shí)鐘以將邏 輯時(shí)間循環(huán)通過(guò)諸如階段空間400的階段空間內(nèi)的各階段。確定操作804確定諸如組件304等任何軟件組件是否被約束于主階段中的第
一個(gè)。如果一軟件組件被約束于第一階段,則執(zhí)行操作806在第一階段期間執(zhí)行該軟件組件。如果沒(méi)有軟件組件要執(zhí)行或者在軟件組件的執(zhí)行期間,則確定操作808 確定是否有在第一階段期間發(fā)生的子階段空間,諸如子階段空間500。如果在第一 階段期間沒(méi)有子階段空間發(fā)生,則該過(guò)程通過(guò)連接器1前進(jìn)到圖8B所示的轉(zhuǎn)移操 作822。如果有在第一階段期間發(fā)生的子階段空間,則標(biāo)識(shí)操作810標(biāo)識(shí)該子階段空 間以及適用的子階段。在一個(gè)實(shí)施例中,諸如子指導(dǎo)器306的子指導(dǎo)器被啟動(dòng)并向 控制主階段空間的主指導(dǎo)器注冊(cè)。子指導(dǎo)器開(kāi)始子階段邏輯時(shí)鐘以循環(huán)通過(guò)該子階 段空間中的各子階段。確定操作812確定是否有被約束于當(dāng)前子階段的任何軟件組 件,如組件312。在一個(gè)實(shí)施例中,約束于子階段空間的軟件組件向子指導(dǎo)器注冊(cè)。 由此,在主階段域下創(chuàng)建了嵌套的子階段域。如果在約束于當(dāng)前子階段的子階段域 中有軟件組件,則執(zhí)行操作814在當(dāng)前子階段期間執(zhí)行這些軟件組件。確定操作 816確定是否有在當(dāng)前子階段期間發(fā)生的其它子階段空間,諸如子階段610、 612 和614。如果有其它子階段,則該過(guò)程返回到標(biāo)識(shí)操作810以標(biāo)識(shí)其它子階段。如果沒(méi)有其它子階段空間要標(biāo)識(shí),則確定操作818確定是否還余下任何其它 子階段要在當(dāng)前子階段空間中發(fā)生。如果有另一子階段要在當(dāng)前子階段空間中發(fā) 生,則轉(zhuǎn)移操作820轉(zhuǎn)移到子階段空間中的下一子階段。在一個(gè)實(shí)施例中,子指導(dǎo) 器等待,直到當(dāng)前子階段中的所有線程被執(zhí)行,然后轉(zhuǎn)移到下一子階段。然后,該 過(guò)程再次前進(jìn)到確定操作812。如果當(dāng)前子階段空間中沒(méi)有余下任何子階段,則確 定操作818確定在任何超階段空間中是否有要轉(zhuǎn)移到的另一超階段。如果有另一超 階段,則轉(zhuǎn)移操作820轉(zhuǎn)移到下一超階段。該過(guò)程(確定超階段內(nèi)的子階段;在子 階段內(nèi)執(zhí)行軟件組件;轉(zhuǎn)移到下一子階段直到所有子階段完成;以及然后轉(zhuǎn)移到下 一超階段)重復(fù),直到循環(huán)通過(guò)了所有子階段空間并且需要到下一主階段的轉(zhuǎn)移。 一旦子階段循環(huán)對(duì)第一主階段結(jié)束,則該過(guò)程通過(guò)連接器1前進(jìn)到圖8B所示的轉(zhuǎn) 移操作822。轉(zhuǎn)移操作822轉(zhuǎn)移到下一主階段,如更新階段404。在一個(gè)實(shí)施例中,主指導(dǎo) 器等待在第一階段中執(zhí)行的所有線程結(jié)束。然后,主指導(dǎo)器將邏輯階段時(shí)鐘改為下 一階段。在某些實(shí)施例中,主指導(dǎo)器遵循以上參考圖3列出的轉(zhuǎn)移規(guī)則。該過(guò)程然 后按照用于標(biāo)識(shí)子階段的第一階段發(fā)生時(shí)類(lèi)似的操作進(jìn)行。由此,關(guān)于子階段過(guò)程 的某些細(xì)節(jié)此處不再討論,但是本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到如何將關(guān)于第一階段描 述的細(xì)節(jié)實(shí)現(xiàn)到約束于下一階段的任何后續(xù)過(guò)程中。 確定操作824確定是否有任何軟件組件被約束于當(dāng)前主階段。如果有被約束于下一主階段的軟件組件,則執(zhí)行操作826執(zhí)行該軟件組件。在各實(shí)施例中,這些軟件組件已向主指導(dǎo)器注冊(cè)。這些軟件組件繼續(xù)關(guān)于當(dāng)前階段與用主指導(dǎo)器校驗(yàn)當(dāng) 前階段。當(dāng)階段轉(zhuǎn)移和主指導(dǎo)器報(bào)告,該域現(xiàn)在在下一主階段中時(shí),約束于下一主 階段的軟件組件開(kāi)始執(zhí)行。如果沒(méi)有約束于下一主階段的軟件組件或者在被約束的軟件組件的執(zhí)行期間,則確定操作828確定當(dāng)前主階段內(nèi)是否有任何子階段空間。如果有子階段空間, 則標(biāo)識(shí)操作830標(biāo)識(shí)這些子階段空間并轉(zhuǎn)移到第一子階段。確定操作832確定是否 有任何軟件組件約束于當(dāng)前子階段。如果有約束于當(dāng)前子階段的軟件組件,則執(zhí)行 操作834執(zhí)行該軟件組件。如果沒(méi)有約束于當(dāng)前子階段的軟件組件或者在這些軟件組件的執(zhí)行期間,則 確定操作836確定當(dāng)前子階段內(nèi)是否有其它子階段空間。如果有其它子階段空間, 則該過(guò)程返回到標(biāo)識(shí)操作830。如果當(dāng)前子階段內(nèi)沒(méi)有其它子階段空間,則確定操 作838確定是否有在當(dāng)前子階段空間中的下一子階段或者在超階段空間中的下一 超階段。如果有下一子階段或超階段,則轉(zhuǎn)移操作840轉(zhuǎn)移到下一子階段或超階段。 如果在當(dāng)前主階段下沒(méi)有下一子階段或超階段,則確定操作842確定是否有下一主 階段,諸如重新確認(rèn)階段406。如果有下一主階段,則該過(guò)程返回到轉(zhuǎn)移操作822。 如果主階段空間中沒(méi)有另一主階段,則該過(guò)程通過(guò)連接器2返回到轉(zhuǎn)移操作802 并通過(guò)轉(zhuǎn)移到第一階段來(lái)開(kāi)始階段循環(huán)。為進(jìn)一步解釋本發(fā)明,以下參考圖9描述在多層分階段域中操作的一個(gè)示例 性計(jì)算機(jī)系統(tǒng)。該示例性計(jì)算機(jī)系統(tǒng)操作個(gè)人聯(lián)系人應(yīng)用程序,諸如Microsoft Outlook⑧消息通信和協(xié)作客戶端程序。此處,用戶界面顯示地址簿中的一個(gè)或多個(gè) 聯(lián)系人。用戶界面具有主視圖窗口卯2。主視圖902示出了所有聯(lián)系人并允許用戶 選擇一個(gè)聯(lián)系人來(lái)査看關(guān)于該聯(lián)系人的更詳細(xì)信息。計(jì)算機(jī)環(huán)境900在一階段空間下操作。為解釋起見(jiàn)而非限制,整個(gè)系統(tǒng)900 在圖4所示的階段空間400下操作。另外,出于解釋的目的,計(jì)算機(jī)系統(tǒng)900當(dāng)前 在請(qǐng)求階段402中。由此,計(jì)算機(jī)系統(tǒng)900允許其中接收請(qǐng)求或命令的任何操作。 由此,接收査看聯(lián)系人的詳細(xì)視圖904的用戶命令916并將其置于隊(duì)列中。另外, 命令918被發(fā)送到地址簿模塊908以檢索所請(qǐng)求的詳細(xì)信息。數(shù)據(jù)請(qǐng)求918也被排 隊(duì)。主指導(dǎo)器302將計(jì)算機(jī)系統(tǒng)域900中的階段改為更新階段404。此處,命令 916和918分別被發(fā)送到選擇狀態(tài)模塊906和地址簿卯8。在更新階段404期間, 轉(zhuǎn)移到如以上參考圖6所解釋的用于對(duì)用戶界面的改變的用戶界面子階段空間。無(wú) 效子階段開(kāi)始。用于詳細(xì)視圖904的命令916開(kāi)始處理。主視圖902中的視圖被無(wú) 效。例如,對(duì)詳細(xì)視圖904的選擇被設(shè)為非活動(dòng)。另外,主視圖902被設(shè)為非活動(dòng) 窗口。詳細(xì)視圖904用適當(dāng)?shù)淖侄魏陀脩艚缑骓?xiàng)來(lái)創(chuàng)建。用戶界面子指導(dǎo)器然后轉(zhuǎn) 移到繪制子階段。主視圖902中對(duì)聯(lián)系人的選擇被繪制以顯現(xiàn)為非活動(dòng),例如加亮 的選擇改變顏色。主視圖902被繪制為非活動(dòng)。例如,主視圖902窗格改變顏色以 表示它是非活動(dòng)的。詳細(xì)視圖904用用戶界面元素來(lái)繪制。字段保持打開(kāi)以從地址 簿模塊908接收數(shù)據(jù)。主指導(dǎo)器302在用戶界面子空間中的所有無(wú)效和繪制約束操作完成之后轉(zhuǎn)移 到重新確認(rèn)階段406。在重新確認(rèn)階段406期間執(zhí)行數(shù)據(jù)檢索操作。在一個(gè)實(shí)施例 中,數(shù)據(jù)檢索操作被約束于數(shù)據(jù)檢索子階段空間。數(shù)據(jù)檢索子階段空間具有兩個(gè)子 階段,即標(biāo)記和最終標(biāo)記,如參考圖6所解釋的。啟動(dòng)標(biāo)記子階段。地址簿搜索需 要數(shù)據(jù)更新的軟件模塊。標(biāo)記詳細(xì)視圖904。用于數(shù)據(jù)檢索子階段空間的子指導(dǎo)器 轉(zhuǎn)移到最終標(biāo)記子階段。在最終標(biāo)記子階段中,地址簿908從以下三個(gè)數(shù)據(jù)存儲(chǔ)之 一中檢索所需的聯(lián)系人信息Exchange服務(wù)器地址簿910、客戶端地址簿912或 MSN地址簿。在檢索到聯(lián)系人信息之后,地址簿908將聯(lián)系人信息寫(xiě)入詳細(xì)視圖 904。在完成了約束于重新確認(rèn)階段406的所有操作之后,主指導(dǎo)器302轉(zhuǎn)移回請(qǐng) 求階段402。此處,用戶界面再次從用戶輸入設(shè)備接受命令和請(qǐng)求。用戶在詳細(xì)視 圖904內(nèi)輸入對(duì)聯(lián)系人信息的改變。例如,用戶改變聯(lián)系人的地址。命令902從詳 細(xì)視圖904發(fā)送到地址簿904以改變數(shù)據(jù)。另外,命令922被發(fā)送到選擇狀態(tài)906 以更新主視圖902和詳細(xì)視圖904的視圖。在這一實(shí)施例中,命令將被排隊(duì),且主 指導(dǎo)器302轉(zhuǎn)移到更新階段404。更新階段404啟動(dòng)數(shù)據(jù)寫(xiě)子階段空間,諸如子階 段空間500。在協(xié)議子階段502中,地址簿將數(shù)據(jù)改變請(qǐng)求發(fā)送到若干數(shù)據(jù)存儲(chǔ)910、 912 和914。數(shù)據(jù)存儲(chǔ)中的一個(gè)或多個(gè)可包含詳細(xì)視圖904中改變的數(shù)據(jù)的副本。由此, 具有該數(shù)據(jù)的每一數(shù)據(jù)存儲(chǔ)必須同意改變數(shù)據(jù)。由此,在協(xié)議子階段502期間發(fā)生 投票過(guò)程。如果所有的數(shù)據(jù)存儲(chǔ)同意提交該改變,則將協(xié)議發(fā)回地址簿908。子指 導(dǎo)器將階段改為提交或異常中止階段504。此處,數(shù)據(jù)改變被發(fā)送到數(shù)據(jù)存儲(chǔ)并用 于更新數(shù)據(jù)。404期間,用戶界面子階段空間發(fā)生。選擇狀態(tài)906在無(wú) 效子階段中將主視圖902和詳細(xì)視圖904中包含舊數(shù)據(jù)的部分無(wú)效。在繪制子階段 中,重新繪制主視圖902和詳細(xì)視圖904,從而為改變的數(shù)據(jù)保持了空間。在所有 子階段在更新階段404中完成之后,階段域900轉(zhuǎn)移到重新確認(rèn)階段406。在重新確認(rèn)階段406中,其它子階段空間包括用于標(biāo)記和最終標(biāo)記的子階段。 轉(zhuǎn)移到標(biāo)記階段,地址簿908將主視圖902和詳細(xì)視圖904標(biāo)記為需要改變的數(shù)據(jù)。 在最終標(biāo)記子階段中,改變的數(shù)據(jù)被寫(xiě)入主視圖902和詳細(xì)視圖904。這些改變可 在非常短的時(shí)間內(nèi)且以精細(xì)的粒度發(fā)生。例如,階段在用戶輸入每一字符之后且在 幾分之一秒的瞬間內(nèi)循環(huán)。由此,改變看似為立即發(fā)生。本示例示出了如何對(duì)系統(tǒng)內(nèi)的方法執(zhí)行施加多層分階段約束。如果命令和改 變?cè)跊](méi)有分階段的情況下發(fā)生,則主視圖902和詳細(xì)視圖904可能在所有數(shù)據(jù)存儲(chǔ) 改變數(shù)據(jù)之前被更新。因此,用戶可取決于視圖改變數(shù)據(jù)并更新用戶界面視圖的方 法的順序來(lái)查看詳細(xì)試圖卯4或主試圖902中的混合結(jié)果。盡管以對(duì)結(jié)構(gòu)特征、方法動(dòng)作和包含這些動(dòng)作的計(jì)算機(jī)可讀介質(zhì)專(zhuān)用的語(yǔ)言 描述了本發(fā)明,但是可以理解,所附權(quán)利要求書(shū)中定義的本發(fā)明不必限于所描述的 具體結(jié)構(gòu)、動(dòng)作或介質(zhì)。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到落入本發(fā)明的范圍和精神內(nèi)的 其它實(shí)施例或改進(jìn)。因此,這些具體結(jié)構(gòu)、動(dòng)作或介質(zhì)是作為實(shí)現(xiàn)所要求保護(hù)的本 發(fā)明的示例性實(shí)施例來(lái)公開(kāi)的。本發(fā)明由所附權(quán)利要求書(shū)來(lái)限定。
權(quán)利要求
1.一種編碼了用于具有組件的計(jì)算機(jī)系統(tǒng)的指令的計(jì)算機(jī)程序的計(jì)算機(jī)程序產(chǎn)品,所述組件包括形成兩組或多組軟件組件的多個(gè)軟件組件;被約束于由第一階段空間表征的第一階段域的第一組軟件組件;以及被約束于由第二階段空間表征的第二階段域的第二組軟件組件。
2. 如權(quán)利要求l所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述第一階段空間是 主階段空間。
3. 如權(quán)利要求l所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述第二階段域是所 述第一階段域的子階段域,并由一子階段空間來(lái)表征。
4. 如權(quán)利要求3所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述子階段域還包括 由一個(gè)或多個(gè)其它子階段空間來(lái)表征的一個(gè)或多個(gè)其它子階段域。
5. 如權(quán)利要求l所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述第一階段域和所 述第二階段域是正交的。
6. 如權(quán)利要求l所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,還包括控制所述第一 階段域的主指導(dǎo)器。
7. 如權(quán)利要求6所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,還包括 控制所述第一階段域下的一個(gè)或多個(gè)子階段空間的一個(gè)或多個(gè)子指導(dǎo)器;以及向所述子指導(dǎo)器之一注冊(cè)的一個(gè)或多個(gè)軟件組件,所述子指導(dǎo)器將所述一個(gè) 或多個(gè)軟件組件的執(zhí)行約束于由所述子指導(dǎo)器控制的子階段中的一個(gè)或多個(gè)。
8. 如權(quán)利要求6所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,還包括向所述主指導(dǎo) 器注冊(cè)的一個(gè)或多個(gè)軟件組件,所述主指導(dǎo)器將所述一個(gè)或多個(gè)軟件組件的執(zhí)行約 束于由所述主指導(dǎo)器控制的階段中的一個(gè)或多個(gè)。
9. 如權(quán)利要求6所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)子指 導(dǎo)器向所述主指導(dǎo)器注冊(cè),并且由所述主指導(dǎo)器控制。
10. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,被約束于所述第一 階段的所有方法的完成和被約束于所述第二階段的所有方法的完成導(dǎo)致計(jì)算機(jī)操 作的完成。
11. 一種編碼了用于執(zhí)行一計(jì)算機(jī)實(shí)現(xiàn)的方法的指令的計(jì)算機(jī)程序的計(jì)算機(jī) 程序產(chǎn)品,所述計(jì)算機(jī)實(shí)現(xiàn)的方法用于結(jié)構(gòu)化軟件系統(tǒng)內(nèi)的多個(gè)方法的執(zhí)行,所述 方法包括轉(zhuǎn)移到第一階段;將第一方法的執(zhí)行約束于所述第一階段; 轉(zhuǎn)移到一個(gè)或多個(gè)其它階段;以及將一個(gè)或多個(gè)其它方法的執(zhí)行約束于所述一個(gè)或多個(gè)其它階段。
12. 如權(quán)利要求ll所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述第一階段是請(qǐng) 求階段、更新階段或重新確認(rèn)階段中的一個(gè)。
13. 如權(quán)利要求ll所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述第一階段具有 兩個(gè)或更多子階段。
14. 如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述兩個(gè)或更多子 階段包括協(xié)議子階段和提交或異常中止子階段。
15. 如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述兩個(gè)或更多子 階段包括標(biāo)記子階段和最終標(biāo)記子階段。
16. 如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述兩個(gè)或更多子 階段包括插子階段和用子階段。
17. 如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述插子階段還包 括構(gòu)造子階段、配置子階段和初始化子階段。
18. 如權(quán)利要求ll所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述第一方法由所 述方法中的階段約束屬性約束于所述第一階段。
19. 一種其上儲(chǔ)存有數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)程序產(chǎn)品,所述數(shù)據(jù)結(jié)構(gòu)包括包含階 段約束屬性的數(shù)據(jù)字段,所述階段約束屬性將與所述數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的操作限制到 一指定的階段。
20. 如權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述階段約束屬性 包括調(diào)用約束、構(gòu)造函數(shù)約束或引用約束中的一個(gè)。
全文摘要
本發(fā)明包括用于軟件系統(tǒng)的分階段系統(tǒng)和方法。在本發(fā)明的各實(shí)施例中,該分階段系統(tǒng)包括一多層分階段空間,其中軟件系統(tǒng)內(nèi)的操作被約束于一個(gè)階段或一個(gè)子階段。操作僅在指定的階段內(nèi)執(zhí)行。由此,在大型且復(fù)雜的軟件系統(tǒng)中可能產(chǎn)生不正確結(jié)果的操作不同時(shí)執(zhí)行,而是遵循一特定順序來(lái)執(zhí)行。本發(fā)明還提供了一種將階段約束作為軟件屬性引入軟件代碼的數(shù)據(jù)結(jié)構(gòu)。
文檔編號(hào)G06F9/44GK101167052SQ200680014637
公開(kāi)日2008年4月23日 申請(qǐng)日期2006年4月20日 優(yōu)先權(quán)日2005年4月29日
發(fā)明者A·F·X·阿瑪?shù)? B·M·奧蘭尼科, C·A·西澤伯斯基, D·G·亨特, G·L·休格斯, S·克萊安, W·A·曼尼斯 申請(qǐng)人:微軟公司