国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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


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

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

      【專(zhuān)利附圖】

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