胡文娟
[摘要]基于構件的軟件開發方法與傳統的面向過程、面向對象的軟件開發方法相比,具有良好的適應性、靈活性和易維護性,能較好地支持軟件復用。
[關鍵詞]軟件重用構件實現軟件開發
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)1110085-01
一、構件軟件開發過程
基于構件的軟件開發(CBSD)通過整合已有的構件來完成大型軟件系統的開發,其核心就是構件級的可重用。CBSD通過提高系統的可擴展性和可維護性來減少軟件開發的費用,更快的整合系統,并能有效的降低大型系統的維護和升級壓力。應用系統的軟件構造過程包括分析構件、設計構件、實現構件和組裝構件。
CBSD的理論基礎是在大型軟件系統中有相當的部分會重復出現,這些共同的部分應該通過構件組合起來,而不是一遍一遍的重寫。
在CBSD中,通過寫代碼來構建系統讓位于使用已有的構件來裝配和整合系統。在傳統的軟件開發模式中,系統整合往往是系統實現的收尾階段的任務。在基于構件的軟件開發中則相反,整合處于整個開發過程的核心地位。正因如此,決定構件的獲得、重用和使用的關鍵在于它能否與其它構件整合在一起。
(一)構件選取。構件選取是將過去開發的組件按照適合新系統的原則選取出來的過程。也可以是在構件交易中購買合適構件的過程。這個過程甚至延伸到開發構件和維護構件的質量保證。
構件選取包括兩個階段:發現階段和評估階段。在發現階段,構件將會被明確屬性。如構件的功能(能提供什么樣的服務),構件的接口(使用的方法)。這些屬性還應包括一些不能孤立看待的要求,如構件的可靠性、可用性、可擴展性。在有些情況下也要考慮構件的非技術特性,如提供者的市場占有率,構件開發組織的過程和成熟度等。
在評估方面,現在已經有了好多種成熟的評估方法。例如Standards Organization(ISO)描述的產品評估的通用標準,以及IEEE的特定域的構件評價技術,還有適用于特定問題域的技術。這些方法都是基于一定的構件研究理論產生的解決構件質量評估的方法。但就構件評價技術本身來說是不確定的,這是使用難以互相比較的標準,不明確的系統期望,不精確的評價方法以及構件的快速修改造成的。
(二)構件的調整。由于單個的構件是為了完成特定的需求,基于不同的上下文假設。因此構件在應用于新系統之前需要調整。必須將構件之間的沖突降低到最小。常用的方法包括:(1)白盒法。用戶可以通過修改構件的源碼使構件能與其他構件相互作用。該方法可以對構件的特性進行細致的控制,但修改源碼可能會導致維護和升級問題。(2)黑盒法。用戶可以得到構件的二進制可執行形式,構件沒有提供擴展機制或API。(3)灰盒法。源碼不可以修改,但提供了構件自身的擴展機制或可編程接口(API)。
二、系統的實現
(一)系統中的構件實現
軟件工程網絡課堂教學系統的開發環境為前臺開發選擇ASP,后臺采用SQL Server 2000數據庫,構件模型通過B/S構架的三層體系結構(表示層、業務邏輯層和數據訪問層)實現。
現以課件構件的開發過程為例,說明一個構件中的用戶界面/表示層、功能/業務邏輯層和數據訪問層的實現。
1.課件上傳構件的用戶界面層實現。表示層的用戶界面可分成動態和靜態兩種。通過Dreamweave的模板實現靜態界面功能,通過ASP技術生成動態頁面。動態頁面中常見的動作是:解釋用戶請求;分發這些請求到相應的業務邏輯;選擇下一個顯示視圖;生成和傳送下一個視圖給用戶。
2.課件上傳構件的功能/業務邏輯層實現。課件上傳的業務邏輯層的作用是將用戶上傳的文件存入數據庫,并將與文件相關的說明在用戶界面層上顯示出來。出于系統安全性的考慮,在構件設計時,對文件格式進行了限制,只能上傳RAR壓縮文件,并按照上傳時間以“年+月+日+分+秒”的數字組合為文件重新命名,這將有效避免文件重名。
該層實現上使用VBScript腳本語言構造了一個類模塊(add.asp)。該類包括如下屬性:MMtitle(課件標題)、MMteacher(上傳用戶(系統自動生成))、MMunit(所屬章節)、MMdiscrib(內容說明)、set upload(上傳路徑)、set file(存儲路徑(系統自動生成))。
3.課件上傳構件的數據訪問層實現。在系統數據庫的開發過程中,為了方便今后數據庫的維護與重用,將其具體功能如查詢、插入等操作封裝到一個構件(kejian.asp)中。
(二)基于構件的系統組裝
1.原子構件的組裝。現以課件上傳構件為例,說明原子構件的組裝過程。原子構件組裝的思想是將構件模型中涉及到的三個層次組裝成構件。通過原子構件的組裝,以上用戶界面、功能/業務和數據訪問三個層次的成分組合成一個完整的課件上傳構件。
在上述三個構件中,功能/業務層處于用戶界面層之下、數據訪問層之上,因此以功能/業務層構件add.asp作為組裝的基礎。其具體組裝過程為:將用戶界面層構件module.asp用VBScript腳本進行引用。引用語句為:〈!--#include file="module.asp"--〉
數據訪問層調用采用面向對象方式,將類FileInfo和類upload_file
通過內部接口與類kejian組裝成一個高內聚低偶合的原子構件,再通過外部接口與功能構件add.asp連接。
2.復合構件的組裝。復合構件是由多個原子構件組裝后形成的獨立構件,封裝在文件夾中,構件之間既沒有數據上的耦合,也沒有行為上的耦合,故采用黑盒方法進行組裝。在組裝時,通過接口綁定建立復合構件組裝的外部接口和內部接口的對應關系。通過各種不同的連接件可以完成一些復雜的接口綁定,以實現所需的復合構件。復合構件的外部接口采用擴展連接件。由于擴展連接件據具有可擴展的特性,由其組裝成的復合構件也具有可擴展的特性,同時內部接口是基于消息傳遞的,從而使組裝出來的復合構件具有動態性。
本系統中復合構件有公告發布管理構件、課件發布管理構件、作業發布批閱構件、作業下載提交構件、在線測試構件、試題管理構件、學習論壇構件和消息交流構件。其功能都封裝在獨立的文件夾中,其外部接口為各自文件夾下的index.asp頁面。在該頁面的功能菜單中給出了不同的功能按鈕,連接構件的內部接口。
三、結論
構件由于其本身的諸多特性,正在成為軟件開發的一個熱點,基于構件的軟件開發方法被視為解決軟件危機,提高軟件生產效率和質量的一條現實可行的途徑。構件重用的目標是達到需求、分析、設計、編碼、測試的重用。在不同層次上,構件均可以將底層的多個邏輯組合成高層次上的粒度更大的新構件,甚至直接封裝到一個系統,使模塊的重用從代碼級、對象級、架構級到系統級都可能實現,從而使軟件像硬件一樣,能任人裝配定制而成。
參考文獻:
[1]傅音翔,一種基于構件的軟件開放方法[J].微計算機信息,2006(22).
[2]何國斌,基于構件的軟件開發的方法與實踐[J].計算機工程與應用,2007(5).