基于構(gòu)件的軟件開(kāi)發(fā)實(shí)踐

2018-05-12 13:51:50


一、構(gòu)件軟件開(kāi)發(fā)過(guò)程

  基于構(gòu)件的軟件開(kāi)發(fā)(CBSD)通過(guò)整合已有的構(gòu)件來(lái)完成大型軟件系統(tǒng)的開(kāi)發(fā),其核心就是構(gòu)件級(jí)的可重用。CBSD通過(guò)提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性來(lái)減少軟件開(kāi)發(fā)的費(fèi)用,更快的整合系統(tǒng),并能有效的降低大型系統(tǒng)的維護(hù)和升級(jí)壓力。應(yīng)用系統(tǒng)的軟件構(gòu)造過(guò)程包括分析構(gòu)件、設(shè)計(jì)構(gòu)件、實(shí)現(xiàn)構(gòu)件和組裝構(gòu)件。

  CBSD的理論基礎(chǔ)是在大型軟件系統(tǒng)中有相當(dāng)?shù)牟糠謺?huì)重復(fù)出現(xiàn),這些共同的部分應(yīng)該通過(guò)構(gòu)件組合起來(lái),而不是一遍一遍的重寫(xiě)。

  在CBSD,通過(guò)寫(xiě)代碼來(lái)構(gòu)建系統(tǒng)讓位于使用已有的構(gòu)件來(lái)裝配和整合系統(tǒng)。在傳統(tǒng)的軟件開(kāi)發(fā)模式中,系統(tǒng)整合往往是系統(tǒng)實(shí)現(xiàn)的收尾階段的任務(wù)。在基于構(gòu)件的軟件開(kāi)發(fā)中則相反,整合處于整個(gè)開(kāi)發(fā)過(guò)程的核心地位。正因如此,決定構(gòu)件的獲得、重用和使用的關(guān)鍵在于它能否與其它構(gòu)件整合在一起。

  ()構(gòu)件選取。構(gòu)件選取是將過(guò)去開(kāi)發(fā)的組件按照適合新系統(tǒng)的原則選取出來(lái)的過(guò)程。也可以是在構(gòu)件交易中購(gòu)買(mǎi)合適構(gòu)件的過(guò)程。這個(gè)過(guò)程甚至延伸到開(kāi)發(fā)構(gòu)件和維護(hù)構(gòu)件的質(zhì)量保證。

  構(gòu)件選取包括兩個(gè)階段:發(fā)現(xiàn)階段和評(píng)估階段。在發(fā)現(xiàn)階段,構(gòu)件將會(huì)被明確屬性。如構(gòu)件的功能(能提供什么樣的服務(wù)),構(gòu)件的接口(使用的方法)。這些屬性還應(yīng)包括一些不能孤立看待的要求,如構(gòu)件的可靠性、可用性、可擴(kuò)展性。在有些情況下也要考慮構(gòu)件的非技術(shù)特性,如提供者的市場(chǎng)占有率,構(gòu)件開(kāi)發(fā)組織的過(guò)程和成熟度等。

二、系統(tǒng)的實(shí)現(xiàn)

  

  ()系統(tǒng)中的構(gòu)件實(shí)現(xiàn)

  軟件工程網(wǎng)絡(luò)課堂教學(xué)系統(tǒng)的開(kāi)發(fā)環(huán)境為前臺(tái)開(kāi)發(fā)選擇ASP,后臺(tái)采用SQL Server 2000數(shù)據(jù)庫(kù),構(gòu)件模型通過(guò)B/S構(gòu)架的三層體系結(jié)構(gòu)(表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層)實(shí)現(xiàn)。

  現(xiàn)以課件構(gòu)件的開(kāi)發(fā)過(guò)程為例,說(shuō)明一個(gè)構(gòu)件中的用戶(hù)界面/表示層、功能/業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層的實(shí)現(xiàn)。

  1.課件上傳構(gòu)件的用戶(hù)界面層實(shí)現(xiàn)。表示層的用戶(hù)界面可分成動(dòng)態(tài)和靜態(tài)兩種。通過(guò)Dreamweave的模板實(shí)現(xiàn)靜態(tài)界面功能,通過(guò)ASP技術(shù)生成動(dòng)態(tài)頁(yè)面。動(dòng)態(tài)頁(yè)面中常見(jiàn)的動(dòng)作是:解釋用戶(hù)請(qǐng)求;分發(fā)這些請(qǐng)求到相應(yīng)的業(yè)務(wù)邏輯;選擇下一個(gè)顯示視圖;生成和傳送下一個(gè)視圖給用戶(hù)。

  2.課件上傳構(gòu)件的功能/業(yè)務(wù)邏輯層實(shí)現(xiàn)。課件上傳的業(yè)務(wù)邏輯層的作用是將用戶(hù)上傳的文件存入數(shù)據(jù)庫(kù),并將與文件相關(guān)的說(shuō)明在用戶(hù)界面層上顯示出來(lái)。出于系統(tǒng)安全性的考慮,在構(gòu)件設(shè)計(jì)時(shí),對(duì)文件格式進(jìn)行了限制,只能上傳RAR壓縮文件,并按照上傳時(shí)間以++++秒”的數(shù)字組合為文件重新命名,這將有效避免文件重名。

  該層實(shí)現(xiàn)上使用VBScript腳本語(yǔ)言構(gòu)造了一個(gè)類(lèi)模塊(add.asp)。該類(lèi)包括如下屬性:MMtitle(課件標(biāo)題)、MMteacher(上傳用戶(hù)(系統(tǒng)自動(dòng)生成))、MMunit(所屬章節(jié))MMdiscrib(內(nèi)容說(shuō)明)、set upload(上傳路徑)、set file(存儲(chǔ)路徑(系統(tǒng)自動(dòng)生成))。

  3.課件上傳構(gòu)件的數(shù)據(jù)訪(fǎng)問(wèn)層實(shí)現(xiàn)。在系統(tǒng)數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程中,為了方便今后數(shù)據(jù)庫(kù)的維護(hù)與重用,將其具體功能如查詢(xún)、插入等操作封裝到一個(gè)構(gòu)件(kejian.asp)中。

    ()基于構(gòu)件的系統(tǒng)組裝

  1.原子構(gòu)件的組裝,F(xiàn)以課件上傳構(gòu)件為例,說(shuō)明原子構(gòu)件的組裝過(guò)程。原子構(gòu)件組裝的思想是將構(gòu)件模型中涉及到的三個(gè)層次組裝成構(gòu)件。通過(guò)原子構(gòu)件的組裝,以上用戶(hù)界面、功能/業(yè)務(wù)和數(shù)據(jù)訪(fǎng)問(wèn)三個(gè)層次的成分組合成一個(gè)完整的課件上傳構(gòu)件。

  在上述三個(gè)構(gòu)件中,功能/業(yè)務(wù)層處于用戶(hù)界面層之下、數(shù)據(jù)訪(fǎng)問(wèn)層之上,因此以功能/業(yè)務(wù)層構(gòu)件add.asp作為組裝的基礎(chǔ)。其具體組裝過(guò)程為:將用戶(hù)界面層構(gòu)件module.aspVBScript腳本進(jìn)行引用。引用語(yǔ)句為:!--#include file="module.asp"--

  數(shù)據(jù)訪(fǎng)問(wèn)層調(diào)用采用面向?qū)ο蠓绞?span lang="EN-US" style="font-size:14px;">,將類(lèi)FileInfo和類(lèi)upload_file

  通過(guò)內(nèi)部接口與類(lèi)kejian組裝成一個(gè)高內(nèi)聚低偶合的原子構(gòu)件,再通過(guò)外部接口與功能構(gòu)件add.asp連接。

  2.復(fù)合構(gòu)件的組裝。復(fù)合構(gòu)件是由多個(gè)原子構(gòu)件組裝后形成的獨(dú)立構(gòu)件,封裝在文件夾中,構(gòu)件之間既沒(méi)有數(shù)據(jù)上的耦合,也沒(méi)有行為上的耦合,故采用黑盒方法進(jìn)行組裝。在組裝時(shí),通過(guò)接口綁定建立復(fù)合構(gòu)件組裝的外部接口和內(nèi)部接口的對(duì)應(yīng)關(guān)系。通過(guò)各種不同的連接件可以完成一些復(fù)雜的接口綁定,以實(shí)現(xiàn)所需的復(fù)合構(gòu)件。復(fù)合構(gòu)件的外部接口采用擴(kuò)展連接件。由于擴(kuò)展連接件據(jù)具有可擴(kuò)展的特性,由其組裝成的復(fù)合構(gòu)件也具有可擴(kuò)展的特性,同時(shí)內(nèi)部接口是基于消息傳遞的,從而使組裝出來(lái)的復(fù)合構(gòu)件具有動(dòng)態(tài)性。

  本系統(tǒng)中復(fù)合構(gòu)件有公告發(fā)布管理構(gòu)件、課件發(fā)布管理構(gòu)件、作業(yè)發(fā)布批閱構(gòu)件、作業(yè)下載提交構(gòu)件、在線(xiàn)測(cè)試構(gòu)件、試題管理構(gòu)件、學(xué)習(xí)論壇構(gòu)件和消息交流構(gòu)件。其功能都封裝在獨(dú)立的文件夾中,其外部接口為各自文件夾下的index.asp頁(yè)面。在該頁(yè)面的功能菜單中給出了不同的功能按鈕,連接構(gòu)件的內(nèi)部接口。