專利名稱:計算機應用程序中體系結構劃分的構建時(Build-Time)實施的制作方法
技術領域:
本發明涉及實施計算機應用程序等中的體系結構劃分的系統和方法。更具 體地,本發明涉及這樣的系統和方法,其允許這樣的計算機應用程序的體系結 構設計師就應用程序指定包括許可的依賴關系的劃分規則,并且實施所指定的 劃分規則。
背景技術:
計算機應用程序,尤其是相對大規模的計算機應用程序一般根據概念上將 應用程序分成邏輯分組的體系結構劃分設計來構造。如可以理解地,這樣的分 組用于幫助廣泛地理解應用程序。作為這樣的體系結構劃分的示例,應用程序 可能被分成包括用戶界面(UI)、應用程序邏輯、數據存儲等的分組、分區或 焦點區。
值得注意的是,特定應用程序的體系結構劃分設計可不僅指定多個分區, 而且也可指定每一指定分區中的應用程序組件是否以及如何可引用其他指定 分區中的應用程序組件。如可以理解地,第一組件內對另一、第二組件的引用 創建第一組件對第二組件的依賴關系。如也可以理解地,這樣的引用或依賴關 系可能是有用甚至是必需的,但也可能具有以不想要和/或欠考慮的方式將應 用程序組件連系在一起的效果。因此,應用程序的體系結構劃分設計可指定第 一分區中的第一組件可引用第二分區中的第二組件但不可引用第三分組中的 第二組件。
如應理解地,通過根據邏輯分組采用體系結構劃分,尤其在模塊化系統中, 遵守定義的分組以及所允許的依賴關系為配置的靈活性留有了余地。例如,且 如可以理解地,如果應用程序中的應用程序邏輯被劃分成與這樣的應用程序中 的用戶界面分開,用來提供應用程序邏輯的組件可更容易地在本質上可能相似 但具有不同用戶界面的另一應用程序中采用。因此,且作為依賴關系規則,應
用程序邏輯分區中的組件不應依賴于用戶界面分區中的組件,因為這樣的依賴 關系將阻止應用程序邏輯用于另一用戶界面。
對于計算機應用程序良好地建立了體系結構劃分的理論和使用。然而,給
出這樣做的機會,為計算機應用程序開發一個或多個組件的開發員可能確實會 有意或無意地違反為應用程序定義的體系結構劃分。即,應用程序,尤其是前 述相對大規模的計算機應用程序,往往不再依照為其定義的體系結構劃分并與 之偏差。
在這樣的偏差的一個典型示例中,特定應用程序的體系結構劃分設計可指 定第一分區中的組件可引用/依賴于第二分區中的組件而非第三分區中的組件 的規則。然而,盡管有這樣的依賴關系規則,開發應用程序的開發員實際上通 過在第一分區中開發引用/依賴于第三分區中的組件的組件仍有意或無意地違 反了劃分設計。簡而言之,進行從一個組件到另一組件的引用通常是一件簡單 的事,且目前不存在向開發員告知特定的引用可能會違反依賴關系規則并造成 偏差的防護裝置。
一般而言,偏差主要由于應用程序的體系結構一般與應用程序本身分開設 計和維護而造成。簡而言之,這樣的體系結構通常不會具體化成源代碼或可用 于實際構建應用程序的任何其他可存儲的形式。而且,通常體系結構應用程序 由一個或一組人定義并由另一個或另一組人開發。因此,如果在開發的應用程 序和為該應用程序定義的體系結構之間出現偏差,則不存在任何方法或機制來 標識偏差或停止構建與為其定義的體系結構有偏差的應用程序。
從而,需要實施為應用程序定義的體系結構劃分的方法和機制。具體地, 需要實際上標識所開發的應用程序和為該應用程序定義的體系結構之間的偏 差的方法和機制。同樣地,需要用于停止構建與為其定義的體系結構有偏差的 應用程序的方法和機制。
發明概述
前述需要至少部分為本發明所滿足,在本發明中對于具有多個組件并根據 為其設計的體系結構構建的計算機軟件構造提供了方法。體系結構包括多個分 區和依賴關系規則,其中每一分區具有與之相關聯的至少一個組件。每一依賴
關系規則指定一個分區的組件是否可引用另一分區的任何組件。
該方法用于在構建時對構造的每一組件實施體系結構的依賴關系規則。在 該方法中,接收到基于相應的構建指令來構建軟件構造的特定組件的命令,還 接收到依賴關系規則。之后,確定軟件構造和特定分區的特定組件是否由于不 正確引用另一分區的另一組件而違反任何依賴關系規則。僅當軟件構造的特定 組件不違反任何依賴關系規則時,才構建該特定組件。
附圖簡述
以上概述以及以下本發明實施例的詳細描述,在結合附圖閱讀時能夠被更 好地理解。為說明本發明的目的,在附圖中示出目前優選的實施例。然而,如 應理解地,本發明不限于所示的嚴謹的安排和手段。在附圖中
圖1是表示本發明和/或其部分的各方面可被納入其中的通用計算機系統 的框圖2是應用程序及其體系結構的示例的框圖,其中應用程序根據本發明的 一個實施例要構建以在計算平臺上實例化;
圖3是根據本發明的一個實施例用于構建圖2的應用程序的構建器的框 圖;以及
圖4是示出圖3的構建器在構建圖2的應用程序之前執行的關鍵步驟的流 程圖,其中構建器確定圖2的應用程序的組件根據本發明的一個實施例是否滿 足圖2的體系結構的劃分。
本發明詳細描述 計算機環境
圖1和以下討論旨在提供其中可實現本發明和/或其部分的合適計算環境 的簡要一般描述。盡管不是必需的,但是在諸如程序模塊的由諸如客戶機工作 站或服務器的計算機執行的計算機可執行指令的一般上下文中描述本發明。一 般而言,程序模塊包括例程、程序、對象、組件、數據結構等,它們執行特定 任務或實現特定抽象數據類型。而且,應該理解,本發明和/或其部分可與其它 計算機系統配置一起來實踐,包括手持設備、多處理器系統、基于微處理器或
8
可編程消費電子產品、網絡PC、小型機、大型機等。本發明也可以在分布式 計算環境中實現,其中任務由通過通信網絡鏈接的遠程處理設備執行。在分布 式計算環境中,程序模塊可以位于本地和遠程存儲器存儲設備中。
如圖1所示,示例性通用計算系統包括常規個人計算機120等,該計算機 包括處理單元121、系統存儲器122和將包括系統存儲器的各種系統組件耦合 到處理單元121的系統總線123。系統總線123可以是若干類型的總線結構中 的任一種,包括存儲器總線或存儲器控制器、外圍總線和使用各種總線體系結 構中的任一種的局部總線。系統存儲器包括只讀存儲器(ROM) 124和隨機存 取存儲器(RAM) 125。基本輸入/輸出系統126 (BIOS)包含有助于諸如啟動 時在個人計算機120中元件之間傳遞信息的基本例程,它被存儲在ROM 124 中。
個人計算機I20還包括對硬盤(未示出)讀寫的硬盤驅動器127、對可移 動磁盤129讀寫的磁盤驅動器128、以及對諸如CD-ROM或其它光學介質的可 移動光盤131讀寫的光盤驅動器130。硬盤驅動器127、磁盤驅動器128和光 盤驅動器130分別通過硬盤驅動器接口 132、磁盤驅動器接口 133和光盤驅動 器接口 134連接到系統總線123。驅動器及其相關聯的計算機可讀介質為個人 計算機120提供了對計算機可讀指令、數據結構、程序模塊和其它數據的非易 失性存儲。
盡管此處所述的示例性環境使用硬盤、可移動磁盤129和可移動光盤131, 但是應該理解,在示例性操作環境中也可使用能夠存儲可由計算機訪問的數據 的其它類型計算機可讀介質。這樣的其它類型介質包括磁帶盒、閃存卡、數字 視頻盤、貝努利盒式磁帶、隨機存取存儲器(RAM)、只讀存儲器(ROM) 等。
可在硬盤、磁盤129、光盤131、 ROM 124或RAM 125上存儲許多程序 模塊,包括操作系統135、 一個或多個應用程序136、其它程序模塊137和程 序數據138。用戶可通過諸如鍵盤140和定點設備142的輸入設備向個人計算 機120中輸入命令和信息。其它輸入設備(未示出)可以包括話筒、操縱桿、 游戲手柄、圓盤式衛星天線、掃描儀等。這些和其它輸入設備通常由耦合至系 統總線的串行端口接口 146連接至處理單元121,但也可以由其它接口,諸如
并行端口、游戲端口或通用串行總線(USB)連接。監視器147或其它類型的 顯示設備也經由接口,諸如視頻接口 148連接至系統總線123。除了監視器147 之外,個人計算機通常包括諸如揚聲器和打印機的其它外圍輸出設備(未示 出)。圖1的示例性系統也包括主適配器155、小型計算機系統接口 (SCSI) 總線156以及連接到SCSI總線156的外置存儲設備162。
個人計算機120可使用至一個或多個遠程計算機,諸如遠程計算機149 的邏輯連接在網絡化環境中操作。遠程計算機149可以是另一個人計算機、服 務器、路由器、網絡PC、對等設備或其它常見的網絡節點,且通常包括上文 相對于個人計算機120描述的許多或所有元件,盡管在圖1中只示出存儲器存 儲設備150。圖1中所示邏輯連接包括局域網(LAN) 151和廣域網(WAN) 152。這樣的聯網環境在辦公室、企業范圍計算機網絡、內聯網和因特網中是 常見的。個人計算機120也可用作為對諸如另一個人計算機120的客戶的主機、 諸如便攜式播放器或便攜式數據助理的更專門的設備等,借此主機對客戶進行 數據下載和/或上傳等。
當在LAN網絡環境中使用時,個人計算機120通過網絡接口或適配器153 連接至LAN151。當在WAN網絡環境中使用時,個人計算機120通常包括調 制解調器154或用于通過諸如因特網等廣域網152建立通信的其它裝置。或為 內置或為外置的調制解調器154經由串行端口接口 146連接到系統總線123。 在網絡化環境中,相對于個人計算機120所描述的程序模塊或其部分可以存儲 在遠程存儲器存儲設備中。可以理解,所示的網絡連接是示例性的,且可以使 用在計算機之間建立通信鏈路的其它手段。
體系結構劃分的構建時實施
在本發明中,為應用程序定義體系結構劃分,包括多個分區以及每一指定 的分區中的應用程序組件是否以及如何可引用其他指定分區中的應用程序組 件,且確保應用程序實際上是在這樣的體系結構劃分定義內構造。具體地,在 本發明中,提供了實施應用程序體系結構的劃分規則的方法和機制,其中這樣 的方法和機制在構建應用程序的每一組件時的構建時操作。從而,實施應用程 序的體系結構且防止應用程序與為其定義的體系結構有偏差。如果實際上檢測
到這樣的偏差,即停止組件的構建,且向組件的開發員告知以便給予糾正這樣 的偏差的機會。
注意到,為其定義體系結構劃分的應用程序和這樣的應用程序的體系結構 可以是任何應用程序和體系結構,而不背離本發明的精神和范圍。設計和定義 這樣的應用程序和體系結構是已知的,或應該對相關的公眾是顯而易見的,從 而不必在此處詳細描述。也注意到,在設計和定義這樣的應用程序和體系結構 時,這樣的體系結構的每一分區可按照任何適當的方式定義,而不背離本發明 的精神和范圍。例如,可將每一分區定義成分區是一維或多維的,且每一分區 可基于諸如功能、安全性、通信等等的準則來定義。
現在轉向圖2,可見示出了應用程序10及其體系結構12的示例,其中應
用程序要在計算平臺14上實例化。此處注意到,計算平臺14可包括單個計算
設備或多個聯網的計算設備。在后一情況中,多個聯網的計算設備可按照任何
適當的方式組織,而不背離本發明的精神和范圍。例如,平臺14的不同計算 設備可專用于體系結構12的不同分區16,或這樣的不同計算設備對應于多個 這樣的分區16。
無論如何,且仍參考圖2,可見在示例中示出的應用程序10被組織成搭 接以形成點陣或網格的多個水平層和垂直片的體系結構12,其中網格的每一單 元格被視為一單獨的分區16。盡管未示出,諸如圖2的體系結構12可適當地 包括任何數目的附加維。如可以理解地,每一分區16在構建應用程序10時要 被構成為一個或多個組件18。如應理解地,如根據應用程序10的體系結構12 所定義地,特定分區16中或'內'的每一組件實際上應與這樣的分區16的目 的相關。
每一這樣的組件18可以是任何適當的組件18和并具有任何組件18的類 型,而不背離本發明的精神和范圍。定義體系結構12的組件18—般是己知的, 或應對相關公眾是明顯的,從而不必在此處詳細描述。例如,如果應用程序IO 要被構建成單個邏輯文件等,每一組件18可以是要被編譯或以其他方式被包 括在應用程序10的文件內的適當的邏輯部分。同樣地,如果應用程序要被構 建為多個邏輯文件等,則每一組件18可以是多個這樣的文件、單個文件或單 個文件的一部分。說明書第7/12頁
在后一情況中,每一組件18通常可以對應于特定的文件等,其中這樣的 文件包括數據文件、可執行文件、庫文件等。如可以理解地,每一這樣的組件 18/文件可由一個或多個開發員開發為經由適當的構建過程或構建器被編譯或 以其他方式構建到組件18/文件中的一組源代碼等。
在圖2中所示的體系結構12中,可以看到,體系結構12的水平層對應于 應用程序10內組件18的一般適用性,諸如產品、開發工具和通用工具。同樣 地,可以看到,體系結構12的垂直片對應于組件18在應用程序10上的頂層 功能分組,諸如用戶界面(UI)、邏輯和數據。因此,應用程序10的體系結 構12內水平層和垂直片的每一交集表示具有一個或多個組件18的分區16,其 中這樣的分區內的每一這樣的組件18具有共享的一般適用性以及共享的頂層 功能。例如,并如圖2中所示,產品層和邏輯片的交集是其中具有與應用程序 10的邏輯和產品有關的一個或多個組件18的產品-邏輯分區16。
或者,體系結構12內的每一層或片本身可被視為分區16,其中片表示第 一分區策略的分區,而層表示與第一分區策略共存的第二分區策略的分區16。 在這樣的情況中,每一組件18同時駐留在第一分區策略的特定分區16以及第 二分區策略的特定分區16內。然后,更一般地,可以理解,分區16和分區策 略可按照任何適當方式定義,而不背離本發明的精神和范圍。
值得注意的是,除定義分區16和可能的劃分策略以外,體系結構劃分設 計也可定義依賴關系限制或規則20,適當地施加限制或規則以管控應用程序 10的特定分區16中的任何組件18是否以及如何可由應用程序10的另一特定 分區16中的任何其他組件18引用。僅作為這樣的依賴關系規則20的一個示 例,并仍參考圖2,可以看到所示的體系結構12中許可的依賴關系在水平層上 從左流向右,在垂直片上向下流動。即,UI產品分區16中的組件18可引用邏 輯產品分區16中的組件,但邏輯產品分區16中的組件18不可引用UI產品分 區16中的組件18。類似地,數據產品分區16中的組件18可向下引用數據通 用分區16中的組件,但數據通用分區16中的組件18不可向上引用數據產品 分區16中的組件18。
當然,應用程序10的任何特定體系結構12的依賴關系規則20可以是任 何適當的依賴關系規則20,而不背離本發明的精神和范圍。在定義了單向流的
12
一個典型的示例中,這樣的規則20可要求每一分區16中的組件18僅可按流 動方向引用下游直接毗鄰的分區16中的組件。作為另一示例,這樣的規則20 可引用特定分區16或多個分區16,并指定對這樣的所引用分區16允許的特定 的依賴關系流。
注意到,盡管特定的依賴關系規則20可僅定義在任何條件下不可從特定 分區16引用的禁止分區16,但這樣的特定依賴關系規則20也可按條件方式定 義這種禁止分區16,諸如基于從特定分區16引用的目的。如可以理解地,用 于定義這樣的依賴關系規則20的特定方法和機制可以是任何適當的方法和機 制,而不背離本發明的精神和范圍。例如,這樣的依賴關系規則20可根據預 定義的依賴關系定義語言在依賴關系文件或腳本等中指定;或可被指定為一組 屬性等。
如上所指出,盡管可為一應用程序10定義諸如在圖2中所示出的包括分 區16和依賴關系規則20的體系結構12,但為應用程序10開發特定組件18 的開發員并不被阻止有意或或無意地違反這樣的體系結構12。具體地,在這樣 的組件18的開發期間,這樣的開發員并不被阻止對另一組件創建依賴關系, 在此所創建的依賴關系依據與其(依賴關系規則20)有的偏差而違背依賴關系 規則20。
從而,在本發明的一個實施例中,如果開發員開發了違背應用程序10的 體系結構12的依賴關系規則20的組件18,則為應用程序10構建組件18的嘗 試將失敗。因此,開發員必須更改組件18以遵循依賴關系規則10并重試以便 為應用程序10構建這樣的組件18。
在現有技術中,提供構建器來基于所提交的構建指令以及應用程序10的 每一組件18的源代碼等構建組件18。構建這樣的組件18的這樣的構建器是已 知的且應對相關公眾是顯而易見的。然而,現有技術的構建器完全不參考任何 依賴關系規則20,或以某種其他方式確認正在構建的組件18不違反這樣的依 賴關系規則20。
因此,現在轉向圖3,在本發明的一個實施例中,提供構建過程或'構建 器'22以基于組件18的源代碼等、 一組構建指令24并基于依賴關系規則20 來構建應用程序10的每一組件18。因此,正被請求來構建應用程序10的構建
器22首先確認其每一組件18不違反依賴關系規則20。
如果構建器22在要構建的組件18中沒有發現違反依賴關系規則20,則 構建器22基于其的構建指令24實際地構建并輸出組件18,當然這是假定沒有 阻止構建器22構建組件18的其他問題存在。然而,如果構建器在組件18中 發現對依賴關系規則20的任何違反,則構建器10拒絕構建這樣的組件18,而 改為可發出詳述關于依賴關系規則20的每一違反的報告等。因此,組件18的 開發員等可審閱報告并試圖補救其中詳述的每一違反。 一旦補救了每一違反, 開發員可再次請求構建器22構建組件18。
如上提到,基于構建指令24來構建應用程序10的組件18的構建器22 是己知的或應對相關公眾顯而易見,從而不需在此處詳述。 一般,盡管不是必 需的,在構建器22被執行時,可能以項目文件等形式向其提供構建指令24。 基于構建指令24,構建器22然后定位構建組件18所需的所有源代碼等,并實 際上根據在構建指令24內包含的指示構建組件18。注意到,除了參考組件18 的源代碼等,構建指令24也可參考其他對象,包括定義組件18的屬性的對象、 提供構建組件18時使用的方法的對象、提供條件的對象等。或者,至少某些 這樣的對象的內容可被包括在構建指令24內。 一般,這樣的構建指令24是已 知的,或應對相關公眾是顯而易見的,從而不必在此處詳細描述。從而,可采 用構建指令24的任何適當形式,而不背離本發明的精神和范圍。
因此,應理解,這樣的構建器22實際上基于這樣的指令24構建應用程序 10的組件18所采用的功能可以是任何適當的功能,而不背離本發明的精神和 范圍。然而,如應理解地,本發明至少部分在于這樣的構建器22在被請求構 建應用程序10的組件之后首先確認組件18不違反為應用程序10的體系結構 12設置的依賴關系規則20。
現在轉向圖4,示出了一種方法,它構建應用程序10的組件18并為此確 認組件18不違反為應用程序10的體系結構12設置的相應的依賴關系規則20, 從而實施為應用程序10設計并在這樣的應用程序10的體系結構12的依賴關 系規則20中描述的體系結構劃分。初步地,且如可以理解地,體系結構設計 師必須定義應用程序10的體系結構12的體系結構劃分設計以包括多個分區16 (步驟401)。如現在應理解地,并現在假定想要單個劃分策略,則體系結構
的體系結構劃分設計將應用程序10的每一組件18置于多個定義的分區16之 一中。值得注意的是,應用程序10的每一組件18必須與一個且僅一個分區16 相關聯。
此外,體系結構設計師必須定義應用程序10的體系結構12的體系結構劃 分設計,以包括體系結構12的每一分區16中的每一組件18要遵守的依賴關 系規則20 (步驟403)。如現在應理解地,這樣的依賴關系規則20指定分區 16之間的依賴關系限制,使得對于體系結構12中的每一特定分區16,其他分 區16被標識為不從該特定的分區16引用。換言之,依賴關系規則20為每一 特定分區16定義不經由該特定分區16訪問的其他分區16。如上所提到,這樣 的依賴關系規則20不僅對于開發應用程序10的體系結構12的分區16的組件 18的開發員有益,而且供構建器22在實施依賴關系規則20及其體系結構劃分 設計的過程中使用。
一旦定義了分區16和依賴關系規則20之后,應用程序10的每一組件18 必須被指派給一特定的分區16 (步驟405)。值得注意的是,這樣的指派必須 被記錄或以其他方式存儲成使指派可由構建器22訪問,以便這樣的構建器22 可實施依賴關系規則20。可按照任何適當的執行方式來實現這樣的指派,而不 背離本發明的精神和范圍。例如,可在隨組件18和依賴關系規則20提供給構 建器22的構建指令24中為組件18中的至少某些中的每一個指定這樣的指派。 又例如,可在所述組件18內可能作為其屬性為組件18中的至少某些中的每一 個指定這樣的指派。再例如,可作為對應于組件18的數據文件的一部分為組 件18中的至少某些中的每一個指定這樣的指派。在最后的示例中,且如應理 解的那樣,每一這樣的數據文件必須隨組件18、構建指令24和依賴關系規則 20被提供給構建器22。
注意到,用于指定組件18到分區16的指派的至少某些選項可能要求開發 組件18的開發員執行指定的動作,諸如例如在組件18中包括指派。因此,開 發員可能選擇省略指定指派以努力避免麻煩。在克服這樣的情形的努力時,且 在本發明的一個實施例中,構建器22,作為確認應用程序10的每一組件18 不違反為應用程序10的體系結構12設置的依賴關系規則20的一部分,可能 需要每一組件18到相應分區16的指派。因此,如果構建器22不能找到特定 組件18的指派,則構建將失敗。
無論如何,現在假定應用程序10的特定組件18的指派被指定且可被找到, 并假設特定組件18的源代碼等已被開發,則構建器22按以下方式確認特定組 件18未違反依賴關系規則20。如可以理解地,構建器處的過程以向構建器22 至少提交一組構建指令24 (步驟407)開始,其中這樣的構建指令24包括何 處獲取特定組件18的源代碼等、任何相應的數據文件以及依賴關系規則20。 或者,組件18的這樣的源代碼、任何相應的數據文件以及依賴關系規則20按 需提交。
之后,對特定組件18,構建器22標識其分區16 (步驟409),或是根據 構建指令24、組件18的源代碼等、任何數據文件,或是根據所釆用的任何其 他源,構建器22并審閱依賴關系規則20以標識禁止分區16,禁止分區16的 組件18不被該特定組件18所引用(步驟411)。構建器22然后以適當方式確 定由特定組件18引用的每一組件18 (步驟413),諸如經由源代碼等內的特 定部分或通過審閱源代碼等中的每一行。對每一引用的組件18,構建器然后確 定所引用的組件18是否在禁止分區16中(步驟415)。如果每個引用的組件 18都是根據依賴關系規則20由特定組件18正確引用的,則構建器繼續進行(步 驟417)。否則,發現違反,且該過程可被停止,且可發出適當的報告。或者, 可允許該過程在違反標志等被置位之后繼續,借此可發現存在的其他違反。
如可理解地,假定過程未停止,過程對特定組件18的每一引用組件18 繼續。如果構建器22發現所有引用的組件18均遵循依賴關系規則20,則構建 器繼續進行。具體地,如果采用違反標志,構建器22確定這樣的違反標志是 否被置位。如果是,則過程停止,使得特定組件18不被構建,且可發出適當 的報告。如果否,則構建器22實際上通過基于應用程序10的特定組件18的 源代碼并根據構建指令24來構建該特定組件18來繼續(步驟419),當然假 定構建器22未發現將阻止構建這樣的組件18的任何其他問題。
如前所述,如果構建器22確實發現了對依賴關系規則20的違反,則構建 器10發出詳述對依賴關系規則20的每一違反的報告等。因此,應用程序10 和/或其特定組件18的開發員等可審閱報告并試圖補救其中詳述的每一違反。 一旦每一違反被補救之后,開發員然后可根據圖4的步驟407及以下步驟再次
請求構建器22來構建應用程序10的特定組件18。
結論
盡管本發明對從組件18構建的諸如大規模應用程序的應用程序10尤其有 用,但本發明可對任何適當的應用程序IO實現,而不背離本發明的精神和范 圍。而且,盡管按照應用程序10的體系結構12公開了本發明,但本發明可對 任何其他類型的計算機或網絡軟件構造或從組件18構造的對象的體系結構來 實現。從而,本發明要被解釋為涵蓋任何類型的計算機或網絡軟件構造或從組 件18構造的對象,在此根據定義的體系結構12來開發每一組件18,該體系結 構為組件18是其部分的對象指定分區16和關于分區16的依賴關系規則20。
實現結合本發明執行的過程所需的編程相當直接,且應對相關編程公眾是 顯而易見的。從而,這樣的編程不附在此。從而可采用任何特定的編程來實現 本發明,而不背離其精神和范圍。
在前述描述中,可以看到,本發明包括實施為應用程序IO定義的體系結 構12的體系結構劃分的新的且有用的方法和機制。該方法和機制標識所開發 的應用程序10與為應用程序10定義的體系結構12之間的任何偏差,且如果 與為這樣的應用程序10定義的體系結構12有偏差,則停止構建應用程序10。 應理解,從而,本發明不限于所公開的特定實施例,而是旨在覆蓋落入如由所 附權利要求書定義的本發明的精神和范圍內的修改。
權利要求
1.一種關于具有多個組件并根據為其設計的體系結構來構建的計算機軟件構造的方法,所述體系結構包括多個分區和依賴關系規則,每一分區具有與之相關聯的至少一個組件,每一依賴關系規則是關于一個分區的組件是否可引用另一分區的任何組件,所述方法用于在構建時對所述構造的每一組件實施所述體系結構的依賴關系規則,所述方法包括接收基于相應的構建指令來構建所述軟件構造的特定組件的命令;接收所述依賴關系規則;確定所述軟件構造和特定分區的特定組件是否由于不正確引用另一分區的另一組件而違反任何依賴關系規則;以及僅當所述軟件構造的特定組件不違反任何依賴關系規則時,才構建所述特定組件。
2. 如權利要求1所述的方法,其特征在于,所述方法是關于包括計算機應 用程序的軟件構造的。
3. 如權利要求1所述的方法,其特征在于,所述方法由基于所述構建指令 來構建所述軟件構造的所述特定組件的構建器來執行。
4. 如權利要求1所述的方法,其特征在于,還包括如果所述軟件構造的所 述特定組件違反任何依賴關系規則,則拒絕構建所述特定組件并發出詳述所述 特定組件作出的違反的報告,借此可試圖基于所述報告來對所述違反進行補 救。
5. 如權利要求l所述的方法,其特征在于,還包括 定義所述體系結構來包括多個分區;定義所述依賴關系規則來為每一分區指定將不經由所述特定分區訪問的 其他分區;以及將所述軟件構造的所述特定組件指派到特定分區,并按照基于所述相應的 構建指令構建所述軟件構造的構建器可訪問的形式記錄所述指派。
6. 如權利要求5所述的方法,其特征在于,記錄所述指派包括在所述構建 指令中指定所述指派。
7. 如權利要求5所述的方法,其特征在于,記錄所述指派包括在所述特定 組件內指定所述指派。
8. 如權利要求5所述的方法,其特征在于,記錄所述指派包括在對應于所 述特定組件的數據文件中指定所述指派。
9. 如權利要求1所述的方法,其特征在于,包括,對所述特定組件進行 標識所述特定組件的所述分區;審閱所述依賴關系規則以基于所標識的分區標識每一禁止分區,借此根據 所述依賴關系規則,每一禁止分區的每一組件將不會由所述特定組件所引用; 確定所述特定組件所引用的每一組件;以及對每一所引用的組件,確定所引用的組件是否在禁止分區中;以及 如果所引用的組件在禁止分區中則停止,借此所述軟件構造不被構建。
10. 如權利要求9所述的方法,其特征在于,包括如果所述軟件構造的 所述特定組件的所述分區不能被標識則停止。
11. 如權利要求l所述的方法,其特征在于,包括,對所述特定組件進行標識所述特定組件的所述分區;審閱所述依賴關系規則以基于所標識的分區來標識每一禁止分區,借此根 據所述依賴關系規則,每一禁止分區的每一組件將不會由所述特定組件所引 用;確定所述特定組件所引用的每一組件;以及對每一引用的組件,確定所引用的組件是否在禁止分區中,且如果所引用的組件在禁止分區中則對違反標志置位;以及在處理了所有標識的組件之后,確定所述違反標志是否被置位,如果是則 停止,借此所述軟件構造的所述特定組件不被構建。
12. —種其上存儲計算機可執行指令的計算機可讀介質,所述指令實現 一種關于具有多個組件并根據為其設計的體系結構來構建的計算機軟件構造的方法,所述體系結構包括多個分區和依賴關系規則,每一分區具有與之相關 聯的至少一個組件,每一依賴關系規則是關于一個分區的組件是否可引用另一 分區的任何組件,所述方法用于在構建時對所述構造的每一組件實施所述體系 結構的依賴關系規則,所述方法包括接收基于相應的構建指令來構建所述軟件構造的特定組件的命令;接收所述依賴關系規則;確定所述軟件構造和特定分區的特定組件是否由于不正確引用另一分區 的另一組件而違反任何依賴關系規則;以及僅當所述軟件構造的特定組件不違反任何依賴關系規則時,才構建所述特 定組件。
13. 如權利要求12所述的介質,其特征在于,所述方法是關于包括計 算機應用程序的軟件構造的。
14. 如權利要求12所述的介質,其特征在于,所述方法由基于所述構 建指令來構建所述軟件構造的所述特定組件的構建器來執行。
15. 如權利要求12所述的介質,其特征在于,所述方法還包括如果所 述軟件構造的所述特定組件違反任何依賴關系規則,則拒絕構建所述特定組件 并發出詳述所述特定組件作出的違反的報告,借此可試圖基于所述報告來對所 述違反進行補救。
16. 如權利要求12所述的介質,其特征在于,所述方法包括,對所述特定組件進行標識所述特定組件的所述分區;審閱所述依賴關系規則以基于所標識的分區來標識每一禁止分區,借此根 據所述依賴關系規則,每一禁止分區的每一組件將不會由所述特定組件所引 用;確定所述特定組件所引用的每一組件;以及對每一所引用的組件,確定所引用的組件是否在禁止分區中;以及 如果所引用的組件在禁止分區中則停止,借此所述軟件構造不被構建。
17. 如權利要求16所述的介質,其特征在于,所述方法包括如果所述 軟件構造的所述特定組件的所述分區不能被標識則停止。
18. 如權利要求12所述的介質,其特征在于,所述方法包括,對所述 特定組件進行-標識所述特定組件的所述分區;審閱所述依賴關系規則以基于所標識的分區來標識每一禁止分區,借此根 據所述依賴關系規則,每一禁止分區的每一組件將不會由所述特定組件所引 用;確定所述特定組件所引用的每一組件;以及對每一引用的組件,確定所引用的組件是否在禁止分區中,且如果所引用 的組件在禁止分區中則對違反標志置位;以及在處理了所有標識的組件之后,確定所述違反標志是否被置位,如果是則 停止,借此所述軟件構造的所述特定組件不被構建。
全文摘要
計算機軟件構造具有多個組件,且基于為該構造設計的體系結構來構建。體系結構包括多個分區和依賴關系規則,其中每一分區具有與之相關聯的至少一個組件。每一依賴關系規則指定一個分區的組件是否可引用另一分區的任何組件。該方法在構建時對構造的每一組件實施體系結構的依賴關系規則。接收到基于相應的構建指令來構建軟件構造的特定組件的命令,還接收到依賴關系規則。之后,確定特定分區的特定組件是否由于不正確引用另一分區的另一組件而違反任何依賴關系規則。僅當軟件構造的特定組件不違反任何依賴關系規則時,才構建該特定組件。
文檔編號G06F17/00GK101361053SQ200680051002
公開日2009年2月4日 申請日期2006年12月20日 優先權日2006年1月12日
發明者R·S·金伯利 申請人:微軟公司