《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > 基于復(fù)用的構(gòu)件開發(fā)模型的研究與應(yīng)用
基于復(fù)用的構(gòu)件開發(fā)模型的研究與應(yīng)用
來源:微型機(jī)與應(yīng)用2010年第14期
亓慧艷1,, 程建平2
1. 山東師范大學(xué)信息科學(xué)與工程學(xué)院,, 山東 濟(jì)南 250014,; 2. 中創(chuàng)軟件工程股份有限公司,,
摘要: 提出了一種基于復(fù)用的構(gòu)件開發(fā)模型,,該模型解決了構(gòu)件內(nèi)部結(jié)構(gòu)和組織問題,,保證良好的功能職責(zé)劃分和關(guān)注點(diǎn)分離,;保證構(gòu)件以規(guī)范化的方式提供對外服務(wù)接口和擴(kuò)展接口,;保證構(gòu)件具有良好的擴(kuò)展性以及隨需應(yīng)變的能力,。通過應(yīng)用該模型開發(fā)了面向金融領(lǐng)域的客戶管理構(gòu)件,,并將該構(gòu)件復(fù)用于具體的金融項(xiàng)目。實(shí)踐表明,,該模型能提高軟件復(fù)用率,,降低開發(fā)難度,加快開發(fā)速度,。
Abstract:
Key words :

摘  要: 提出了一種基于復(fù)用的構(gòu)件開發(fā)模型,,該模型解決了構(gòu)件內(nèi)部結(jié)構(gòu)和組織問題,保證良好的功能職責(zé)劃分和關(guān)注點(diǎn)分離,;保證構(gòu)件以規(guī)范化的方式提供對外服務(wù)接口和擴(kuò)展接口,;保證構(gòu)件具有良好的擴(kuò)展性以及隨需應(yīng)變的能力。通過應(yīng)用該模型開發(fā)了面向金融領(lǐng)域的客戶管理構(gòu)件,,并將該構(gòu)件復(fù)用于具體的金融項(xiàng)目,。實(shí)踐表明,,該模型能提高軟件復(fù)用率,降低開發(fā)難度,,加快開發(fā)速度,。
關(guān)鍵詞: 軟件工程; 軟件復(fù)用,; 構(gòu)件,; 構(gòu)件開發(fā)模型; 基于構(gòu)件的軟件開發(fā)

   隨著信息技術(shù)的飛速發(fā)展,,各個(gè)行業(yè)對軟件的需求也迅速增長,,軟件產(chǎn)品的規(guī)模不斷擴(kuò)大,復(fù)雜性也不斷提高,,但目前軟件的開發(fā)與生產(chǎn)能力卻相對不足,,形成脫節(jié)現(xiàn)象,導(dǎo)致軟件危機(jī),。軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案,,被視為解決軟件危機(jī)、提高軟件生產(chǎn)率和質(zhì)量的有效途徑[1],。
 軟件復(fù)用技術(shù)是軟件工程領(lǐng)域的一個(gè)研究熱點(diǎn),。復(fù)用概念的第一次引入是在1968年NATO軟件工程會議上,Mcllroy的論文“大量生產(chǎn)的軟件構(gòu)件”中[2],。近十幾年來,,隨著面向?qū)ο蠹夹g(shù)和分布式對象技術(shù)的出現(xiàn)并逐步成為主流技術(shù),為軟件復(fù)用提供了基本的技術(shù)支持。構(gòu)件模型是對構(gòu)件本質(zhì)特征的抽象描述,,被視為實(shí)現(xiàn)成功復(fù)用的關(guān)鍵因素之一,。構(gòu)件是核心和基礎(chǔ),復(fù)用是必需的手段[3],。盡管軟件復(fù)用的概念自提出以來已取得了一定的成果,,然而在實(shí)際軟件生產(chǎn)中,真正成功的軟件復(fù)用項(xiàng)目并不多見,。主要原因是受可復(fù)用構(gòu)件的分析和設(shè)計(jì)方法的限制,,針對此問題本文提出了一種基于復(fù)用的構(gòu)件開發(fā)模型,即(表現(xiàn)層,、業(yè)務(wù)邏輯層,、持久化層)的分層設(shè)計(jì)模型。
 本文中提出的構(gòu)件開發(fā)模型規(guī)范和約束構(gòu)件的結(jié)構(gòu),,保證了良好的功能職責(zé)劃分,,保證構(gòu)件以規(guī)范化的方式提供對外服務(wù)接口和擴(kuò)展接口。對于復(fù)雜系統(tǒng),,需求變化不穩(wěn)定,,為使設(shè)計(jì)具有更好的可擴(kuò)展性,、靈活性與邏輯性,通過分層分而治之,,使其關(guān)注點(diǎn)分離,。在設(shè)計(jì)中使用模塊增進(jìn)了內(nèi)聚性,降低了耦合度,,進(jìn)而降低了復(fù)雜性并增強(qiáng)了可維護(hù)性,。通過應(yīng)用該模型開發(fā)了面向金融領(lǐng)域的客戶管理構(gòu)件,并將該構(gòu)件復(fù)用于具體的金融項(xiàng)目,。最后,,通過將傳統(tǒng)的軟件開發(fā)方法與基于復(fù)用的構(gòu)件開發(fā)模型方法進(jìn)行比較。
1 軟件復(fù)用與軟件構(gòu)件
1.1 軟件復(fù)用的基本概念

 軟件復(fù)用是指重復(fù)使用“為了復(fù)用目的而設(shè)計(jì)的軟件”的過程[4],。軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案,,它包括對軟件生產(chǎn)過程中其他勞動成果的復(fù)用,如需求分析,、概要設(shè)計(jì),、詳細(xì)設(shè)計(jì)、編碼,、測試用例和使用手冊等,。
1.2 實(shí)現(xiàn)軟件復(fù)用的關(guān)鍵因素
   實(shí)現(xiàn)軟件復(fù)用的關(guān)鍵因素如圖1所示,主要包括:軟件構(gòu)件技術(shù)、領(lǐng)域工程,、軟件構(gòu)架,、軟件再工程、開放系統(tǒng),、軟件過程、CASE技術(shù)等,,以及各種非技術(shù)因素[5],。本文主要研究軟件構(gòu)件技術(shù)對實(shí)現(xiàn)軟件復(fù)用的影響。

1.3 構(gòu)件的基本概念
 在眾多的軟件復(fù)用開發(fā)方法中,,基于構(gòu)件的軟件開發(fā)方法是一條有效,、實(shí)際的軟件復(fù)用途徑,所謂構(gòu)件是指系統(tǒng)中可以明確辨識的構(gòu)成成分,,軟件構(gòu)件是系統(tǒng)中具有一定意義的獨(dú)立構(gòu)成成份[6],。
 構(gòu)件應(yīng)具備的基本特征:(1)復(fù)用:復(fù)用是構(gòu)件最基本的性質(zhì),構(gòu)件的設(shè)計(jì)必須滿足能在新的應(yīng)用項(xiàng)目中使用;(2)封裝:封裝對外界隱藏構(gòu)件的設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié),,僅通過接口與外界交互,,可以保證構(gòu)件功能復(fù)用的完整性和構(gòu)件開發(fā)及交付的獨(dú)立性;(3)組裝:構(gòu)件可以通過組裝形成新的構(gòu)件或系統(tǒng),組裝是構(gòu)件復(fù)用的手段;(4)粒度:構(gòu)件是有大小的,,與領(lǐng)域相關(guān)的構(gòu)件粒度大;(5)層次:構(gòu)件可以按層次進(jìn)行劃分,,企業(yè)級應(yīng)用系統(tǒng)的復(fù)雜邏輯可以通過分層來解決,。
1.4 可復(fù)用構(gòu)件開發(fā)遵循的基本原則
   (1)“開-閉”原則:一個(gè)軟件實(shí)體應(yīng)該對擴(kuò)展開放,對修改關(guān)閉,。所謂“開”,,就是要求構(gòu)件能適應(yīng)不同的應(yīng)用環(huán)境;所謂“閉”,,就是要求構(gòu)件是一個(gè)獨(dú)立的整體,。這是可復(fù)用構(gòu)件開發(fā)最基本的原則,也是復(fù)用要求的直接體現(xiàn),。實(shí)現(xiàn)“開-閉”原則的基本策略是對變化性進(jìn)行封裝,,即找到構(gòu)件的可變因素,并將其封裝起來,。
   (2)依賴倒置原則:要針對接口編程,,不要針對實(shí)現(xiàn)編程。它是指導(dǎo)開發(fā)可復(fù)用框架的基本原則,,使得框架無需依賴具體構(gòu)件,,具體構(gòu)件的開發(fā)需遵循框架設(shè)定的約束。實(shí)現(xiàn)依賴倒置原則的基本策略是在框架中為具體構(gòu)件設(shè)立抽象表示,。
   (3)接口隔離原則:是一個(gè)指導(dǎo)可復(fù)用構(gòu)件實(shí)現(xiàn)接口設(shè)計(jì)的原則,,它使得構(gòu)件中每一個(gè)實(shí)體都擁有盡可能簡單的接口。實(shí)現(xiàn)接口隔離原則的基本策略是對構(gòu)件中的每個(gè)角色進(jìn)行劃分,,然后針對每一類使用者提供一套有針對性的接口,。
   (4)迪米特法則:每個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用[7]。實(shí)現(xiàn)迪米特法則的基本策略是控制軟件實(shí)體間由于信息傳遞而產(chǎn)生的耦合關(guān)系,。
2 構(gòu)件開發(fā)模型
   構(gòu)件模型是對構(gòu)件本質(zhì)特性的抽象描述[8],。本文提出一種構(gòu)件分層設(shè)計(jì)模型,如圖2 所示,,該模型解決了構(gòu)件內(nèi)部結(jié)構(gòu)和組織問題,,保證良好的功能職責(zé)劃分,保證構(gòu)件以規(guī)范化的方式提供對外服務(wù)接口和擴(kuò)展接口,,保證構(gòu)件具有良好的擴(kuò)展性以及隨需應(yīng)變的能力,。該模型遵循本文中上面所提出的可復(fù)用構(gòu)件開發(fā)的基本原則,在設(shè)計(jì)中使用模塊,,增進(jìn)了內(nèi)聚性,,降低了耦合度,低耦合降低了復(fù)雜性并增強(qiáng)了可維護(hù)性,。對于復(fù)雜系統(tǒng),,需求變化不穩(wěn)定,為使設(shè)計(jì)具有更好的可擴(kuò)展性、靈活性與邏輯性,,通過分層分而治之,,主要分為表現(xiàn)層、業(yè)務(wù)邏輯層,、持久化層,,使其關(guān)注點(diǎn)分離。API(Application Programming Interface)接口是外部調(diào)用者,;MAI(Management Application Interface)接口是內(nèi)部調(diào)用者,;SPI(Service Provider Interface)接口是構(gòu)件本身的可擴(kuò)展點(diǎn),通過分層帶來更好的可伸縮性與可維護(hù)性,。其中,,表現(xiàn)層又叫展現(xiàn)層,主要功能是向人展示,,最終實(shí)現(xiàn)人機(jī)交互,。一般表現(xiàn)層與具體的業(yè)務(wù)需求有關(guān),需具體問題具體分析,,在此就不再詳細(xì)介紹,,下面主要介紹業(yè)務(wù)邏輯層設(shè)計(jì)模型和持久化層設(shè)計(jì)模型。

2.1 業(yè)務(wù)邏輯層設(shè)計(jì)模型
   業(yè)務(wù)邏輯層設(shè)計(jì)模型如圖3所示,。業(yè)務(wù)邏輯層根據(jù)職責(zé)具體分為服務(wù)層和領(lǐng)域?qū)樱?1)Service服務(wù)層定義了應(yīng)用的邊界和從客戶角度所能看到的可用操作集,。①它包括實(shí)體home即Entity Home和流程管理,由Normal Service實(shí)現(xiàn);②它是無狀態(tài)類,,不包含任何業(yè)務(wù)邏輯,,定義了一個(gè)公共的應(yīng)用操作集合,可供各種使用者使用,。(2)領(lǐng)域?qū)拥闹饕氊?zé)是實(shí)現(xiàn)業(yè)務(wù)邏輯,它包含API層和MAI層,。①API層遵循最小化設(shè)計(jì)原則,在完成功能的前提下盡可能簡單,,提供相對穩(wěn)定的接口,,減少改動帶來的影響,易于使用;EntityAPIWrapper:實(shí)現(xiàn)API接口,,避免對外暴露MAI接口,實(shí)現(xiàn)延遲加載等;②MAI層是內(nèi)部調(diào)用者,,EntityMAI:定義可以對外提供的服務(wù)和職責(zé),;EntityMAIBase:提供基本共性實(shí)現(xiàn);EntityMAIImp:為內(nèi)部調(diào)用者提供服務(wù),,調(diào)用SPI層實(shí)現(xiàn)持久化,。
 

2.2 持久化層設(shè)計(jì)模型
   持久化層設(shè)計(jì)模型,如圖4所示,持久化層主要功能是實(shí)現(xiàn)數(shù)據(jù)的存儲,、讓客戶了解功能的擴(kuò)展點(diǎn)和為業(yè)務(wù)邏輯層提供服務(wù),。(1)SPI接口:定義抽象共性的方法;(2)Base實(shí)現(xiàn)類:定義共性的方法,對對象進(jìn)行延遲加載;(3)JDBC實(shí)現(xiàn)類:負(fù)責(zé)與數(shù)據(jù)庫交互,;降低對底端的依賴,,增強(qiáng)變化性;(4)Wrapper實(shí)現(xiàn)類:負(fù)責(zé)創(chuàng)建對象時(shí)對返回的對象進(jìn)行包裝,對日志,、緩存和關(guān)系邏輯進(jìn)行處理,,在批處理過程中可以結(jié)合cache及Pool進(jìn)行預(yù)加載。

3 基于構(gòu)件的軟件復(fù)用開發(fā)實(shí)例
 結(jié)合本人在中創(chuàng)軟件公司實(shí)習(xí)中參與的項(xiàng)目實(shí)踐,,本文應(yīng)用該模型開發(fā)了面向金融領(lǐng)域的客戶管理構(gòu)件,,保證構(gòu)件以規(guī)范化的方式提供對外服務(wù)接口和擴(kuò)展接口,保證構(gòu)件具有良好的擴(kuò)展性以及隨需應(yīng)變的能力,,并將該構(gòu)件復(fù)用于具體的金融項(xiàng)目,,降低了開發(fā)難度,加快了開發(fā)速度,,能夠較好地解決復(fù)用這一問題,,能夠從構(gòu)件開發(fā)模型結(jié)構(gòu)的高度指導(dǎo)構(gòu)件的開發(fā)和靈活復(fù)用。
3.1 客戶管理構(gòu)件
 客戶管理構(gòu)件是用于對客戶信息與客戶間相互關(guān)系進(jìn)行管理維護(hù)的構(gòu)件,,提供統(tǒng)一的客戶管理功能,,提供可視化的客戶信息定義,滿足個(gè)性化需求,。不同行業(yè),、不同的企業(yè)對客戶信息的管理內(nèi)容千變?nèi)f化,客戶管理構(gòu)件是面向領(lǐng)域的構(gòu)件,,本文中所研究的是面向金融領(lǐng)域,。客戶管理構(gòu)件總體上分為以下幾個(gè)模塊:
   (1)客戶類型管理:客戶類型可配置,,通過類型管理具有相同屬性的客戶集合;
   (2)客戶組類型和組管理:通過組來管理具有不同特征的客戶集合;
   (3)客戶信息維護(hù):通過客戶類型,,對客戶信息的增加、刪除,、修改,、查詢和版本控制等進(jìn)行統(tǒng)一維護(hù);
   (4)客戶關(guān)系維護(hù):管理不同類型客戶之間的相互關(guān)系。
3.2 金融租賃客戶管理系統(tǒng)
   利用客戶管理構(gòu)件,,針對金融租賃客戶管理系統(tǒng)項(xiàng)目具體需求,,支持該項(xiàng)目客戶管理系統(tǒng)的開發(fā)。金融租賃客戶管理系統(tǒng)包含的主要子領(lǐng)域及其相互之間的依賴關(guān)系如圖5所示,,各個(gè)子領(lǐng)域的簡要說明如下:

   (1)客戶信息查詢與維護(hù):該領(lǐng)域封裝了通過客戶類型對客戶信息表中記錄的查詢,、增加,、刪除、修改及維護(hù)功能;
   (2)個(gè)人客戶管理:主要負(fù)責(zé)對金融租賃領(lǐng)域中涉及的自然人的信息進(jìn)行管理;
   (3)對公客戶管理:主要負(fù)責(zé)對金融租賃領(lǐng)域中涉及的組織機(jī)構(gòu)進(jìn)行管理;
   (4)集團(tuán)客戶管理:主要負(fù)責(zé)對兩個(gè)或兩個(gè)以上客戶成員團(tuán)體的信息進(jìn)行管理;
   (5)同業(yè)客戶管理:主要負(fù)責(zé)對金融機(jī)構(gòu)客戶的信息進(jìn)行管理;
   (6)部門及管護(hù)員調(diào)整:主要負(fù)責(zé)對客戶部門,、經(jīng)理發(fā)生變動的信息進(jìn)行管理;
   (7)客戶信息數(shù)據(jù)庫:主要負(fù)責(zé)對整個(gè)客戶管理信息領(lǐng)域中涉及的各種客戶信息以及其他相關(guān)信息進(jìn)行存儲并提供訪問接口,。
 在金融租賃客戶管理系統(tǒng)中運(yùn)用了大量的構(gòu)件,主要有:用戶權(quán)限管理構(gòu)件,、參數(shù)管理構(gòu)件,、元數(shù)據(jù)管理構(gòu)件、財(cái)務(wù)報(bào)表管理構(gòu)件,、評級管理構(gòu)件,、內(nèi)容管理構(gòu)件等。構(gòu)件代碼比例約占62.3%,新增構(gòu)件約占28.6%,,構(gòu)件化比例相當(dāng)大,,使原本半年的開發(fā)時(shí)間縮短為兩個(gè)月,減少了開發(fā)成本,,提高了軟件開發(fā)效率和產(chǎn)品的質(zhì)量,,減少了系統(tǒng)的維護(hù)代價(jià)。為了更好地說明此構(gòu)件開發(fā)模型的優(yōu)勢,,將傳統(tǒng)的軟件開發(fā)方法與基于復(fù)用的構(gòu)件開發(fā)模型方法進(jìn)行比較,,統(tǒng)計(jì)結(jié)果如表1所示,實(shí)踐表明,,基于本文提出的模型開發(fā)的構(gòu)件降低了開發(fā)難度,,加快了開發(fā)速度,較好地解決了復(fù)用的問題,。
4 總結(jié)與展望
    本文提出一種基于復(fù)用的構(gòu)件開發(fā)模型,,該模型規(guī)范和約束了構(gòu)件的內(nèi)部結(jié)構(gòu),保證構(gòu)件以規(guī)范化的方式提供對外服務(wù)接口和擴(kuò)展接口,;保證構(gòu)件具有良好的擴(kuò)展性以及隨需應(yīng)變的能力,;將該開發(fā)模型應(yīng)用于客戶管理構(gòu)件開發(fā),并基于該構(gòu)件復(fù)用于金融租賃客戶管理系統(tǒng),。通過實(shí)踐對比表明,,使用該構(gòu)件開發(fā)模型降低了開發(fā)難度,加快了開發(fā)速度,,能夠較好地解決復(fù)用這一問題,。由于構(gòu)件開發(fā)涉及領(lǐng)域繁多,該構(gòu)件開發(fā)模型還有很多不足之處,,還有待于在實(shí)踐中繼續(xù)完善,。
參考文獻(xiàn)
[1]  楊芙清,梅宏,,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)[J]. 電子學(xué)報(bào),1999, 27(2): 68-75.
[2]  MILI H. IEEE transactions on software Engineering, June 1995, 21(6):528-562.
[3]  MCCLURE C. Software reuse: a standards-based guide[C].Wiley-IEEE Computer Society, 2001.
[4]  WALLNAU B. The current state of CBSE[J]. IEEE Soft-ware, 1998,15(5):37-46.
[5]  PRESSMAN R S. Software engineering: a practitioner’s approach [M]. 北京: 機(jī)械工業(yè)出版社, 2005.
[6]  楊芙清,梅 宏. 面向復(fù)用的需求建模[M].北京:清華大學(xué)出版社, 2008.
[7]  閻宏. Java與模式[M].北京:電子工業(yè)出版社,,2002.
[8]  EVANS E. Domain-driven design: tackling complexity in  the Heart of Software[M]. Addison Wesley, 2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。