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