專利名稱:在團(tuán)隊(duì)環(huán)境中使用協(xié)作性開發(fā)信息的制作方法
在團(tuán)隊(duì)環(huán)境中使用協(xié)作性開發(fā)信息背景軟件應(yīng)用程序必須從源代碼變換為機(jī)器指令以便應(yīng)用程序執(zhí)行。這種變換 過程被稱為"編譯"。在編譯期間,源代碼首先被轉(zhuǎn)變?yōu)檎Z言不可知且機(jī)器不 可知的指令集,有時(shí)稱為"中間代碼"。將該中間代碼隨后被轉(zhuǎn)變?yōu)閷S糜谔?定應(yīng)用程序?qū)⑦\(yùn)行于其上的特定計(jì)算機(jī)平臺(tái)的機(jī)器指令。編譯通常在單獨(dú)的計(jì) 算機(jī)上發(fā)生,并且在編譯完成時(shí),編譯過程所生成的中間代碼被丟棄。因此, 在之后的開發(fā)過程中可以從此中間代碼中獲取的任何有用信息丟失。在許多情況下,軟件應(yīng)用程序是在基于團(tuán)隊(duì)的環(huán)境中開發(fā)的。這些團(tuán)隊(duì)由 扮演支持總體項(xiàng)目目標(biāo)的若干角色的團(tuán)隊(duì)成員組成。每個(gè)團(tuán)隊(duì)成員通常在他們 自己的本地計(jì)算機(jī)上運(yùn)行軟件開發(fā)應(yīng)用程序。在特定團(tuán)隊(duì)成員編譯程序時(shí),運(yùn) 行代碼分析器來分析性能、執(zhí)行調(diào)試、或其它各種開發(fā)相關(guān)的任務(wù),這些過程 所產(chǎn)生的細(xì)節(jié)通常被存儲(chǔ)在此團(tuán)隊(duì)成員的本地計(jì)算機(jī)上。盡管此團(tuán)隊(duì)成員可以 將源代碼提交給整個(gè)團(tuán)隊(duì)可以訪問的源代碼控制服務(wù)器,但導(dǎo)致存入服務(wù)器的 版本的、從開發(fā)過程得到的各種系統(tǒng)生成的人工產(chǎn)物通常要么丟失,要么不可 容易地分發(fā)。這意味著其他團(tuán)隊(duì)成員沒有取得任何可以通過訪問這些人工產(chǎn)物 獲得的好處。例如,當(dāng)一開發(fā)團(tuán)隊(duì)成員正在操作給定應(yīng)用程序時(shí),該開發(fā)者可 以使用代碼剖析器來分析該應(yīng)用程序的性能。通過這樣做,該開發(fā)者獲得了關(guān) 于該應(yīng)用程序性能的具體知識(shí)。通過從剖析該應(yīng)用程序來創(chuàng)建人工產(chǎn)物而獲得 的人工產(chǎn)物和知識(shí)對(duì)開發(fā)者是本地的并且無法容易地被共享。此外,在執(zhí)行團(tuán)隊(duì)成員的分配的角色的過程中,團(tuán)隊(duì)成員經(jīng)常創(chuàng)建與項(xiàng)目 相關(guān)的除源代碼本身以外的其它人工產(chǎn)物,諸如模型、圖、工作項(xiàng)等。正如系 統(tǒng)生成的人工產(chǎn)物一樣,在許多情況下,這些用戶創(chuàng)建的人工產(chǎn)物也僅僅存儲(chǔ) 在特定團(tuán)隊(duì)成員的計(jì)算機(jī)上、丟失、或者不可容易地分發(fā)給其他團(tuán)隊(duì)成員。因 此,大量與在團(tuán)隊(duì)環(huán)境中開發(fā)的特定軟件開發(fā)項(xiàng)目相關(guān)的有價(jià)值的開發(fā)數(shù)據(jù)和 人工產(chǎn)物要么分散在各個(gè)團(tuán)隊(duì)成員計(jì)算機(jī)上并且因此不可由整個(gè)團(tuán)隊(duì)訪問,要4概述公開了在團(tuán)隊(duì)軟件開發(fā)環(huán)境中提供協(xié)作性開發(fā)信息存儲(chǔ)并與之交互的各 種技術(shù)和方法。提交服務(wù)更新由多個(gè)用戶使用的中央信息存儲(chǔ)中的應(yīng)用程序的 活動(dòng)元模型。在特定軟件開發(fā)環(huán)境中操作的通知服務(wù)接收已經(jīng)對(duì)該活躍元模型 作出改變的通知。隨后使用接收自通知服務(wù)的信息來更新該特定軟件開發(fā)環(huán)境 中正由特定用戶使用的顯示。作為一個(gè)非限制性示例,該信息可以在該特定用 戶正在輸入代碼時(shí)顯示,以注明作為另一團(tuán)隊(duì)成員的動(dòng)作的結(jié)果發(fā)生的、與此 特定代碼相關(guān)的某事。在數(shù)據(jù)庫服務(wù)器上,提供在由多個(gè)用戶開發(fā)的應(yīng)用程序的活動(dòng)元模型信息 改變時(shí)接收該信息的接收服務(wù)。提供存儲(chǔ)服務(wù)來將所接收到的活動(dòng)元模型信息 存儲(chǔ)在特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)中,該關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)可用于允許在對(duì)該特定 關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)無更改的情況下添加人工產(chǎn)物。提供本概述以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些 概念。該概述不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在 用于幫助確定所要求保護(hù)的主題的范圍。附圖簡(jiǎn)述
圖1是使用協(xié)作性開發(fā)信息存儲(chǔ)的計(jì)算機(jī)系統(tǒng)的圖示。圖2是圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)的提交和通知應(yīng)用程序的圖示。圖3是在圖1的系統(tǒng)上操作的一個(gè)實(shí)現(xiàn)的元模型存儲(chǔ)應(yīng)用程序的圖示。圖4是示出圖1的系統(tǒng)的高級(jí)階段的一個(gè)實(shí)現(xiàn)的處理流程圖。圖5是示出在與中央信息存儲(chǔ)中的應(yīng)用程序的活動(dòng)元模型交互時(shí)所涉及的各階段的 一個(gè)實(shí)現(xiàn)的處理流程圖。圖6是示出包含在圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)中的中央信息存儲(chǔ)中的元素專用字段的圖。圖7是示出使用圖6所示的元素專用字段定義的示例性元素定義的圖。 圖8是示出包含在圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)中的中央信息存儲(chǔ)中的連接專用字段的圖。圖9是示出使用圖8所示的連接專用字段定義的示例性連接定義的圖。 圖IO是示出可以與圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)中的連接定義一起使用的特殊 特性的圖。圖11是圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)的圖示。 詳細(xì)描述為促進(jìn)對(duì)本發(fā)明的原理的理解,現(xiàn)將對(duì)圖中所示的各實(shí)施例加以參考,同 時(shí)也將用具體語言描述它們。不過,需要理解的是,并無意由此作出范圍上的 限制。對(duì)所述實(shí)施例的任何改變和進(jìn)一步更改,以及在此所述的原理的進(jìn)一步 應(yīng)用都可以預(yù)期將是本領(lǐng)域技術(shù)人員通常能想到的。該系統(tǒng)可以在一般上下文中被描述為軟件開發(fā)應(yīng)用程序。此處所描述的 一種或多種技術(shù)可作為諸如微軟⑥VISUAL STUDIO⑧等軟件開發(fā)程序中的 特征,或來自在團(tuán)隊(duì)環(huán)境中參與軟件開發(fā)過程的任何其它類型的程序或服 務(wù)的特征來實(shí)現(xiàn)。在 一個(gè)實(shí)現(xiàn)中,提供使用集中式數(shù)據(jù)庫或其它信息存儲(chǔ)來存儲(chǔ)關(guān)于由開發(fā) 者團(tuán)隊(duì)和/或其他用戶開發(fā)的特定軟件應(yīng)用程序的實(shí)時(shí)、活動(dòng)元模型信息的系 統(tǒng)。此處使用的術(shù)語"活動(dòng)元模型"指的是反映該應(yīng)用程序、該應(yīng)用程序的結(jié) 構(gòu)、以及該應(yīng)用程序如何演化的歷史的當(dāng)前狀態(tài)的系統(tǒng)生成的人工產(chǎn)物和用戶 生成的人工產(chǎn)物。系統(tǒng)生成的人工產(chǎn)物包括應(yīng)用程序結(jié)構(gòu)、中間代碼、注解、 以及其它系統(tǒng)生成的分析數(shù)據(jù)。用戶生成的人工產(chǎn)物包括可能與底層應(yīng)用程序 結(jié)構(gòu)相關(guān)聯(lián)的工作項(xiàng)、項(xiàng)目計(jì)劃、圖、解釋特定代碼的注解等。該集中式數(shù)據(jù) 庫隨后由開發(fā)者團(tuán)隊(duì)使用的軟件開發(fā)應(yīng)用程序來訪問以向該團(tuán)隊(duì)提供對(duì)活動(dòng) 元模型信息的訪問。通過能夠訪問此信息,向開發(fā)者提供了關(guān)于正由其他人的 團(tuán)隊(duì)開發(fā)的應(yīng)用程序的活動(dòng)狀態(tài)的實(shí)時(shí)、相關(guān)信息。作為一個(gè)非限制性示例, 此信息可以包括通知開發(fā)者A由開發(fā)者B運(yùn)行的代碼剖析進(jìn)程剛剛將開發(fā)者A 將要從他的代碼中調(diào)用的代碼的一特定部分標(biāo)記為"緩慢"。在一個(gè)實(shí)現(xiàn)中, 這通過將給定代碼模塊、類型、方法等的性能特征與元表示相關(guān)聯(lián)來完成。因 此,當(dāng)開發(fā)者B添加對(duì)所述方法的調(diào)用時(shí),可以找到由A添加的相關(guān)聯(lián)的性6能數(shù)據(jù)并且可以采取動(dòng)作。如圖1所示,用于實(shí)現(xiàn)該系統(tǒng)的一個(gè)或多個(gè)部分的示例性計(jì)算機(jī)系統(tǒng)包括諸如中央信息存儲(chǔ)10、網(wǎng)絡(luò)12、以及開發(fā)機(jī)器14a、 14b、以及14c等一個(gè)或多個(gè)開發(fā)機(jī)器。開發(fā)機(jī)器是由軟件開發(fā)者出于編寫軟件應(yīng)用程序的目的而使用 的計(jì)算機(jī)。中央信息存儲(chǔ)12包括存儲(chǔ)數(shù)據(jù)并允許其它網(wǎng)絡(luò)資源訪問該數(shù)據(jù)的 --臺(tái)或多臺(tái)計(jì)算機(jī)。在一個(gè)實(shí)現(xiàn)中,中央信息存儲(chǔ)12存儲(chǔ)由團(tuán)隊(duì)環(huán)境中的多 個(gè)用戶開發(fā)的應(yīng)用程序的活動(dòng)元模型信息。在一個(gè)實(shí)現(xiàn)中,可以另選地或另外 地將本地中央信息存儲(chǔ)12存儲(chǔ)在開發(fā)機(jī)器14a,、 14b、以及14c中的一臺(tái)或多 臺(tái)上,以便諸如允許參與對(duì)更大項(xiàng)目和/或不使用中央存儲(chǔ)的實(shí)現(xiàn)的更對(duì)等級(jí)別 的共享。網(wǎng)絡(luò)12用來提供開發(fā)機(jī)器14a、 14b、 14c與中央信息存儲(chǔ)IO之間的 通信。網(wǎng)絡(luò)12可被實(shí)現(xiàn)為局域網(wǎng)、廣域網(wǎng)、在因特網(wǎng)上實(shí)現(xiàn)、使用有線或無 線連接來實(shí)現(xiàn)、和/或在計(jì)算機(jī)軟件領(lǐng)域中的普通技術(shù)人員會(huì)想到的其它此類變 型中實(shí)現(xiàn)。繼續(xù)參照?qǐng)Dl,現(xiàn)轉(zhuǎn)向圖2,其示出了在計(jì)算設(shè)備600上操作的提交和通 知應(yīng)用程序200。提交和通知應(yīng)用程序200是駐留在(圖11的)計(jì)算設(shè)備600 上的應(yīng)用程序之一。在一個(gè)實(shí)現(xiàn)中,提交和通知應(yīng)用程序200位于開發(fā)者工作 站14A、 14B、或14C (來自于圖1)中的一臺(tái)或多臺(tái)上。然而,可以理解, 提交和通知應(yīng)用程序200可另選地或另外地被具體化為一個(gè)或多個(gè)計(jì)算機(jī)上的 計(jì)算機(jī)可執(zhí)行指令和/或與圖ll所示的不同的變型。另選地或另外地,提交和 通知應(yīng)用程序200的一個(gè)或多個(gè)部分可以是(圖11的)系統(tǒng)存儲(chǔ)器604的一 部分、可以在(圖11的)其它計(jì)算機(jī)和/或應(yīng)用程序615上、或可以是計(jì)算機(jī) 軟件領(lǐng)域的技術(shù)人員能想到的其它此類變型。提交和通知應(yīng)用程序200包括程 序邏輯204,其負(fù)責(zé)執(zhí)行在此描述的一些或全部技術(shù)。程序邏輯204包括用于 提供可用于向中央信息存儲(chǔ)提交應(yīng)用程序的活動(dòng)元模型的至少一部分(例如, 中間代碼、注解、用戶生成的人工產(chǎn)物等)以供多個(gè)用戶使用的提交服務(wù)的邏 輯206;用于提供可用于接收與活動(dòng)元模型中的改變(例如,由進(jìn)程、用戶作 出等)相關(guān)的通知的通知服務(wù)的邏輯208;用于使通知服務(wù)還可用于向用戶顯 示元模型信息的邏輯210;用于使通知服務(wù)能夠被集成到開發(fā)環(huán)境中以便元模 型在其中顯示的邏輯212;以及其它用于操作該應(yīng)用程序的邏輯220。在一個(gè)7實(shí)現(xiàn)中,程序邏輯204可用于通過編程,如使用對(duì)程序邏輯204中的過程的單 -調(diào)用而從另一程序調(diào)用。
繼續(xù)參照?qǐng)Dl,現(xiàn)轉(zhuǎn)向圖3,其示出了在(圖11的)計(jì)算設(shè)備600上操作 的元模型存儲(chǔ)應(yīng)用程序240。元模型存儲(chǔ)應(yīng)用程序240是駐留在計(jì)算設(shè)備600 上的應(yīng)用程序之一。然而,可以理解,元模型存儲(chǔ)應(yīng)用程序240可另選地或另 外地被具體化為一個(gè)或多個(gè)計(jì)算機(jī)上的計(jì)算機(jī)可執(zhí)行指令和/或與圖11所示的 不同的變型。另選地或另外地,元模型存儲(chǔ)應(yīng)用程序240的一個(gè)或多個(gè)部分可 以是(圖11的)系統(tǒng)存儲(chǔ)器604的一部分、可以在(圖11的)其它計(jì)算機(jī)和 /或應(yīng)用程序615上、或可以是計(jì)算機(jī)軟件領(lǐng)域的技術(shù)人員能想到的其它此類變 型。
元模型存儲(chǔ)應(yīng)用程序240包括程序邏輯244,其負(fù)責(zé)執(zhí)行在此描述的一些 或全部技術(shù)。程序邏輯244包括用于提供接收正由多個(gè)用戶開發(fā)的應(yīng)用程序的 活動(dòng)元模型信息的接收服務(wù)的邏輯246;用于提供可用于將所接收到的活動(dòng)元 模型信息存儲(chǔ)在可用于允許在對(duì)特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)無更改的情況下添加 人工產(chǎn)物的特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)中的存儲(chǔ)服務(wù)的邏輯248;用于從可用于向 一個(gè)或多個(gè)客戶機(jī)設(shè)備通知對(duì)活動(dòng)元模型的改變的通知服務(wù)接收檢索活動(dòng)元 模型信息的請(qǐng)求的邏輯250;用于使該特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)能夠存儲(chǔ)標(biāo)識(shí)特 定元素的名稱和描述該元素的數(shù)據(jù)的邏輯252;用于使該特定關(guān)系型數(shù)據(jù)庫結(jié) 構(gòu)能夠存儲(chǔ)標(biāo)識(shí)特定連接的名稱、描述特定連接的數(shù)據(jù)、特定連接的源、以及 特定連接的目的地的邏輯254;用于使該特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)能夠存儲(chǔ)包含 特定連接的相關(guān)性信息的字段的邏輯256;以及其它用于操作該應(yīng)用程序的邏 輯260。在一個(gè)實(shí)現(xiàn)中,程序邏輯244可用于通過編程,如使用對(duì)程序邏輯244 中的過程的單一調(diào)用而從另一程序調(diào)用。
現(xiàn)轉(zhuǎn)向圖4-5并繼續(xù)參考圖1,將進(jìn)一步詳細(xì)描述用于實(shí)現(xiàn)圖1的系統(tǒng)的 一個(gè)或多個(gè)實(shí)現(xiàn)的各個(gè)階段。圖4是示出圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)的高級(jí)階段的 處理流程圖。在一種形式中,圖4的過程至少部分地在(圖11的)計(jì)算設(shè)備 600的操作邏輯中實(shí)現(xiàn)。盡管按特定次序來描述在圖4中標(biāo)識(shí)的步驟,但應(yīng)該 理解,這些步驟可以按任何次序發(fā)生、和/或彼此同時(shí)發(fā)生、或根本不發(fā)生。該 過程在起始點(diǎn)270開始,在那里提供用于表達(dá)團(tuán)隊(duì)環(huán)境中的多個(gè)用戶開發(fā)中的系統(tǒng)生成和用戶生成的人工產(chǎn)物的元素和相關(guān)性的動(dòng)態(tài)定義的框架(階段
272)。在每個(gè)團(tuán)隊(duì)成員創(chuàng)建和/或改變系統(tǒng)生成和用戶生成的人工產(chǎn)物時(shí),將 這些產(chǎn)物作為活動(dòng)元模型存儲(chǔ)在中央信息存儲(chǔ)中(階段274)。由每個(gè)團(tuán)隊(duì)成 員使用的軟件開發(fā)應(yīng)用程序周期性地與該中央信息存儲(chǔ)交互來標(biāo)識(shí)已經(jīng)對(duì)該 活動(dòng)元模型作出的相關(guān)更新(階段276)。適當(dāng)?shù)厥褂媒?jīng)更新的信息,以便諸 如向特定團(tuán)隊(duì)成員通知問題、將會(huì)對(duì)他們當(dāng)前正在做的事情有幫助的信息等等
(階段278)。該過程在結(jié)束點(diǎn)280處結(jié)束。
圖5是示出在與中央信息存儲(chǔ)中的應(yīng)用程序的活動(dòng)元模型交互時(shí)所涉及 的各階段的一個(gè)實(shí)現(xiàn)的處理流程圖。在一種形式中,圖5的過程至少部分地在
(圖11的)計(jì)算設(shè)備600的操作邏輯中實(shí)現(xiàn)。盡管按特定次序來描述在圖5 中標(biāo)識(shí)的步驟,應(yīng)該理解,這些步驟可以按任何次序發(fā)生、和/或彼此同時(shí)發(fā)生、 或根本不發(fā)生。該過程在起始點(diǎn)290處幵始,在那里與諸如軟件開發(fā)應(yīng)用程序 的組件等提交服務(wù)通信,以更新中央信息存儲(chǔ)中的應(yīng)用程序的活動(dòng)元模型(階 段292)。在一個(gè)實(shí)現(xiàn)中,這些更新在每一團(tuán)隊(duì)成員進(jìn)一步開發(fā)特定軟件應(yīng)用 程序時(shí)由該相應(yīng)的團(tuán)隊(duì)成員工作站發(fā)送。在任何給定時(shí)刻, 一個(gè)或多個(gè)相應(yīng)的 團(tuán)隊(duì)成員工作站可以從通知服務(wù)接收對(duì)活動(dòng)元模型的改變的通知(階段294)。 這些改變可以由特定團(tuán)隊(duì)成員自己完成的工作激發(fā)、或由不同的團(tuán)隊(duì)成員激 發(fā)。該通知可被配置為不僅只針對(duì)改變,而是能夠針對(duì)指示對(duì)底層信息已發(fā)生 特定事件的各種原因。例如,可以基于策略來限制和/或增強(qiáng)用于標(biāo)識(shí)相應(yīng)通知 和人的邏輯。作為其一示例, 一年前對(duì)一代碼段進(jìn)行工作的開發(fā)者可能不會(huì)接 收到剛剛發(fā)生的特定改變的更新通知,但是基于指示應(yīng)該通知誰以及何時(shí)通知 的系統(tǒng)級(jí)設(shè)置,兩個(gè)星期前對(duì)該源代碼進(jìn)行工作的開發(fā)者會(huì)接收到通知。
使用該通知服務(wù)來用描述改變的適當(dāng)信息更新由相應(yīng)團(tuán)隊(duì)成員使用的軟 件開發(fā)應(yīng)用程序中的顯示(階段296)。在一個(gè)實(shí)現(xiàn)中,該軟件開發(fā)應(yīng)用程序 截取并分析對(duì)活動(dòng)元模型的改變并隨后確定何時(shí)以及如何通知用戶。在另一個(gè) 實(shí)現(xiàn)中,該軟件開發(fā)應(yīng)用程序接收該通知并且只顯示它們而不過濾和/或解釋它 們??梢韵蛴脩麸@示的信息的類型的某些非限制性示例包括策略違反警告、依 賴性警告、性能警告、修改警告等等(階段296)。策略違反警告可以指示用 戶已經(jīng)作出以違反為系統(tǒng)設(shè)置的策略的方式影響該活動(dòng)元模型的改變。依賴性警告可以通知用戶他們現(xiàn)在正在改變的某些代碼依賴于不再可用的事物、被標(biāo) 記為緩慢的事物、當(dāng)前正由另一個(gè)用戶編輯的事物等等。性能警告可以通知用 戶同--代碼被以前曾對(duì)該代碼工作的另一個(gè)用戶標(biāo)記為執(zhí)行緩慢。這些僅僅是 該系統(tǒng)可以在分析包含在中央信息存儲(chǔ)中的活動(dòng)元模型時(shí)發(fā)出的信息的類型
的一些非限制性示例。該過程在結(jié)束點(diǎn)298處結(jié)束。
現(xiàn)在轉(zhuǎn)到圖6—10,使用若干圖來示出可用于實(shí)現(xiàn)存儲(chǔ)在中央信息存儲(chǔ)中 并在團(tuán)隊(duì)開發(fā)環(huán)境中使用的活動(dòng)元模型的示例性數(shù)據(jù)庫結(jié)構(gòu)。圖6是示出包含 在圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)中的中央信息存儲(chǔ)中的元素專用字段350的圖。在一 個(gè)實(shí)現(xiàn)中,抽象存儲(chǔ)定義是必需的,因?yàn)槌绦蚝妥⒔庾兓瘶O廣。然而,在此處 描述的用于一個(gè)實(shí)現(xiàn)的模式的總體結(jié)構(gòu)是非限制性的,并且也可以使用各種其 它數(shù)據(jù)庫模式來實(shí)現(xiàn)此處討論的技術(shù)的某一些或全部。在一個(gè)實(shí)現(xiàn)中,元素是 中央信息存儲(chǔ)中用作名詞的通用項(xiàng)。元素的一些非限制示例包括方法、類型、 匯編集(assembly)、元數(shù)據(jù)屬性等等。個(gè)體元素可以視需要在其一般定義中 具有任何數(shù)量的特性。每個(gè)工具、廠商、和/或系統(tǒng)可以動(dòng)態(tài)地定義元素并視需 要提供數(shù)據(jù)。每個(gè)元素包含名稱字段352以及數(shù)據(jù)字段354。名稱字段352是 在系統(tǒng)中描述元素的串。數(shù)據(jù)字段354是存儲(chǔ)關(guān)于元素的細(xì)節(jié)的二進(jìn)制分組。
圖7是示出在一個(gè)實(shí)現(xiàn)中用于定義匯編集的元素的示例的圖示370。該程 序結(jié)構(gòu)是通用系統(tǒng)提供的信息的一部分。該程序集不被數(shù)據(jù)存儲(chǔ)作為元素來引 用,但是來自廠商的工具和/或系統(tǒng)可以按需注解這些匯編元素。這進(jìn)而使工作 于此特定匯編集的較低層部分上的開發(fā)者能夠取得相關(guān)聯(lián)的信息。在系統(tǒng)中沒 有共享元素的情況下,根據(jù)本地桌面上的匯編集來工作的工具之間的關(guān)聯(lián)將難
以與對(duì)該匯編集發(fā)生的較小的人工產(chǎn)物和/或工作相關(guān)。假設(shè),例如,開發(fā)者X 工作于用于方法1的測(cè)試?yán)?,該方?是一個(gè)類的一部分,該類是命名空間的 一部分,該命名空間是被標(biāo)記為根本無需測(cè)試覆蓋的匯編集Z的一部分。盡管 定義關(guān)于匯編集Z的要求的用戶沒有開發(fā)者X的桌面上發(fā)生了什么的具體知 識(shí),但該系統(tǒng)現(xiàn)在能夠通知開發(fā)者X正被編寫的測(cè)試?yán)遣恢匾摹?br>
現(xiàn)在轉(zhuǎn)到圖8,顯示示出包含在圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)中的中央信息存儲(chǔ) 中的連接專用字段400的圖。在一個(gè)實(shí)現(xiàn)中,連接是在中央信息存儲(chǔ)中用作動(dòng) 詞的通用項(xiàng)。連接的一些非限制示例包括依賴、包含、創(chuàng)作等等。連接用于將兩個(gè)或更多個(gè)元素相關(guān)。每一連接包含源字段402和目的地字段404。圖9是 示出用于定義"依賴"連接類型的連接的示例的圖示450。該中央信息存儲(chǔ)依 賴于所定義的類型之間的關(guān)系的表達(dá)。這些關(guān)系用作名詞之間的動(dòng)態(tài)工作鏈接 并且提供關(guān)系的附加維度。例如,假設(shè)你擁有作為元素的匯編集A、以及作為 元素的類Z。這兩個(gè)元素都可以將來自工具的注解與它們相關(guān)聯(lián),只要系統(tǒng)將 這些關(guān)聯(lián)反映在共享存儲(chǔ)中。然而,類型"包含"的連接還表達(dá)匯編集A包含 類Z并因此允許發(fā)生關(guān)聯(lián)查找,而在沒有該連接的情況下,這樣的關(guān)聯(lián)可能是 不可能的。在一個(gè)實(shí)現(xiàn)中,動(dòng)態(tài)關(guān)系本身是動(dòng)態(tài)定義的。
圖IO是示出可以與圖1的系統(tǒng)的一個(gè)實(shí)現(xiàn)中的連接定義一起使用的特殊 相關(guān)性特性的圖示500。在一個(gè)實(shí)現(xiàn)中,相關(guān)性是與每個(gè)連接相關(guān)聯(lián)的專用特 性。-^般而言,相關(guān)性表達(dá)相對(duì)于元素之間的關(guān)系兩個(gè)元素之間的關(guān)系有多重 要。將兩個(gè)元素之間的關(guān)系的具體相關(guān)性值分配給元素之間的連接。相關(guān)性單 元可以由注明該連接的個(gè)體廠商來定義和/或可由系統(tǒng)來定義。在對(duì)中央信息存 儲(chǔ)作出改變時(shí),對(duì)數(shù)據(jù)及其有效性的總體使用由該存儲(chǔ)來反映。相關(guān)性提供了 允許對(duì)人工產(chǎn)物之間的動(dòng)詞加權(quán)的機(jī)制。以此方式,該系統(tǒng)能夠不同地使用各 種形式的關(guān)系。在一個(gè)實(shí)現(xiàn)中,因?yàn)轫?xiàng)之間的關(guān)聯(lián)可以成百上千計(jì),所以相關(guān) 性是該系統(tǒng)的重要部分。在其它實(shí)現(xiàn)中,相關(guān)性較不重要和/或甚至不被使用。
在-個(gè)實(shí)現(xiàn)中,信任是由該系統(tǒng)給予用戶、廠商和/或廠商提供的工具的 附加專用特性。隨著該系統(tǒng)的數(shù)據(jù)演化,工具和用戶發(fā)現(xiàn)隨著時(shí)間變化。如果 發(fā)現(xiàn)工具不準(zhǔn)確,則可以改變與特定廠商、工具或用戶相關(guān)聯(lián)的默認(rèn)信任權(quán)重。 這樣做意味著更改了相關(guān)性計(jì)算,從而取決于信任因素的力量對(duì)該計(jì)算進(jìn)行正 或負(fù)的加權(quán)。例如,可以使用代碼的靜態(tài)分析來通過檢查測(cè)試?yán)龑?duì)開發(fā)方法的 調(diào)用關(guān)系以尋找測(cè)試?yán)痛a之間的鏈接。對(duì)此示例來說,工具X査看這些關(guān) 系并基于靜態(tài)關(guān)系在測(cè)試代碼和開發(fā)方法之間添加鏈接。默認(rèn)地,該系統(tǒng)檢查 這些關(guān)系并向用戶通知對(duì)由這些鏈接相連的模塊的改變。如果測(cè)試A調(diào)用開發(fā) 方法B,并且方法B改變了,則隨后應(yīng)該通知A的作者。然而,隨著該開發(fā) 循環(huán)的進(jìn)展,被通知改變的用戶會(huì)多次在其不關(guān)心時(shí)被通知到。這是因?yàn)楣ぞ?X未考慮可以意味著較重要或較不重要的連接的附加因素(例如代碼復(fù)雜性、 調(diào)用的數(shù)量等等)。由于所有來自用戶的消極反饋,管理員或系統(tǒng)可以減小工具X的信任評(píng)級(jí)。作為直接結(jié)果,在關(guān)于將向哪個(gè)用戶通知改變的計(jì)算發(fā)生時(shí), 來自工具X的鏈接的兩個(gè)用戶之間的連接將與工具Y的評(píng)級(jí)不同,在此情況 中,工具X的信息將較不可信。
如圖11所示,用于實(shí)現(xiàn)該系統(tǒng)的一個(gè)或多個(gè)部分的示例性計(jì)算機(jī)系統(tǒng)包
括諸如計(jì)算設(shè)備600等計(jì)算設(shè)備。在其最基本的配置中,計(jì)算設(shè)備600通常包 括至少一個(gè)處理單元602和存儲(chǔ)器604。取決于計(jì)算設(shè)備的確切配置和類型, 存儲(chǔ)器604可以是易失性的(如RAM)、非易失性的(如ROM、閃存等)或 是兩者的某種組合。該最基本配置在圖1中由虛線606來示出。
另外,設(shè)備600還可具有附加特征/功能。例如,設(shè)備600還可包含附加 存儲(chǔ)(可移動(dòng)和/或不可移動(dòng)),包括但不限于磁盤、光盤或磁帶。這樣的附加 存儲(chǔ)在圖11中由可移動(dòng)存儲(chǔ)608和不可移動(dòng)存儲(chǔ)610示出。計(jì)算機(jī)存儲(chǔ)介質(zhì) 包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息 的任何方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。存儲(chǔ) 器604、可移動(dòng)存儲(chǔ)608和不可移動(dòng)存儲(chǔ)610都是計(jì)算機(jī)存儲(chǔ)介質(zhì)的示例。計(jì) 算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技 術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲(chǔ)、磁帶盒、磁帶、磁盤存 儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或者可用于存儲(chǔ)所需信息并且可由設(shè)備600訪問的任何 其它介質(zhì)。任何這樣的計(jì)算機(jī)存儲(chǔ)介質(zhì)都可以是設(shè)備600的一部分。
計(jì)算設(shè)備600包括允許計(jì)算設(shè)備600與其它計(jì)算機(jī)/應(yīng)用程序615進(jìn)行通 信的一個(gè)或多個(gè)通信連接614。設(shè)備600還可以具有諸如鍵盤、鼠標(biāo)、筆、語 音輸入設(shè)備、觸摸輸入設(shè)備等輸入設(shè)備612。還可以包括諸如顯示器、揚(yáng)聲器、 打印機(jī)等輸出設(shè)備611。這些設(shè)備在本領(lǐng)域中公知且無需在此處詳細(xì)討論。在 一個(gè)實(shí)現(xiàn)中,計(jì)算設(shè)備600包括提交和通知應(yīng)用程序200和/或元模型存儲(chǔ)應(yīng)用 程序240 d
盡管用對(duì)結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主題,但可以理解, 所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。相反,上述具體 特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。落入在此所述和/或所附權(quán) 利要求所描述的實(shí)現(xiàn)的精神的范圍內(nèi)的所有等效方案、更改和修正都期望受到 保護(hù)。
12例如,計(jì)算機(jī)軟件領(lǐng)域普通技術(shù)人員會(huì)認(rèn)識(shí)到在此討論的示例中所述的客 戶機(jī)和/或服務(wù)器布置、用戶界面屏幕內(nèi)容、和/或數(shù)據(jù)布局可在一臺(tái)或多臺(tái)計(jì) 算機(jī)上不同地組織,以包括比示例中所描繪的更少或更多的選項(xiàng)或特征。
權(quán)利要求
1.一種具有用于使得計(jì)算機(jī)執(zhí)行以下步驟的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述步驟包括提供可用于將應(yīng)用程序的活動(dòng)元模型的至少一部分提交給中央信息存儲(chǔ)以供多個(gè)用戶使用的提交服務(wù);以及提供可用于接收與所述活動(dòng)元模型中的改變相關(guān)的通知的通知服務(wù)。
2. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述通知服務(wù)可 用于接收由進(jìn)程作出的改變。
3. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述通知服務(wù)可 用于接收由用戶操作作出的改變。
4. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述活動(dòng)元模型 包含中間代碼。
5. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述活動(dòng)元模型 包含注解。
6. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述活動(dòng)元模型 包含用戶生成的人工產(chǎn)物。
7. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述通知服務(wù)還 可用于向所述多個(gè)用戶中的特定一個(gè)顯示元模型信息。
8. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述通知服務(wù)可 用于被集成到開發(fā)環(huán)境中以使得元模型信息在所述開發(fā)環(huán)境中被顯示。
9. 一種具有用于使得計(jì)算機(jī)執(zhí)行以下步驟的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī) 可讀介質(zhì),所述步驟包括提供可用于接收正由多個(gè)用戶開發(fā)的應(yīng)用程序的活動(dòng)元模型信息的接收 服務(wù);以及提供可用于將所接收到的活動(dòng)元模型信息存儲(chǔ)在特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu) 中的存儲(chǔ)服務(wù),所述特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)可用于允許在對(duì)該特定關(guān)系型數(shù)據(jù) 庫結(jié)構(gòu)無更改的情況下添加人工產(chǎn)物。
10. 如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還具有用于使得 計(jì)算機(jī)執(zhí)行以下步驟的計(jì)算機(jī)可執(zhí)行指令,所述步驟包括從通知服務(wù)接收檢索活動(dòng)元模型信息的請(qǐng)求,所述通知服務(wù)可用于向--個(gè) 或多個(gè)客戶機(jī)設(shè)備通知對(duì)所述活動(dòng)元模型的改變。
11. 如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述特定關(guān)系型 數(shù)據(jù)庫結(jié)構(gòu)可用于存儲(chǔ)標(biāo)識(shí)特定元素的名稱和描述該元素的數(shù)據(jù)。
12. 如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述特定關(guān)系型 數(shù)據(jù)庫結(jié)構(gòu)可用于存儲(chǔ)標(biāo)識(shí)特定連接的名稱、描述該特定連接的數(shù)據(jù)、該特定 連接的源、以及該特定連接的目的地。
13. 如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)可用于存儲(chǔ)特定連接的相關(guān)性信息。
14. 一種用于提供軟件開發(fā)應(yīng)用程序的方法,所述方法包括以下步驟與提交服務(wù)通信來更新由多個(gè)用戶使用的中央信息存儲(chǔ)中的應(yīng)用程序的活動(dòng)元模型;接收來自通知服務(wù)的、對(duì)所述活動(dòng)元模型的改變的通知;以及 使用所述通知服務(wù)來更新軟件開發(fā)應(yīng)用程序中的顯示。
15. 如權(quán)利要求14所述的方法,其特征在于,所述提交服務(wù)是所述軟件 開發(fā)應(yīng)用程序的組件。
16. 如權(quán)利要求14所述的方法,其特征在于,所述通知服務(wù)提供策略違 反警告。
17. 如權(quán)利要求14所述的方法,其特征在于,所述通知服務(wù)提供依賴性警告。
18. 如權(quán)利要求14所述的方法,其特征在于,所述通知服務(wù)提供性能警告。
19. 如權(quán)利要求14所述的方法,其特征在于,所述通知服務(wù)提供指示應(yīng) 用程序代碼當(dāng)前正由另一個(gè)用戶修改的警告。
20. —種具有用于使得計(jì)算機(jī)執(zhí)行如權(quán)利要求14所述的步驟的計(jì)算機(jī)可執(zhí) 行指令的計(jì)算機(jī)可讀介質(zhì)。
全文摘要
公開了在團(tuán)隊(duì)軟件開發(fā)環(huán)境中提供協(xié)作性開發(fā)信息存儲(chǔ)并與之交互的各種技術(shù)和方法。提交服務(wù)更新由多個(gè)用戶使用的中央信息存儲(chǔ)中的應(yīng)用程序的活動(dòng)元模型。在特定軟件開發(fā)環(huán)境中操作的通知服務(wù)接收已經(jīng)對(duì)活動(dòng)元模型作出改變的通知。隨后使用接收自通知服務(wù)的信息來更新的特定軟件開發(fā)環(huán)境中的顯示。在數(shù)據(jù)庫服務(wù)器上,提供在多個(gè)用戶開發(fā)的應(yīng)用程序的活動(dòng)元模型信息改變時(shí)接收該信息的接收服務(wù)。提供存儲(chǔ)服務(wù)來將所接收到的活動(dòng)元模型信息存儲(chǔ)在特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)中,該結(jié)構(gòu)用于允許在對(duì)該特定關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)無更改的情況下添加人工產(chǎn)物。
文檔編號(hào)G06F15/16GK101647009SQ200880008752
公開日2010年2月10日 申請(qǐng)日期2008年2月19日 優(yōu)先權(quán)日2007年3月19日
發(fā)明者G·馬里烏斯 申請(qǐng)人:微軟公司