認識基于構件的軟件開發方法

發表于:2008-02-21來源:作者:點擊數: 標簽:軟件開發
與傳統的軟件 開發 方式相比,基于構件的軟件開發方法有什么突破呢? 一、體系結構 軟件體系結構代表了系統公共的高層次的抽象,它是系統設計成敗的關鍵。其設計的核心是能否使用重復的體系模式。傳統的應用系統體系結構從基于主機的集中式框架,到在 網絡 的
與傳統的軟件開發方式相比,基于構件的軟件開發方法有什么突破呢?

    一、體系結構

    軟件體系結構代表了系統公共的高層次的抽象,它是系統設計成敗的關鍵。其設計的核心是能否使用重復的體系模式。傳統的應用系統體系結構從基于主機的集中式框架,到在網絡的客戶端上通過網絡訪問服務器的框架,都不能適應目前企業所處的商業環境,原因是:

    企業過分地依賴于某個供應商的軟件和硬件產品。這種單一供應商使得企業難以利用計算供應商的免費市場,將計算基礎設施的重要決定交給第三方處理,這顯然不利于企業在合作伙伴之間共享信息。

    不能適應遠程訪問的分布式、多層次異構系統。

    封裝的應用系統在出現某種組織需要時,難以用定制來維護系統,從而難以滿足多變的需求。

    不能實現分析、設計核心功能重用,最多只能實現代碼重用。

    如今,應用系統已經發展成為在Intranet和Internet上的各種客戶端可遠程訪問的分布式、多層次異構系統。CBSD為開發這樣的應用系統提供了新的系統體系結構。它是標準定義的、分布式、模塊化結構,使應用系統可分成幾個獨立部分開發,可用增量方式開發。

    這樣的體系結構實現了CBSD的以下幾點目標:

    能夠通過內部開發的、第三方提供的或市場上購買的現有構件,來集成和定制應用軟件系統。

    鼓勵在各種應用系統中重用核心功能,努力實現分析、設計的重用。

    系統都應具有靈活方便的升級和系統模塊的更新維護能力。

    封裝最好的實踐案例,并使其在商業條件改變的情況下,還能夠被采用,并能保留已有資源。

    由此看出,CDSD從系統高層次的抽象上解決了復用性與異構互操作性,這正是分布式網絡系統所希望解決的難題。

    二、開發過程

    傳統的軟件開發過程在重用元素、開發方法上都與CBSD有很大的不同。雖然面向對象技術促進了軟件重用,但是,只實現了類和類繼承的重用。在整個系統和類之間還存在很大的缺口。為填補這個缺口,人們曾想了許多方法,如系統體系結構、框架、設計模式等。

    自從構件出現以來,軟件的重用才得到了根本改變。CBSD實現了分析、設計、類等多層次上的重用。圖1顯示了它的重用元素分層實現。在分析抽象層上,重用元素有子系統、類;在設計層上重用元素有系統體系結構、子系統體系結構、設計模式、框架、容器、構件、類庫、模板、抽象類等。

 

    在軟件開發方法上,CBSD引導軟件開發從應用系統開發轉變為應用系統集成。建立一個應用系統需要重用很多已有的構件模塊,這些構件模塊可能是在不同的時間、由不同的人員開發的,并有各種不同的用途。在這種情況下,應用系統的開發過程就變成對構件接口、構件上下文以及框架環境一致性的逐漸探索過程。例如,在J2EE平臺上,用EJB框架開發應用系統,主要工作是將應用邏輯,按session Bean、entity Bean設計開發,并利用JTS事務處理的服務實現應用系統。其主要難點是事務劃分、構件的部署與開發環境配置。概括地說,傳統的軟件開發過程是串行瀑布式、流水線的過程;而CBSD是并發進化式,不斷升級完善的過程。圖2顯示了它們的不同。

 

    三、軟件方法學

    軟件方法學是從各種不同角度、不同思路去認識軟件的本質。傳統的軟件方法學是從面向機器、面向數據、面向過程、面向功能、面向數據流、面向對象等不斷創新的觀點反映問題的本質。整個軟件的發展歷程使人們越來越認識到應按客觀世界規律去解決軟件方法學問題。直到面向對象方法的出現,才使軟件方法學邁進了一大步。但是,高層次上的重用、分布式異構互操作的難點還沒有解決。CBSD發展到今天,才在軟件方法學上為解決這個難題提供了機會。它把應用業務和實現分離,即邏輯與數據的分離,提供標準接口和框架,使軟件開發方法變成構件的組合。因此,軟件方法學是以接口為中心,面向行為的設計。圖3是其開發過程。

 

    歸納起來,CBSD的軟件開發方法學應包括下面幾方面:

    對構件有明確的定義。

    基于構件的概念需要有構件的描述技術和規范,如UML、JavaBean、EJB、Servlet規范等。

    開發應用系統必須按構件裁剪劃分組織,包括分配不同的角色。

    有支持檢驗構件特性和生成文檔的工具,確保構件規范的實現和質量測試。

    總之,傳統的軟件方法學從草稿自頂向下進行,對重用沒有提供更多的輔助。CBSD的軟件方法學要豐富得多,它是即插即用,基于體系結構,以接口為中心,將構件有機組合,它把自頂向下和自底向上方法結合起來進行開發。

    四、開發組織機構

    傳統軟件的開發組織一般由分析員、設計員、程序員和測試員組成。對一個小的應用系統來說,一個熟練的開發人員,可能兼顧以上多個角色。但對CBSD來說,因為構件開發與應用系統集成往往是分開進行的,因此整個開發過程由六個角色來完成,他們是:

    構件開發者 也是構件供貨商,這些大多數是中間件構件提供者。

    應用構件集成者 針對某應用領域將已有構件組合成更大的構件模塊或容器, 作為系統部署的基本單元。

    應用系統部署者 將系統部署基本單元放入選定的平臺環境或基本框架中,完成軟件定制的要求。

    開發平臺服務器供應商 提供服務器、操作系統和數據庫等基本軟件。

    應用系統開發工具供應商 提供構件公共設施服務。

    系統管理員 配置硬件、網絡和操作系統,監督和維護應用系統者。

    這六個角色的工作專業性很強,要兼顧成為多面手很不容易。目前已形成構件開放市場,而且還很火紅。這也是當今軟件人才大戰所遇的    一個困惑。因此,在CBSD中,如何組織好開發隊伍尤為重要,必須按本企業所具備人才來組織。特別重要的是:開發初期必須選好標準框架,以及統一的開發指導方針,保證在整個開發過程中,各角色能隨時互相溝通。一般來說,CBSD的人員素質決定了構件的重用率。

    五、構造方法
   
    傳統應用軟件的構造是用白盒子方法,應用系統的實現全在代碼中,應用邏輯和數據粘結在一起。而CBSD 的構造是用白盒子和黑盒子相結合的方法。 基于構件的框架是用兩個概念來支持演變:第一個概念是構件有很強的性能接口,使構件邏輯功能和構件模型的實現都隱藏起來。這樣,只要接口相同,構件就可以被替換。

    第二個概念是隱式調用,即在基于構件的框架中,從來不直接給構件的接口分配地址,只在識別構件用戶后才分配地址。因此,構件用戶只要了解接口要求和為構件接口提供的引用后的返回信息 (該引用可能是一個構件,也可能是一個構件代理。對構件用戶來說,構件代理就是構件,不用區分) 。 構件接口的信息并不存入構件內,而是存入構件倉庫或注冊處。這樣才能保證構件替換靈活,并很容易利用隱式調用去重新部署構件。由于構件的實現對用戶透明,因此也使構件能適應各種不同的個性化要求。為此,構件提供自檢和規范化兩個機制。自檢保證在不了解構件的具體實現時,就能獲得構件接口信息。例如,JavaBean提供的自檢機制是Reflection和BeanInfo, 通過Reflection 可直接獲得Bean構件的全部方法,通過BeanInfo可直接獲得構件的許多復雜信息。

    規范化允許不訪問構件就可以修改它,如JavaBean提供的規范化是property sheet和customizer(定制器)。 通過property sheet提供一組簡單參數,修改Bean的屬性。復雜的修改由用戶通過定制器設置參數完成。

    作者簡介:

    王克宏,清華大學教授,博士生導師。近十余年以來一直從事知識工程,分布式知識處理的研究工作,已完成了幾期國家高科技技術八六三計劃項目,國家科技攻關和軍用基礎研究等項目,曾獲國家教委科技進步二等獎,機電部“國家攻關項目個人突出成就獎”,機電部科技進步三等獎等獎項;近幾年來的研究方向為“網絡計算模式與知識處理”,在這一科研發展新方向內進行了比較深入的探索和研究,取得了階段性成果。

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

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