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