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