軟件復(fù)用技術(shù)_第1頁
軟件復(fù)用技術(shù)_第2頁
軟件復(fù)用技術(shù)_第3頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、論使用復(fù)用設(shè)計(jì) 1、 引言 復(fù)用是活動(dòng),而不是對(duì)象。在創(chuàng)建軟件相關(guān)的系統(tǒng)的語境中, 復(fù)用僅僅是非 常簡單的任何過程,該過程通過復(fù)用來自以前開發(fā)工作的某些東西來生產(chǎn) (或幫 助生產(chǎn))一個(gè)系統(tǒng)。那么,唯一的問題是:復(fù)用什么、什么是導(dǎo)致成功復(fù)用的過 程。 在軟件工程的范圍內(nèi),復(fù)用既是舊概念,也是新概念。程序員從最早的計(jì)算 時(shí)代已開始復(fù)用概念、對(duì)象、論據(jù)、抽象和過程,但是我們復(fù)用的途徑是特定的。 本文對(duì)軟件復(fù)用的討論,將從以下四個(gè)方面進(jìn)行: 1) 軟件工程師可以獲得一系列可復(fù)用的軟件制品,這些包括軟件的技術(shù)表 示(例如,規(guī)約、體系結(jié)構(gòu)模型、設(shè)計(jì)和代碼)、文檔、測試數(shù)據(jù),甚至包括過程 相關(guān)的任務(wù)(如,檢

2、查技術(shù))。 2) 復(fù)用過程包括兩個(gè)并發(fā)的子過程:領(lǐng)域工程和軟件工程。領(lǐng)域工程的目 的是在特定應(yīng)用領(lǐng)域中標(biāo)識(shí)、構(gòu)造、分類和傳播一組軟件制品。然后,軟件工程 可在新系統(tǒng)開發(fā)中選取這些軟件制品作為復(fù)用。 3) 構(gòu)件復(fù)用為軟件質(zhì)量、開發(fā)者生產(chǎn)率、以及整個(gè)系統(tǒng)成本帶來了固有的 收益,然而,在復(fù)用過程模型被廣泛地用于軟件產(chǎn)業(yè)前,必須克服很多障礙。 4) 對(duì)可復(fù)用構(gòu)件的分析、設(shè)計(jì)技術(shù)采用和在良好的軟件工程實(shí)踐中使用的 相同原則和概念??蓮?fù)用構(gòu)件應(yīng)該在一個(gè)環(huán)境中設(shè)計(jì),該環(huán)境為每個(gè)應(yīng)用領(lǐng)域建 立標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)、接口協(xié)議和程序體系結(jié)構(gòu)。 2、 可復(fù)用的軟件制品 軟件復(fù)用不僅僅涉及源代碼,但是,還涉及多少東西呢? C

3、aperJones定義了 可作為復(fù)用候選的十種軟件制品: 項(xiàng)目計(jì)劃。軟件項(xiàng)目計(jì)劃的基本結(jié)構(gòu)和許多內(nèi)容(例如,SQA計(jì)劃)均是可以 跨項(xiàng)目復(fù)用的。這樣減少了用于制定計(jì)劃的時(shí)間, 也減低了和建立進(jìn)度表、風(fēng)險(xiǎn) 分析和其他特征相關(guān)的不確定性。 成本估計(jì)。因?yàn)榻?jīng)常不同項(xiàng)目中含有類似的功能, 所以有可能在極少修改或 不修改的情況下,復(fù)用對(duì)該功能的成本估計(jì)。 體系結(jié)構(gòu)。即使當(dāng)考慮不同的應(yīng)用領(lǐng)域時(shí),也很少有截然不同的程序和數(shù)據(jù) 體系結(jié)構(gòu)。因此,有可能創(chuàng)建一組類屬的體系結(jié)構(gòu)模板 (例如,事務(wù)處理體系結(jié) 構(gòu)),并將那些模板作為可復(fù)用的設(shè)計(jì)框架。 需求模型和規(guī)約。類和對(duì)象的模型和規(guī)約是明顯的復(fù)用的候選者, 此外,用

4、 傳統(tǒng)軟件工程方法開發(fā)的分析模型(例如,數(shù)據(jù)流圖)也是可復(fù)用的。 設(shè)計(jì)。用傳統(tǒng)方法開發(fā)的體系結(jié)構(gòu)、數(shù)據(jù)、接口和過程化設(shè)計(jì)是復(fù)用的候選 者,更常見的是,系統(tǒng)和對(duì)象設(shè)計(jì)是可復(fù)用的。 源代碼。驗(yàn)證過的程序構(gòu)件(用兼容的程序設(shè)計(jì)語言書寫的)是復(fù)用的候選 者。 用戶和技術(shù)文檔。即使特定的應(yīng)用是不同的,也經(jīng)常有可能復(fù)用用戶和技術(shù) 文檔的大部分。 用戶界面??赡苁亲顝V泛被復(fù)用的軟件制品,GUI軟件經(jīng)常被復(fù)用。因?yàn)樗?可占到一個(gè)應(yīng)用的60%的代碼量,因此,復(fù)用的效果非常顯著。 數(shù)據(jù)。在大多數(shù)經(jīng)常被復(fù)用的軟件制品中,數(shù)據(jù)包括:內(nèi)部表、列表和記錄 結(jié)構(gòu),以及文件和完整的數(shù)據(jù)庫。 測試用例。一旦設(shè)計(jì)或代碼構(gòu)件將被復(fù)

5、用,相關(guān)的測試用例應(yīng)該“附屬于” 它們。 應(yīng)該注意,復(fù)用可以擴(kuò)展到上面所討論的可交付的軟件制品之外,它也包含 了軟件工程過程中的元素。特定的分析建模方法、檢查技術(shù)、測試用例設(shè)計(jì)技術(shù)、 質(zhì)量保證過程、以及很多其他軟件工程實(shí)踐可以被“復(fù)用”,例如,如果某軟件 項(xiàng)目組有效地應(yīng)用凈室軟件工程方法, 該方法可能適用于另一個(gè)項(xiàng)目。為了作出 決定,有必要定義一組描述功能,它們使得潛在的凈室用戶能夠?qū)ζ鋺?yīng)用作出適 當(dāng)?shù)臎Q策。 3、復(fù)用過程 復(fù)用過程包括兩個(gè)并發(fā)的子過程:領(lǐng)域工程和軟件工程。 3.1、 領(lǐng)域工程 領(lǐng)域工程的目的是標(biāo)識(shí)、構(gòu)造、分類和傳播一組軟件制品,它們對(duì)某特定應(yīng) 用領(lǐng)域中對(duì)現(xiàn)存的和未來的軟件系統(tǒng)

6、具有很好適用性。其整體目標(biāo)是建立相應(yīng)的 機(jī)制,以使得軟件工程師在工作于新的或現(xiàn)存的系統(tǒng)時(shí)可以分享這些軟件制品一 復(fù)用它們。 領(lǐng)域工程包括三個(gè)主要的活動(dòng)分析、構(gòu)造和傳播。在第 20章中已給出 領(lǐng)域分析的概述,然而,本節(jié)中將再討論這個(gè)話題。領(lǐng)域構(gòu)造和傳播將在本章以 后幾節(jié)中討論。 有人爭辯說“復(fù)用將消失,不是被消除,而是被集成”進(jìn)軟件工程實(shí)踐之中, 隨著復(fù)用被更多的強(qiáng)調(diào),人們相信在下個(gè)十年領(lǐng)域工程將變得和軟件工程一樣重 要。 、 領(lǐng)域分析過程 在面向?qū)ο筌浖こ谭秶鷥?nèi)領(lǐng)域分析的方法,過程中的步驟定義如下: 1) .定義將被研究的領(lǐng)域。 2) .分類從領(lǐng)域中抽出的物項(xiàng)。 3) .收集領(lǐng)域中有代表性的

7、應(yīng)用樣本。 4) .分析樣本中的每個(gè)應(yīng)用。 5) .開發(fā)對(duì)象的分析模型。 必須注意,領(lǐng)域分析適用于任意軟件工程范型,并且可以用于傳統(tǒng)的以及面 向?qū)ο蟮能浖_發(fā)。 Prieto Diaz擴(kuò)展了上面給出的領(lǐng)域分析的第二個(gè)步驟,建議了一個(gè)8步驟 的標(biāo)識(shí)和分類可復(fù)用軟件制品的方法: 1) .選擇特定的功能/對(duì)象。 2) .抽象功能/對(duì)象。 3) .定義分類法。 4) .標(biāo)識(shí)公共特征。 5) .標(biāo)識(shí)特定的關(guān)系。 6) .抽象關(guān)系。 7) .導(dǎo)出功能模型。 8) .定義領(lǐng)域語言。 領(lǐng)域語言使得在領(lǐng)域中進(jìn)行應(yīng)用的規(guī)約及構(gòu)造成為可能。 雖然上面的步驟提供了一個(gè)有用的領(lǐng)域分析模型, 但是它沒有提供幫助決定 哪些

8、軟件制品是復(fù)用候選的有用的指南。Hutchinson和Hindley提出了下面一組 實(shí)際的問題,它們可以用作標(biāo)識(shí)可復(fù)用軟件構(gòu)件的指南: *構(gòu)件功能對(duì)未來的實(shí)現(xiàn)工作是需要的嗎? *在領(lǐng)域中構(gòu)件功能的公共性怎樣? *在領(lǐng)域中存在構(gòu)件功能的重復(fù)嗎? *構(gòu)件是否依賴于硬件? *在不同實(shí)現(xiàn)之間硬件是否保持不變? *硬件細(xì)節(jié)可被移動(dòng)到另一個(gè)構(gòu)件嗎? *設(shè)計(jì)為下面的實(shí)現(xiàn)進(jìn)行過足夠的優(yōu)化嗎? *我們能夠?qū)⒁粋€(gè)不可復(fù)用的構(gòu)件參數(shù)化以使其變成可復(fù)用的嗎? *構(gòu)件是否可以僅僅經(jīng)過少許修改就能夠在很多實(shí)現(xiàn)中復(fù)用嗎? *通過修改進(jìn)行復(fù)用是可行的嗎? *某不可復(fù)用的構(gòu)件能夠通過被分解以產(chǎn)生一組可復(fù)用構(gòu)件嗎? *針對(duì)復(fù)用的

9、構(gòu)件分解是有效的嗎? 關(guān)于領(lǐng)域分析的深入討論不在本書范圍之內(nèi),更多的信息可見。 、結(jié)構(gòu)建模和結(jié)構(gòu)點(diǎn) 當(dāng)使用領(lǐng)域分析時(shí),分析員尋找在某領(lǐng)域中應(yīng)用間的重復(fù)模式。結(jié)構(gòu)化建模 (Structuralmodeli ng) 是一種基于模式的領(lǐng)域工程方法,應(yīng)用該方法的前提假設(shè) 是:每個(gè)應(yīng)用領(lǐng)域有重復(fù)的模式(功能的、數(shù)據(jù)的和行為的),它們具有可復(fù)用的 潛在可能。 Pollak 和Rissmanf苗述結(jié)構(gòu)建模如下: 結(jié)構(gòu)模型由少量的用于表明清晰的交互模式的結(jié)構(gòu)元素組成。 使用結(jié)構(gòu)模型 的系統(tǒng)的體系結(jié)構(gòu)通過多個(gè)由這些模型元素組成的東西來刻劃, 這樣,在系統(tǒng)的 體系結(jié)構(gòu)單元間的復(fù)雜交互可以用在這些少量元素間的簡單交

10、互模式來描述。 每個(gè)應(yīng)用領(lǐng)域可用一個(gè)結(jié)構(gòu)模型來刻劃(例如,飛行器電子設(shè)備在細(xì)節(jié)上差 異很大,但是在該領(lǐng)域的所有現(xiàn)代軟件具有相同的結(jié)構(gòu)模型 ),因此,結(jié)構(gòu)模型 是一種體系結(jié)構(gòu)制品,它可以也應(yīng)該在領(lǐng)域內(nèi)所有應(yīng)用中被復(fù)用。 McMaho描述結(jié)構(gòu)點(diǎn)(structure Point)為:“在結(jié)構(gòu)模型中的一個(gè)獨(dú)特構(gòu)成 物”,結(jié)構(gòu)點(diǎn)有三個(gè)顯著的特征: 1) . 一個(gè)結(jié)構(gòu)點(diǎn)是一個(gè)抽象,它應(yīng)該有有限數(shù)量的實(shí)例。用面向?qū)ο蟮男性?來陳述,類層次的規(guī)模應(yīng)是小的。此外,該抽象應(yīng)該在領(lǐng)域中所有應(yīng)用中不斷重 現(xiàn),否則,用于驗(yàn)證、文檔化和傳播結(jié)構(gòu)點(diǎn)所需的努力不可能是成本合算的。 2) .管理結(jié)構(gòu)點(diǎn)的使用的規(guī)則應(yīng)該是容易理解

11、的。此外,結(jié)構(gòu)點(diǎn)的接口應(yīng)該 相當(dāng)簡單。 3) .結(jié)構(gòu)點(diǎn)應(yīng)該通過隱藏所有包含在結(jié)構(gòu)點(diǎn)內(nèi)部的復(fù)雜性而實(shí)現(xiàn)信息隱蔽, 這會(huì)減少整個(gè)系統(tǒng)可被感知的復(fù)雜性。 作為把結(jié)構(gòu)點(diǎn)當(dāng)作系統(tǒng)的體系結(jié)構(gòu)模式的一個(gè)例子,考慮警報(bào)系統(tǒng)的軟件領(lǐng) 域,該領(lǐng)域可能包含如SafeHom這樣簡單的系統(tǒng),或如工業(yè)過程警報(bào)系統(tǒng)這樣 復(fù)雜的系統(tǒng),然而,在每種情形,均可以遇到一組可以預(yù)測的結(jié)構(gòu)模式: *界面,使用戶能夠和系統(tǒng)交互。 *范圍設(shè)置機(jī)制,允許用戶設(shè)置將被測度的參數(shù)的范圍。 *傳感器管理機(jī)制,和所有的監(jiān)控傳感器通訊。 *反應(yīng)機(jī)制,對(duì)傳感器管理系統(tǒng)提供的輸入作出反應(yīng)。 *控制機(jī)制,使用戶能夠可以控制監(jiān)控執(zhí)行的方式。 這些結(jié)構(gòu)點(diǎn)中的每

12、一個(gè)被集成到一個(gè)領(lǐng)域體系結(jié)構(gòu)中。 定義跨越一組不同的應(yīng)用領(lǐng)域的類屬的結(jié)構(gòu)點(diǎn)是可能的: *應(yīng)用前端。GUI,包括所有菜單、面板、輸入和命令編輯設(shè)施。 *數(shù)據(jù)庫。所有和應(yīng)用領(lǐng)域相關(guān)的對(duì)象的倉庫。 *計(jì)算引擎。操作數(shù)據(jù)的數(shù)值和非數(shù)值模型。 *報(bào)告設(shè)施。產(chǎn)生所有種類的輸出的功能。 *應(yīng)用編輯器。根據(jù)用戶特定需要定制應(yīng)用的機(jī)制。 結(jié)構(gòu)點(diǎn)已被建議作為在軟件成本估計(jì)中代碼行和功能點(diǎn)的替代物。 4、構(gòu)件復(fù)用 關(guān)于創(chuàng)建可復(fù)用的軟件并沒有任何神奇之處。抽象、隱蔽、功能獨(dú)立性、求 精、以及結(jié)構(gòu)化程序設(shè)計(jì)等設(shè)計(jì)概念,連同面向?qū)ο蠓椒āy試、 SQA以及正 確性驗(yàn)證方法一一所有均對(duì)可復(fù)用軟件構(gòu)件的創(chuàng)建有貢獻(xiàn)。 本節(jié)中,

13、我們將不重 復(fù)討論這些話題,而是考慮特定于復(fù)用的問題,它們是對(duì)完整的軟件工程實(shí)踐的 補(bǔ)充。 4.1、 為了復(fù)用的分析和設(shè)計(jì) 數(shù)據(jù)、功能和行為模型(用一系列不同符號(hào)表示)可以被創(chuàng)建以描述特定應(yīng)用 必須完成的任務(wù),書面的規(guī)約被用于描述這些模型并生成完整的需求描述。 理想地,分析分析模型以確定模型中的那些指向現(xiàn)存的可復(fù)用軟件制品的元 素。問題是以能夠?qū)е隆耙?guī)約匹配”的形式從需求模型中抽取信息。 Belli nzoni 及其同事描述了一種針對(duì)面向?qū)ο笙到y(tǒng)的方法: 構(gòu)件被在不同的抽象層次定義和存儲(chǔ)為規(guī)約、設(shè)計(jì)和實(shí)現(xiàn)類一一每個(gè)類是來 自以前應(yīng)用的某產(chǎn)品的工程化描述。規(guī)約知識(shí)一一開發(fā)知識(shí)一一被以復(fù)用建議 (

14、reuse-suggestion)類的形式存儲(chǔ),它們包括對(duì)以構(gòu)件的描述為基礎(chǔ)檢索可復(fù)用 構(gòu)件及檢索后組裝和剪裁構(gòu)件的指導(dǎo)。 使用自動(dòng)化工具瀏覽構(gòu)件庫,以試圖匹配當(dāng)前規(guī)約中所標(biāo)記的需求和那些為 現(xiàn)存可復(fù)用構(gòu)件(類)描述的需求。領(lǐng)域特征和關(guān)鍵詞被用于發(fā)現(xiàn)潛在的可復(fù)用構(gòu) 件。 如果規(guī)約匹配生成符合當(dāng)前應(yīng)用需要的構(gòu)件,設(shè)計(jì)者可從可復(fù)用構(gòu)件庫中提 取這些構(gòu)件并將它們用于新系統(tǒng)的設(shè)計(jì)中。 如果沒能找到設(shè)計(jì)構(gòu)件,軟件工程師 必須應(yīng)用傳統(tǒng)的或面向?qū)ο蟮脑O(shè)計(jì)方法去創(chuàng)建它們。正是在這點(diǎn)一一當(dāng)設(shè)計(jì)者開 始創(chuàng)建新的構(gòu)件時(shí) 應(yīng)該考慮為了復(fù)用的設(shè)計(jì) (DFR)。 我們已經(jīng)提到過,為了復(fù)用的設(shè)計(jì)需要軟件工程師應(yīng)用已有的設(shè)計(jì)

15、概念和原 則,但是,也必須考慮應(yīng)用領(lǐng)域的特征。Binder建議了作為為了復(fù)用的設(shè)計(jì)的基 礎(chǔ)而應(yīng)該考慮的一系列關(guān)鍵問題: 標(biāo)準(zhǔn)數(shù)據(jù)。應(yīng)該研究應(yīng)用領(lǐng)域,并標(biāo)識(shí)出標(biāo)準(zhǔn)的全局?jǐn)?shù)據(jù)結(jié)構(gòu) (例如,文件 結(jié)構(gòu)或完整的數(shù)據(jù)庫),那么所有設(shè)計(jì)構(gòu)件可以使用這些標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)來刻劃。 標(biāo)準(zhǔn)接口協(xié)議。應(yīng)該建立三個(gè)層次的接口協(xié)議:模塊內(nèi)接口的本質(zhì)、外部的 技術(shù)(非人)接口的設(shè)計(jì)、以及人機(jī)界面。 程序模板。結(jié)構(gòu)模型可以作為新程序的體系結(jié)構(gòu)設(shè)計(jì)的模板。 一旦已經(jīng)建立 了標(biāo)準(zhǔn)數(shù)據(jù)、接口和程序模板,則設(shè)計(jì)者有了一個(gè)可在其中創(chuàng)建設(shè)計(jì)的框架。 符合這個(gè)框架的新的構(gòu)件對(duì)以后的復(fù)用有更高的概率。 4.2、 構(gòu)造方法 和設(shè)計(jì)一樣,可復(fù)用軟

16、件制品的構(gòu)造依賴于本書中其他地方已經(jīng)討論過的軟 件工程方法,構(gòu)造可以使用傳統(tǒng)的第三代語言、第四代語言和代碼生成器、可視 化程序設(shè)計(jì)技術(shù)、或更高級(jí)的工具來完成。 更高級(jí)的構(gòu)造技術(shù)的一個(gè)有代表性例子是 Netron公司開發(fā)Frame技術(shù)Netron 方法定義了一組自適應(yīng)的、稱作Frame的類屬構(gòu)件。和對(duì)象一樣,F(xiàn)rame圭寸裝數(shù) 據(jù)和操作,但是,它擴(kuò)展了對(duì)象的定義,它結(jié)合進(jìn)了使軟件工程師能夠通過選擇、 刪除、修改或重復(fù)那些構(gòu)成該Frame的任意子構(gòu)件而對(duì)Frame進(jìn)行適應(yīng)性修改的 機(jī)制。 可以通過組裝來自Frame層次的構(gòu)件而構(gòu)造應(yīng)用。在該層次底部的Frame類 似于在因子化體系結(jié)構(gòu)中的工作者(w

17、orker)模塊,即,它們包含執(zhí)行低層系統(tǒng)功 能(例如,操作系統(tǒng)交互、接口構(gòu)造、數(shù)據(jù)庫交互)的操作和數(shù)據(jù)結(jié)構(gòu);在Frame層 次中層的Frame著重于和特定信息系統(tǒng)領(lǐng)域相關(guān)的功能(例如,事務(wù)處理、銀行 業(yè)務(wù)、客戶服務(wù));在層次的頂部是“規(guī)約fream ”,它的作用是作為“系統(tǒng)的主 要藍(lán)圖和開發(fā)者創(chuàng)建來定義系統(tǒng)的唯一的 Frame”。 4.3、基于構(gòu)件的開發(fā) 當(dāng)復(fù)用占據(jù)了一個(gè)應(yīng)用開發(fā)的主導(dǎo)地位時(shí),則構(gòu)造方法有時(shí)被稱為基于構(gòu)件 的開發(fā)或構(gòu)件軟件。如我們已經(jīng)看到的,領(lǐng)域工程提供了基于構(gòu)件的開發(fā)所需要 的可復(fù)用構(gòu)件庫。這些可復(fù)用構(gòu)件中的某些是內(nèi)部開發(fā)的, 其他的可以從現(xiàn)存應(yīng) 用中抽取的,還有一些可以從

18、第三方獲取。 但是,我們?nèi)绾蝿?chuàng)建一個(gè)具有一致結(jié)構(gòu)的構(gòu)件庫它可以被一系列不同的 內(nèi)部和外部源查詢并且還可以被集成進(jìn)在某應(yīng)用領(lǐng)域內(nèi)的任意系統(tǒng)?答案是對(duì) 這樣的構(gòu)件的標(biāo)準(zhǔn)的采用。4個(gè)“體系結(jié)構(gòu)成分”將被用于實(shí)現(xiàn)基于構(gòu)件的開發(fā): 數(shù)據(jù)交換模型。應(yīng)該對(duì)所有的可復(fù)用構(gòu)件定義使得用戶和應(yīng)用間能夠交互和 傳遞數(shù)據(jù)的機(jī)制(例如,拖和放、剪切和粘貼)。數(shù)據(jù)交換機(jī)制不僅應(yīng)允許人和軟 件、構(gòu)件和構(gòu)件間的數(shù)據(jù)傳遞,而且也應(yīng)使得能夠在系統(tǒng)資源間進(jìn)行數(shù)據(jù)傳遞 (例 如,將一個(gè)文件拖到某打印機(jī)圖符上以實(shí)現(xiàn)輸出 )。 自動(dòng)化。應(yīng)實(shí)現(xiàn)一系列工具、宏和腳本為可復(fù)用構(gòu)件間的交互服務(wù)。 結(jié)構(gòu)化存儲(chǔ)。包含在“復(fù)合文檔”中的異質(zhì)數(shù)據(jù) (例

19、如,圖形數(shù)據(jù)、聲音、 文本和數(shù)值數(shù)據(jù))應(yīng)該被作為單獨(dú)的數(shù)據(jù)結(jié)構(gòu)來組織和訪問,而不是作為一組分 開的文件?!敖Y(jié)構(gòu)化數(shù)據(jù)維持了嵌套結(jié)構(gòu)的一個(gè)描述性索引, 使得應(yīng)用可以自由 地進(jìn)行導(dǎo)航瀏覽以定位、創(chuàng)建或編輯個(gè)體數(shù)據(jù)內(nèi)容,就象終端用戶直接操作一 樣”。 底層對(duì)象模型。對(duì)象模型保證在不同平臺(tái)上用不同程序設(shè)計(jì)語言開發(fā)的構(gòu)件 可以互操作,即,對(duì)象必須能夠跨網(wǎng)絡(luò)進(jìn)行通信。為了達(dá)到這個(gè)目標(biāo),對(duì)象模型 定義了構(gòu)件互操作標(biāo)準(zhǔn),該標(biāo)準(zhǔn)是語言獨(dú)立的,并使用接口定義語言 (IDL)來定 義。因?yàn)閺?fù)用對(duì)軟件產(chǎn)業(yè)的潛在影響非常巨大,一些主要的公司和產(chǎn)業(yè)聯(lián)盟 已 經(jīng)提出了對(duì)構(gòu)件軟件的建議標(biāo)準(zhǔn): OpenDo。主要技術(shù)公司(包括

20、IBM、Apple、和Novell)的一個(gè)聯(lián)盟已經(jīng)提出 了復(fù)合文檔和構(gòu)件軟件的標(biāo)準(zhǔn)OPenDoc該標(biāo)準(zhǔn)定義了為使得由某開發(fā)者提供的 構(gòu)件能夠和另一個(gè)開發(fā)者提供的構(gòu)件相互操作而必須實(shí)現(xiàn)的服務(wù)、控制基礎(chǔ)設(shè) 施、和體系結(jié)構(gòu)。 OMG/CORBA寸象管理組織發(fā)布了公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu) (OMG/CORBA) 一個(gè)對(duì)象請(qǐng)求代理(ORB提供了一系列服務(wù),它們使得可復(fù)用構(gòu)件(對(duì)象)可以和 其他構(gòu)件通信,而不管它們?cè)谙到y(tǒng)中的位置。當(dāng)用 OMG/CORBfe準(zhǔn)建立構(gòu)件時(shí), 那些構(gòu)件在某系統(tǒng)內(nèi)的集成(沒有修改)可以得到保證。 使用客戶/服務(wù)器的比喻,在客戶端應(yīng)用中的對(duì)象向 ORB服務(wù)器請(qǐng)求一個(gè)或 多個(gè)服務(wù),請(qǐng)

21、求是通過IDL或在運(yùn)行時(shí)動(dòng)態(tài)地進(jìn)行的。一個(gè)接口池包含了所有關(guān) 于服務(wù)請(qǐng)求和回答格式的信息。 OLE2.0。微軟開發(fā)了一個(gè)構(gòu)件對(duì)象模型(COM)它提供了對(duì)在單個(gè)應(yīng)用中使 用不同廠商生產(chǎn)的對(duì)象的規(guī)約。對(duì)象連接和嵌入 (OLE)是COM的一部分,定義了 可復(fù)用構(gòu)件的標(biāo)準(zhǔn)結(jié)構(gòu)。OLE已成為微軟操作系統(tǒng)(Windows 95、Windows NT) 的一部分。 這些標(biāo)準(zhǔn)中哪一個(gè)將在產(chǎn)業(yè)中占據(jù)支配地位?這在當(dāng)前是不容易回答的問 題。當(dāng)前OLE被用得更廣一些(由于基于Windows應(yīng)用的廣泛使用),但是,很多 OMG/CORB工具和開發(fā)環(huán)境正在被引入。 5、分類和檢索構(gòu)件 考慮一個(gè)大的大學(xué)圖書館,成千上萬的

22、書籍、期刊和其他信息資源是可用的。 但是為了訪問這些資源,必須有合適的分類模式。為了在這些大量的信息中導(dǎo)航 瀏覽,圖書館管理者定義了一種分類模式,它包括分類碼、關(guān)鍵詞、作者名、以 及其他索引條目,所有這些使得用戶可以快速和方便地找到所需資源。 現(xiàn)在考慮一個(gè)大的構(gòu)件倉庫,其中存放了成千上萬的可復(fù)用構(gòu)件。但是,軟 件工程師如何找到他所需要的構(gòu)件呢?為了回答這個(gè)問題,又出現(xiàn)了另一個(gè)問 題:我們?nèi)绾我詿o二義的、可分類的術(shù)語來描述軟件構(gòu)件?這些是困難的問題, 至今還沒有確定性的答案。在本節(jié)中,我們探討當(dāng)前的研究方向,這將使得未來 的軟件工程師可以導(dǎo)航瀏覽復(fù)用庫。 5.1、描述可復(fù)用構(gòu)件 可以用很多方式來

23、描述可復(fù)用軟件構(gòu)件,但是理想的描述包括 TracZ提出的 3C模型 - 概念(concePt)、內(nèi)容(content)和語境(context)。軟件構(gòu)件的概念 是“對(duì)構(gòu)件做什么的描述”。構(gòu)件的接口被完整地描述,而且語義一一表示在前 置條件后置條件的語境中一一被標(biāo)識(shí)。概念將傳達(dá)構(gòu)件的意圖。 構(gòu)件的內(nèi)容描述概念如何被實(shí)現(xiàn)。在本質(zhì)上,內(nèi)容是對(duì)一般用戶隱蔽的信息, 只有那些企圖修改該構(gòu)件的人才需要了解的信息。 語境將可復(fù)用軟件構(gòu)件放置到其應(yīng)用的領(lǐng)域中。即,通過刻劃概念的、操作 的和實(shí)現(xiàn)的特征,語境使得軟件工程師能夠發(fā)現(xiàn)適當(dāng)?shù)臉?gòu)件以滿足應(yīng)用需求。 為了可用在實(shí)際環(huán)境中,概念、內(nèi)容和語境必須被轉(zhuǎn)換為具體的

24、規(guī)約模式。 已有很多的文章涉及可復(fù)用構(gòu)件的分類模式。 所提出的方法可以分為三大類: 圖書館和信息科學(xué)方法、人工智能方法、以及超文本系統(tǒng)。目前為止,絕大部分 研究工作建議使用圖書館科學(xué)方法進(jìn)行構(gòu)件分類。 大多數(shù)軟件構(gòu)件分類模式可歸為如下的三類: 1)枚舉分類(Enumerated Classification) 。通過定義一個(gè)層次結(jié)構(gòu)來描述 構(gòu)件,在該層次中定義軟件構(gòu)件的類以及不同層次的子類。 實(shí)際的構(gòu)件被羅列在 枚舉層次的任何路徑的最低層,例如,對(duì)窗口操作的枚舉層次可能是: win dow operati ons display ope n menu-based OpenWin dow sys

25、tem based sysWi ndow close via poin ter resize viacomma nd setWindowSize, stdResize , shrinkwindow viadrag pullwindow , stretchWindow up/dow nshuffle move close 枚舉分類模式的層次結(jié)構(gòu)使得它易于理解和使用,然而,在建立層次之前, 必須進(jìn)行領(lǐng)域工程以獲得在層次中適當(dāng)?shù)捻?xiàng)的足夠的信息。 刻面分類(Faceted Classification)。分析領(lǐng)域,并標(biāo)識(shí)出一組基本的描述 特征,這些特征,稱為刻面,被根據(jù)其重要性區(qū)分優(yōu)先次序并被聯(lián)系到構(gòu)

26、件。刻 面可以描述構(gòu)件執(zhí)行的功能、被操作的數(shù)據(jù)、構(gòu)件應(yīng)用的語境或任意其他特征。 描述構(gòu)件的刻面的集合稱為刻面描述子, 通常,刻面描述被限定不超過7或8個(gè)刻 面。 作為一個(gè)簡單的在構(gòu)件分類中使用刻面的例子, 考慮使用下列構(gòu)件描述子的 模式: function ,object type ,system tyPe 刻面描述子中的每個(gè)刻面可含有一個(gè)或多個(gè)值,這些值一般是描述性關(guān)鍵 詞,例如,如果功能(function)是某構(gòu)件的刻面,賦給此刻面的典型值可能是: function=(copy ,from)or(copy , replace,all) 多個(gè)刻面值的使用使得原函數(shù)copy能夠被更完全地精化。

27、 關(guān)鍵詞(值)被賦給復(fù)用庫中的每個(gè)構(gòu)件的刻面集, 當(dāng)軟件工程師在設(shè)計(jì)中希 望查詢構(gòu)件庫以發(fā)現(xiàn)可能的構(gòu)件時(shí),規(guī)定一列值,然后到庫中尋找匹配項(xiàng)。可使 用自動(dòng)工具以完成同義詞詞典功能,這使得查找不僅包括軟件工程師給出的關(guān)鍵 詞,還包括這些關(guān)鍵詞的技術(shù)同義詞。 刻面分類模式給領(lǐng)域工程師在刻劃構(gòu)件的復(fù)雜描述子時(shí)更大的靈活性, 因?yàn)?可以很容易地加入新的刻面值,因此,刻面分類模式比枚舉分類方法易于擴(kuò)展和 進(jìn)行適應(yīng)性修改。 屬性一值分類(Attribute Value Classification) 。為領(lǐng)域中的所有構(gòu)件 定義一組屬性,然后值被以和刻面分類方法非常相似的方式賦給這些屬性, 事實(shí) 上,屬性-值

28、分類方法和刻面分類方法是類似的, 除了下面幾點(diǎn)不同:(1)對(duì)可使 用的屬性數(shù)量沒有限制,(2)屬性沒有優(yōu)先級(jí),(3)不使用同義詞詞典功能。 基于對(duì)上面分類技術(shù)的實(shí)驗(yàn)研究,F(xiàn)rank和Pole指出沒有明顯“最好”的技 術(shù)和“沒有某種方法比別的方法在查找效果上更適度” 。對(duì)復(fù)用庫有效的分類 模式的開發(fā)仍有許多工作要做。 5.2、構(gòu)件復(fù)用環(huán)境 軟件構(gòu)件復(fù)用必須有環(huán)境的支撐,環(huán)境應(yīng)包含如下元素: *用于存儲(chǔ)構(gòu)件和對(duì)檢索構(gòu)件必需的分類信息的構(gòu)件庫。 *提供對(duì)構(gòu)件庫訪問的庫管理系統(tǒng)。 *允許客戶應(yīng)用從構(gòu)件庫服務(wù)器中檢索構(gòu)件和服務(wù)的軟件構(gòu)件檢索系統(tǒng) (如, 對(duì)象請(qǐng)求代理)。 *將復(fù)用的構(gòu)件集成到新設(shè)計(jì)或?qū)崿F(xiàn)中的 CASE工具。 每一個(gè)功能在復(fù)用庫的范圍內(nèi)交互或者被包含在復(fù)用庫中。 復(fù)用庫是一個(gè)更大型CAS倉庫的一個(gè)元素,并且為一系列可復(fù)用軟件制品 (例如,規(guī)約、設(shè)計(jì)、代碼、測試用例、用戶指南)的存儲(chǔ)提供設(shè)施。復(fù)用庫包含 一個(gè)數(shù)據(jù)庫以及查詢數(shù)據(jù)庫和構(gòu)件檢索所必需的工具, 構(gòu)件分類模式是構(gòu)件庫查 詢的基礎(chǔ)。 查詢通常用前面描述的3C模型中的語境來刻劃,如果某初始查詢產(chǎn)生大量 的候選構(gòu)件,則查詢被求精以減

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論