欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于查詢的軟件系統(tǒng)設(shè)計(jì)表示的制作方法

文檔序號:6534466閱讀:153來源:國知局
基于查詢的軟件系統(tǒng)設(shè)計(jì)表示的制作方法
【專利摘要】一種用于提供軟件系統(tǒng)的設(shè)計(jì)表示的計(jì)算機(jī)實(shí)現(xiàn)的方法包括將表示所述軟件系統(tǒng)的多個(gè)軟件代碼元素的數(shù)據(jù)集存儲在存儲器中,其中存儲所述數(shù)據(jù)集包括將設(shè)計(jì)數(shù)據(jù)合并到所述數(shù)據(jù)集中,所述設(shè)計(jì)數(shù)據(jù)表示與所述軟件代碼元素有關(guān)的相應(yīng)設(shè)計(jì)屬性。接收包括對所述數(shù)據(jù)集中的項(xiàng)的引用的數(shù)據(jù)集查詢所述數(shù)據(jù)集查詢是用與所述存儲器通信的處理單元對所述數(shù)據(jù)集實(shí)現(xiàn)的。實(shí)現(xiàn)所述數(shù)據(jù)集查詢包括基于對所述項(xiàng)的引用來定義所述數(shù)據(jù)集的子集。經(jīng)由與所述處理單元通信的輸出設(shè)備呈現(xiàn)的用戶界面包括根據(jù)所述數(shù)據(jù)集的所定義的子集的、所述軟件系統(tǒng)的設(shè)計(jì)表示的視圖。
【專利說明】基于查詢的軟件系統(tǒng)設(shè)計(jì)表示
[0001] 發(fā)明背景
[0002] 軟件系統(tǒng)的開發(fā)通常伴隨有為維護(hù)軟件代碼的設(shè)計(jì)文檔或模型而作出的努力。這 樣的努力嘗試提供對于軟件代碼的除了從插入到代碼中的評論可用的信息之外的洞察,這 些評論通常限于指定所聲明函數(shù)的行為。不幸的是,在可具有數(shù)百萬行的代碼的較大軟件 系統(tǒng)的開發(fā)期間,維護(hù)設(shè)計(jì)文檔是具有挑戰(zhàn)性的。
[0003] 在面向?qū)ο蟮南到y(tǒng)中,大型軟件系統(tǒng)可具有數(shù)千個(gè)對象。諸如C#之類的面向?qū)ο?的編程語言可允許軟件開發(fā)者通過將屬性分配到對象來記錄代碼。所得到的文檔因此限于 引用軟件代碼自身內(nèi)的元素。
[0004] 圖形建模工具已經(jīng)被用于記錄對象之間的交互和關(guān)系。一些圖形建模工具是基于 統(tǒng)一建模語言(UML)的。不幸的是,這些和其他用于維護(hù)設(shè)計(jì)文檔的方式依然過于昂貴、耗 時(shí)和/或由于在開發(fā)期間發(fā)生對于代碼的改變而易于出錯(cuò)。


【發(fā)明內(nèi)容】

[0005] 各方法和各系統(tǒng)涉及提供軟件系統(tǒng)的設(shè)計(jì)信息。經(jīng)由對數(shù)據(jù)集執(zhí)行查詢來提供所 述設(shè)計(jì)信息,其中,軟件系統(tǒng)的元素與關(guān)于該軟件系統(tǒng)的附加信息(包括例如設(shè)計(jì)抽象和 設(shè)計(jì)注釋)相結(jié)合地存儲。經(jīng)由呈現(xiàn)數(shù)據(jù)集的代表性視圖、片或其他子集來提供查詢的結(jié) 果。附加設(shè)計(jì)信息可接著被覆蓋在代表性視圖上或以其他方式集成到代表性視圖中。附加 設(shè)計(jì)信息可包括例如系統(tǒng)性能數(shù)據(jù)和/或設(shè)計(jì)確認(rèn)數(shù)據(jù)。
[0006] 根據(jù)本公開的一個(gè)方面,可根據(jù)數(shù)據(jù)集查詢來提供軟件系統(tǒng)的設(shè)計(jì)表示的視圖。 設(shè)計(jì)數(shù)據(jù)被合并到代表軟件系統(tǒng)的多個(gè)軟件代碼元素的數(shù)據(jù)集中。對該數(shù)據(jù)集實(shí)現(xiàn)數(shù)據(jù)集 查詢以定義在設(shè)計(jì)表示視圖中呈現(xiàn)的數(shù)據(jù)集的子集。
[0007] 提供本概述是為了以簡化的形式介紹將在以下【具體實(shí)施方式】中進(jìn)一步描述的概 念選擇。本概述并不旨在標(biāo)識所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制 所要求保護(hù)主題的范圍。

【專利附圖】

【附圖說明】
[0008]圖1是被配置成根據(jù)一個(gè)實(shí)施例的提供軟件系統(tǒng)的設(shè)計(jì)表示的示例性系統(tǒng)的框 圖。
[0009] 圖2是根據(jù)一個(gè)實(shí)施例的提供軟件系統(tǒng)的設(shè)計(jì)表示的示例性計(jì)算機(jī)實(shí)現(xiàn)的方法 的流程圖。
[0010] 圖3-14是經(jīng)由所公開的方法和系統(tǒng)生成的或呈現(xiàn)的示例性用戶界面的示意圖。
[0011] 圖15是根據(jù)用于一個(gè)或多個(gè)所公開的方法和系統(tǒng)的實(shí)現(xiàn)的一個(gè)實(shí)施例的計(jì)算環(huán) 境的框圖。
[0012] 盡管所公開的系統(tǒng)和方法易于具有各種形式的實(shí)施例,但在附圖中示出了(并將 在下文描述)本發(fā)明的各具體實(shí)施例,其中要理解,本公開旨在是說明性的,而不將本發(fā)明 限于本文所描述和示出的各具體實(shí)施例。
[0013] 詳細(xì)描述
[0014] 所公開的各方法和各系統(tǒng)涉及提供軟件系統(tǒng)的設(shè)計(jì)表示??山?jīng)由對軟件系統(tǒng)的軟 件代碼元素和設(shè)計(jì)數(shù)據(jù)的數(shù)據(jù)集的查詢來提供所述設(shè)計(jì)表示。所公開的各方法和各系統(tǒng)的 基于查詢的性質(zhì)允許所得到的設(shè)計(jì)表示被更新來反映軟件系統(tǒng)中的改變。所公開的各方法 和各系統(tǒng)可由此促進(jìn)正在進(jìn)行中的對軟件系統(tǒng)的記錄、分析、探索、理解、開發(fā)和維護(hù)。例 如,所公開的各方法和各系統(tǒng)可有助于:開發(fā)軟件系統(tǒng)的所需設(shè)計(jì),接著確認(rèn)軟件系統(tǒng)的代 碼符合所需設(shè)計(jì),和/或確定軟件系統(tǒng)的代碼中的哪個(gè)地方不滿足所需設(shè)計(jì)。所公開的各 方法和各系統(tǒng)的多個(gè)方面涉及維護(hù)設(shè)計(jì)的最新表示。
[0015] 查詢可被用于基于對各種不同代碼構(gòu)造(諸如匯編和命名空間)的引用來定義軟 件系統(tǒng)的子集。該子集可基于對構(gòu)建定義或其他定義代碼集合的構(gòu)造的引用。這樣的代碼 構(gòu)造可被添加到要被查詢的代碼索引數(shù)據(jù)集。每個(gè)子集定義查詢可引用名稱、關(guān)系和與代 碼元素有關(guān)的其他信息以及代碼索引數(shù)據(jù)集中的其他設(shè)計(jì)數(shù)據(jù)。子集由此通過對其運(yùn)行查 詢的代碼元素以及其他設(shè)計(jì)數(shù)據(jù)來對應(yīng)于視圖或片。在查詢中使用軟件系統(tǒng)的代碼構(gòu)造和 其他代碼元素可允許軟件開發(fā)者避免必須在軟件系統(tǒng)的分開的模型中創(chuàng)建對應(yīng)的層、組件 或其他元素。查詢可經(jīng)由用戶界面(例如,文本編輯器)被配置為查詢表達(dá)式。查詢可被 實(shí)現(xiàn)以及被重新實(shí)現(xiàn)來遞送和更新軟件系統(tǒng)的設(shè)計(jì)表示。
[0016] 由所公開的各方法和各系統(tǒng)提供的設(shè)計(jì)表示可與底層軟件代碼集成,而非與底層 軟件代碼分開。這樣的集成允許在對底層代碼的改變發(fā)生時(shí),設(shè)計(jì)表示被更新。如以下描 述的,更新可按自動化的方式通過重新實(shí)現(xiàn)數(shù)據(jù)集查詢來提供。過去的查詢可被持久保存 或以其他方式為此變得可用。用于將設(shè)計(jì)表示與代碼同步的額外努力被避免。所公開的各 方法和各系統(tǒng)可由此提供對底層代碼的實(shí)時(shí)或運(yùn)行中的記錄。
[0017] 所公開的各方法和各系統(tǒng)與軟件系統(tǒng)的集成還可避免對已經(jīng)存在于軟件代碼中 的信息的重復(fù)。如以下描述的,這樣的信息可接著被附加的設(shè)計(jì)信息補(bǔ)充(而非僅僅重 復(fù))。設(shè)計(jì)表示由此可集成來自多個(gè)源的設(shè)計(jì)數(shù)據(jù)。例如,設(shè)計(jì)表示可由此避免被限制到特 定類型的設(shè)計(jì)元素,諸如UML設(shè)計(jì)元素。設(shè)計(jì)信息到特定格式(例如,UML格式)的強(qiáng)制轉(zhuǎn) 換也可被避免。
[0018] 盡管與軟件系統(tǒng)的集成提供了多個(gè)益處,但是所公開的各方法和各系統(tǒng)可以是有 用的,而不管對于在軟件系統(tǒng)底層的源代碼的訪問是否可用。所公開的各方法和各系統(tǒng)不 需要維護(hù)對于底層源代碼的持續(xù)訪問或其他訪問或維持底層源代碼的可用性。代碼索引數(shù) 據(jù)集可在構(gòu)建時(shí)或者在提交查詢并且確定代碼索引數(shù)據(jù)集不是最新的時(shí)候被更新。在一些 情況下,與軟件系統(tǒng)有關(guān)的結(jié)構(gòu)信息可從編譯自源代碼的二進(jìn)制文件中提取。在其他情況 下,與軟件系統(tǒng)有關(guān)的結(jié)構(gòu)信息可從源代碼直接提取。
[0019] 所公開的方法和系統(tǒng)的查詢不限于對代碼本身中的項(xiàng)的引用。在其上實(shí)現(xiàn)查詢的 數(shù)據(jù)集可包括與源代碼或從中導(dǎo)出的代碼元素不同的設(shè)計(jì)數(shù)據(jù)。如本文所使用的,所公開 的方法和系統(tǒng)的用戶界面可被配置成支持對這些附加設(shè)計(jì)數(shù)據(jù)的錄入、存儲、以及最終使 用。作為替換或補(bǔ)充,所公開的方法和系統(tǒng)可被配置成支持經(jīng)由對代碼元素的分析來自動 提取或生成這樣的附加設(shè)計(jì)數(shù)據(jù)。
[0020] 設(shè)計(jì)注釋是被合并以供在軟件系統(tǒng)的設(shè)計(jì)表示中使用的附加設(shè)計(jì)數(shù)據(jù)的一個(gè)示 例。設(shè)計(jì)注釋可涉及指定軟件系統(tǒng)的代碼元素的各層或依存關(guān)系。設(shè)計(jì)注釋隨后可在查詢 中被引用以找出與該層相關(guān)聯(lián)的代碼元素。注釋不限于指定各層和依存關(guān)系,并且可被用 來表示軟件系統(tǒng)的各方面。例如,注釋可表示軟件模型框架的各組件,其中例如軟件系統(tǒng)的 各組件之間的聯(lián)系被標(biāo)識。作為替換或補(bǔ)充,注釋可以表示(i)軟件系統(tǒng)的各組件的定義, 包括例如這些組件的邊界的指示,(ii)各組件之間的各類依存關(guān)系,以及(iii)代碼元素 是焦點(diǎn)元素、附屬元素還是附帶元素的指示。注釋還可指示軟件系統(tǒng)的行為特性,包括例如 軟件系統(tǒng)的狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移。這些狀態(tài)可通過屬性和字段上的注釋表達(dá)式來 連接到代碼。所公開的方法和系統(tǒng)中的注釋因而不限于顯式地引用代碼元素。
[0021] 所公開的方法和系統(tǒng)不限于經(jīng)由所公開的方法和系統(tǒng)的用戶界面提供的設(shè)計(jì)注 釋。設(shè)計(jì)數(shù)據(jù)的合并可通過從代碼元素自動提取設(shè)計(jì)信息來促進(jìn)。設(shè)計(jì)信息可以用各種形 式來呈現(xiàn)。所公開的方法和系統(tǒng)可被配置成應(yīng)用抽象函數(shù)來觀察或檢測代碼中的設(shè)計(jì)模 式,如框架中使用的模式。抽象函數(shù)可被配置成將對框架的設(shè)計(jì)抽象或其他模式的引用與 相應(yīng)代碼元素相關(guān)聯(lián)地合并到設(shè)計(jì)數(shù)據(jù)中。
[0022] 設(shè)計(jì)注釋和設(shè)計(jì)抽象增強(qiáng)了所公開的方法和系統(tǒng)所生成的設(shè)計(jì)表示。設(shè)計(jì)表示因 而可避免僅冗余地表達(dá)代碼中存在的信息。設(shè)計(jì)表示可被用于設(shè)計(jì)記錄和/或確認(rèn)。確認(rèn) 過程可結(jié)合軟件系統(tǒng)的基于查詢的設(shè)計(jì)來實(shí)現(xiàn),以確定軟件系統(tǒng)是否滿足一個(gè)或多個(gè)設(shè)計(jì) 策略或其他準(zhǔn)則。設(shè)計(jì)策略可經(jīng)由設(shè)計(jì)注釋來建立。軟件系統(tǒng)滿足或不能滿足設(shè)計(jì)策略或 其他準(zhǔn)則的指示可以與軟件系統(tǒng)的設(shè)計(jì)表示視圖一起呈現(xiàn)。
[0023] 軟件開發(fā)還可通過與軟件系統(tǒng)的設(shè)計(jì)表示視圖一起呈現(xiàn)性能數(shù)據(jù)來被增強(qiáng)。這樣 的性能數(shù)據(jù)可包括涉及軟件度量的數(shù)據(jù)、運(yùn)行時(shí)數(shù)據(jù)(例如,工作性能)、管理數(shù)據(jù)(例如, 隱錯(cuò)計(jì)數(shù))和其他數(shù)據(jù)。性能數(shù)據(jù)可以與軟件系統(tǒng)的當(dāng)前或?qū)崟r(shí)構(gòu)建的設(shè)計(jì)表示一起呈 現(xiàn)。性能數(shù)據(jù)可覆蓋在設(shè)計(jì)信息的呈現(xiàn)上或以其他方式與其集成在一起。
[0024] 雖然在面向?qū)ο蟮能浖a的若干示例的上下文中描述,但所公開的方法和系統(tǒng) 可以與各種各樣的源代碼語言和框架一起使用。所公開的方法和系統(tǒng)不限于基于任何特定 架構(gòu)、框架、或技術(shù)的軟件系統(tǒng)。如下所述,所公開的方法和系統(tǒng)可配置有用于導(dǎo)入附加代 碼構(gòu)造和其他信息以支持這樣的其他語言、架構(gòu)、框架或技術(shù)的一個(gè)或多個(gè)模塊。
[0025] 所公開的方法和系統(tǒng)可以結(jié)合集成開發(fā)環(huán)境(IDE)系統(tǒng)來實(shí)現(xiàn)。所公開的方法和 系統(tǒng)的用戶界面和其他功能可被集成到其中的IDE系統(tǒng)的一個(gè)示例是可從微軟公司(華盛 頓州雷蒙德市)購得的微軟VisualStudio?產(chǎn)品族所呈現(xiàn)的IDE系統(tǒng)。盡管很適于用 在該IDE系統(tǒng)中,所公開的方法和系統(tǒng)的實(shí)踐不限于任何特定IDE系統(tǒng)、方法、框架或架構(gòu)。
[0026] 所公開的方法和系統(tǒng)所提供的設(shè)計(jì)表示的視圖可以與代碼索引數(shù)據(jù)集的子集相 對應(yīng)。該子集因而可包括代碼索引數(shù)據(jù)集中的代碼元素和任何其他設(shè)計(jì)數(shù)據(jù)。如下所述, 其他設(shè)計(jì)數(shù)據(jù)可包括設(shè)計(jì)注釋和設(shè)計(jì)抽象。該子集可通過數(shù)據(jù)集查詢來定義,這可經(jīng)由多 個(gè)不同搜索項(xiàng)或功能來指定搜索準(zhǔn)則。搜索項(xiàng)或功能的示例包括根據(jù)容器類型(例如,匯 編、命名空間、類型、以及其他代碼元素屬性)、名稱(包括通配符)、以及關(guān)系(例如,繼承) 來搜索。該查詢還可包括配置成對結(jié)果編組或以其他方式結(jié)構(gòu)化的構(gòu)造、指令、或項(xiàng)。數(shù)據(jù) 集查詢因而可被用來定義軟件系統(tǒng)的要被可視化、確認(rèn)或用作工作集的子集。
[0027] 經(jīng)由所公開的方法和系統(tǒng)合并到設(shè)計(jì)數(shù)據(jù)中的設(shè)計(jì)注釋可以定義與軟件系統(tǒng)有 關(guān)的附加事實(shí)。設(shè)計(jì)注釋可被指定為軟件系統(tǒng)的一個(gè)或多個(gè)代碼元素的屬性。設(shè)計(jì)注釋不 必直接從代碼導(dǎo)出。設(shè)計(jì)注釋仍然可與關(guān)聯(lián)于該設(shè)計(jì)注釋的代碼元素相關(guān)。如本文描述的, 設(shè)計(jì)注釋可被用來定義或標(biāo)識軟件系統(tǒng)的體系結(jié)構(gòu)組件和該設(shè)計(jì)的其他方面。
[0028] 經(jīng)由所公開的方法和系統(tǒng)合并到設(shè)計(jì)數(shù)據(jù)中的設(shè)計(jì)抽象也可以定義與軟件系統(tǒng) 有關(guān)的沒有直接表示在代碼中的附加事實(shí)。設(shè)計(jì)抽象可通過分析設(shè)計(jì)模式的代碼元素來生 成。該分析可以經(jīng)由執(zhí)行被配置成觀察或檢測特定模式的抽象函數(shù)來用自動方式來實(shí)現(xiàn)。 該分析可被定向到設(shè)計(jì)數(shù)據(jù)而非代碼本身。例如,設(shè)計(jì)數(shù)據(jù)中的注釋可以提供有用于標(biāo)識 設(shè)計(jì)模式的信息。指示從該分析得到的設(shè)計(jì)抽象的設(shè)計(jì)數(shù)據(jù)隨后可被存儲在代碼索引數(shù)據(jù) 集中以供將來查詢使用。例如,用于指定注釋的用戶界面可被配置有允許用戶將某些設(shè)計(jì) 抽象指定或接受為準(zhǔn)確的構(gòu)造。設(shè)計(jì)抽象隨后被存儲在代碼索引數(shù)據(jù)集中作為沒有從代碼 直接導(dǎo)出的進(jìn)一步設(shè)計(jì)數(shù)據(jù)。
[0029] 設(shè)計(jì)策略可以對應(yīng)于和/或指定軟件系統(tǒng)的預(yù)期或所需設(shè)計(jì)的準(zhǔn)則或規(guī)則。所公 開的方法和系統(tǒng)可被配置成促進(jìn)一個(gè)或多個(gè)設(shè)計(jì)策略的指定和這些策略的實(shí)現(xiàn),以確定軟 件系統(tǒng)是否符合所需設(shè)計(jì)準(zhǔn)則。如下所述,設(shè)計(jì)策略可經(jīng)由指示所需或預(yù)期設(shè)計(jì)的一個(gè)或 多個(gè)設(shè)計(jì)注釋來建立。例如,所需設(shè)計(jì)可經(jīng)由軟件系統(tǒng)要匹配或滿足的依存關(guān)系圖來表達(dá)。
[0030] 以下描述多個(gè)示例性實(shí)施例以示出使用數(shù)據(jù)集查詢來提供軟件系統(tǒng)的設(shè)計(jì)表示。 查詢是針對數(shù)據(jù)集來實(shí)現(xiàn)的,在該數(shù)據(jù)集中,指示代碼元素的信息與其他設(shè)計(jì)數(shù)據(jù)相組合, 如用戶指定的設(shè)計(jì)注釋和觀察到的設(shè)計(jì)抽象。查詢的結(jié)果可被用來通過定義要被合并的進(jìn) 一步注釋來改進(jìn)該數(shù)據(jù)集。查詢還可被用來定義軟件系統(tǒng)的要針對設(shè)計(jì)策略來評估的子 集,所述設(shè)計(jì)策略可按與設(shè)計(jì)注釋相同的方式來指定。這樣的基于查詢的設(shè)計(jì)表示可被用 來提供和/或支持實(shí)況設(shè)計(jì)記錄、軟件系統(tǒng)可視化、代碼確認(rèn)、以及其他系統(tǒng)評估。
[0031] 圖1描繪了被配置成根據(jù)一個(gè)示例性實(shí)施例來提供軟件系統(tǒng)102的設(shè)計(jì)表示的系 統(tǒng)100。系統(tǒng)100包括處理器104、耦合到處理器104的輸出設(shè)備106以及耦合到處理器 104的多個(gè)存儲設(shè)備或其他存儲器108。存儲器108可包括一個(gè)或多個(gè)數(shù)據(jù)集存儲器以及一 個(gè)或多個(gè)系統(tǒng)存儲器。數(shù)據(jù)集存儲器涉及存儲在系統(tǒng)100的操作期間使用或生成的數(shù)據(jù)。 系統(tǒng)存儲器涉及存儲由處理器104實(shí)現(xiàn)的指令。數(shù)據(jù)集和系統(tǒng)存儲器可被部署或分布在任 意數(shù)量的設(shè)備、計(jì)算機(jī)或其他數(shù)據(jù)存儲設(shè)備上,并可被集成到任意所需的程度。在這個(gè)示例 中,存儲器108包括用于代碼索引數(shù)據(jù)集110的存儲器,其中表示軟件系統(tǒng)102的多個(gè)軟件 代碼元素的數(shù)據(jù)被存儲??山?jīng)由使得對多個(gè)用戶可用的共享存儲器來提供代碼索引數(shù)據(jù)集 110??蓮能浖到y(tǒng)102的一個(gè)或多個(gè)源代碼文件112或代碼制品文件114中獲得軟件代 碼元素。呈現(xiàn)在代碼制品文件114中的信息的性質(zhì)可變化。例如,代碼制品文件114可包 括所構(gòu)建的制品或可用代碼來部署的其他數(shù)據(jù)或信息,包括例如引用數(shù)據(jù)、資源、元數(shù)據(jù)和 樣式表。在其他實(shí)施例中,可從儲存庫而非文件中獲得代碼制品。
[0032] 除了源代碼或代碼制品之外,代碼索引數(shù)據(jù)集110包括設(shè)計(jì)數(shù)據(jù)。設(shè)計(jì)數(shù)據(jù)表示 軟件系統(tǒng)102的軟件代碼元素的各個(gè)設(shè)計(jì)屬性。如在以下進(jìn)一步描述的,代碼索引數(shù)據(jù)集 中的設(shè)計(jì)數(shù)據(jù)還可包括指示軟件系統(tǒng)102的代碼元素的設(shè)計(jì)注釋和設(shè)計(jì)抽象的數(shù)據(jù)。設(shè)計(jì) 數(shù)據(jù)可由此指示代碼的結(jié)構(gòu)并包括關(guān)于從結(jié)構(gòu)中確定的抽象的信息。代碼索引數(shù)據(jù)集110 可被配置為數(shù)據(jù)庫或任意其他保持關(guān)于軟件系統(tǒng)的信息的持久存儲數(shù)據(jù)結(jié)構(gòu)。代碼索引數(shù) 據(jù)集110可將存儲在其中的數(shù)據(jù)結(jié)合預(yù)定義的或先前使用的數(shù)據(jù)庫查詢安排為經(jīng)索引的 格式。在其他實(shí)施例中,設(shè)計(jì)數(shù)據(jù)不需要被存儲在經(jīng)索引的數(shù)據(jù)集或數(shù)據(jù)庫中。
[0033] 代碼索引數(shù)據(jù)集110可包括軟件系統(tǒng)102的多個(gè)版本或構(gòu)建的設(shè)計(jì)數(shù)據(jù)。系統(tǒng) 100可經(jīng)由用戶界面元素提供選擇理想的構(gòu)建或版本的機(jī)會,其中的一個(gè)示例在以下描述。
[0034] 處理器104經(jīng)由系統(tǒng)存儲器中的指令被配置來實(shí)現(xiàn)所公開的各方法和各系統(tǒng)的 一個(gè)或多個(gè)方面。指令可被安排在多個(gè)系統(tǒng)模塊中。在這個(gè)示例中,系統(tǒng)模塊被存儲在存儲 器108的單個(gè)系統(tǒng)存儲器中。存儲器108的體系結(jié)構(gòu)可以與所示示例不同。例如,系統(tǒng)模 塊的指令可被分布在任意數(shù)量的系統(tǒng)存儲器、計(jì)算機(jī)或其他設(shè)備上。在這個(gè)示例中,提供用 于涉及從軟件系統(tǒng)102中導(dǎo)入或加載數(shù)據(jù)或者導(dǎo)入或加載與軟件系統(tǒng)102有關(guān)的數(shù)據(jù)的模 塊(包括代碼元素加載模塊116和架構(gòu)導(dǎo)入模塊118)的指令。代碼元素加載模塊116涉 及接收和/或獲得指示源代碼112和/或代碼制品文件114的數(shù)據(jù)以及將這樣的數(shù)據(jù)加載 到代碼索引數(shù)據(jù)集110中。架構(gòu)導(dǎo)入模塊118涉及導(dǎo)入指示軟件系統(tǒng)102的可能的架構(gòu)定 義120的數(shù)據(jù)。架構(gòu)可包括用于支持在由系統(tǒng)100提供的設(shè)計(jì)表示內(nèi)使用新構(gòu)造的定義。 例如,新的架構(gòu)可被合并到存儲器108中以將系統(tǒng)100配置為用于存儲指定附加的設(shè)計(jì)抽 象、注釋和/或編程語言或技術(shù)的信息。這樣的信息還可被存儲在一個(gè)或多個(gè)存儲器、文件 或代碼索引數(shù)據(jù)集110外部的其他存儲介質(zhì)中。
[0035] 提供用于分析代碼索引數(shù)據(jù)集110中的代碼元素來生成供系統(tǒng)100使用的設(shè)計(jì)數(shù) 據(jù)的指令。在這個(gè)實(shí)施例中,經(jīng)由抽象功能模塊122來實(shí)現(xiàn)分析,該抽象功能模塊122被配 置成對代碼索引數(shù)據(jù)集110中的代碼元素和/或制品執(zhí)行一個(gè)或多個(gè)抽象操作。抽象功能 或操作被配置成分析代碼索引數(shù)據(jù)集110以供軟件設(shè)計(jì)模式的實(shí)例。例如,可通過識別指 示軟件設(shè)計(jì)模式的結(jié)構(gòu)或?qū)傩?、解析指示軟件模式的文本的注釋和其他分析技術(shù)來在代碼 元素和/或制品中觀察到或檢測到軟件設(shè)計(jì)模式。該分析可實(shí)現(xiàn)在代碼索引數(shù)據(jù)集110中 的代碼元素上的多個(gè)計(jì)算。例如,在用于發(fā)現(xiàn)使用托管可擴(kuò)展性框架(MEF)實(shí)現(xiàn)的依存關(guān) 系注入的示例性分析中,該分析可搜索MEF導(dǎo)入/導(dǎo)出屬性(例如,在MEF命名空間中定義 的各屬性的實(shí)例)以及這些屬性的參數(shù),并隨后計(jì)算涉及什么合同、什么組件在提供、以及 什么組件在消費(fèi)。在Ninject框架示例中,計(jì)算可以標(biāo)識表示合同、提供者、以及消費(fèi)者的 那些組件。計(jì)算可以在一個(gè)以上分析技術(shù)中共享或使用。
[0036] 對于軟件設(shè)計(jì)模式的每一檢測到的實(shí)例中,抽象操作可以向根據(jù)該模式的對應(yīng)代 碼元素或制品分配設(shè)計(jì)抽象。例如,一個(gè)抽象操作可被配置成檢測與依存關(guān)系注入模式的 合同、客戶、和提供者相對應(yīng)的代碼元素。抽象函數(shù)分析和后續(xù)將設(shè)計(jì)抽象信息存儲為設(shè)計(jì) 數(shù)據(jù)可使開發(fā)者或其他用戶免于必須手動添加這樣的抽象的設(shè)計(jì)注釋。抽象函數(shù)和對應(yīng)的 設(shè)計(jì)抽象的進(jìn)一步示例在下文中闡明。
[0037] 可支持多個(gè)抽象函數(shù)。軟件設(shè)計(jì)模式可與各種不同框架所使用的模式相對應(yīng),如 托管可擴(kuò)展性框架(MEF)、模型-視圖-控制器(MVC)框架、以及Ninject。作為替換或補(bǔ)充, 軟件設(shè)計(jì)模式可以反映諸如表述性狀態(tài)轉(zhuǎn)移(REST)等體系結(jié)構(gòu)方法,或諸如四人組(GoF) 模式(狀態(tài),工廠,以及其他創(chuàng)建、結(jié)構(gòu)或行為模式)。相應(yīng)抽象函數(shù)可被提供以將代碼元素 或制品映射到軟件設(shè)計(jì)模式的框架或體系結(jié)構(gòu)的對應(yīng)設(shè)計(jì)抽象。指定相應(yīng)抽象函數(shù)的信息 可經(jīng)由通過例如抽象函數(shù)模塊122的插件管理器124合并的插件或其他附件來提供。
[0038] 如下所述,插件管理器124是可通過它將各種插件合并到系統(tǒng)100的多個(gè)插件管 理器之一。每一插件可以定義或提供涉及擴(kuò)展系統(tǒng)100的組件的功能的代碼或信息存儲。 插件可以彼此相關(guān)聯(lián)。例如,多個(gè)插件可被合并為群,以通過插件管理器中的每一個(gè)來合并 特定軟件設(shè)計(jì)模式或技術(shù)。該群的成員可以共享與軟件設(shè)計(jì)模式或其他技術(shù)有關(guān)的多個(gè)公 共定義或其他數(shù)據(jù)。
[0039]指示設(shè)計(jì)抽象的設(shè)計(jì)數(shù)據(jù)隨后被存儲在代碼索引數(shù)據(jù)集110中。設(shè)計(jì)數(shù)據(jù)因而可 被配置成將每一檢測到的實(shí)例的軟件代碼元素與軟件設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象相關(guān)聯(lián)。這 樣的設(shè)計(jì)數(shù)據(jù)隨后可供稍后用于提供軟件系統(tǒng)102的設(shè)計(jì)表示。
[0040] 處理器104實(shí)現(xiàn)的抽象模塊指令可通過將附加代碼元素加載到代碼索引數(shù)據(jù)集 110中或通過某一其他事件來觸發(fā)。作為替換或補(bǔ)充,抽象函數(shù)分析可在加載附加抽象函數(shù) 時(shí)實(shí)現(xiàn)。在一些實(shí)施例中,該分析可以響應(yīng)于經(jīng)由系統(tǒng)1〇〇的用戶界面的用戶請求來實(shí)現(xiàn)。
[0041]存儲在代碼索引數(shù)據(jù)集110中的設(shè)計(jì)數(shù)據(jù)可被選擇性地檢索以提供軟件系統(tǒng)102 的特定設(shè)計(jì)表示視圖。對要被檢索的設(shè)計(jì)數(shù)據(jù)的選擇是經(jīng)由通過系統(tǒng)100所呈現(xiàn)的用戶界 面(例如,文本編輯器)輸入的數(shù)據(jù)集查詢來指定的。在代碼索引數(shù)據(jù)集110上實(shí)現(xiàn)數(shù)據(jù) 集查詢以定義代碼索引數(shù)據(jù)集100的要在設(shè)計(jì)表示視圖中提供的子集。為此,數(shù)據(jù)集查詢 可包括對軟件設(shè)計(jì)模式或?qū)?yīng)的設(shè)計(jì)抽象的引用,或者可以指定容器類型、對象名、或?qū)ο?關(guān)系。例如,數(shù)據(jù)集查詢可涉及找出導(dǎo)出或提供合同-提供者-客戶設(shè)計(jì)模式中的特定合 同的所有類。要在設(shè)計(jì)表示視圖中呈現(xiàn)的子集隨后可被限于與所引用的軟件設(shè)計(jì)模式或設(shè) 計(jì)抽象、或指定的容器類型、名稱、或關(guān)系相關(guān)聯(lián)的那些代碼元素(或其他設(shè)計(jì)數(shù)據(jù))。設(shè)計(jì) 表示視圖可以按照所引用的模式或抽象的項(xiàng)、詞匯和/或概念來呈現(xiàn)該子集。
[0042] 在圖1的示例中,用于解釋數(shù)據(jù)集查詢的指令在解釋器模塊126中闡明。解釋器 模塊126可被配置成解釋數(shù)據(jù)集查詢并在代碼索引數(shù)據(jù)集110上實(shí)現(xiàn)該數(shù)據(jù)集查詢。例 如,解釋器模塊126可被配置成通過解析數(shù)據(jù)集查詢的文本表達(dá)式以標(biāo)識該文本表達(dá)式中 的每一項(xiàng)、評估每一項(xiàng)的句法、實(shí)現(xiàn)經(jīng)由句法識別出的任何函數(shù)或操作(例如,邏輯或其他 運(yùn)算符,如"并")以及其他處理,來生成用于代碼索引數(shù)據(jù)集110的數(shù)據(jù)集查詢。解釋器模 塊126隨后可將數(shù)據(jù)庫查詢發(fā)送給代碼索引數(shù)據(jù)集110或根據(jù)數(shù)據(jù)庫查詢以其他方式來查 詢代碼索引數(shù)據(jù)集110。
[0043] 解釋器模塊126可根據(jù)用其表達(dá)數(shù)據(jù)庫查詢的查詢或視圖語言來配置。查詢語言 的句法可以變化。在一個(gè)示例中,程序語言可以經(jīng)由XML(可擴(kuò)展標(biāo)記語言)結(jié)構(gòu)來定義。 多個(gè)示例性查詢在下文結(jié)合圖3-6來提供。
[0044]解釋和查詢語言可包括通用運(yùn)算符、項(xiàng)和組件,以及可通過插件來引入的專用于 特定技術(shù)的組件。例如,通用項(xiàng)可被提供用于總體表達(dá)式結(jié)構(gòu)(例如,let、select、from,等 等)、某些基本代數(shù)處理(例如,Boolean、Integer、謂項(xiàng)邏輯、串處理)、以及用于訪問對象 的屬性(例如,點(diǎn)記號)。特定項(xiàng)可被提供以解釋特定類型的對象(例如,匯編、命名空間、 用于CLR的類型)、現(xiàn)有類型上的附加屬性(例如,IsContract作為依存關(guān)系注入插件所引 入的類型的新屬性)、以及指示整個(gè)數(shù)據(jù)作用域的標(biāo)準(zhǔn)命名集(例如,assemblies =所選構(gòu) 建中的所有匯編,或mvcapps =所選構(gòu)建中的所有MVC應(yīng)用)。
[0045]數(shù)據(jù)集查詢的結(jié)果經(jīng)由系統(tǒng)100所生成或呈現(xiàn)的用戶界面來呈現(xiàn)。用戶界面包括 根據(jù)該查詢所定義的代碼索引數(shù)據(jù)集110的子集的、軟件系統(tǒng)102的設(shè)計(jì)表示的視圖。演 示模塊128可以提供指令以用于生成用戶界面。演示模塊128可以指導(dǎo)處理器104經(jīng)由輸 出設(shè)備104呈現(xiàn)用戶界面。根據(jù)面向XML的對象模型或其他框架,或任何類型的瀏覽器相 關(guān)的用戶界面技術(shù)或其他用戶界面框架,用于演示模塊128的指令可被闡明為Windows演 示基礎(chǔ)(WPF)應(yīng)用。演示模塊128可被配置成經(jīng)由各種各樣的用戶界面和用戶界面元素來 提供查詢結(jié)果。例如,用戶界面可包括各種類型的列表(例如,代碼元素列表、源代碼列表, 等等)、各種類型的分層表示(例如,樹)和各種圖形視圖(例如,圖表)。多個(gè)示例性用戶 界面在下文結(jié)合圖3-14來提供。用戶界面可包括任何數(shù)量的用戶界面元素。例如,選擇一 個(gè)用戶界面的元素可使得生成或呈現(xiàn)揭示例如底層源代碼的進(jìn)一步用戶界面以用于導(dǎo)航 該底層源代碼。
[0046] 過去查詢和查詢結(jié)果或視圖的歷史可被持久保存并經(jīng)由查詢管理器130來檢索。 指示過去查詢和查詢結(jié)果的數(shù)據(jù)可被存儲在由查詢管理器130訪問并控制的數(shù)據(jù)集中。在 圖1的示例中,數(shù)據(jù)集被配置為視圖定義存儲132。在其他實(shí)施例中,這樣的查詢歷史數(shù)據(jù) 可被存儲在其中的數(shù)據(jù)集可以與存儲器108中的其他數(shù)據(jù)集中的任何一個(gè)或多個(gè)集成在 一起,如代碼索引數(shù)據(jù)集110。
[0047] 代碼索引數(shù)據(jù)集110中的設(shè)計(jì)數(shù)據(jù)可包括設(shè)計(jì)注釋。在一些實(shí)施例中,查詢結(jié)果 可被用來指定設(shè)計(jì)注釋。例如,設(shè)計(jì)注釋可以定義軟件系統(tǒng)102的各層,并且每一層可經(jīng)由 相應(yīng)數(shù)據(jù)集查詢來定義。更一般地,設(shè)計(jì)注釋可經(jīng)由注釋解釋器模塊134被指定并提供給 代碼索引數(shù)據(jù)集110。注釋解釋器模塊134可以經(jīng)由專用于創(chuàng)建設(shè)計(jì)注釋的用戶界面(如 文本編輯器)接收表達(dá)式和/或設(shè)計(jì)注釋的其他數(shù)據(jù)。經(jīng)由用戶界面創(chuàng)建設(shè)計(jì)注釋可包括 指定設(shè)計(jì)注釋的名稱或其他信息以及指定確定該設(shè)計(jì)注釋應(yīng)用于或與其相關(guān)聯(lián)的代碼元 素或制品的定義。如在以下示例中所示,用戶界面還允許指定注釋類型和注釋作用域。示例 注釋類型包括在抽象中使用的或與代碼相關(guān)地存儲在代碼索引數(shù)據(jù)集110中的層、依存關(guān) 系、繼承關(guān)系、關(guān)聯(lián)關(guān)系、組件、合同、提供者-合同-客戶關(guān)系、以及其他概念。注釋引入可 以指代碼中的元素、從代碼導(dǎo)出的抽象中的元素、或其他注釋。引用的復(fù)雜性可以變化(例 如,依存關(guān)系的源是命名空間A,或由這一層表示的代碼是運(yùn)行這一特定查詢的結(jié)果)。注 釋作用域可以指定設(shè)計(jì)注釋是在全局或永久應(yīng)用于代碼元素(例如,以供用在將來數(shù)據(jù)集 查詢中),還是局部或臨時(shí)應(yīng)用(例如,只供用在當(dāng)前設(shè)計(jì)表示視圖內(nèi))。注釋可以表達(dá)與 代碼有關(guān)的語句或與代碼的所需將來狀態(tài)有關(guān)的語句,如使特征被刪除、添加或修改。
[0048]在一些實(shí)施例中,設(shè)計(jì)注釋可以經(jīng)由呈現(xiàn)來用于指定數(shù)據(jù)集查詢的文本編輯器或 其他用戶界面來指定。設(shè)計(jì)注釋因而可自動生成。例如,設(shè)計(jì)注釋的創(chuàng)建可以在集成到被 呈現(xiàn)來用于設(shè)計(jì)抽象及其結(jié)果的用戶界面的覆蓋層或其他用戶界面元素中實(shí)現(xiàn)。設(shè)計(jì)注釋 因而可與作為查詢結(jié)果返回的代碼元素或制品相關(guān)聯(lián)。一旦經(jīng)由查詢生成了設(shè)計(jì)注釋,用 戶界面就可允許設(shè)計(jì)注釋被編輯或移除。
[0049] 設(shè)計(jì)注釋可使用注釋語言或句法來指定。注釋解釋器模塊134可被配置成根據(jù)注 釋句法解析并處理經(jīng)由用戶界面輸入的定義和其他信息。例如,處理可包括評估經(jīng)解析定 義中的每一項(xiàng)并實(shí)現(xiàn)在該定義中闡明的任何函數(shù)或運(yùn)算符。
[0050] 設(shè)計(jì)注釋可引用代碼中的元素或其他設(shè)計(jì)注釋。詳細(xì)的設(shè)計(jì)信息因而可被表達(dá)。 引用可直接作出或通過查詢來作出。例如,設(shè)計(jì)注釋可被指定用于將相應(yīng)查詢所返回的代 碼元素集合編組的特定層。
[0051] 設(shè)計(jì)注釋中的一個(gè)或多個(gè)可被指定為指示軟件系統(tǒng)102的預(yù)期或所需設(shè)計(jì)模型 的設(shè)計(jì)規(guī)則。這樣的設(shè)計(jì)注釋可被稱為策略注釋。該指定可經(jīng)由用于定義設(shè)計(jì)注釋的用戶 界面來促進(jìn)。例如,設(shè)計(jì)注釋的作用域可被改變成"所需"作用域,如在以下示例中所示。
[0052] 指示每一策略指示的數(shù)據(jù)可被存儲在專用數(shù)據(jù)集中。在這一示例中,策略注釋被 持久存儲在策略注釋存儲136中。策略注釋可另選地與存儲在代碼索引數(shù)據(jù)集110或存儲 器108的其他組件的數(shù)據(jù)集成在一起。
[0053] 策略注釋可由配置成評估軟件系統(tǒng)102的策略評估模塊140使用來標(biāo)識任何違反 或錯(cuò)誤。策略評估模塊140可包括將處理器配置成基于設(shè)計(jì)注釋數(shù)據(jù)在數(shù)據(jù)集的子集上實(shí) 現(xiàn)確認(rèn)過程的確認(rèn)指令。確認(rèn)過程的結(jié)果(包括任何確認(rèn)錯(cuò)誤)可通過演示模塊128所生 成的日志文件或用戶界面來查看。演示模塊128可被配置成在設(shè)計(jì)表示的視圖中呈現(xiàn)確認(rèn) 過程的結(jié)果。例如,該結(jié)果可經(jīng)由軟件系統(tǒng)102的圖形表示視圖上的覆蓋層來指示。錯(cuò)誤 可被突出顯示,如在以下示例中所示。
[0054] 對策略注釋和設(shè)計(jì)表示視圖的使用可被用來針對預(yù)期設(shè)計(jì)確認(rèn)實(shí)際設(shè)計(jì)。設(shè)計(jì)表 示視圖定義確認(rèn)過程的作用域。經(jīng)由查詢標(biāo)識的代碼索引數(shù)據(jù)集110的子集進(jìn)而標(biāo)識要針 對預(yù)期模型來確認(rèn)的代碼元素和其他設(shè)計(jì)數(shù)據(jù)。
[0055] 設(shè)計(jì)注釋的使用可促進(jìn)預(yù)期設(shè)計(jì)的細(xì)節(jié)的標(biāo)識。在一些情況下,策略注釋可依賴 于代碼中已存在的信息。例如,如果命名空間提供適當(dāng)?shù)姆謱訖C(jī)制,則各層不必經(jīng)由作為命 名空間的有效副本的注釋來指定以表達(dá)以下事實(shí):兩層之間不應(yīng)存在依存關(guān)系。相反,單個(gè) 策略注釋可足夠。下文結(jié)合圖13中描繪的實(shí)施例提供了進(jìn)一步細(xì)節(jié),其中方法調(diào)用注釋在 各層之間被指定。
[0056] 系統(tǒng)100區(qū)分代碼元素、策略注釋、以及其他設(shè)計(jì)注釋,如提供缺失設(shè)計(jì)信息的那 些設(shè)計(jì)注釋。這些類型的設(shè)計(jì)數(shù)據(jù)之間的區(qū)分可促進(jìn)并發(fā)地描繪實(shí)際和預(yù)期設(shè)計(jì)狀態(tài)的可 視化的創(chuàng)建。
[0057] 存儲在存儲器中的指令可以將處理器104配置成獲得軟件系統(tǒng)102的性能數(shù)據(jù)。 可獲得特定設(shè)計(jì)表示視圖的子集中的軟件代碼元素的性能數(shù)據(jù)。在一個(gè)實(shí)施例中,演示模 塊128被配置成獲得性能數(shù)據(jù)并將性能數(shù)據(jù)的表示合并到視圖中作為覆蓋層。作為替換或 補(bǔ)充,性能數(shù)據(jù)和設(shè)計(jì)數(shù)據(jù)可經(jīng)由查詢結(jié)果導(dǎo)出模塊142按其他格式提供。性能數(shù)據(jù)用戶 界面覆蓋層的數(shù)據(jù)導(dǎo)出的示例在下文描述。
[0058] 系統(tǒng)100可按多種方式來擴(kuò)展或修改。附加或經(jīng)修改的指令可經(jīng)由多個(gè)插件管理 器或?qū)嵱贸绦虮粚?dǎo)入到存儲器108中。指令可被配置成相關(guān)于附加編程語言、框架、或架 構(gòu),或當(dāng)前編程語言或架構(gòu)的修改。系統(tǒng)1〇〇因而不限于例如與單個(gè)框架(如,.NET框架) 一起使用。在圖1的示例中,各模塊是可單獨(dú)擴(kuò)展的。信息可經(jīng)由架構(gòu)導(dǎo)入模塊118和抽 象函數(shù)模塊的插件管理器124來提供。對查詢語言的添加或修改可經(jīng)由查詢解釋器模塊 126的插件管理器144來導(dǎo)入。例如,一個(gè)或多個(gè)視圖或查詢處理程序可經(jīng)由插件管理器 144導(dǎo)入以使數(shù)據(jù)集查詢語言能夠處理并支持經(jīng)由抽象函數(shù)模塊122合并到設(shè)計(jì)數(shù)據(jù)中的 屬性或項(xiàng)。
[0059] 對注釋語言的添加或修改可經(jīng)由插件管理器146來導(dǎo)入。在查詢解釋器模塊126 和注釋解釋器模塊134是可插入或以其他方式可擴(kuò)展的情況下,新種類的視圖和注釋可被 構(gòu)造為新編程語言、技術(shù),且抽象函數(shù)被合并到代碼索引數(shù)據(jù)集110中。代碼元素加載模塊 116也可經(jīng)由插件管理器148來更新,以支持附加源代碼語言或各類代碼制品。系統(tǒng)100的 加載過程因而可以是可插入的或以其他方式可擴(kuò)展的?;蛘?,指令可經(jīng)由配置成導(dǎo)入跨多 個(gè)模塊的軟件設(shè)計(jì)構(gòu)造的導(dǎo)入模塊被導(dǎo)入并存儲在存儲器108中,
[0060] 各模塊的體系結(jié)構(gòu)可以與所示示例不同。例如,每一模塊可包括用于支持不同架 構(gòu)(諸如不同編程語言)的多個(gè)模塊。多個(gè)模塊可被包括以支持不同的抽象函數(shù)。
[0061]在操作中,處理器104可經(jīng)由上述系統(tǒng)模塊來配置,以提供軟件系統(tǒng)102的所選子 集或片的視圖和其他設(shè)計(jì)表示。這些子集可經(jīng)由指定代碼元素名和其他屬性(包括經(jīng)由系 統(tǒng)100添加的屬性,如設(shè)計(jì)注釋和設(shè)計(jì)抽象)的各種組合的查詢來定義。設(shè)計(jì)表示視圖可 以呈現(xiàn)來自查詢的設(shè)計(jì)數(shù)據(jù)結(jié)果,包括代碼元素、設(shè)計(jì)注釋以及設(shè)計(jì)抽象的列表、圖表、以 及其他表示。設(shè)計(jì)表示視圖可通過重新實(shí)現(xiàn)數(shù)據(jù)集查詢來被刷新。設(shè)計(jì)表示視圖可被更新 以反映代碼元素或設(shè)計(jì)注釋的變化。設(shè)計(jì)表示視圖因而可以提供軟件系統(tǒng)102的實(shí)時(shí)或當(dāng) 前設(shè)計(jì)記錄。
[0062]設(shè)計(jì)表示視圖不必是靜態(tài)的,而是成為具有用于探索底層代碼的鏈接或其他用戶 選項(xiàng)的用戶界面的一部分。用戶界面還可經(jīng)由用于相關(guān)聯(lián)的代碼元素的性能數(shù)據(jù)的覆蓋層 或其他用戶界面元素(如,代碼覆蓋、隱錯(cuò)計(jì)數(shù)、以及其他數(shù)據(jù))來包括其他實(shí)時(shí)或當(dāng)前信 息。用戶界面還可提供選項(xiàng)以比較或以其他方式探索代碼結(jié)構(gòu)、元素或制品是如何(例如 在所選構(gòu)建之間)隨時(shí)間變化的。例如,設(shè)計(jì)表示視圖的不同版本之間的語義差異可被突 出顯示。覆蓋層可被用來描繪視圖如何隨時(shí)間變化。
[0063] 圖2描繪根據(jù)一個(gè)實(shí)施例的一種用于提供軟件系統(tǒng)的設(shè)計(jì)表示的方法。該方法是 計(jì)算機(jī)實(shí)現(xiàn)的。例如,圖1的處理器1〇4(或任何其他處理單元或系統(tǒng))可被配置成實(shí)現(xiàn)該 方法的各動作中的一個(gè)或多個(gè)。每一動作的實(shí)現(xiàn)可通過由處理器104或其他處理系統(tǒng)執(zhí)行 的相應(yīng)計(jì)算機(jī)可讀指令來指導(dǎo)。計(jì)算機(jī)可讀指令可被編碼在計(jì)算機(jī)可讀存儲介質(zhì)上,如圖 1的存儲器108中的一個(gè)或多個(gè)。附加的、另選的或更少的動作可被實(shí)現(xiàn)。例如,該方法所 提供的設(shè)計(jì)表示可在不使用設(shè)計(jì)數(shù)據(jù)中的設(shè)計(jì)注釋的情況下生成。各動作不必按所示次序 實(shí)現(xiàn)。例如,設(shè)計(jì)注釋可在查詢結(jié)果的演示之后實(shí)現(xiàn),以供使用這樣的結(jié)果來自動指定設(shè)計(jì) 注釋。在另一示例中,設(shè)計(jì)抽象的分析可在一個(gè)或多個(gè)設(shè)計(jì)注釋被合并到設(shè)計(jì)數(shù)據(jù)中之后 實(shí)現(xiàn)。注釋可幫助抽象函數(shù)模塊122 (圖1)檢測軟件設(shè)計(jì)模式。
[0064] 該方法可在動作200開始,將表示軟件系統(tǒng)的多個(gè)軟件代碼元素的數(shù)據(jù)集存儲在 存儲器或計(jì)算機(jī)可讀存儲介質(zhì)中。軟件代碼元素可以是源代碼或代碼制品。軟件代碼元素 可被直接導(dǎo)入或加載到數(shù)據(jù)集或者在被存儲在數(shù)據(jù)集中之前被變換。
[0065]動作200可包括將設(shè)計(jì)數(shù)據(jù)存儲在與表示源代碼或代碼制品的數(shù)據(jù)不同的數(shù)據(jù) 集中。設(shè)計(jì)數(shù)據(jù)表示軟件代碼元素的相應(yīng)設(shè)計(jì)屬性。這樣的設(shè)計(jì)數(shù)據(jù)的示例包括設(shè)計(jì)注釋 或設(shè)計(jì)抽象,如上所述。然而,在圖2所示的示例中,如下所述,這樣的設(shè)計(jì)數(shù)據(jù)被隨后合并 到數(shù)據(jù)集中。
[0066] 一旦表示代碼元素或制品的數(shù)據(jù)在數(shù)據(jù)集中可用,進(jìn)一步設(shè)計(jì)數(shù)據(jù)就可基于這樣 的數(shù)據(jù)的分析及其他自動處理和使用來被生成。在動作202,分析數(shù)據(jù)集以尋找一個(gè)或多個(gè) 軟件設(shè)計(jì)模式的實(shí)例。軟件設(shè)計(jì)模式可通過將軟件設(shè)計(jì)抽象函數(shù)應(yīng)用于多個(gè)軟件代碼元素 來檢測。所得的設(shè)計(jì)數(shù)據(jù)可被配置,使得該實(shí)例的相應(yīng)軟件代碼元素的相應(yīng)設(shè)計(jì)屬性指示 軟件設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象。在動作204,這樣的設(shè)計(jì)數(shù)據(jù)可被合并。在一些情況下,設(shè) 計(jì)數(shù)據(jù)可通過將該實(shí)例的每一軟件代碼元素與軟件設(shè)計(jì)模式的對應(yīng)的設(shè)計(jì)抽象相關(guān)聯(lián)而 被合并到數(shù)據(jù)集中。
[0067]在動作206,用戶界面可經(jīng)由輸出設(shè)備被呈現(xiàn),以促進(jìn)一個(gè)或多個(gè)設(shè)計(jì)注釋與多個(gè) 軟件代碼元素中的一個(gè)或多個(gè)的關(guān)聯(lián)。用戶界面可包括配置成支持設(shè)計(jì)注釋的命名和定義 的多個(gè)用戶輸入元素(例如,表或其他數(shù)據(jù)輸入字段)。例如,用戶界面可包括用于輸入指 定設(shè)計(jì)注釋與其相關(guān)聯(lián)的軟件代碼元素的表達(dá)式的文本編輯器。用戶界面還可允許用戶指 定每一設(shè)計(jì)注釋的其他方面,如類型(例如,層或方法調(diào)用)和作用域(例如,局部、全局、 或所需)。在動作208, 一旦設(shè)計(jì)注釋的定義和其他方面已被輸入或指定,指示或根據(jù)設(shè)計(jì) 注釋的的設(shè)計(jì)數(shù)據(jù)就被合并到數(shù)據(jù)集中。
[0068]在動作210,在設(shè)計(jì)注釋的定義或合并期間的任何時(shí)刻,經(jīng)由用戶界面定義的設(shè)計(jì) 注釋中的任何一個(gè)或多個(gè)可被指定為策略注釋或以其他方式指示軟件系統(tǒng)的預(yù)期設(shè)計(jì)模 型。用戶界面可被用來實(shí)現(xiàn)該指定。在一個(gè)示例中,設(shè)計(jì)注釋的作用域?qū)傩曰蚍矫婵杀挥?于該指定,如上所述。
[0069] 在動作212,在設(shè)計(jì)數(shù)據(jù)在數(shù)據(jù)集中可用的情況下,數(shù)據(jù)集查詢可經(jīng)由用戶界面被 接收。數(shù)據(jù)集查詢是經(jīng)由可包括對設(shè)計(jì)注釋、軟件設(shè)計(jì)模式、軟件設(shè)計(jì)模式的設(shè)計(jì)抽象、或 設(shè)計(jì)數(shù)據(jù)的其他項(xiàng)(如,容器類型、對象名、或多個(gè)軟件代碼元素的對象關(guān)系)的任何數(shù)量 的引用的表達(dá)式來指定的。組合對設(shè)計(jì)數(shù)據(jù)的這些項(xiàng)的引用的數(shù)據(jù)集查詢的示例結(jié)合圖 3-6來闡明。
[0070] 在動作214,解釋數(shù)據(jù)集查詢。解釋過程可根據(jù)查詢語言或句法來實(shí)現(xiàn)。解釋過 程可包括解釋經(jīng)由用戶界面輸入的表達(dá)式以標(biāo)識在該表達(dá)式中指定的設(shè)計(jì)數(shù)據(jù)項(xiàng),如設(shè)計(jì) 注釋,設(shè)計(jì)抽象,軟件設(shè)計(jì)模式,以及容器類型、名稱、及關(guān)系。表達(dá)式的解析還可標(biāo)識數(shù)據(jù) 集查詢的運(yùn)算符和其他項(xiàng)。運(yùn)算符可被用來在邏輯上組合或以其他方式操作設(shè)計(jì)數(shù)據(jù)的各 項(xiàng)。作為替換或補(bǔ)充,運(yùn)算符可被用來組織數(shù)據(jù)集查詢的結(jié)果應(yīng)用于設(shè)計(jì)表示的視圖。例 如,結(jié)果可按在數(shù)據(jù)集查詢中指定的群來被組織。
[0071] 在動作216, 一旦數(shù)據(jù)集查詢被解釋,數(shù)據(jù)集查詢可被實(shí)現(xiàn)。該實(shí)現(xiàn)可包括在數(shù)據(jù) 集上實(shí)現(xiàn)一個(gè)或多個(gè)數(shù)據(jù)庫查詢。數(shù)據(jù)集查詢的實(shí)現(xiàn)基于對設(shè)計(jì)數(shù)據(jù)的項(xiàng)的引用來定義數(shù) 據(jù)集的子集,如上所述。在動作218,指示數(shù)據(jù)集查詢的數(shù)據(jù)和/或查詢結(jié)果可被存儲。數(shù) 據(jù)集查詢或查詢結(jié)果的存儲可包括定義設(shè)計(jì)注釋。例如,用戶界面可以提供將數(shù)據(jù)集查詢 的每一結(jié)果與設(shè)計(jì)注釋相關(guān)聯(lián)的選項(xiàng)。
[0072] 軟件系統(tǒng)的視圖或設(shè)計(jì)表示可在數(shù)據(jù)集查詢的解釋和實(shí)現(xiàn)之后的任何時(shí)刻呈現(xiàn)。 在這一示例中,在動作220,設(shè)計(jì)表示視圖被呈現(xiàn)。設(shè)計(jì)表示視圖呈現(xiàn)與數(shù)據(jù)集的由數(shù)據(jù)集 查詢返回的子集有關(guān)的信息。例如,設(shè)計(jì)表示視圖可包括多個(gè)軟件代碼元素中的經(jīng)由數(shù)據(jù) 集查詢定義的子集中的相應(yīng)軟件代碼元素的列表。如在圖3的示例中所示,設(shè)計(jì)表示視圖 還可包括在相應(yīng)軟件代碼元素中的所選一個(gè)軟件代碼元素底層的源代碼的摘錄的描繪。
[0073] 在圖2所示的實(shí)施例中,該方法還包括可結(jié)合數(shù)據(jù)集查詢的結(jié)果來呈現(xiàn)與軟件系 統(tǒng)有關(guān)的信息的多個(gè)附加過程。設(shè)計(jì)表示的視圖由此可通過這樣的附加信息來增強(qiáng)或擴(kuò) 充。在動作222,確認(rèn)過程被實(shí)現(xiàn),其結(jié)果被呈現(xiàn)在設(shè)計(jì)表示視圖中。確認(rèn)過程可以基于指 示預(yù)期或?qū)崿F(xiàn)設(shè)計(jì)規(guī)則的設(shè)計(jì)注釋,如上所述。確認(rèn)過程可手動地或自動地(例如,在軟件 系統(tǒng)的每一構(gòu)建之后)觸發(fā)。
[0074] 在動作224和226,獲得軟件系統(tǒng)的性能數(shù)據(jù)并將其合并到設(shè)計(jì)表示視圖中。在 每一過程中,附加信息可被呈現(xiàn)為設(shè)計(jì)表示視圖的覆蓋層。例如,確認(rèn)過程返回的錯(cuò)誤可通 過設(shè)計(jì)表示的圖形視圖中的特定顏色或其他突出顯示來指示。每一過程(以及相應(yīng)的覆蓋 層)的作用域經(jīng)由通過數(shù)據(jù)集查詢所定義的數(shù)據(jù)集子集來確立。
[0075] 圖3到14提供所公開的方法和系統(tǒng)所呈現(xiàn)或生成的用戶界面的多個(gè)示例。這些 用戶界面示出使用數(shù)據(jù)集查詢來提供軟件系統(tǒng)的設(shè)計(jì)表示。在每一示例中,數(shù)據(jù)集查詢和 設(shè)計(jì)注釋是經(jīng)由文本句法來表達(dá)的。文本句法的性質(zhì)可隨所示示例而變化。在其他實(shí)施例 中,數(shù)據(jù)集查詢和設(shè)計(jì)數(shù)據(jù)的其他項(xiàng)可不通過文本來闡明和定義(例如,經(jīng)由一系列圖形 元素)。
[0076] 所公開的方法和系統(tǒng)所呈現(xiàn)的用戶界面不必共享各示例中所示的公共框架。所公 開的方法和系統(tǒng)被限于具有單個(gè)集成用戶界面的用戶體驗(yàn)。用戶可導(dǎo)航或訪問用戶界面的 方式可隨所示示例而變化,并且不必涉及選項(xiàng)卡。在每一用戶界面內(nèi),設(shè)計(jì)表示視圖的呈現(xiàn) 的任何數(shù)量的方面可以隨所示示例而變化。例如,呈現(xiàn)可以基于輸出設(shè)備的類型(例如,平 板或監(jiān)視器)和/或用戶輸入設(shè)備的類型(例如,指針、指示筆、或觸摸屏)而變化。
[0077]圖3描繪提供示例性數(shù)據(jù)集查詢的編輯器用戶界面,所述數(shù)據(jù)集查詢的結(jié)果返回 具有方法集合的設(shè)計(jì)表示視圖。數(shù)據(jù)集查詢在文本輸入框230中闡明,且設(shè)計(jì)表示視圖在 結(jié)果窗格232中呈現(xiàn),結(jié)果窗格232將結(jié)果示出為數(shù)據(jù)集查詢應(yīng)用到的代碼元素的列表。 在這一示例中,設(shè)計(jì)表示的所得視圖示出了具有名稱包含或包括串" payment "的所有方法。 查詢語言的兩個(gè)示例運(yùn)算符"where"和"contains"被突出顯示。選擇所列出的代碼元素 之一在結(jié)果窗格234中揭示了底層源代碼。用戶可被允許經(jīng)由滾動條和其他用戶界面元素 來導(dǎo)航源代碼。底層源代碼可按各種方式來獲得,包括例如通過訪問程序數(shù)據(jù)庫(PDB)文 件。用戶界面還允許選擇在其上運(yùn)行數(shù)據(jù)集查詢的軟件系統(tǒng)的構(gòu)建。用戶界面還向用戶提 供存儲或發(fā)送數(shù)據(jù)集查詢和所得的設(shè)計(jì)表示視圖以及訪問保存的查詢的歷史的選項(xiàng)。
[0078] 圖4描繪具有輸入到文本輸入框230的另一示例性數(shù)據(jù)集查詢的編輯器用戶界 面。在這一示例中,數(shù)據(jù)集查詢涉及與其名稱包含串"wzdCheckOut_FinishButtonClick" 的方法以及被這些方法調(diào)用的任何方法的并集相對應(yīng)的方法子集的視圖。查詢隨后包括按 類型對結(jié)果進(jìn)行編組的指令。結(jié)果窗格232相應(yīng)地呈現(xiàn)按類型編組的代碼元素的列表。在 這一示例中,用戶選擇結(jié)果窗格234呈現(xiàn)被可視化成圖表(例如,UML圖表)的結(jié)果。該圖 表也可呈現(xiàn)按類型來編組的結(jié)果圖表中的每一元素可被選擇以展開該元素來查看相應(yīng)類 型的方法或其他代碼元素。在一些實(shí)施例中,類型可與.NET框架中的類型相對應(yīng),如類、結(jié) 構(gòu)、枚舉、接口以及委托。
[0079] 圖5描繪具有輸入到文本輸入框230的又一示例性數(shù)據(jù)集查詢的編輯器用戶界 面。數(shù)據(jù)集查詢提供具有代碼元素的設(shè)計(jì)抽象信息的視圖。在這一示例中,設(shè)計(jì)抽象與來 自依存關(guān)系注入模式的合同、客戶、以及提供者相對應(yīng)。查詢返回來自匯編集合的合同、客 戶、以及提供者。依存關(guān)系注入模式的合同、客戶以及提供者通過被配置成尋找對照依存關(guān) 系注入框架(如MEF或Ninject)來編寫的代碼中的依存關(guān)系注入模式的對應(yīng)抽象函數(shù)來 檢測。抽象函數(shù)的實(shí)現(xiàn)向與該模式的相應(yīng)設(shè)計(jì)抽象相對應(yīng)的代碼元素添加了屬性(例如, "合同"類型)。結(jié)果窗格234提供的圖表視圖提供了與抽象關(guān)系有關(guān)的信息。在這一示例 中,查詢還示出了結(jié)果中的各個(gè)編組可如何被標(biāo)記(例如,命名空間的被標(biāo)記的各編組)。
[0080] 圖6描繪了用于具有設(shè)計(jì)抽象信息的另一視圖的、在文本輸入框230中具有示例 性數(shù)據(jù)集查詢的編輯器用戶界面。在這一示例中,在代碼元素中先前觀察到的模式涉及模 型-視圖-控制器(MVC)應(yīng)用和服務(wù)。查詢涉及示出MVC應(yīng)用和該應(yīng)用所使用的web服務(wù)。 與其中代碼元素中的類被標(biāo)記的先前示例不同,查詢語言允許該查詢引入兩個(gè)臨時(shí)變量_ mvcapps和_services,它們攜帶隨后可被組合成最終結(jié)果以在結(jié)果窗格232和234中描繪 的中間結(jié)果。在這一示例中,F(xiàn)abrikam. Codeinspector應(yīng)用與其所有服務(wù)一起被選擇,以 供按"deployed location (部署位置)"編組來顯示。
[0081] 圖7描繪了圖6的用戶界面,其中性能數(shù)據(jù)覆蓋在代碼元素的視圖上。在這一示 例中,性能數(shù)據(jù)覆蓋是經(jīng)由文本輸入框230中指定的指令來觸發(fā)的。結(jié)果窗格232在柱狀 圖中呈現(xiàn)性能數(shù)據(jù)。代碼元素可在結(jié)果窗格232、234中被著色成熱圖,以描繪不同的性能 水平。呈現(xiàn)性能數(shù)據(jù)的方式可以變化,并且用戶界面可以提供用于供用戶進(jìn)行選擇的選項(xiàng)。
[0082] 圖8描繪了具有從圖3的數(shù)據(jù)集查詢得到的視圖的歷史比較的編輯器用戶界面。 用戶對歷史比較選項(xiàng)(例如,"歷史-比較")的選擇指導(dǎo)該系統(tǒng)提供結(jié)果窗格236和238, 以用于軟件系統(tǒng)的兩個(gè)所選構(gòu)建的并排比較。在這一示例中,視圖呈現(xiàn)了對照軟件系統(tǒng)的 不同構(gòu)建來計(jì)算得到的底層代碼。結(jié)果窗格236和238可另選地提供不同構(gòu)建的其他視圖, 如在上述示例中示出的。
[0083] 用戶界面可以呈現(xiàn)其他歷史查看選項(xiàng)。例如,代替比較,歷史視圖可被呈現(xiàn)在趨勢 視圖中,以描繪多個(gè)構(gòu)建上的性能數(shù)據(jù)。用戶界面可包括圖7中示出的元素,與用于選擇構(gòu) 建的滑塊或其他用戶界面元素相組合?;瑝K的使用可幫助用戶探索性能數(shù)據(jù)如何隨時(shí)間變 化。用戶界面還可向用戶提供將性能數(shù)據(jù)導(dǎo)出到電子表格的選項(xiàng)。
[0084] 圖9描繪了用于定義設(shè)計(jì)注釋的示例性用戶界面。在這一示例中,設(shè)計(jì)注釋被指 定為定義軟件系統(tǒng)的各層,其中每一層由該代碼上的查詢來定義。每一設(shè)計(jì)注釋的名稱和 定義在文本輸入框240中指定。文本輸入框240提供指定每一設(shè)計(jì)注釋的類型(例如, 層)和作用域的選項(xiàng)。在這一示例中,每一注釋被定義成對查詢而言是全局的,而非局部的 (或者不是策略注釋)。與設(shè)計(jì)注釋相關(guān)聯(lián)的代碼元素可在結(jié)果窗格242和244中示出。 因?yàn)閷釉O(shè)計(jì)注釋被定義為是全局的,所以設(shè)計(jì)注釋可看起來是其他查詢的結(jié)果的一部分, 如具有以下表達(dá)式的查詢'methods where name contains payment group by type by namespace by layer (名稱包含payment的方法按類型按命名空間按層來編組)"。
[0085] 圖10描繪在圖9的用戶界面中定義的注釋可如何被用在后續(xù)數(shù)據(jù)集查詢中。在 這一示例中,查詢返回層注釋的集合。
[0086] 圖11-13描繪其中設(shè)計(jì)注釋可被自動生成而非由用戶單獨(dú)地且手動地輸入的各 種技術(shù)。在一種技術(shù)中,用戶可以創(chuàng)建基于實(shí)際代碼捕捉基線的注釋集合?;€可以指示 軟件系統(tǒng)的所需狀態(tài)。某些構(gòu)造可經(jīng)由注釋被基線化。在這一示例中,各層之間的所聚集 的方法調(diào)用關(guān)系被基線化,其中各層之間的關(guān)系是在這些層中的各類中的方法之間的方法 調(diào)用關(guān)系的聚集。方法調(diào)用注釋的集合因而被創(chuàng)建,與從代碼獲得的實(shí)際方法調(diào)用關(guān)系相 匹配。一旦注釋被創(chuàng)建,注釋就可被編輯、刪除、以及指定為所需設(shè)計(jì)的一部分,如在圖12 中所示。在圖13的示例中,兩個(gè)方法調(diào)用關(guān)系被刪除以指示不應(yīng)當(dāng)存在從BusinessLogic 到WebClient層以及從WebClient到DataAccessInterface層的任何方法調(diào)用。結(jié)果,在 圖表中示出的關(guān)系可被突出顯示(例如,經(jīng)由不同的線型)以指示這些關(guān)系違反了所需的 方法調(diào)用模型。
[0087]圖14描繪其中具有所需注釋的視圖被標(biāo)記為待評估的策略的示例性用戶界面。 用戶界面可以提供用于選擇例如在每一構(gòu)建之后發(fā)生評估的選項(xiàng)。在被評估時(shí),在結(jié)果窗 格250中生成策略違反信息。結(jié)果窗格252被提供以允許用戶從結(jié)果窗格250中標(biāo)識的代 碼元素導(dǎo)航到視圖(或代碼)中發(fā)生錯(cuò)誤的位置。用戶界面可支持用于從錯(cuò)誤導(dǎo)航到代碼、 突出顯示代碼中的違反、以及過濾視圖以只示出違反的各種技術(shù)。
[0088] 各種不同的設(shè)計(jì)抽象和其他構(gòu)造可在代碼元素中被揭示。所公開的方法和系統(tǒng)不 限于上述注釋、層以及方法調(diào)用示例??蓮拇a中發(fā)現(xiàn)的任何構(gòu)造或抽象可通過所公開的 方法和系統(tǒng)來與定義的注釋相關(guān)聯(lián)。
[0089] 參考圖15,示例性計(jì)算環(huán)境300可被用來實(shí)現(xiàn)上述方法和/或系統(tǒng)的一個(gè)或多個(gè) 方面或元素。例如,圖15的計(jì)算環(huán)境可被用于、合并到、或?qū)?yīng)于系統(tǒng)100 (圖1)的一個(gè)或 多個(gè)元素,如處理器104 (圖1)以及存儲器108中的一個(gè)或多個(gè)(圖1)。在每一情況下,圖 15的計(jì)算環(huán)境可被用作或包括為上述元素或相同組件中的任一個(gè)的客戶端、網(wǎng)絡(luò)服務(wù)器、 應(yīng)用服務(wù)器、或者數(shù)據(jù)庫管理系統(tǒng)或其他數(shù)據(jù)存儲管理器。
[0090] 計(jì)算環(huán)境500包括具有計(jì)算機(jī)310形式的通用計(jì)算設(shè)備。計(jì)算機(jī)310的組件可包 括,但不限于,處理單元320、系統(tǒng)存儲器330、以及將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件 耦合到處理單元320的系統(tǒng)總線321。系統(tǒng)總線321可以是若干類型的總線結(jié)構(gòu)中的任一 種,包括使用各種總線體系結(jié)構(gòu)中的任一種的存儲器總線或存儲器控制器、外圍總線、以及 局部總線。作為示例而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道 體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線和 外圍部件互連(PCI)總線(也稱為夾層(Mezzanine)總線)。計(jì)算機(jī)310的單元、組件和其 他硬件可以與所顯示的示例不同。
[0091]計(jì)算機(jī)310通常包括各種被配置來存儲指令和其他數(shù)據(jù)的計(jì)算機(jī)可讀存儲介質(zhì)。 這樣的計(jì)算機(jī)可讀存儲介質(zhì)可以是可由計(jì)算機(jī)310訪問的任何可用介質(zhì)并且包括易失性 和非易失性介質(zhì)、可移動和不可移動介質(zhì)兩者。作為示例而非限制,這樣的計(jì)算機(jī)可讀存儲 介質(zhì)可包括與通信介質(zhì)區(qū)分開的計(jì)算機(jī)存儲介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括以用于存儲諸如計(jì) 算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和 非易失性、可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括,但不限于,RAM、R0M、EEPR0M、閃存 或其他存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其他光盤存儲、磁帶盒、磁帶、磁盤存儲 或其他磁性存儲設(shè)備、或能用于存儲所需信息且可以由計(jì)算機(jī)310訪問的任何其他介質(zhì)。
[0092] 系統(tǒng)存儲器330包括具有易失性和/或非易失性存儲器形式的計(jì)算機(jī)存儲介質(zhì), 如只讀存儲器(ROM) 331和隨機(jī)存取存儲器(RAM) 332。包含諸如在啟動期間幫助在計(jì)算機(jī) 310內(nèi)的元件之間傳輸信息的基本例程的基本輸入/輸出系統(tǒng)333 (BIOS)通常存儲在ROM 331中。RAM 332通常包含處理單元320可立即訪問和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序 模塊。作為示例而非限制,圖15示出了操作系統(tǒng)334、應(yīng)用程序335、其他程序模塊336和 程序數(shù)據(jù)337。例如,應(yīng)用程序335中的一個(gè)或多個(gè)可涉及實(shí)現(xiàn)抽象函數(shù)模塊122 (圖1)、 查詢解釋器模塊126 (圖1)、或注釋解釋器模塊134 (圖1)。作為替換或補(bǔ)充,系統(tǒng)100的 一個(gè)或多個(gè)組件(如演示模塊128 (圖1)或查詢結(jié)果導(dǎo)出模塊142 (圖1))可經(jīng)由其他程 序模塊336中的一個(gè)或多個(gè)來實(shí)現(xiàn)。在這一或另一示例中,代碼索引數(shù)據(jù)集110(圖1)、視 圖定義存儲132 (圖1)、或策略注釋存儲136 (圖1)可被存儲作為程序數(shù)據(jù)337。
[0093] 操作系統(tǒng)334、應(yīng)用程序335、其他程序模塊336以及程序數(shù)據(jù)337中的任何一個(gè) 或多個(gè)可被存儲在片上系統(tǒng)(S0C)上或經(jīng)由S0C來實(shí)現(xiàn)。上述模塊中的任一個(gè)可經(jīng)由一個(gè) 或多個(gè)S0C設(shè)備來實(shí)現(xiàn)。上述模塊被集成到S0C或其他設(shè)備的程度可以變化。
[0094]計(jì)算機(jī)310也可以包括其他可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介 質(zhì)。僅作為示例,圖15示出了從不可移動、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動 器341,從可移動、非易失性磁盤352中讀取或向其寫入的磁盤驅(qū)動器351,以及從諸如⑶ ROM或其他光學(xué)介質(zhì)等可移動、非易失性光盤356中讀取或向其寫入的光盤驅(qū)動器355。可 以在示例性操作環(huán)境中使用的其他可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì) 包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬 盤驅(qū)動器341通常通過諸如接口 340之類的不可移動存儲器接口連接到系統(tǒng)總線321,并且 磁盤驅(qū)動器351和光盤驅(qū)動器355通常通過諸如接口 350之類的可移動存儲器接口連接到 系統(tǒng)總線321。
[0095]上文討論并在圖15中示出的驅(qū)動器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲介質(zhì)為計(jì)算機(jī)310 提供了對計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲。例如,在圖15中,硬盤 驅(qū)動器341被示為存儲操作系統(tǒng)344、應(yīng)用程序345、其他程序模塊346和程序數(shù)據(jù)347。這 些組件可以與操作系統(tǒng)334、應(yīng)用程序335、其他程序模塊336,以及程序數(shù)據(jù)337相同,也可 以不同。在此操作系統(tǒng)344、應(yīng)用程序345、其他程序模塊346以及程序數(shù)據(jù)347被給予了 不同的編號,以說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,例如鍵盤362和定點(diǎn) 設(shè)備361--通常是指鼠標(biāo)、跟蹤球或觸摸墊--向計(jì)算機(jī)310輸入命令和信息。其他輸入 設(shè)備(未顯示)可包括話筒(例如,用于語音控制)、觸摸屏(例如,用于基于觸摸的手勢和 其他移動)、測距傳感器或其他相機(jī)(例如,用于手勢和其他移動)、操縱桿、游戲墊和掃描 儀。這些以及其他輸入設(shè)備通常通過耦合到系統(tǒng)總線的用戶輸入接口 360連接到處理單元 320,但也可通過諸如并行端口、游戲端口或通用串行總線(USB)之類的其他接口和總線結(jié) 構(gòu)來連接。監(jiān)視器391或其他類型的顯示設(shè)備也經(jīng)由諸如視頻接口 390之類的接口連接至 系統(tǒng)總線321。除了監(jiān)視器以外,計(jì)算機(jī)還可包括諸如揚(yáng)聲器397和打印機(jī)396之類的其他 外圍輸出設(shè)備,它們可通過輸出外圍接口 395來連接。
[0096] 計(jì)算機(jī)310可使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)(諸如,遠(yuǎn)程計(jì)算機(jī)380)的邏輯連接 而在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)380可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè) 備或其他常見網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對于計(jì)算機(jī)310描述的許多或所有元件,但在 圖15中只示出存儲器存儲設(shè)備381。圖15中所示的邏輯連接包括局域網(wǎng)(LAN) 371和廣域 網(wǎng)(WAN)373,但也可以包括其他網(wǎng)絡(luò)。此類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)級計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng) 和因特網(wǎng)中是常見的。
[0097] 當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)310通過網(wǎng)絡(luò)接口或適配器370連接到LAN 371。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)310通常包括調(diào)制解調(diào)器372或用于通過諸如因 特網(wǎng)等WAN 373建立通信的其他手段。調(diào)制解調(diào)器372可以是內(nèi)置的或外置的,可經(jīng)由用 戶輸入接口 360或其他適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線321。在聯(lián)網(wǎng)環(huán)境中,相關(guān)于計(jì)算機(jī)310 所示的程序模塊或其部分可被存儲在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例而非限制,圖15示 出了遠(yuǎn)程應(yīng)用程序385駐留在存儲器設(shè)備381上。應(yīng)當(dāng)理解,所示的網(wǎng)絡(luò)連接是示例性的, 并且可使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。
[0098] 圖15的計(jì)算環(huán)境300只是合適的計(jì)算環(huán)境的一個(gè)示例,并且不旨在對此處的技術(shù) 的使用范圍或功能提出任何限制。也不應(yīng)該將計(jì)算環(huán)境300解釋為對示例性操作環(huán)境300 中示出的任一組件或其組合有任何依賴性或要求。
[0099] 此處所描述的技術(shù)可用各種其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。適合與 此處的技術(shù)一起使用的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算 機(jī)、服務(wù)器計(jì)算機(jī)(包括服務(wù)器一客戶端體系架構(gòu))、手持式或膝上型設(shè)備、移動電話或設(shè) 備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大 型計(jì)算機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算機(jī)環(huán)境等。
[0100] 此處的技術(shù)可在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的通用上下 文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、 對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。此處的技術(shù)也可以在任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備 執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲器存儲 設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。
[0101] 盡管已經(jīng)參考具體示例描述了本發(fā)明,其中這些示例旨在僅僅是說明性的而非本 發(fā)明的限制,但本領(lǐng)域普通技術(shù)人員將明白,可以對所公開的實(shí)施例作出改變、添加和/或 刪除而不背離本發(fā)明的精神和范圍。
[0102] 上述描述只是出于清楚理解的目的給出的,并且不應(yīng)從中理解出不必要的限制, 因?yàn)楸景l(fā)明的范圍內(nèi)的修改對本領(lǐng)域普通技術(shù)人員而言是顯而易見的。
【權(quán)利要求】
1. 一種用于提供軟件系統(tǒng)的設(shè)計(jì)表示的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述計(jì)算機(jī)實(shí)現(xiàn)的方法包 括: 將表示所述軟件系統(tǒng)的多個(gè)軟件代碼元素的數(shù)據(jù)集存儲在存儲器中,其中存儲所述數(shù) 據(jù)集包括將設(shè)計(jì)數(shù)據(jù)合并到所述數(shù)據(jù)集中,所述設(shè)計(jì)數(shù)據(jù)表示與所述軟件代碼元素有關(guān)的 相應(yīng)設(shè)計(jì)屬性; 接收包括對所述數(shù)據(jù)集中的項(xiàng)的引用的數(shù)據(jù)集查詢; 用與所述存儲器通信的處理單元在所述數(shù)據(jù)集上實(shí)現(xiàn)所述數(shù)據(jù)集查詢,其中實(shí)現(xiàn)所述 數(shù)據(jù)集查詢包括基于對所述項(xiàng)的引用來定義所述數(shù)據(jù)集的子集;以及 經(jīng)由與所述處理單元通信的輸出設(shè)備呈現(xiàn)用戶界面,所述用戶界面包括根據(jù)所述數(shù)據(jù) 集的所定義的子集的、所述軟件系統(tǒng)的設(shè)計(jì)表示的視圖。
2. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,合并所述設(shè)計(jì)數(shù)據(jù)包括通過 將軟件設(shè)計(jì)抽象函數(shù)應(yīng)用于所述多個(gè)軟件代碼元素來生成所述設(shè)計(jì)數(shù)據(jù)。
3. 如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,應(yīng)用所述軟件設(shè)計(jì)抽象函數(shù) 包括: 分析所述數(shù)據(jù)集以尋找所述軟件設(shè)計(jì)抽象函數(shù)的軟件設(shè)計(jì)模式的實(shí)例;以及 配置所述設(shè)計(jì)數(shù)據(jù),使得所述實(shí)例的相應(yīng)軟件代碼元素的相應(yīng)設(shè)計(jì)屬性指示所述軟件 設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象。
4. 如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,在所述數(shù)據(jù)集查詢中引用的 項(xiàng)指示所述軟件設(shè)計(jì)模式或所述軟件設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象中的相應(yīng)一個(gè)設(shè)計(jì)抽象。
5. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,在所述數(shù)據(jù)集查詢中引用的 項(xiàng)指示與所述多個(gè)軟件代碼元素中的一個(gè)或多個(gè)軟件代碼元素相關(guān)聯(lián)的設(shè)計(jì)注釋。
6. 如權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,進(jìn)一步包括: 接收所述設(shè)計(jì)注釋指示所述軟件系統(tǒng)的預(yù)期模型的指示;以及 基于所述設(shè)計(jì)注釋用所述處理單元實(shí)現(xiàn)所述多個(gè)軟件代碼元素的確認(rèn)過程; 其中所述數(shù)據(jù)集的所述子集定義所述確認(rèn)過程的作用域;并且 其中呈現(xiàn)所述用戶界面包括呈現(xiàn)所述確認(rèn)過程的結(jié)果。
7. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,合并所述設(shè)計(jì)數(shù)據(jù)包括經(jīng)由 所述用戶界面的用戶輸入來定義所述多個(gè)軟件代碼元素中的數(shù)個(gè)軟件代碼元素的設(shè)計(jì)注 釋。
8. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,呈現(xiàn)所述用戶界面包括: 獲得所述子集中的軟件代碼元素的性能數(shù)據(jù); 將所述性能數(shù)據(jù)的表示合并到所述設(shè)計(jì)表示的視圖中。
9. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述數(shù)據(jù)集查詢中的引用被 配置成指定所述多個(gè)軟件代碼元素的容器類型、名稱、或關(guān)系。
10. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述視圖包括所述多個(gè)軟件 代碼元素中的經(jīng)由所述數(shù)據(jù)集查詢定義的所述子集中的相應(yīng)軟件代碼元素的列表。
11. 如權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述視圖還包括在所述相 應(yīng)軟件代碼元素的中的所選一個(gè)軟件代碼元素底層的源代碼摘錄。
12. -種用于軟件系統(tǒng)的設(shè)計(jì)表示的系統(tǒng),所述系統(tǒng)包括: 數(shù)據(jù)集存儲器,表示所述軟件系統(tǒng)的多個(gè)軟件代碼元素的數(shù)據(jù)集被存儲在所述數(shù)據(jù)集 存儲器中,所述數(shù)據(jù)集包括表示與所述軟件代碼元素有關(guān)的相應(yīng)設(shè)計(jì)屬性的設(shè)計(jì)數(shù)據(jù); 系統(tǒng)存儲器,解釋器模塊指令、抽象模塊指令、以及演示模塊指令被存儲在所述系統(tǒng)存 儲器中; 耦合到所述系統(tǒng)存儲器和所述數(shù)據(jù)集存儲器的處理器,所述處理器經(jīng)由以下操作被配 置: 所述抽象模塊指令分析所述數(shù)據(jù)集以尋找軟件設(shè)計(jì)模式的實(shí)例,并配置所述數(shù)據(jù)集中 的設(shè)計(jì)數(shù)據(jù)以將所述實(shí)例的每一軟件代碼元素與所述軟件設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象相關(guān) 聯(lián),以及 所述解釋器模塊指令解釋包括對所述軟件設(shè)計(jì)模式或所述對應(yīng)設(shè)計(jì)抽象的引用的數(shù) 據(jù)集查詢,并在所述數(shù)據(jù)集上實(shí)現(xiàn)所述數(shù)據(jù)集查詢以定義所述數(shù)據(jù)集的與所述軟件設(shè)計(jì)模 式或所述對應(yīng)設(shè)計(jì)抽象相關(guān)聯(lián)的子集;以及 耦合到所述處理器的輸出設(shè)備,所述處理器經(jīng)由以下操作被配置:所述演示模塊指令 經(jīng)由所述輸出設(shè)備呈現(xiàn)用戶界面,所述用戶界面包括根據(jù)所述數(shù)據(jù)集的所定義的子集的、 所述軟件系統(tǒng)的設(shè)計(jì)表示的視圖。
13. 如權(quán)利要求12所述的系統(tǒng),其特征在于: 所述數(shù)據(jù)集包括與所述軟件代碼元素相關(guān)聯(lián)且被指定為指示預(yù)期設(shè)計(jì)模型的設(shè)計(jì)注 釋數(shù)據(jù); 確認(rèn)指令被存儲在所述系統(tǒng)存儲器中,以配置所述處理器來基于所述設(shè)計(jì)注釋數(shù)據(jù)在 所述數(shù)據(jù)集的所述子集上實(shí)現(xiàn)確認(rèn)過程;以及 所述演示模塊指令配置所述處理器來在所述設(shè)計(jì)表示的視圖中呈現(xiàn)所述確認(rèn)過程的 結(jié)果。
14. 如權(quán)利要求12所述的系統(tǒng),其特征在于,所述處理器經(jīng)由以下操作來配置:存儲在 所述系統(tǒng)存儲器中的導(dǎo)入指令將軟件設(shè)計(jì)構(gòu)造導(dǎo)入所述解釋器模塊指令或所述抽象模塊 指令。
15. -種包括其中存儲計(jì)算機(jī)可讀指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲介質(zhì)的計(jì)算機(jī)程 序產(chǎn)品,所述計(jì)算機(jī)可讀指令在被處理系統(tǒng)執(zhí)行時(shí)指導(dǎo)所述處理系統(tǒng): 將表示軟件系統(tǒng)的多個(gè)軟件代碼元素的數(shù)據(jù)集存儲在存儲器中; 分析所述數(shù)據(jù)集以尋找軟件設(shè)計(jì)模式的實(shí)例; 將第一設(shè)計(jì)數(shù)據(jù)合并到所述數(shù)據(jù)集中以將所述實(shí)例的每一軟件代碼元素與所述軟件 設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象相關(guān)聯(lián); 經(jīng)由輸出設(shè)備呈現(xiàn)用于將設(shè)計(jì)注釋與所述多個(gè)軟件代碼元素中的一個(gè)或多個(gè)相關(guān)聯(lián) 的用戶界面; 根據(jù)所述設(shè)計(jì)注釋將第二設(shè)計(jì)數(shù)據(jù)合并到所述數(shù)據(jù)集中; 經(jīng)由所述用戶界面接收數(shù)據(jù)集查詢,所述數(shù)據(jù)集查詢包括對所述設(shè)計(jì)注釋、所述軟件 設(shè)計(jì)模式、或所述軟件設(shè)計(jì)模式的對應(yīng)設(shè)計(jì)抽象的引用; 解釋所述數(shù)據(jù)集查詢以在所述數(shù)據(jù)集上實(shí)現(xiàn)所述數(shù)據(jù)集查詢來定義所述數(shù)據(jù)集的子 集;以及 經(jīng)由所述用戶界面呈現(xiàn)根據(jù)所述數(shù)據(jù)集的所定義的子集的、所述軟件系統(tǒng)的設(shè)計(jì)表示 視圖。
【文檔編號】G06F9/44GK104412227SQ201380035652
【公開日】2015年3月11日 申請日期:2013年7月2日 優(yōu)先權(quán)日:2012年7月3日
【發(fā)明者】S·庫克, S·肯特 申請人:微軟公司
平利县| 阿勒泰市| 大竹县| 松桃| 普宁市| 卢龙县| 资源县| 东山县| 屏边| 龙江县| 大冶市| 宁蒗| 德格县| 田林县| 新丰县| 邵东县| 枝江市| 进贤县| 沁源县| 岐山县| 策勒县| 广西| 石渠县| 南昌市| 宝鸡市| 宣武区| 资兴市| 清水县| 开原市| 丁青县| 云安县| 洛川县| 治多县| 邢台市| 万荣县| 靖西县| 班玛县| 炎陵县| 米泉市| 恩施市| 古丈县|