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