漫淡(8):軟件的重用

發表于:2008-02-20來源:作者:點擊數: 標簽:軟件的重用
設計軟件可以產生組件、架構和應用程序,如果在設計階段更多地關注識別和設計組件和架構,那么在應用程序中就可以更多地進行軟件重用。 在設計組件時,盡量考慮組件的通用性,使盡可能多的不同應用程序能夠使用,而對于使用組件的應用程序而言,組件是黑箱,
設計軟件可以產生組件、架構和應用程序,如果在設計階段更多地關注識別和設計組件和架構,那么在應用程序中就可以更多地進行軟件重用。

  在設計組件時,盡量考慮組件的通用性,使盡可能多的不同應用程序能夠使用,而對于使用組件的應用程序而言,組件是黑箱,即利用組件的應用程序開發者不必了解這些組件的具體實現。典型的組件有:鏈表、數組、字符串、按鈕和復選框。當程序員發現他在重復地寫類似的代碼,這時就隱藏著“組件”,程序員這時應花時間,挖掘出組件,即抽取這些代碼代的公共成分,并為它創建統一的、通用的接口時,組件就誕生。就這個意義來講,函數就是組件,但組件比函數更廣泛,是函數概念的擴展。例如:類可作為組件,它含了更多的東西,一個組件含多個函數(方法)。

  架構是軟件的骨架結構,類似與建筑的框架。對于類似的應用程序可以選用類似的架構,這就是架構的重用。對于利用架構進行軟件設計時,架構是白箱。因此,開發者應理解架構,并使用適合的語言實現這個架構,架構既是可重用設計(代碼重寫),也是可重用代碼(連用代碼一并重用)。

  軟件重用的理想狀態是:應用軟件是由通用的組件和專用的實體充實到一個通用的架構中。

  軟件重用被看做是解決軟件危機的良藥,CBD模型(以組件為基礎的設計)不再強調軟件的開發,而是著眼于軟件的組裝,利用被嚴格地約束和封裝的組件,快速地搭建應用系統。在這個模型中,軟件的開發分為兩個階段:準備組件和組裝組件。而這兩個階段又是可以并行的,它們既有很強的獨立性,又有一種互動關系。對于應用程序的開發來說,應盡量考慮使用已有組件(在組件庫中尋找),如果缺某方面的組件,那么可以有兩種策略來處理:一是啟動組件開發;二是暫不開發新組件,而是先盡量完成應用的開發,以后,再對該部分進行總結、整理,看是否有公共功能可以提煉出組件供以后使用,如果有,則啟動新組件的開發。這說明組件開發的需求不是憑空想像的,實際上都是來源于實際應用開發的需要。CBD思想直接導致了一類開發工具與方法的研究,如RAD(快速應用開發)。

  面向對象技術,從設計的角度進一步強化了軟件內部的重用性。例如:

  1、被封裝的實體,向外提供服務公共接口功能而隱藏內部實現(這類似于組件作為黑盒被復用的情況),可以作為基本的重用單位,這些實體表現為類、類群(子系統)。

  2、類的繼承性允許我們重用代碼:類可以繼承其他類的行為,這些行為的代碼不必重寫。

  3、抽象類(不產生實例的類)是公共因子的高度抽象,它充分定義了類的行為(方法),但不需要完全實現,而是由子類重新定義方法(代碼實現)。這就是從設計角度重用抽象類的行為(雖然重寫了代碼,但重用了設計結果)。

  4、面向對象設計中,客戶/服務器建模:一個對象需要另一個對象的服務,提出請求的對象是“客戶”,接收請求并提供服務的對象是“服務器”??蛻襞c服務器的交互(單向的)方式由一個契約所描述。服務器就是一個運行時的復用單元(它為許多對象提供服務)。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97