軟件復(fù)用標(biāo)準(zhǔn)_第1頁
軟件復(fù)用標(biāo)準(zhǔn)_第2頁
軟件復(fù)用標(biāo)準(zhǔn)_第3頁
軟件復(fù)用標(biāo)準(zhǔn)_第4頁
軟件復(fù)用標(biāo)準(zhǔn)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件復(fù)用標(biāo)準(zhǔn)軟件復(fù)用標(biāo)準(zhǔn)簡介摘要實(shí)踐證明,軟件復(fù)用可以有效地提高軟件的質(zhì)量和生產(chǎn)率,它包括開發(fā)可復(fù)用軟件構(gòu)件和基于可復(fù)用構(gòu)件的開發(fā)兩個(gè)生命周期。在這兩個(gè)生命周期中,采用一個(gè)適當(dāng)?shù)臉?biāo)準(zhǔn)以識(shí)別和開發(fā)可復(fù)用軟件將大大促進(jìn)軟件復(fù)用的實(shí)踐。為此,NATO(北大西洋公約組織)制定了一整套軟件復(fù)用的指導(dǎo)性標(biāo)準(zhǔn),以幫助NATO及其參與國和承包商的項(xiàng)目管理部門進(jìn)行有效的軟件復(fù)用。這套標(biāo)準(zhǔn)包括《可復(fù)用軟件構(gòu)件開發(fā)指南》、《可復(fù)用軟件構(gòu)件庫管理指南》和《軟件復(fù)用過程指南》三個(gè)文檔,分別從軟件生命周期的各個(gè)階段對(duì)軟件復(fù)用進(jìn)行了指導(dǎo)和幫助。關(guān)鍵詞:NATO,軟件復(fù)用,可復(fù)用構(gòu)件開發(fā),構(gòu)件庫管理,復(fù)用過程一、前言1.背景與目的自從McIlroy在1968年的NATO軟件工程會(huì)議上正式提出軟件復(fù)用的概念以來,軟件復(fù)用已有了近三十年的發(fā)展歷程,復(fù)用的對(duì)象也從早期的代碼復(fù)用擴(kuò)展到對(duì)軟件開發(fā)過程中一切有價(jià)值的信息的復(fù)用,包括需求、需求規(guī)約、設(shè)計(jì)、源代碼、測(cè)試計(jì)劃和測(cè)試案例等。近三十年的實(shí)踐證明,軟件復(fù)用可以有效地提高軟件的質(zhì)量和生產(chǎn)率,是解決當(dāng)前“軟件危機(jī)”的一條比較現(xiàn)實(shí)可行的途徑。軟件復(fù)用包括開發(fā)可復(fù)用軟件構(gòu)件和基于可復(fù)用構(gòu)件的開發(fā)兩個(gè)生命周期。在這兩個(gè)生命周期中,采用一個(gè)適當(dāng)?shù)臉?biāo)準(zhǔn)以識(shí)別和開發(fā)可復(fù)用軟件將大大促進(jìn)軟件復(fù)用的實(shí)踐。為此,NATO(北大西洋公約組織)制定了一整套軟件復(fù)用的指導(dǎo)性標(biāo)準(zhǔn),以幫助NATO及其參與國和承包商的項(xiàng)目管理部門進(jìn)行有效的軟件復(fù)用。這套標(biāo)準(zhǔn)包括《可復(fù)用軟件構(gòu)件開發(fā)指南》、《可復(fù)用軟件構(gòu)件庫管理指南》和《軟件復(fù)用過程指南》三個(gè)文檔,分別從軟件生命周期的各個(gè)階段對(duì)軟件復(fù)用進(jìn)行指導(dǎo),以便最大限度地減少復(fù)用代價(jià)和增加復(fù)用收益。青鳥工程是國家“九五”重點(diǎn)科技攻關(guān)項(xiàng)目,其中研究的主要內(nèi)容之一便是軟件復(fù)用和軟件構(gòu)件技術(shù)。為了吸收和利用國外軟件復(fù)用的最新研究成果,我們對(duì)國際上相關(guān)研究和實(shí)踐工作進(jìn)行了深入分析,以期能拓寬思路,取長補(bǔ)短,使我們的工作能和國際主流接軌。本文便是對(duì)NATO軟件復(fù)用標(biāo)準(zhǔn)的總結(jié)和介紹,希望能為國內(nèi)相關(guān)工作的進(jìn)展和相關(guān)的軟件從業(yè)人員起到一個(gè)借鑒和參考的作用。2.本文的組織本文的第二章介紹了NATO標(biāo)準(zhǔn)中出現(xiàn)的一些復(fù)用的基本概念,以便使讀者能對(duì)NATO的軟件復(fù)用框架有一個(gè)大致的了解。第三章是NATO的可復(fù)用構(gòu)件開發(fā)標(biāo)準(zhǔn),它的目的是為創(chuàng)建具有最大復(fù)用潛力的軟件產(chǎn)品提供指導(dǎo)。第四章是NATO的可復(fù)用軟件構(gòu)件庫管理標(biāo)準(zhǔn),目的是為建立和管理NATO控制的軟件資源復(fù)用庫提供指導(dǎo)。第五章是NATO的軟件復(fù)用過程標(biāo)準(zhǔn),目的是為有意使用NATO復(fù)用庫中的可復(fù)用軟件構(gòu)件進(jìn)行復(fù)用實(shí)踐的軟件項(xiàng)目提供指導(dǎo)。第六章是對(duì)這三個(gè)標(biāo)準(zhǔn)的總結(jié)。二、復(fù)用的基本概念軟件復(fù)用可以有效地節(jié)省軟件開發(fā)成本,提高軟件質(zhì)量。本章介紹了在本文后面用到的復(fù)用的基本術(shù)語和概念,并解釋了制定這套標(biāo)準(zhǔn)的實(shí)際目的,為讀者理解軟件復(fù)用的收益和挑戰(zhàn)提供了一個(gè)參考性的框架。1.有關(guān)的術(shù)語定義下面是這套標(biāo)準(zhǔn)中使用的關(guān)鍵術(shù)語的簡要定義:復(fù)用(Reuse)—在一個(gè)新的語境(context)中(同一系統(tǒng)的其它地方或另一個(gè)系統(tǒng)中)使用已有的軟件構(gòu)件。可復(fù)用性(Reusability)—軟件構(gòu)件可以被復(fù)用的程度或范圍(extent)。遵循一個(gè)適當(dāng)?shù)脑O(shè)計(jì)和編碼標(biāo)準(zhǔn)將增強(qiáng)構(gòu)件的可復(fù)用性??蓮?fù)用軟件構(gòu)件(RSC)—可以被復(fù)用的軟件實(shí)體;它可以是設(shè)計(jì)、代碼或軟件開發(fā)過程的其它產(chǎn)品。RSCs有時(shí)稱為“軟件資產(chǎn)”(softwareassets)。復(fù)用者(Reuser)—復(fù)用RSC的個(gè)人或組織??梢浦残?Portability)—原來在一臺(tái)計(jì)算機(jī)和操作系統(tǒng)上開發(fā)的軟件構(gòu)件可以在另一臺(tái)計(jì)算機(jī)和(或)操作系統(tǒng)上使用的程度。若構(gòu)件可移植性好,則它的復(fù)用潛力就大。領(lǐng)域(Domain)—指一類相關(guān)的軟件應(yīng)用。領(lǐng)域有時(shí)可劃分為“垂直的”(vertical)和“水平的”(horizontal)。“垂直的”領(lǐng)域包括某個(gè)應(yīng)用范圍內(nèi)的所有開發(fā)層次(如MIS領(lǐng)域),而“水平的”領(lǐng)域則指一種特定類型的、不限于某類應(yīng)用的軟件過程(如對(duì)堆棧的操作)。一般來說,構(gòu)件在同一個(gè)領(lǐng)域中復(fù)用的潛力較大。領(lǐng)域分析(Domainanalysis)—對(duì)一個(gè)選定的領(lǐng)域進(jìn)行分析以標(biāo)識(shí)出其中通用的結(jié)構(gòu)和功能,目的是提高復(fù)用的潛力。構(gòu)件庫(Library)—可復(fù)用軟件構(gòu)件的集合,包括向用戶提供構(gòu)件時(shí)所需的過程和功能。檢索系統(tǒng)(Retrievalsystem)—支持可復(fù)用軟件構(gòu)件分類和檢索的自動(dòng)化工具。軟件生命周期(Softwarelifecycle)—軟件系統(tǒng)在開發(fā)和配置時(shí)所經(jīng)歷的一系列階段。盡管不同項(xiàng)目在具體階段上會(huì)有差別,但通常都會(huì)包括下列階段:需求分析、設(shè)計(jì)、編碼、測(cè)試和維護(hù)。2.復(fù)用的優(yōu)越性軟件復(fù)用可以提高軟件生產(chǎn)率并減少開發(fā)代價(jià),還可以提高軟件系統(tǒng)的質(zhì)量。具體來說,可以歸納為下列五個(gè)方面:1)提高生產(chǎn)率。軟件復(fù)用最明顯的好處在于提高生產(chǎn)率,從而減少開發(fā)代價(jià)。生產(chǎn)率的提高不僅體現(xiàn)在代碼開發(fā)階段,在分析、設(shè)計(jì)及測(cè)試階段同樣可以利用復(fù)用來節(jié)省開銷。用可復(fù)用的構(gòu)件構(gòu)造系統(tǒng)還可以提高系統(tǒng)的性能和可靠性,因?yàn)榭蓮?fù)用構(gòu)件經(jīng)過了高度優(yōu)化,并且在實(shí)踐中經(jīng)受過檢驗(yàn)。2)減少維護(hù)代價(jià)。這是軟件復(fù)用另一個(gè)重要的優(yōu)越性。由于使用經(jīng)過檢驗(yàn)的構(gòu)件,減少了可能的錯(cuò)誤,同時(shí)軟件中需要維護(hù)的部分也減少了。例如,要對(duì)多個(gè)具有公共圖形用戶界面的系統(tǒng)進(jìn)行維護(hù)時(shí),對(duì)界面的修改只需要一次,而不是在每個(gè)系統(tǒng)中分別進(jìn)行修改。3)提高互操作性。軟件復(fù)用一個(gè)更為專業(yè)化的好處在于提高了系統(tǒng)間的互操作性。通過使用接口的同一個(gè)實(shí)現(xiàn),系統(tǒng)將更為有效地實(shí)現(xiàn)與其它系統(tǒng)之間的互操作。例如,若多個(gè)通訊系統(tǒng)都采用同一個(gè)軟件包來實(shí)現(xiàn)X.25協(xié)議,那么它們之間的交互將更為方便。4)支持快速原型。復(fù)用的另一個(gè)好處在于對(duì)快速原型的支持,即可以快速構(gòu)造出系統(tǒng)可操作的模型,以獲得用戶對(duì)系統(tǒng)功能的反饋。利用可復(fù)用構(gòu)件庫可以快速有效地構(gòu)造出應(yīng)用程序的原型。5)減少培訓(xùn)開銷。復(fù)用的最后一個(gè)好處在于減少培訓(xùn)開銷,即雇員在熟悉新任務(wù)時(shí)所需的非正式的開銷。如同硬件工程師使用相同的集成電路塊設(shè)計(jì)不同類型的系統(tǒng),軟件工程師也將使用一個(gè)可復(fù)用構(gòu)件庫,其中的構(gòu)件都是他們所熟悉和精通的。3.復(fù)用的維(Dimensions)軟件復(fù)用有多個(gè)維,可從不同角度對(duì)復(fù)用進(jìn)行劃分。NATO復(fù)用標(biāo)準(zhǔn)用以下方式對(duì)復(fù)用進(jìn)行了分類:組裝式(Compositional)復(fù)用與生成式(Generative)復(fù)用。也可以稱為產(chǎn)品復(fù)用與過程復(fù)用。組裝式方法利用庫中的底層構(gòu)件自底向上地開發(fā)系統(tǒng),關(guān)鍵是要解決構(gòu)件的分類和檢索技術(shù),以及開發(fā)出一個(gè)自動(dòng)化系統(tǒng)以支持組裝過程。生成式方法是特定于應(yīng)用領(lǐng)域的,它采用標(biāo)準(zhǔn)的領(lǐng)域構(gòu)架(architecture)模型(即類屬的構(gòu)架)和一致的構(gòu)件接口,目的是根據(jù)一個(gè)適當(dāng)?shù)膮?shù)規(guī)約生成新的系統(tǒng)。(目前在商業(yè)軟件中使用的第四代生成語言[4GLs]可以被認(rèn)為是生成式復(fù)用的一個(gè)例子。)這種方法在成熟的領(lǐng)域中非常有效,但在開發(fā)初始模型時(shí)需要很大的努力。小規(guī)模復(fù)用與大規(guī)模復(fù)用。復(fù)用的另一個(gè)維是可復(fù)用構(gòu)件的規(guī)模。小規(guī)模復(fù)用(例如使用數(shù)學(xué)函數(shù)庫)現(xiàn)在已得到了廣泛的應(yīng)用,但個(gè)別的復(fù)用節(jié)省的代價(jià)并不大,必須要普遍地復(fù)用才能獲得收益。大規(guī)模復(fù)用針對(duì)的是整個(gè)子系統(tǒng)(例如飛機(jī)導(dǎo)航或消息處理子系統(tǒng)),這時(shí)個(gè)別的復(fù)用即可獲得很大的收益,因?yàn)閺?fù)用了成千上萬行代碼。但是對(duì)一個(gè)特定的大構(gòu)件來說,復(fù)用的機(jī)會(huì)是非常有限的。原樣(As-is)復(fù)用與帶修改的復(fù)用。構(gòu)件既可以原樣復(fù)用,也可能需要修改。一般來說,可復(fù)用構(gòu)件應(yīng)設(shè)計(jì)得比較有彈性,例如可以設(shè)計(jì)成參數(shù)化的構(gòu)件,但為了滿足復(fù)用者的需求,適當(dāng)?shù)男薷囊彩潜匾?。易修改性(軟件?gòu)件易于修改的能力)是可復(fù)用軟件中尤為重要的性質(zhì)。通用性與性能。在構(gòu)件的通用性與性能之間常常存在折衷。設(shè)計(jì)得通用和靈活的構(gòu)件常常包括為了支持通用性而增加的額外開銷。4.實(shí)現(xiàn)復(fù)用的困難軟件復(fù)用需要改變傳統(tǒng)的軟件開發(fā)方法。為了達(dá)到完全的收益,就得克服下面一系列挑戰(zhàn):識(shí)別復(fù)用機(jī)會(huì)。識(shí)別復(fù)用機(jī)會(huì)是一個(gè)主要的技術(shù)問題。軟件工程師可能知道類似的軟件已經(jīng)編寫過,但如何找到它是一個(gè)問題。復(fù)用庫有助于解決這個(gè)問題。當(dāng)找到一個(gè)構(gòu)件時(shí),可能很難判斷它是否真的滿足自己的需求,要進(jìn)行修改也是很困難的。不少看上去可復(fù)用的軟件實(shí)際上是不可復(fù)用的,因?yàn)樗赡苡胁贿m當(dāng)?shù)慕涌?、隱含的依賴、不可改變的功能限制等,或者僅僅是由于它難于理解而使得復(fù)用者寧愿重新開始開發(fā)。NATO的軟件復(fù)用標(biāo)準(zhǔn)有助于避免這些問題。投資。制作可復(fù)用軟件通常比開發(fā)一次性的系統(tǒng)需要更多的投資,這些投資包括使得軟件更具有彈性、保證它的質(zhì)量、提供所需的額外文檔等。每個(gè)組織必須決定如何支持這項(xiàng)投資?!癗otInventedHere”(不是自己發(fā)明的)綜合癥。開發(fā)者常常不愿復(fù)用別人的軟件。軟件工程師喜歡創(chuàng)造性的勞動(dòng),復(fù)用軟件時(shí)就會(huì)感到創(chuàng)造性的消失。有效的管理、鼓勵(lì)以及培訓(xùn)等措施有助于讓工程師們將創(chuàng)造性的視角轉(zhuǎn)向更大的“構(gòu)造塊”-可復(fù)用軟件構(gòu)件。評(píng)價(jià)和度量。對(duì)軟件開發(fā)行為進(jìn)行評(píng)價(jià)和度量總是很困難的,怎樣才算是一個(gè)“好”軟件?評(píng)價(jià)的標(biāo)準(zhǔn)很多。已經(jīng)有一些比較有效的管理性方法,但在復(fù)用環(huán)境中這些傳統(tǒng)的度量方法還需要修改,在這方面幾乎沒有什么經(jīng)驗(yàn)。合同、法律和所有權(quán)問題。軟件復(fù)用還受到大量關(guān)于合同、法律和所有權(quán)問題的影響。現(xiàn)在這種訂合同的方式使得承包商不愿復(fù)用已有的軟件或提供軟件給別人復(fù)用,在對(duì)軟件構(gòu)件質(zhì)量的責(zé)任和保證上也會(huì)引發(fā)法律糾紛,而且還應(yīng)確定由誰來負(fù)責(zé)維護(hù)軟件構(gòu)件。三、NATO的可復(fù)用構(gòu)件開發(fā)標(biāo)準(zhǔn)NATO的可復(fù)用軟件構(gòu)件(以下簡稱構(gòu)件)開發(fā)標(biāo)準(zhǔn)為創(chuàng)建具有最大復(fù)用潛力的軟件提供指南。該標(biāo)準(zhǔn)面向NATO的項(xiàng)目管理者和項(xiàng)目承包商,針對(duì)軟件生命周期中的需求分析、設(shè)計(jì)、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)、質(zhì)量保證與測(cè)試以及文檔等方面分別論述,幫助用戶組織一個(gè)可復(fù)用軟件構(gòu)件的開發(fā)過程。標(biāo)準(zhǔn)的大部分內(nèi)容是獨(dú)立于編程語言的,在實(shí)現(xiàn)時(shí)采用特定語言的編碼標(biāo)準(zhǔn)作為該標(biāo)準(zhǔn)的補(bǔ)充。分析、設(shè)計(jì)和測(cè)試階段的成果本身都有被復(fù)用的潛力,應(yīng)被當(dāng)作構(gòu)件,尤其在新系統(tǒng)中復(fù)用前期的軟件工程成果往往帶來對(duì)相應(yīng)后期產(chǎn)品的復(fù)用。可復(fù)用構(gòu)件應(yīng)該以方便復(fù)用的方式被表示,易于識(shí)別,易于獨(dú)立提取,與系統(tǒng)特定的和易變的成分隔離;在組織內(nèi)部采用一致的機(jī)器可讀的記號(hào)表示分析和設(shè)計(jì)構(gòu)件,以便進(jìn)行自動(dòng)的信息提取和轉(zhuǎn)換。從分析到設(shè)計(jì)到編碼的轉(zhuǎn)換應(yīng)該遵循上一階段的復(fù)用考慮,保持相鄰階段構(gòu)件之間的良好映射和可跟蹤性質(zhì)。以下從幾個(gè)方面介紹NATO標(biāo)準(zhǔn):1、需求分析和領(lǐng)域分析需求分析階段為軟件復(fù)用打下基礎(chǔ),此時(shí)對(duì)復(fù)用給予的關(guān)注將在相當(dāng)大的程度上影響所開發(fā)軟件的可復(fù)用性。主要應(yīng)該在以下四個(gè)方面作出努力:(1)建立一個(gè)鼓勵(lì)復(fù)用現(xiàn)有軟件的機(jī)制需求規(guī)約必須認(rèn)識(shí)到復(fù)用的必要性并鼓勵(lì)軟件復(fù)用。好的需求規(guī)約應(yīng)該只規(guī)定所需的功能和性能指標(biāo),允許開發(fā)者決定操作上和實(shí)現(xiàn)上的細(xì)節(jié)。一個(gè)極端明細(xì)的規(guī)約是很難與任何現(xiàn)有軟件相匹配的,不必要的系統(tǒng)需求將限制軟件復(fù)用。將軟件復(fù)用作為需求之一,在規(guī)約中規(guī)定所有必須的(Required)和期望的(Expected)復(fù)用活動(dòng)。●要逐條檢查每一需求的必要性,確信其中不包括進(jìn)一步的設(shè)計(jì)選擇?!窀淖円酝鶎⑿枨笠?guī)約在招標(biāo)之前定住不變的做法,向潛在的承包商提供需求規(guī)約的草稿,讓開發(fā)者參與進(jìn)來,標(biāo)識(shí)出他們認(rèn)為可以修改并將促進(jìn)復(fù)用的地方,由客戶和承包商共同完成項(xiàng)目的規(guī)約文檔?!駨?fù)用需求必須解釋什么是復(fù)用和如何評(píng)估復(fù)用。為開發(fā)者指定一個(gè)復(fù)用目標(biāo),比如復(fù)用的代碼、函數(shù)的數(shù)量等,在合同中為復(fù)用制定獎(jiǎng)勵(lì)措施以鼓勵(lì)復(fù)用。(2)將可復(fù)用軟件的開發(fā)列入需求如果希望所開發(fā)的系統(tǒng)是可復(fù)用的,就應(yīng)該在需求中顯式聲明出來,并且應(yīng)該使這種項(xiàng)目需求在客觀上是可測(cè)試的。這種需求必須定義什么是可復(fù)用性和如何評(píng)估構(gòu)件的可復(fù)用性,應(yīng)該規(guī)定對(duì)構(gòu)件所期望的復(fù)用范圍(在項(xiàng)目內(nèi)部或者跨項(xiàng)目的復(fù)用,在不同的OS上復(fù)用等等),規(guī)定與某一復(fù)用標(biāo)準(zhǔn)的符合程度,規(guī)定構(gòu)件所必須具備的文檔,要求對(duì)軟件的可復(fù)用性進(jìn)行測(cè)試,以及要求開發(fā)者對(duì)構(gòu)件進(jìn)行維護(hù)等等。(3)領(lǐng)域分析的作用領(lǐng)域分析活動(dòng)不同于通常對(duì)特定系統(tǒng)進(jìn)行的需求分析,它是對(duì)特定應(yīng)用領(lǐng)域中已有的系統(tǒng)、預(yù)期的需求變化和技術(shù)演化進(jìn)行分析,目的是標(biāo)識(shí)出整個(gè)領(lǐng)域中通用的構(gòu)架和相同的功能與接口。領(lǐng)域分析的結(jié)果將影響到系統(tǒng)需求的取舍,由此構(gòu)造出的系統(tǒng)由于更適應(yīng)變化的需求,日后被復(fù)用的可能性也更大?!褚u(píng)估領(lǐng)域分析的必要性和可行性。在適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行領(lǐng)域分析或者采用現(xiàn)有的分析成果。在利用現(xiàn)有領(lǐng)域分析成果時(shí)應(yīng)該評(píng)價(jià)其適用性,即使整個(gè)構(gòu)架未必可用,仍有可能復(fù)用某些標(biāo)準(zhǔn)的構(gòu)件和接口。●即使沒有時(shí)間或能力進(jìn)行完整的領(lǐng)域分析,仍然可以快速標(biāo)識(shí)出本領(lǐng)域中可復(fù)用的子系統(tǒng)和接口(比如標(biāo)準(zhǔn)設(shè)備、通信協(xié)議、用戶接口、應(yīng)用算法等),為今后的開發(fā)儲(chǔ)備“零部件”?!裨趹?yīng)用領(lǐng)域分析成果時(shí),應(yīng)該及時(shí)提供反饋,補(bǔ)充或改進(jìn)其成分,促進(jìn)領(lǐng)域模型隨實(shí)際領(lǐng)域的演化而演化。2、概要設(shè)計(jì)原則可復(fù)用性在很大程度上受到軟件設(shè)計(jì)方法和設(shè)計(jì)決策的影響。利用軟件工程原則與方法進(jìn)行軟件的概要設(shè)計(jì)主要涉及以下幾個(gè)方面:(1)從需求分析向設(shè)計(jì)轉(zhuǎn)換設(shè)計(jì)階段應(yīng)該支持前面建立的可復(fù)用需求,并為實(shí)現(xiàn)這些需求建立良好的框架。高層設(shè)計(jì)活動(dòng)將不同需求劃分給軟件構(gòu)架中的不同構(gòu)件。這種分配必須保持需求的完整一致并便于向?qū)崿F(xiàn)轉(zhuǎn)換。這一活動(dòng)的重要性在于標(biāo)識(shí)并定義了需要建造的構(gòu)件及其接口,等到詳細(xì)設(shè)計(jì)階段再為特定的構(gòu)件設(shè)計(jì)算法和實(shí)現(xiàn)構(gòu)件所應(yīng)具有的通用性及易修改性。●將需求構(gòu)件映射到一個(gè)或幾個(gè)設(shè)計(jì)構(gòu)件上,一個(gè)設(shè)計(jì)構(gòu)件不要同時(shí)對(duì)應(yīng)于可復(fù)用需求和特定于系統(tǒng)的需求,在設(shè)計(jì)階段要保持二者的分離?!駨膹?fù)用出發(fā)標(biāo)識(shí)出設(shè)計(jì)中的并未在需求規(guī)約中顯式聲明的可復(fù)用構(gòu)件?!裉峁┣逦男枨蟾櫺裕WC需求/設(shè)計(jì)/代碼/測(cè)試之間的良好映射,這是在復(fù)用庫中反映這種對(duì)應(yīng)關(guān)系的前提?!駞?shù)化標(biāo)識(shí)了構(gòu)件所能操作的數(shù)據(jù)的范圍。將通用構(gòu)件的可變特征作為參數(shù),復(fù)用者可以根據(jù)需要確定參數(shù)以定制構(gòu)件。檢查各個(gè)構(gòu)件是否能夠參數(shù)化以便其更為通用。(2)利用模型、構(gòu)架和接口設(shè)計(jì)得到可復(fù)用的系統(tǒng)框架模型用于聲明軟件需求,將需求與現(xiàn)有功能匹配,完成從功能需求到實(shí)現(xiàn)決定的映射。結(jié)構(gòu)良好而一致的模型是開發(fā)者與復(fù)用者之間的共同語言。模型應(yīng)當(dāng)對(duì)應(yīng)于真實(shí)世界中的概念,為提高可復(fù)用性,應(yīng)將模型進(jìn)一步通用化。例如:用“填寫表單”作為數(shù)據(jù)查詢程序的用戶界面的模型是易于理解的。再將表單中域的數(shù)目、位置和數(shù)據(jù)類型定義為可變參數(shù),即得到更為通用的模型,由此創(chuàng)建出可復(fù)用性較高的構(gòu)件。用分層的構(gòu)架來分離注意的焦點(diǎn),由此來隔離出可復(fù)用的子系統(tǒng)。分離的各層可以被獨(dú)立替換以便升級(jí)、移植和集成。一個(gè)特定層的下層為其上層定義了一個(gè)虛機(jī)器,相鄰層次之間依靠特殊的預(yù)定義接口進(jìn)行交互,不可跨層訪問。比如:可以將數(shù)據(jù)庫管理系統(tǒng)(DBMS)自上至下劃分為數(shù)據(jù)操縱層、數(shù)據(jù)存取層、文件I/O層和物理設(shè)備層四層。在分層時(shí)應(yīng)該適時(shí)地采用或符合現(xiàn)有的標(biāo)準(zhǔn)構(gòu)架,如ISO-OSI參考模型。要為所有構(gòu)件劃分并細(xì)化接口。接口應(yīng)該清晰、簡潔、干凈。構(gòu)件的接口實(shí)際上決定了復(fù)用該構(gòu)件的系統(tǒng)所必須遵守的約束條件,所有這些約束都應(yīng)記錄在接口的文檔中。應(yīng)該根據(jù)“必要且充分”的原則進(jìn)行接口設(shè)計(jì),既要求提供充分的通用性和靈活性,又不能過分復(fù)雜而難以復(fù)用,這要求在簡單性和通用性之間作出權(quán)衡。同時(shí)應(yīng)該盡可能采用現(xiàn)有的標(biāo)準(zhǔn)接口(如采用SQL語言作為RDBMS的訪問接口)。標(biāo)準(zhǔn)接口規(guī)約本身就是可復(fù)用的實(shí)體,因此應(yīng)使之與設(shè)計(jì)規(guī)約中的其他成分相分離,并以方便復(fù)用的方式表示。(3)在設(shè)計(jì)時(shí)考慮構(gòu)件被修改的可能性構(gòu)件有被修改后復(fù)用的可能。這可能是由于構(gòu)件的運(yùn)行平臺(tái)、OS、窗口系統(tǒng)或通信協(xié)議的改變,或者系統(tǒng)功能的擴(kuò)充和協(xié)作構(gòu)件的升級(jí)等原因;當(dāng)構(gòu)件的生命周期較長時(shí),往往有許多人維護(hù)、修改和改進(jìn)過它,技術(shù)的演化也將導(dǎo)致對(duì)現(xiàn)有構(gòu)件的修改。在設(shè)計(jì)構(gòu)件時(shí)預(yù)見到可能的修改并采取相應(yīng)的措施將大大提高其可復(fù)用性。具體措施有:(1)在考慮未來的修改時(shí),應(yīng)該權(quán)衡當(dāng)前的開發(fā)成本與預(yù)期的復(fù)用收益。通常從一開始便加強(qiáng)易修改性會(huì)節(jié)省總開銷。(2)應(yīng)該標(biāo)識(shí)出可被修改的地方并進(jìn)行隔離,采用分層的構(gòu)架和封裝原則將修改局部化,甚至可以在文檔中給未來的修改者以建議。(4)采用適當(dāng)?shù)能浖O(shè)計(jì)方法采用適當(dāng)?shù)脑O(shè)計(jì)方法能夠有效地組織軟件系統(tǒng)并提高個(gè)體構(gòu)件的可復(fù)用性。應(yīng)該將構(gòu)件封裝為自包含的抽象實(shí)體,盡可能減少構(gòu)件的外部依賴,在這方面OO方法能夠更好的支持復(fù)用。傳統(tǒng)的結(jié)構(gòu)化功能分解方法強(qiáng)調(diào)構(gòu)造低耦合、高內(nèi)聚的模塊,保持模塊之間清晰的接口,但采用結(jié)構(gòu)化方法時(shí)仍然應(yīng)該注意貫徹抽象和封裝的原則,否則會(huì)減少復(fù)用的潛力。采用OO設(shè)計(jì)方法的具體措施包括:(1)將對(duì)象及其操作封裝為一體,形成邏輯上完整的實(shí)體。將封裝體的實(shí)現(xiàn)細(xì)節(jié)與用戶的視角隔離,實(shí)現(xiàn)信息隱蔽。利用繼承機(jī)制顯式表達(dá)構(gòu)件的共性。(2)考慮采用一種已經(jīng)被接受的OO方法學(xué),指導(dǎo)從需求分析到系統(tǒng)維護(hù)的全過程。(3)在設(shè)計(jì)上避免那些不能映射到編程語言的成分(如多繼承)。(5)選擇CASE工具CASE工具幫助貫徹設(shè)計(jì)原則,實(shí)現(xiàn)一致的軟件工程方法學(xué)。市場上有許多可用的CASE工具,各自支持軟件生命周期的一個(gè)或幾個(gè)階段和某種方法學(xué)。困難在于如何從中選擇一組工具,使之集成合作以全面支持某種方法學(xué)。最好是先考慮從需求分析到系統(tǒng)維護(hù)的所有活動(dòng),選擇適合整個(gè)項(xiàng)目的方法學(xué),然后再選擇能夠被一致地集成進(jìn)來的工具。使用不適當(dāng)?shù)腃ASE工具比沒有工具支持的效果更差。合適的編譯器將幫助提高運(yùn)行系統(tǒng)的效率、減少復(fù)用對(duì)性能的影響,因此同樣應(yīng)該加以考慮。3、詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)活動(dòng)必須支持此前作出的設(shè)計(jì)決定,并考慮提高每個(gè)構(gòu)件的可復(fù)用性。實(shí)現(xiàn)可復(fù)用代碼的技術(shù)與書寫“好的”代碼在標(biāo)準(zhǔn)上類似,模塊性、易維護(hù)性和可移植性對(duì)代碼的質(zhì)量至關(guān)重要。(1)從設(shè)計(jì)轉(zhuǎn)換到代碼從設(shè)計(jì)到代碼的轉(zhuǎn)換必須遵循此前定義的系統(tǒng)結(jié)構(gòu)并建造在其上,必須意識(shí)到代碼質(zhì)量對(duì)復(fù)用至關(guān)重要。構(gòu)件必須格外健壯、結(jié)構(gòu)清晰并易于維護(hù)。要采用適當(dāng)?shù)挠成湟?guī)則指導(dǎo)由設(shè)計(jì)元素到編程語言的映射,任何與原有設(shè)計(jì)的偏離都必須由配置管理過程接管和批準(zhǔn),以保證需求和設(shè)計(jì)規(guī)約得到及時(shí)更新。具體措施包括:(1)利用CASE工具輔助生成代碼框架、函數(shù)原型和流程圖,維護(hù)代碼與需求、設(shè)計(jì)間的映射。(2)在選擇編程語言時(shí)考慮它對(duì)代碼質(zhì)量和可復(fù)用性的影響,比如是否顯式支持封裝與抽象原則,是否支持參數(shù)化、模塊化和注釋,是否進(jìn)行嚴(yán)格的類型檢查等等。(2)程序結(jié)構(gòu)對(duì)程序結(jié)構(gòu)的選擇決定了個(gè)體構(gòu)件的可復(fù)用性。應(yīng)該將在一起被復(fù)用的實(shí)體組織到一起,盡量減少它們與外部的依賴關(guān)系。模塊化、信息隱蔽、分而治之等傳統(tǒng)的軟件工程原則在此是適用的?!衩總€(gè)構(gòu)件都應(yīng)當(dāng)實(shí)現(xiàn)一個(gè)完整的對(duì)象,為復(fù)用者提供完備的創(chuàng)建和操作對(duì)象的方法(包括創(chuàng)建和初始化、終結(jié)、對(duì)象轉(zhuǎn)換、狀態(tài)轉(zhuǎn)換、狀態(tài)查詢和輸入/輸出操作)。●控制構(gòu)件的實(shí)現(xiàn)與底層平臺(tái)之間的依賴性;如果平臺(tái)依賴是不可避免的,則盡量將它獨(dú)立出來,與程序的其他部分隔離。在構(gòu)件的文檔中應(yīng)顯式聲明對(duì)運(yùn)行環(huán)境的依賴,說明如何發(fā)現(xiàn)和替換相關(guān)代碼以適用于不同的運(yùn)行環(huán)境。(3)接口構(gòu)件的接口定義了它與外界的關(guān)系,建立了它被復(fù)用的框架。從某種意義上說,構(gòu)件完全由其接口來定義。應(yīng)該為潛在的可復(fù)用構(gòu)件建立文檔良好的接口規(guī)約,在代碼前言和文檔中列出它的接口清單,為每個(gè)具體接口提供簡單的文本描述、類型規(guī)約、參數(shù)的取值范圍和對(duì)越界參數(shù)的處理方法等信息?!窨紤]用算法來描述入?yún)?shù)與出參數(shù)間的關(guān)系,從而精確地刻劃構(gòu)件的功能?!駱?gòu)件只提供必要的通用性。在功能充分的前提下,少而簡單的接口易于學(xué)習(xí)和理解,更容易用在新的環(huán)境中,也將更有效地支持復(fù)用?!裨谠O(shè)計(jì)構(gòu)件的接口時(shí)應(yīng)貫徹低耦合與高內(nèi)聚的原則,利用質(zhì)量保證過程來顯式地檢查構(gòu)件接口的充分性和必要性。●向復(fù)用者提供處理邊界情況的“鉤子函數(shù)”(hooks),允許復(fù)用者指定在發(fā)生越界時(shí)執(zhí)行的動(dòng)作。(4)參數(shù)化和例外處理參數(shù)化除了用于實(shí)現(xiàn)構(gòu)件的功能,也有助于提高構(gòu)件的可復(fù)用性。例外處理則可以確保構(gòu)件足夠健壯。●提供在構(gòu)件執(zhí)行之前確定參數(shù)取值的方法,在源代碼中明確標(biāo)識(shí)出環(huán)境變量和系統(tǒng)參數(shù)??梢岳妙悓俪A俊⒕幾g時(shí)變量或源代碼預(yù)處理器進(jìn)行特定系統(tǒng)的配置,以利用編譯優(yōu)化能力、提高構(gòu)件的執(zhí)行效率。利用類屬布爾常數(shù)或預(yù)處理器等機(jī)制,移去不必要的安全性檢查。●在對(duì)象定義中為每個(gè)元素提供缺省初值或者在創(chuàng)建對(duì)象時(shí)請(qǐng)求初值,以保證所有對(duì)象都被恰當(dāng)?shù)爻跏蓟??!裨趨?shù)無效或其它異常情況下提供一種將控制權(quán)返回給調(diào)用程序的機(jī)制。如果編程語言支持例外處理,就利用Exception向調(diào)用者報(bào)錯(cuò),否則就利用過程參數(shù)來指定復(fù)用者的出錯(cuò)處理例程。如果沒有類似機(jī)制,就利用返回參數(shù)指明出現(xiàn)的問題及其原因?!駲z查構(gòu)件正確操作所依賴的所有假設(shè),利用例外處理實(shí)現(xiàn)“安全的”構(gòu)件。如果在引發(fā)例外處理的代價(jià)太高,則考慮使用一種讓用戶自己來改正錯(cuò)誤的替代機(jī)制。4、質(zhì)量保證和測(cè)試質(zhì)量保證(以下簡稱QA-QualityAssurance)和測(cè)試活動(dòng)有助于保證開發(fā)活動(dòng)遵循所采用的標(biāo)準(zhǔn),保證所開發(fā)的構(gòu)件確實(shí)是可復(fù)用的。以下分別考慮評(píng)價(jià)活動(dòng)、度量和測(cè)試過程。(1)評(píng)價(jià)(Evaluation)活動(dòng)與復(fù)用標(biāo)準(zhǔn)相符是QA審查的一個(gè)方面,跟蹤性審查則保證不會(huì)在相鄰開發(fā)階段的轉(zhuǎn)換過程中損失可復(fù)用性。QA具有持續(xù)的職能,評(píng)價(jià)活動(dòng)不能等到編碼結(jié)束后才開始。在軟件生命周期的每個(gè)階段,QA都執(zhí)行適當(dāng)?shù)脑u(píng)價(jià)以確保該階段的活動(dòng)符合復(fù)用標(biāo)準(zhǔn)和用戶需求。每次設(shè)計(jì)復(fù)審、每一特定的產(chǎn)品和階段活動(dòng)都應(yīng)伴隨有QA審查過程。對(duì)復(fù)用而言,需求分析和頂層設(shè)計(jì)階段的審查尤為重要,因?yàn)樗鼈兪强蓮?fù)用構(gòu)件開發(fā)的基礎(chǔ)。具體措施包括:(1)不僅要審查產(chǎn)品,更要審查開發(fā)過程。比如CASE工具是否被使用,是否起著預(yù)期的作用;構(gòu)件的改動(dòng)是否處于配置管理過程的控制之下,測(cè)試是否按計(jì)劃進(jìn)行了等。(2)利用審查清單(Checklist)和自動(dòng)工具,能夠覆蓋所有關(guān)鍵問題,幫助記錄審查結(jié)果和準(zhǔn)備問題報(bào)告。(3)執(zhí)行需求/設(shè)計(jì)/代碼/測(cè)試之間的跟蹤性QA審查。(4)評(píng)估本項(xiàng)目采用的復(fù)用標(biāo)準(zhǔn)的有效性,并進(jìn)行改進(jìn)。(2)度量度量主要三個(gè)作用:度量構(gòu)件的可復(fù)用性,評(píng)估復(fù)用項(xiàng)目并估測(cè)復(fù)用的預(yù)期收益,為復(fù)用庫提供所需的信息。復(fù)用度量(ReuseMetrics)的收益者主要不是初始項(xiàng)目開發(fā)組,而是實(shí)施復(fù)用的整個(gè)組織。首先應(yīng)該定義一組度量指標(biāo)及其相關(guān)關(guān)系,然后再收集所需的度量信息。復(fù)用度量指標(biāo)可能包括:為軟件增加可復(fù)用性帶來的附加成本,構(gòu)件的復(fù)用次數(shù),各種構(gòu)件(分析、設(shè)計(jì)、代碼、測(cè)試構(gòu)件)的構(gòu)成比例,構(gòu)件被修改后復(fù)用的次數(shù),復(fù)用對(duì)于項(xiàng)目進(jìn)度的影響等。這些度量有助于使軟件復(fù)用的成本合理化,為估計(jì)下一個(gè)項(xiàng)目的進(jìn)度和成本提供經(jīng)驗(yàn)。另外要收集復(fù)用庫需要的度量信息,有條件的用戶可以使用度量工具。(3)測(cè)試過程測(cè)試活動(dòng)既要保證構(gòu)件的質(zhì)量和強(qiáng)壯性,又要保證整個(gè)項(xiàng)目的復(fù)用需求被滿足。應(yīng)該將每個(gè)構(gòu)件作為獨(dú)立的產(chǎn)品進(jìn)行比單元測(cè)試更加嚴(yán)格的測(cè)試。對(duì)構(gòu)件的測(cè)試也應(yīng)該作為構(gòu)件的一部分來管理,不要在測(cè)試中加入構(gòu)件本身沒有的平臺(tái)相關(guān)性和系統(tǒng)相關(guān)性,在修改構(gòu)件時(shí)應(yīng)該說明如何修改相應(yīng)的測(cè)試用例,測(cè)試結(jié)果應(yīng)該表明構(gòu)件與需求相符。●對(duì)構(gòu)件的所有接口進(jìn)行測(cè)試,測(cè)試數(shù)據(jù)應(yīng)該覆蓋參數(shù)取值的所有組合?!駵y(cè)試每一條顯式聲明的可復(fù)用性需求。比如:對(duì)“可以將本構(gòu)件移植到ABC平臺(tái)上”這一需求的測(cè)試必須經(jīng)過實(shí)際移植,這種測(cè)試的代價(jià)很高,但卻是必須的。有時(shí)可以放寬類似的測(cè)試要求,改為“本構(gòu)件應(yīng)該遵循復(fù)用標(biāo)準(zhǔn)中所有關(guān)于可移植性的指導(dǎo)原則”?!窈唵蔚恼f“某測(cè)試針對(duì)某構(gòu)件”是不夠的,測(cè)試應(yīng)該直接與與構(gòu)件的不同需求相對(duì)應(yīng)。這樣就允許在復(fù)用者只使用構(gòu)件的一部分功能時(shí)裁剪構(gòu)件的測(cè)試集合。5、文檔構(gòu)件的文檔構(gòu)成其復(fù)用價(jià)值的一個(gè)關(guān)鍵部分,它除了有通常文檔的作用外,還為復(fù)用者提供了明確的指導(dǎo)。(1)應(yīng)用傳統(tǒng)的文檔標(biāo)準(zhǔn)構(gòu)件的文檔(也是構(gòu)件的一部分)會(huì)比大多數(shù)常規(guī)文檔用到的更多,它應(yīng)該符合已經(jīng)被復(fù)用者團(tuán)體所接受的文檔標(biāo)準(zhǔn)。在開發(fā)構(gòu)件的文檔時(shí),應(yīng)該考慮復(fù)用者的特殊需求,同時(shí)要確保文檔與代碼的一致性。文檔還必須能幫助復(fù)用者理解和使用構(gòu)件。構(gòu)件的文檔本身也可作為文檔構(gòu)件,應(yīng)該采用一致的組織結(jié)構(gòu)和文檔格式,具有清晰完整的風(fēng)格和機(jī)器可讀的形式。每個(gè)構(gòu)件的文檔都應(yīng)該是完備的和自包含的,能夠分隔成與可復(fù)用代碼構(gòu)件一樣的單元。這就是說,使用戶易于得到只與他關(guān)心的構(gòu)件有關(guān)的文檔,不同構(gòu)件的文檔應(yīng)該相互獨(dú)立,避免過多的外部依賴和相互參照。(2)為復(fù)用庫準(zhǔn)備文檔和復(fù)用者手冊(cè)提交給復(fù)用庫的構(gòu)件需要附加特殊的文檔幫助對(duì)構(gòu)件進(jìn)行分類、標(biāo)記和提取,這些文檔與項(xiàng)目開發(fā)所需的文檔是分開的,通常包括構(gòu)件功能的摘要描述和構(gòu)件對(duì)環(huán)境的依賴(依賴某個(gè)DBMS、某種數(shù)據(jù)格式、某個(gè)版本的編譯器等),必要時(shí)提供構(gòu)件的分類信息。這些文檔的內(nèi)容和格式由不同的復(fù)用庫確定。另外,還要提供構(gòu)件的評(píng)價(jià)信息(盡可能包括所有的質(zhì)量度量和可用性度量),標(biāo)明構(gòu)件的顯著問題以及對(duì)它的改進(jìn)建議。在構(gòu)件的摘要與代碼前言中應(yīng)該聲明復(fù)用者受到的商業(yè)上和法律上的限制。如果構(gòu)件在物理上不存放于庫中,則說明獲取該構(gòu)件的方法。復(fù)用者手冊(cè)為希望評(píng)價(jià)、修改和使用構(gòu)件的用戶提供了額外的支持,圖1為NATO推薦的手冊(cè)四、NATO的可復(fù)用構(gòu)件庫管理標(biāo)準(zhǔn)構(gòu)件庫是一個(gè)包括人員、工具和過程的組織,主要目的是提供軟件生命周期產(chǎn)品的復(fù)用機(jī)制以滿足特定的軟件代價(jià)-效益和生產(chǎn)率的目標(biāo),并作為開發(fā)可復(fù)用軟件構(gòu)件和基于可復(fù)用構(gòu)件開發(fā)這兩個(gè)生命周期的聯(lián)系中介。這里將對(duì)NATO的可復(fù)用構(gòu)件庫管理標(biāo)準(zhǔn)作一些簡要介紹。1.構(gòu)件的入庫一旦標(biāo)明了對(duì)可復(fù)用軟件構(gòu)件的需求,就需要去獲得滿足這些需求的實(shí)際構(gòu)件,使其遵循NATO的軟件復(fù)用標(biāo)準(zhǔn),并加入到構(gòu)件庫中,以等待軟件工程師來檢索,這就是構(gòu)件的整個(gè)入庫過程。(1)對(duì)構(gòu)件的評(píng)價(jià)和分級(jí)構(gòu)件庫應(yīng)對(duì)每個(gè)推薦入庫的可復(fù)用構(gòu)件進(jìn)行定性和定量的評(píng)價(jià),主要目的是:*澄清對(duì)構(gòu)件的需求,保證能正確理解和實(shí)現(xiàn)構(gòu)件提供者的愿望。*適當(dāng)拓寬對(duì)構(gòu)件的需求,以便能滿足多個(gè)用戶的需要。*對(duì)需求定量化,并預(yù)測(cè)該構(gòu)件將帶來的收益。*評(píng)估構(gòu)件庫在獲得和對(duì)該構(gòu)件入庫時(shí)需付出的代價(jià)。*對(duì)推薦的構(gòu)件按優(yōu)先級(jí)分級(jí),以便能有效地分配稀缺的資源。通常構(gòu)件提供者對(duì)構(gòu)件的應(yīng)用都有自己的想法,但構(gòu)件庫應(yīng)保證該構(gòu)件能應(yīng)用到所有可能的目標(biāo)程序和環(huán)境,如有必要,應(yīng)拓寬對(duì)構(gòu)件的需求。同時(shí)構(gòu)件庫應(yīng)比較復(fù)用該構(gòu)件所需的代價(jià)和所獲得的收益,以此作為對(duì)構(gòu)件分級(jí)的主要標(biāo)準(zhǔn)。一個(gè)理想的構(gòu)件還包括下列特性:(1)滿足用戶已提出的特定需求。(2)廣泛的適用性。(3)高度的可見性,即構(gòu)件在一個(gè)廣為人知的項(xiàng)目中使用過。(4)兼容性。(5)復(fù)雜性低,即構(gòu)件易于理解和組裝。(6)解決了一些開發(fā)或測(cè)試中的比較乏味的問題。(7)具有吸引力,即構(gòu)件采用了通用的或新的技術(shù),良好設(shè)計(jì)的用戶界面等。構(gòu)件庫應(yīng)與構(gòu)件提供者一起復(fù)審構(gòu)件的評(píng)價(jià)結(jié)果,并將評(píng)價(jià)結(jié)果與構(gòu)件保存在一起。(2)構(gòu)件的獲取構(gòu)件庫中的構(gòu)件是來自軟件生命周期各個(gè)階段的可復(fù)用產(chǎn)品,為使用戶能快速準(zhǔn)確地檢索到所需構(gòu)件,并能正確地理解、安裝和使用,構(gòu)件在入庫時(shí)至少應(yīng)提供以下部分:●為復(fù)用者提供的有關(guān)構(gòu)件特性、安裝、驗(yàn)證及操作的完整指令(即復(fù)用者手冊(cè))●構(gòu)件的摘要信息●構(gòu)件的分類信息●實(shí)際要復(fù)用的部分(源代碼或文檔)●構(gòu)件的測(cè)試計(jì)劃、目標(biāo)、腳本及預(yù)期的結(jié)果構(gòu)件庫中不需要存放每個(gè)構(gòu)件的實(shí)際拷貝。當(dāng)然擁有構(gòu)件的一份拷貝會(huì)便于提取和管理,但在下列情況下只能保存構(gòu)件的索引:(1)構(gòu)件是由某個(gè)外部組織維護(hù)和發(fā)布的。(2)構(gòu)件帶有使用限制或許可協(xié)議。(3)構(gòu)件是可執(zhí)行的程序。由于可執(zhí)行程序在傳輸時(shí)可靠性難以保證,因此只將源代碼和文檔存入構(gòu)件庫。2.構(gòu)件庫的分類模式刻面分類方法將關(guān)鍵詞置于特定的語境中,從而避免了關(guān)鍵詞的雜亂無章。而且它通過從不同視角(刻面)來觀察要分類的項(xiàng),從而導(dǎo)致了更加精確和準(zhǔn)確的分類。多數(shù)專為構(gòu)件的檢索而設(shè)計(jì)的工具都采用這種方法。NATO標(biāo)準(zhǔn)推薦在構(gòu)件庫中采用刻面分類模式(FacetedClassificationScheme),對(duì)構(gòu)件的分類使用一組{刻面,刻面術(shù)語}對(duì),也稱為描述符(descriptors),它們按下面的規(guī)則組合起來:刻面(Facet)是一個(gè)單詞或短語的固定集合,用于描述構(gòu)件的某個(gè)方面或視角(viewpoint)。刻面術(shù)語(Facetterm)是來自構(gòu)件庫特定刻面術(shù)語列表中的單詞或短語。在新庫的初始階段,刻面術(shù)語個(gè)數(shù)迅速增長,此時(shí)構(gòu)件庫小組將逐漸熟悉用戶首選的(preferred)術(shù)語。但是刻面術(shù)語不久后必須要保持穩(wěn)定,此后只是偶爾加入新的術(shù)語。對(duì)每個(gè)特定構(gòu)件的分類可以使用任意數(shù)量的刻面-術(shù)語對(duì),即每個(gè)刻面可以出現(xiàn)任意多次(包括零次)。但是出于性能的考慮,對(duì)于“對(duì)象”(object)或“功能”(function)刻面應(yīng)至少出現(xiàn)一個(gè)術(shù)語??堂娴臄?shù)量應(yīng)比較少(一般是五到十個(gè),最多可達(dá)到十五個(gè))。每個(gè)刻面應(yīng)該認(rèn)真選擇,對(duì)于用戶來說是清晰和無二義的,但不要求不同刻面之間相互獨(dú)立,也不必要應(yīng)用到每個(gè)構(gòu)件上。一個(gè)典型的刻面集合可以包括:對(duì)象(object)──構(gòu)件實(shí)現(xiàn)或操作的軟件工程抽象,如stack,window或sensor等。功能(function)──構(gòu)件完成的過程或動(dòng)作,如sort,assign或delete。算法(algorithm)──與某個(gè)功能或?qū)ο笙嚓P(guān)聯(lián)的特殊方法名。例如對(duì)于描述符{function,sort}來說,bubble即是一種算法。構(gòu)件類型(RSCtype)──構(gòu)件所處的特定的軟件開發(fā)階段,如code,design或requirement。語言(language)──構(gòu)造構(gòu)件所使用的方法或語言,如Ada,C++,postcript,English或French。環(huán)境(environment)──構(gòu)件專用的任何硬件、軟件或協(xié)議,如UNIX,MS-DOS,postcript或sql。通過對(duì)構(gòu)件每個(gè)適用的刻面賦予適當(dāng)?shù)目堂嫘g(shù)語即可完成對(duì)構(gòu)件的分類,這樣用戶可以根據(jù)刻面術(shù)語來檢索構(gòu)件。下表是對(duì)一個(gè)排序例程的構(gòu)件分類:此時(shí)“對(duì)象”刻面消失了,因?yàn)橐判虻膶?duì)象現(xiàn)在是任意類型的類屬參數(shù)。用戶不必熟悉所有的分類術(shù)語,許多自動(dòng)化的查詢系統(tǒng)允許在查詢時(shí)使用同義詞。同義詞(synonyms)是一組具有相同意義的刻面術(shù)語,共同表示一個(gè)概念。例如delete,remove,erase和pop都是同義詞。在一組同義詞中選一個(gè)術(shù)語作為代表(representative)術(shù)語,用于實(shí)際的構(gòu)件分類。其余的同義詞存放于一個(gè)稱為同義詞詞典(thesaurus)的列表中,以代表術(shù)語作為索引。對(duì)構(gòu)件進(jìn)行分類和查詢時(shí),這些同義詞與代表術(shù)語是完全等價(jià)的。在NATO標(biāo)準(zhǔn)中給出了對(duì)構(gòu)件分類的基本步驟(即如何為構(gòu)件選擇術(shù)語):1)檢查構(gòu)件所有可獲得的文檔(包括源代碼),并寫一個(gè)構(gòu)件摘要的草案。此時(shí)應(yīng)該對(duì)構(gòu)件有了一個(gè)清晰的理解。2)觀看每個(gè)刻面的定義,考慮它是如何應(yīng)用到構(gòu)件的。根據(jù)每個(gè)刻面寫下自己心中的術(shù)語,此時(shí)不用考慮刻面中已有的代表術(shù)語。3)將你想好的術(shù)語與刻面中的術(shù)語進(jìn)行協(xié)調(diào)。盡量用刻面的表示術(shù)語或它的同義詞來分類構(gòu)件,該術(shù)語必須是意義最清晰的,而且是無二義的。如果沒有合適的術(shù)語,就需要向構(gòu)件庫建議加入新術(shù)語。4)列出構(gòu)件在每個(gè)刻面中的分類術(shù)語,如果是新術(shù)語,就用某種顯著的方式標(biāo)注出來。5)如有必要,分類完畢后應(yīng)修正構(gòu)件的摘要。6)若系統(tǒng)產(chǎn)生了一個(gè)關(guān)于該構(gòu)件的“查詢失敗”日志,此時(shí)應(yīng)根據(jù)用戶的查找需求復(fù)審對(duì)構(gòu)件的分類術(shù)語,可能它需要更新了。構(gòu)件庫的分類模式應(yīng)設(shè)計(jì)得易于增加和修改,這樣才能增強(qiáng)它的描述能力??堂娣诸惸J椒譃榭堂婧托g(shù)語兩部分,它們都可以被修改,但修改的環(huán)境是不同的??堂婕咸峁┝朔诸惸J降幕窘Y(jié)構(gòu),因此刻面應(yīng)該謹(jǐn)慎選擇,以便能滿足各種各樣的分類需要。對(duì)刻面集合的修改需要嚴(yán)格的比較和分析,而且本身就是一項(xiàng)艱苦的工作,因?yàn)闃?gòu)件庫中所有構(gòu)件可能都需要重新分類。而對(duì)刻面術(shù)語的增加可以在對(duì)新構(gòu)件分類時(shí)按需要隨時(shí)進(jìn)行,在增加新術(shù)語時(shí)也有如下原則:(1)確保新術(shù)語不是現(xiàn)有術(shù)語的同義詞。若新術(shù)語與刻面中現(xiàn)有術(shù)語同義,則應(yīng)作為同義詞加入。(2)在同一刻面中的術(shù)語名稱必須唯一,甚至不能與刻面中其它術(shù)語的同義詞同名。但不同刻面中的術(shù)語及同義詞可以同名。(3)新術(shù)語應(yīng)與刻面中原有術(shù)語保持風(fēng)格一致,如都用小寫字母,或都使用單數(shù)名詞。(4)加入新術(shù)語時(shí),應(yīng)同時(shí)加入該術(shù)語明顯的同義詞。另外,應(yīng)定期刪除系統(tǒng)中從未使用過的術(shù)語。3.構(gòu)件的配置管理從一個(gè)RSC進(jìn)入構(gòu)件庫中并可以被項(xiàng)目工程師獲得的時(shí)刻起,它就被作為一個(gè)產(chǎn)品來管理了。構(gòu)件庫的增量式改進(jìn)(incrementalimprovement)的方法和對(duì)可復(fù)用產(chǎn)品廣為散布(dispersion)的特點(diǎn)都需要有效的配置管理。對(duì)RSC的配置管理,在很大程度上同所有其它項(xiàng)目產(chǎn)品的配置管理一樣,是經(jīng)過培訓(xùn)的專門的CM小組的責(zé)任。構(gòu)件庫可以提供這樣一種服務(wù),即作為復(fù)用者和配置管理小組之間的聯(lián)絡(luò)員,同時(shí)也對(duì)維護(hù)進(jìn)行協(xié)調(diào)。當(dāng)構(gòu)件庫小組沒有按常規(guī)對(duì)RSC進(jìn)行維護(hù)時(shí),RSC的客戶(復(fù)用該構(gòu)件的工程師)就有責(zé)任對(duì)維護(hù)問題作出快速而有效的回應(yīng)。一般來說,應(yīng)該由RSC的制作者或用戶來進(jìn)行維護(hù)。他們都應(yīng)該有興趣修正RSC的問題或增加新功能。由誰來完成這件事并不重要,構(gòu)件庫主要關(guān)心解決問題時(shí)不要重復(fù)勞動(dòng)。構(gòu)件庫小組應(yīng)該記錄下復(fù)用者對(duì)構(gòu)件每次提取的情況,以此作為對(duì)構(gòu)件進(jìn)行配置管理和維護(hù)的依據(jù),同時(shí)這對(duì)構(gòu)件庫性能的改進(jìn)也很有幫助。大部分關(guān)于提取的信息可以由構(gòu)件庫的查詢和檢索工具自動(dòng)收集,包括RSC的使用、問題報(bào)告、失敗的查詢和其它構(gòu)件配置管理所需的數(shù)據(jù),并以此來改進(jìn)構(gòu)件庫的查詢機(jī)制。構(gòu)件庫小組還應(yīng)追蹤以各種方式從構(gòu)件庫中提取過構(gòu)件的復(fù)用者,并堅(jiān)持用構(gòu)件庫工具追蹤對(duì)RSC的復(fù)用,這樣復(fù)用者就可以毫不費(fèi)力地進(jìn)行使用注冊(cè),同時(shí)也由此得到了復(fù)用者的合作。一般來說,每個(gè)復(fù)用者在查詢和檢索系統(tǒng)中都有一個(gè)帳戶,每次提取時(shí),復(fù)用者只需要提供一個(gè)“反饋日期”的協(xié)議,表明自己將何時(shí)反饋回該RSC的使用意見以及復(fù)用的經(jīng)驗(yàn)。NATO標(biāo)準(zhǔn)推薦將以下四個(gè)度量作為對(duì)構(gòu)件質(zhì)量和可復(fù)用性的評(píng)價(jià)標(biāo)準(zhǔn):*檢查次數(shù)(Numberofinspection)。復(fù)用者考慮復(fù)用該構(gòu)件的次數(shù)。*復(fù)用次數(shù)(Numberofreuses)。復(fù)用者實(shí)際復(fù)用該構(gòu)件的次數(shù)。*復(fù)雜性(Complexity)。一般是基于McCabe提出的軟件復(fù)雜性評(píng)價(jià)方法。*問題報(bào)告次數(shù)(Numberofproblemreports)。構(gòu)件已知的顯著缺陷或錯(cuò)誤。4.構(gòu)件庫工具的需求構(gòu)件庫的工具分為兩類,即由構(gòu)件庫工作人員(staff)使用的管理工具和由普通的用戶使用的查詢及檢索工具。這里分別介紹NATO標(biāo)準(zhǔn)對(duì)這些工具的需求。(1)構(gòu)件庫管理工具的需求構(gòu)件庫工作人員使用的管理工具將直接影響到庫的使用效率,如果沒有足夠的工具支持,對(duì)構(gòu)件的維護(hù)是不可想象的。支持對(duì)構(gòu)件的分類。如同圖書館將書進(jìn)行分類以便于借閱一樣,復(fù)用庫也必須對(duì)構(gòu)件進(jìn)行分類。工具必須用一種易于使用的方法將一組分類術(shù)語與構(gòu)件相關(guān)聯(lián),并能支持基于這種分類的快速查找??堂娣诸惸J郊词且环N有效的分類方法。支持對(duì)分類機(jī)制的維護(hù)。構(gòu)件庫的分類模式不能是靜態(tài)的,隨著各種技術(shù)的發(fā)展,刻面分類術(shù)語將不斷動(dòng)態(tài)地增加和刪除。生成事務(wù)(transaction)和狀態(tài)報(bào)告。構(gòu)件庫必須能生成日志記錄,并基于這些日志產(chǎn)生報(bào)告。報(bào)告至少應(yīng)包括:(1)構(gòu)件的使用情況。包括誰提取過該構(gòu)件,提取時(shí)間,用于什么項(xiàng)目,必要時(shí)還應(yīng)包括用戶的聯(lián)絡(luò)地址。這樣便于發(fā)布問題報(bào)告、修改聲明、需求評(píng)價(jià)及性能度量。(2)分類模式。按刻面列出描述過構(gòu)件的術(shù)語。(3)用戶信息。包括用戶的名稱、電話號(hào)碼、郵件地址和正在從事的項(xiàng)目。(4)構(gòu)件的歷史。包括構(gòu)件的修改日志(這將映射到問題報(bào)告中)、反饋日志(包括提取過但實(shí)際沒有使用的構(gòu)件)、與其它構(gòu)件間的關(guān)系(尤其是繼承和依賴關(guān)系)。(5)問題報(bào)告。對(duì)每個(gè)構(gòu)件記錄它較為突出的問題。支持對(duì)構(gòu)件和分類詞匯的配置管理。構(gòu)件庫系統(tǒng)必須避免對(duì)庫中構(gòu)件未經(jīng)授權(quán)的修改(注意用戶可以對(duì)提取出的構(gòu)件進(jìn)行修改)。構(gòu)件庫工具必須記錄構(gòu)件的版本變化,以及用戶針對(duì)構(gòu)件的問題報(bào)告或?yàn)榱嗽鰪?qiáng)功能而對(duì)構(gòu)件進(jìn)行的修改。同樣,對(duì)用于分類構(gòu)件的術(shù)語的修改也要嚴(yán)格控制。支持對(duì)問題報(bào)告的追蹤。構(gòu)件庫應(yīng)作為解決構(gòu)件問題的協(xié)調(diào)者。由于構(gòu)件間存在各種關(guān)系,構(gòu)件又是采用增量式改進(jìn)的策略,構(gòu)件庫工具必須要考慮到一個(gè)問題的解決對(duì)其它相關(guān)構(gòu)件的影響(尤其是具有繼承關(guān)系的構(gòu)件)。支持對(duì)用戶和項(xiàng)目的追蹤。為了發(fā)布構(gòu)件的新版本和問題報(bào)告,獲取使用反饋,構(gòu)件庫必須要知道復(fù)用過構(gòu)件的項(xiàng)目和用戶的聯(lián)絡(luò)地址。(2)構(gòu)件庫用戶工具的需求構(gòu)件庫的用戶工具指一個(gè)為復(fù)用者提供的有效的構(gòu)件查詢和檢索系統(tǒng),這時(shí)一項(xiàng)很關(guān)鍵的技術(shù),因?yàn)樗鉀Q的是阻礙復(fù)用的一個(gè)最大障礙,即減少查詢的時(shí)間和代價(jià),以及識(shí)別和獲取可復(fù)用產(chǎn)品的困難。以下特性是用戶工具必不可少的:簡易的規(guī)約。復(fù)用者不用學(xué)習(xí)一種新語言或熟悉一些復(fù)雜的界面即可描述出對(duì)構(gòu)件的需求。反復(fù)的精化。系統(tǒng)應(yīng)該允許并協(xié)助復(fù)用者根據(jù)每次查詢的結(jié)果逐步修正對(duì)構(gòu)件的需求。詳細(xì)的信息。當(dāng)查詢到的候選構(gòu)件數(shù)量已縮小到一個(gè)適當(dāng)?shù)姆秶螅瑥?fù)用者應(yīng)有權(quán)訪問構(gòu)件的摘要、質(zhì)量評(píng)價(jià)、軟件度量及其它必要的信息,這樣可以找出與需求最為匹配的構(gòu)件。五、NATO的軟件復(fù)用過程標(biāo)準(zhǔn)NATO的軟件復(fù)用過程標(biāo)準(zhǔn)為希望使用NATO復(fù)用庫中的可復(fù)用軟件構(gòu)件進(jìn)行復(fù)用實(shí)踐的軟件項(xiàng)目提供指南。復(fù)用庫提供了復(fù)用的基礎(chǔ),但構(gòu)件庫本身并不能實(shí)現(xiàn)復(fù)用,這時(shí)還需要一個(gè)特定的過程(procedure)來指導(dǎo)軟件項(xiàng)目有效地使用構(gòu)件庫。這個(gè)過程與前面可復(fù)用構(gòu)件的開發(fā)過程非常相似,正好是一個(gè)生產(chǎn)-消費(fèi)的關(guān)系。1.需求分析和領(lǐng)域分析(1)建立復(fù)用需求并盡早識(shí)別復(fù)用機(jī)會(huì)對(duì)軟件系統(tǒng)的需求規(guī)約將直接影響到構(gòu)件庫中構(gòu)件的復(fù)用機(jī)會(huì),因此在需求分析階段就應(yīng)識(shí)別出復(fù)用的機(jī)會(huì)并建立對(duì)復(fù)用的需求。具體措施包括:1)在提交具體需求之前檢查構(gòu)件庫中是否有可以應(yīng)用的構(gòu)件。庫中可用的構(gòu)件及其結(jié)構(gòu)和功能的知識(shí)將影響系統(tǒng)的需求規(guī)約。2)避免對(duì)需求的過分細(xì)化。在需求分析中說明了過多的實(shí)現(xiàn)細(xì)節(jié)將阻礙對(duì)已有構(gòu)件的復(fù)用,例如,要是需求分析中聲明“從一個(gè)數(shù)組中讀取……”,如果存在一個(gè)可以用較短時(shí)間或較少資源實(shí)現(xiàn)相同功能的隊(duì)列或鏈表,可能就無法復(fù)用該構(gòu)件了。3)用與構(gòu)件庫分類模式一致的術(shù)語來說明系統(tǒng)需求。需求分析中使用的對(duì)象和功能名稱應(yīng)盡量與構(gòu)件庫中的分類術(shù)語保持一致,這樣增大了找到構(gòu)件來復(fù)用的可能性。4)選擇支持復(fù)用的開發(fā)方法與開發(fā)工具。大多數(shù)設(shè)計(jì)方法都支持復(fù)用,但對(duì)復(fù)用的支持程度不同。例如結(jié)構(gòu)化方法支持函數(shù)級(jí)的復(fù)用,這種復(fù)用比較簡單,運(yùn)用也較為普遍,但主要用在詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試階段。而面向?qū)ο蠓椒〝U(kuò)展了復(fù)用在軟件生命周期的適用范圍,使得在需求分析階段就可以開始復(fù)用。5)用構(gòu)件類的形式標(biāo)識(shí)出每個(gè)具體的復(fù)用需求,但不要指定具體復(fù)用哪個(gè)構(gòu)件,除非該構(gòu)件的質(zhì)量和可靠性是明確可知的。(2)領(lǐng)域分析的產(chǎn)品應(yīng)該在需求分析階段盡量復(fù)用已有領(lǐng)域分析的結(jié)果,因此有必要再介紹一下領(lǐng)域分析的過程和結(jié)果。在NATO標(biāo)準(zhǔn)中,領(lǐng)域分析過程主要可分為以下四個(gè)步驟:1)知識(shí)獲取(KnowledgeAcquisition)──收集和分析特定問題領(lǐng)域的信息,并以領(lǐng)域內(nèi)部和外部對(duì)象的形式來表示。2)領(lǐng)域定義(DomainDefinition)──對(duì)在知識(shí)獲取階段標(biāo)識(shí)的對(duì)象進(jìn)行分析,以決定該領(lǐng)域的具體邊界。3)建模(ModelFormulation)──對(duì)屬于該領(lǐng)域內(nèi)的對(duì)象建模,以進(jìn)一步理解它們?cè)陬I(lǐng)域中的角色。4)模型演化(ModelEvolution)──對(duì)模型進(jìn)行進(jìn)一步地分析和精化,以開發(fā)出領(lǐng)域的分類(taxonomy)模型,用于證明(demonstrate)模型的結(jié)構(gòu)和語義。領(lǐng)域分析過程通常會(huì)產(chǎn)生下列輸出:*功能層次(FunctionalHierarchy)──功能需求的一個(gè)層次性模型。*實(shí)體-關(guān)系模型(Entity-RelationshipModel)──在領(lǐng)域中定義的對(duì)象間關(guān)系和接口的模型。*類屬軟件構(gòu)架(GenericSoftwareArchitecture)──將E-R模型中描述的對(duì)象表示為軟件構(gòu)件。*分類法(Taxonomy)──提供一個(gè)分類方案以定義領(lǐng)域中的對(duì)象。*標(biāo)準(zhǔn)需求(StandardRequirements)──在該問題域中任何系統(tǒng)都必須實(shí)現(xiàn)的一套一般性的需求。*領(lǐng)域特定語言(Domain-SpecificLanguage)──用于描述和分類領(lǐng)域特定構(gòu)件的詞匯(vocabulary)。*設(shè)計(jì)和開發(fā)準(zhǔn)則(DesignandDevelopmentGuidelines)──基于組成該領(lǐng)域的構(gòu)架和構(gòu)件的一個(gè)一般性的開發(fā)框架。(3)復(fù)用構(gòu)架(architecture)和子系統(tǒng)對(duì)大規(guī)模構(gòu)件的復(fù)用,無論是復(fù)用構(gòu)架還是復(fù)用構(gòu)架的代碼實(shí)現(xiàn),都可以給自己的項(xiàng)目帶來巨大的收益。但如果不認(rèn)真對(duì)待,也會(huì)有很大的風(fēng)險(xiǎn)。NATO標(biāo)準(zhǔn)給出了一些必須要注意的建議:(1)檢查現(xiàn)有的可復(fù)用構(gòu)架和子系統(tǒng)與所開發(fā)系統(tǒng)的接口和設(shè)計(jì)方法間的兼容性。(2)評(píng)價(jià)復(fù)用現(xiàn)有的構(gòu)架和子系統(tǒng)會(huì)產(chǎn)生的影響。在帶修改的復(fù)用與重新開發(fā)之間作一個(gè)代價(jià)-效益的折衷分析,并根據(jù)識(shí)別出的構(gòu)件評(píng)價(jià)復(fù)用對(duì)項(xiàng)目/進(jìn)度的影響。(3)將構(gòu)架構(gòu)件與需求分析的其它結(jié)果進(jìn)行集成。當(dāng)構(gòu)件與開發(fā)方法相符合時(shí)(例如結(jié)構(gòu)化的構(gòu)件對(duì)應(yīng)結(jié)構(gòu)化的開發(fā)方法,面向?qū)ο蟮臉?gòu)件對(duì)應(yīng)面向?qū)ο蟮拈_發(fā)方法),集成是很簡單的,只需將對(duì)象或模塊放到系統(tǒng)中的適當(dāng)位置。而當(dāng)構(gòu)件與開發(fā)方法不符時(shí)(如結(jié)構(gòu)化構(gòu)件與面向?qū)ο蟮拈_發(fā)方法),集成是很困難的。NATO對(duì)此有如下建議:1.將結(jié)構(gòu)化構(gòu)件封裝成一個(gè)具有可見接口的抽象數(shù)據(jù)類型對(duì)象,以便集成到面向?qū)ο笙到y(tǒng)中。2.將一個(gè)面向?qū)ο蟮臉?gòu)件在一個(gè)結(jié)構(gòu)化模塊層次的適當(dāng)位置進(jìn)行重復(fù)(repetition)。這種集成的關(guān)鍵是構(gòu)件的粒度,一般大粒度的構(gòu)件(如子系統(tǒng))更易于集成。2.設(shè)計(jì)階段軟件設(shè)計(jì)是發(fā)生復(fù)用的關(guān)鍵階段,復(fù)用設(shè)計(jì)構(gòu)件對(duì)實(shí)現(xiàn)代碼復(fù)用是必要的,甚至在不復(fù)用代碼時(shí)也是很有價(jià)值的。(1)在設(shè)計(jì)時(shí)要考慮完整地復(fù)用已有的系統(tǒng)和子系統(tǒng)的設(shè)計(jì)當(dāng)現(xiàn)有系統(tǒng)或子系統(tǒng)的設(shè)計(jì)滿足一定數(shù)量的需求時(shí),應(yīng)考慮將整個(gè)設(shè)計(jì)作為一個(gè)構(gòu)件來復(fù)用,例如現(xiàn)有產(chǎn)品中的電子郵件系統(tǒng)、數(shù)據(jù)庫查詢或出錯(cuò)處理子系統(tǒng)等。復(fù)用的構(gòu)件粒度越大,節(jié)省的時(shí)間越多。在開始設(shè)計(jì)前檢查可用的構(gòu)件,并標(biāo)識(shí)

溫馨提示

  • 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)論