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

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

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

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

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

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

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

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

   (1)客戶信息查詢與維護:該領域封裝了通過客戶類型對客戶信息表中記錄的查詢、增加、刪除、修改及維護功能;
   (2)個人客戶管理:主要負責對金融租賃領域中涉及的自然人的信息進行管理;
   (3)對公客戶管理:主要負責對金融租賃領域中涉及的組織機構進行管理;
   (4)集團客戶管理:主要負責對兩個或兩個以上客戶成員團體的信息進行管理;
   (5)同業(yè)客戶管理:主要負責對金融機構客戶的信息進行管理;
   (6)部門及管護員調整:主要負責對客戶部門、經理發(fā)生變動的信息進行管理;
   (7)客戶信息數據庫:主要負責對整個客戶管理信息領域中涉及的各種客戶信息以及其他相關信息進行存儲并提供訪問接口。
 在金融租賃客戶管理系統(tǒng)中運用了大量的構件,主要有:用戶權限管理構件、參數管理構件、元數據管理構件、財務報表管理構件、評級管理構件、內容管理構件等。構件代碼比例約占62.3%,新增構件約占28.6%,構件化比例相當大,使原本半年的開發(fā)時間縮短為兩個月,減少了開發(fā)成本,提高了軟件開發(fā)效率和產品的質量,減少了系統(tǒng)的維護代價。為了更好地說明此構件開發(fā)模型的優(yōu)勢,將傳統(tǒng)的軟件開發(fā)方法與基于復用的構件開發(fā)模型方法進行比較,統(tǒng)計結果如表1所示,實踐表明,基于本文提出的模型開發(fā)的構件降低了開發(fā)難度,加快了開發(fā)速度,較好地解決了復用的問題。
4 總結與展望
    本文提出一種基于復用的構件開發(fā)模型,該模型規(guī)范和約束了構件的內部結構,保證構件以規(guī)范化的方式提供對外服務接口和擴展接口;保證構件具有良好的擴展性以及隨需應變的能力;將該開發(fā)模型應用于客戶管理構件開發(fā),并基于該構件復用于金融租賃客戶管理系統(tǒng)。通過實踐對比表明,使用該構件開發(fā)模型降低了開發(fā)難度,加快了開發(fā)速度,能夠較好地解決復用這一問題。由于構件開發(fā)涉及領域繁多,該構件開發(fā)模型還有很多不足之處,還有待于在實踐中繼續(xù)完善。
參考文獻
[1]  楊芙清,梅宏,李克勤.軟件復用與軟件構件技術[J]. 電子學報,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]. 北京: 機械工業(yè)出版社, 2005.
[6]  楊芙清,梅 宏. 面向復用的需求建模[M].北京:清華大學出版社, 2008.
[7]  閻宏. Java與模式[M].北京:電子工業(yè)出版社,2002.
[8]  EVANS E. Domain-driven design: tackling complexity in  the Heart of Software[M]. Addison Wesley, 2006.

此內容為AET網站原創(chuàng),未經授權禁止轉載。